2、训练阶段
下面介绍两个模型的监督数据收集和训练,即批判者C和生成器M。
1)训练批判者模型
数据收集。 对每个片段的反射标记进行人工标注的成本很高。最先进的LLM(如GPT-4)可有效用于生成此类反馈。然而,依赖这种专有的LLM可能会提高API成本并降低可重复性,通过促使GPT-4生成反射标记来创建监督数据,然后将其知识提炼为内部C:{Xsample,Ysample}∼{X,Y}。
如表1所示,不同的反射标记组有不同的定义和输入,因此我们对它们使用不同的指令提示。反射标记定义如下:
按需检索(Retrieve) :给定输入和前一步生成(如适用)后,LM会确定续篇是否需要事实依据。no表示不需要检索,因为序列不需要事实基础或可能不会通过知识检索得到加强;yes表示需要检索。continue表示一个模型可以继续使用之前检索到的证据。例如,一段话可能包含丰富的事实信息,因此SELF-RAG会根据这段话生成多个片段。
相关性(ISREL) :检索到的知识不一定总是与输入相关。这一方面表明证据是否提供了有用的信息(相关)。
支持(ISSUP) :归因是指输出是否得到某些证据的充分支持。这一方面判断的是输出中的信息有多少是由证据所包含的,归因分为三个等级:完全支持、部分支持和不支持/矛盾。
有用(ISUSE) :将感知到的有用性定义为回复是否是对查询有帮助且信息丰富的答案,而与回复是否符合事实无关,这也可视为可信度。对于有用性,采用五级评价(1为最低,5为最高)。
以"检索"为例。向GPT-4发送了一条特定类型的指令("给定指令,请判断从网络上查找一些外部文档是否有助于生成更好的回复。"),然后用fewshot演示了I的原始任务输入x和输出y,以预测适当的反映标记文本:p(r|I,x,y)。
其针对每个标记,都设定了一些prompt,这块是整个数据的关键:
表8显示了初始检索标记的指令和示例。
表9显示了用于收集"检索给定指令"、"前面的句子"和"以前检索过的段落"三路输出标记的指令和示例 。
表10显示了用于收集ISREL三路输出标记的指令和示例 。
表11显示了用于收集ISREL三路输出标记的指令和示例 。
表12显示了用于收集ISUSE的五路输出标记的指令和示例 。
人工评估结果表明,GPT-4的反射标记预测与人工评估结果具有很高的一致性,所以为每种类型收集了4k-20k个有监督的训练数据,并将它们组合起来形成C的训练数据,样式如下:
训练数据的样式如下:
批判学习。 在收集到训练数据Dcritic之后,用预先训练好的LM对C进行初始化,并使用标准的条件语言建模目标--最大化似然--对其进行训练:
2)训练生成器模型
数据收集。 给定一对输入-输出(x,y),使用检索模型和批判者模型来增强原始输出y,以创建精确模拟SELF-RAG推理时间过程的监督数据。对于每个语段yt∈y,运行C来评估额外的语段是否有助于增强生成。如果需要检索,则添加检索特殊标记Retrieve=yes,然后R检索前K个段落D。对于每个段落,C进一步评估该段落是否相关,并预测ISREL。如果段落相关,C会进一步评估该段落是否支持模型生成,并预测ISSUP。
其中, 批判标记ISREL和ISSUP会附加在检索到的段落之后。在输出y(或yT)结束时,C会预测总体效用标记ISUSE,并将包含反射标记和原始输入对的增强输出添加到Dgen中。
生成器学习。 使用标准的下一个标记目标,在添加了反射标记Dgen的编辑语料库上训练生成器模型M:
M 与C训练不同,M学习预测目标输出和反射标记。在训练过程中会屏蔽掉检索到的文本块 以计算损失,并用一组反射标记{Critique,Retrieve}来扩展原始词汇V。
3、推理阶段
在推理阶段,SELF-RAG通过生成反射标记来自我评估输出结果,从而使其行为适应不同的任务要求。
对于要求事实准确性的任务,目标是让模型更频繁地检索段落,以确保输出结果与可用证据密切吻合。在开放性较强的任务中,如撰写个人经历文章,重点则转向减少检索次数,优先考虑整体创造性或实用性得分。
因此,在推理过程中需要实施控制以满足这些不同目标。 方法如下:
带阈值的自适应检索。 SELF-RAG通过预测"检索"(Retrieve)来动态决定何时检索文本段落。另外还允许设置阈值。具体来说,如果在Retrieve的所有输出标记中生成Retrieve=Yes标记的概率超过了指定的阈值,就会触发检索:
带批判标记的树状解码。 在每个分段步骤t,当需要根据硬条件或软条件进行检索时,R会检索K个段落,生成器M会并行处理每个段落,并输出K个不同的候选续篇。进行分段级波束搜索(波束大小=B),以获得每个时间戳t的前B个分段连续性,并在生成结束时返回最佳序列。
每个段落yt相对于段落d的得分都会用批判者得分S更新,该得分是每个段落yt和段落d的归一化概率的线性加权和。
对于每个批判标记组G(如ISREL), 将其在时间戳t的得分记为sGt,并按如下方式计算片段得分:
三、实验设置与结果分析 1、任务和数据集
该工作在一系列下游任务上对SELF-RAG和各种基线进行了评估,用旨在评估整体正确性、事实性和流畅性的指标对输出进行了整体评估。
封闭集任务包括两个数据集,即关于公共卫生的事实验证数据集(PubHealth)和根据科学考试创建的多选推理数据集(ARC-Challenge), 使用准确率作为评估指标,并对测试集进行报告。
两个开放域问题解答(QA)数据集:PopQA和TriviaQA-unfiltered,其中系统需要回答有关事实知识的任意问题。
长式生成任务包括传记生成任务和长式质量保证任务ALCE-ASQA,使用FactScore来评估传记,并使用基于MAUVE的官方指标正确性、流畅性以及引用精度和召回率来评估ASQA。
2、实验结果
表2(上)列出了相关对比效果:
如表2(下)所示:
在PubHealth和ARC-Challenge上,有检索功能的基线与没有检索功能的基线相比,性能提升并不明显。
大多数带检索的基线模型在提高引用准确率方面都很吃力。
在实际精确度的度量上,SELF-RAG7B偶尔会优于13B,这是因为较小的SELF-RAG通常倾向于生成精确且较短的输出。
Llama2-FT7B是在与SELF-RAG相同的指令-输出对上训练的基准LM,不进行检索或自我反省,仅在测试时进行检索增强,它落后于SELF-RAG。这一结果表明,SELF-RAG的收益并非完全来自训练数据,并证明了SELF-RAG框架的有效性。
总结 本文主要介绍了最近的工作《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION 》,该工作 引入了一个名为"自我反思检索-增强生成"(SELF-RAG)的框架,通过检索和自我反思来提高LM的质量和事实性。
SELF-RAG通过预测原始词汇中的下一个标记以及新添加的特殊标记(称为"反思标记"),训练LM学习检索、生成和批判文本段落以及自己的生成。
其实现思路与toolformer等有着十分类似的思路,感兴趣的可以结合一起看。
参考文献 1、https://arxiv.org/pdf/2310.11511.pdf
2、 https://selfrag.github.io/
关于我们 老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。
评论
沙发等你来抢