微信扫码
与创始人交个朋友
我要投稿
现在利用大模型进行事件抽取很流行,其好处是:
1)可以处理更长的上下文信息,即可以同时兼顾句子级与文档级的事件抽取任务;
2)采用生成式的方式,可以将事件抽取任务(事件类型识别、论元抽取)一步到位。
但也存在几点缺点:
1)可能生成出不在事件集合内的其他事件类型;
2)生成的结果可能偏离事件定义的框架,如新增论元等;
对于上述问题,本次分享一篇利用强化学习来提升事件抽取的方法<EventRL: Enhancing Event Extraction with Outcome Supervision for Large Language Models >。其背后的思想是:LLM在训练的时候采用token级的交叉熵作为训练目标,可以理解在优化的目标是让生成的token与目标token一个个对齐,且每个token的权重都是一样的;而在事件抽取的时候,生成的结果跟事件定义相关的token才是最重要的,权重是不一样的,如输出结果以的json的格式,这些[],''符号对比起来就没那么重要;所以论文提出强化学习的思路,让LLM的学习向与事件相关的token进行下倾斜。
整体流程如上,具体包括以下流程:
step1:训练一个SFT model,作为初始模型M0;这里就说下论文中利用LLM做事件抽取的指令形式,是采用代码的形式,因为一个事件定义很容易用类来表达。
step2:定义强化学习下的优化函数与奖赏函数:
该优化函数(或者说学习策略)是一个交叉熵+一个优势函数A结合而成,而优势函数A是由奖赏函数定义的:
奖赏函数R是由事件抽取的评价方法F1值来定义的,论文中给了三种F1的计算方法,后面实验做了下对比。b参数可认为是一个基线值。这样,在优化过程中,尽可能让A大,就意味让模型的生成的结果y与目标y*对齐,让模型偏向目标y中token的对齐学习。
step3:然后进行迭代学习,迭代几步后,生成一个最终版模型Mt。
在训练过程中,论文用了几个小trick:1)设定Teacher-Force Threshold阈值,其目的是不能让M0模型遗忘太厉害;2)进行优势函数裁剪,目的防止一些异常样本带来扰动。
实验结果显示:1)对比SFT,加了强化学习EventRL,都能确定2-3个点的提升,效果还是很明显的;2)论文定义的三种奖赏函数(Arg-F1,AVG-F1,Prod-F1)效果都不太一样,没哪个显示出绝对的优势;
上图显示两个trick的消融实验。
最后说下结语,将强化学习加入llm的事件抽取中,还是很值得借鉴的,操作简单且有效。最后提及下一个问题:当事件类型很多(上百个),如果按论文方式把每个事件都定义一个类放在prompt,那么prompt会很长,会影响模型的生成效果,在这种情况下,个人感觉还是采用pipline方式更好些,先一个指令识别所有的事件类型,然后再一个指令识别这些事件类型对应的论元信息,当然这个过程也可以使用论文提出的强化学习方法,只是两个任务对应的奖赏函数应该不同。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-08-13
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19