今天是2023年9月14日,星期四,我们继续来聊聊一些关于大模型幻觉的话题。
尽管大型语言模型(LLMs)具有令人印象深刻的能力,但它们很容易产生幻觉,我们在前面几个文章中有诸多论述。
《DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models》利用LLMs中的事实知识通常被证明会被本地化到特定的转换层这一事实,通过对比投射到词汇空间的后层与前层的对数差异来获得下一个词的分布,提出了一种简单的解码策略来减少预训练 LLMs 的幻觉,这种策略既不需要检索外部知识作为条件,也不需要额外的微调。
对TruthfulQA和FACTOR实验表明,DoLa能够提高LLaMA系列模型的真实性。
针对StrategyQA和GSM8K的思维链推理的进一步实验也表明,DoLa可以促进更多的事实推理。
对开放式文本生成结果的实验(使用GPT-4进行评估)表明,与原始解码方法相比,DoLa可以生成信息量更大、更符合事实的回答,从而获得更好的评分。
最后,从效率的角度来看,DoLa只会在解码过程中造成少量的额外延迟,这表明它是提高LLM真实性的一种实用而有用的解码策略。
地址:https://arxiv.org/pdf/2309.03883.pdf
GitHub源码实现: github.com/voidism/DoLa
本文对该工作进行介绍,供大家一起参考。
一、问题的提出
LLMs中的幻觉指的是生成的内容并非基于训练数据或事实。不完善的学习和解码等各种因素都是造成幻觉的原因。
为了减少幻觉,最初的方法是利用人类反馈进行强化学习,并将其提炼为更小的模型,如Alpaca和Vicuna。
最近的策略包括推理时间自洽性检查和多代理辩论,也有工作利用人类标签引导LLM进行推理时干预。
虽然LMs产生幻觉的确切原因还不完全清楚,但一个可能的原因是最大似然语言建模的目标,即最小化数据和模型分布之间的前向KL发散。
这一目标可能会导致模型具有大规模搜索行为,从而使LM将非零概率分配给与训练数据中的知识不完全一致的句子。
经验表明,在有限数据上使用下一个词预测目标训练的LM会产生一个使用语言知识识别训练示例中表面模式的模型,而不是识别和生成从训练语料库中提取的真实世界事实的模型。
从模型可解释性的角度来看,基于Transformer的大模型已被宽泛地证明可以在前几层编码”低层”信息(如语篇标签),而在后几层编码更多的”语义”信息。
最近发现,“知识神经元”分布在预训练BERT模型的最上层,建议利用这种模块化的知识编码,通过对比解码方法放大LM中的事实知识,其中下一个单词的输出概率来自于较高层与较低层的对数之差。
通过强调高层知识,淡化低层或中间层知识,有可能使LM更符合事实,从而减少幻觉。
如图1所示:
虽然”西雅图”在所有层中都保持着较高的概率,这可能是因为它是一个在句法上看似合理的答案–但在高层注入更多事实性知识后,真实答案”奥林匹亚”的概率却增加了。因此,对比不同层之间的差异可以揭示本例中的真实答案。
基于这一原理,该工作提出一种新的解码方法–“层对比解码”(DoLa),在不检索外部知识或进行额外微调的情况下,更好地揭示嵌入在LLM中的事实知识。
二、具体实现方法
一个常规的语言模型由一个嵌入层、N个堆叠转换层和一个仿射层φ(-)组成,层φ(-)来预测下一个词的分布。
给定标记序列{x1,x2,…,xt-1},嵌入层首先将标记嵌入到向量序列H0={h(0),……,ht-1(0)},H0将依次被各转换层处理,用Hj表示第j层的输出。
然后,词汇头φ(-)预测下一个标记词xt的概率 其中X是词汇集。
与之前不同的是,Dola不是只在最后一层应用φ,而是将高层和低层的信息进行对比,从而得到下一个标记的概率。
更具体地说,对于低层,使用φ(-)计算下一个标记的概率
将语言头直接应用于中间层的隐藏状态的想法被称为早期退出,即使没有特殊的训练过程,它也被证明是一种有效的推理方法,因为转换层中的残差连接使隐藏表征逐渐演变,不会发生突然的变化。
为了简洁起见,用qj(xt)表示qj(xt|x<t),然后通过以下方法计算下一个标记的概率。
其中,M层被称为未成熟层,而最后一层被称为成熟层。
F(.,.)通过计算对数域中两个分布之间的差值来对比未成熟层和成熟层的输出分布。
在每个解码步骤中,都会使用成熟层和J中所有候选层之间的分布距离度量d(.,.)来动态选择未成熟层。
选择距离d(.,.)最大的层作为未成熟层的动机是最大化成熟层/未成熟层之间的差值。
1、事实知识的跨层演化
该工作使用32层LLaMA-7B模型进行初步分析,并计算了早期退出输出分布qj(-|x<t)与最终层输出分布qN(-|x<t)之间的Jensen-ShannonDivergence,JSD,以显示早期退出输出与最终层输出之间的差异。
图2显示了解码输入问题答案时的JSD,从中可以观察到两种模式。
模式1:第一种模式是预测重要的名称实体或日期,如图2中的WoleSoyinka和1986,这需要事实知识。可以看到,在较高的层中,计算出的JSD仍然非常高。这种模式表明,模型在最后几层仍在改变其预测,并有可能在预测中注入更多事实知识。
模式2:第二种模式是预测功能词,如was、the、to、in,以及从输入问题中复制的词块,如第一个尼日利亚人、诺贝尔奖。在预测这些”简单”的词块时,可以观察到JSD从中间层开始变得非常小。这一发现表明,模型在早期层已经决定了要生成什么代币,因此它只是在高层保持输出分布几乎不变。这一发现也符合早期退出语言模型的假设。
从质量上看,当下一个词的预测需要事实知识时,LLaMA似乎会改变高层的预测。
因此,在突然变化前后对各层进行对比可能会放大来自高层的知识,使模型更加依赖于其内部的事实知识。此外,这种信息的演变似乎因标记而异。在Dola中,需要准确选择包含可信但事实性较弱信息的过早层,而这些信息可能并不总是停留在同一早期层。
因此,Dola提出了一种动态选择过早信息的方法。
2、动态早熟层选择
为了放大对比解码的效果,理想情况下,选择的最佳过早层应该是与最终层输出差异最大的那一层。为了在每个时间步进行动态过早层选择,我们采用了以下两层下一个词分布之间的距离度量。
其中,JSD(.,.)是詹森-香农离散度。过早层,即第M层(0≤M<N),然后在早期层子集中选择发散最大的层。
其中,J是过早选择层时考虑的候选早期层集合。对于层数不等的LLaMA模型,根据其总层数将变换层分成2到4个J桶,以便集中从一定范围的层中进行对比。我们仍然根据手头的任务使用验证集来选择最佳桶。
这种动态层选择策略使模型能够根据每个标记的复杂性和难度选择最合适的过早层,从而更好地利用变换器模型不同层所学习到的知识。
除了动态层选择策略外,还有一种非常简单的方法也可以考虑,那就是用验证集对所有可能的早期层进行蛮力实验,选出验证性能最好的层,以此来选择过早层,这种简单的方法称为DoLa-static。
然而,DoLa-static有以下缺点:1)层搜索空间大;2)最佳层对数据分布敏感,因此需要分布内验证集。
我们提出的动态图层选择策略也减轻了静态图层选择方法的缺点,缩小了图层搜索空间,使该方法更加稳健,而不严重依赖分布内验证集。我们在第4.1节中实证研究了这种动态策略相对于DoLa-static的有效性。
3、预测对比
通过得到的未成熟层和成熟层,那么则要放大成熟层的输出,并淡化未成熟层的输出。在具体实现上,可以从成熟层的输出中减去未成熟层输出的对数概率,将这一结果分布用作下一个单词的预测。
其中,子集Vhead(xt|x<t)∈X被定义为该标记是否有足够高的成熟层输出概率:
如果成熟层中某个标记的预测概率太小,就不可能是合理的预测,因此将标记概率设为零,以尽量减少假阳性和假阴性情况。
我们在此来看看假阳性和假阴性的概念,其中:
假阳性指的是得分极低的不可信标记可能在对比后获得高分,原因是这些来自不同层的不可信标记的低概率范围不稳定。
假阴性指的是当模型对一个简单的决定非常有信心时,高分令牌的输出概率在不同层中的变化不大,导致对比后的得分较低,因此在这种情况下,需要强制模型仍然从这些高分令牌中进行选择,这种策略被称适应可信性约束。
进一步的,淡化低层语言知识,放大现实世界的事实知识,这可能会导致模型生成语法错误的段落。该工作发现,生成的DoLa分布有时更倾向于重复之前生成的句子,尤其是在生成长序列的思维链推理时,在解码过程中加入了引入的简单重复惩罚(θ=1.2)。
三、实验效果分析
该工作在实验中考虑了两类任务:多重选择任务和开放式生成任务。
对于多项选择任务,使用TruthfulQA和FACTOR(新闻/维基)。
对于开放式生成任务,使用TruthfulQA(通过微调GPT-3进行评估)以及涉及推理的任务,特别是StrategyQA和GSM8KCobbe。
这两项任务需要思维链推理。最后,测试了VicunaQA基准提出的GPT-4自动评估,以评估作为聊天机器人助手的性能。
1、对比实验
在实验设置上,研究了四种大小的LLaMA模型(7B、13B、33B、65B),并将它们与三种基线进行比较:
1)原始解码(贪婪解码或采样,视任务而定);
2)被动解码(CD),其中LLaMA-7B作为业余模型,而LLaMA-13B/33B/65B作为专家模型;
3)推理时间干预(ITI)。ITI使用LLaMA-7B和在TruthfulQA上训练的线性分类器。
由于实验重点是对比DoLa中的层差异和CD中的模型差异,没有采用额外的技术,如限制过早层或业余模型的上下文窗口,以使设置更加简洁。
根据之前的研究,将自适应可信度约束(α)设为0.1,重复惩罚(θ)设为1.2。
在动态过早层选择中,将Transformer层划分成桶,并选择一个桶作为候选层(J)。
对于LLaMA-7B(32层),使用两个桶:[0,16),[16,32);对于LLaMA-13B(40层),对应[0,20),[20,40);
对于LLaMA-33B(60层),三个桶:[0,20),[20,40),[40,60);
对于LLaMA-65B(80层),有四个桶:[0,20),[20,40),[40,60),[60,80);其中:第0层是指第一个转换层之前的词嵌入输出。
为了提高效率,只有偶数层(第0层、第2层等)被视为候选层。这种设计限制了超参数搜索空间,只需要2-4次验证运行。
使用两倍验证(TruthfulQA-MC、FACTOR)或特定验证集(GSM8K、StrategyQA)来选择最佳水桶。
对于缺乏验证集的VicunaQA,使用GSM8K集中的最佳桶。
2、多项选择任务
在TrufulQA任务上,在自适应似然性约束中,用-1000代替-∞,以避免破坏语言似然得分,使用两倍验证来确定基于MC3分数的最佳候选层桶。
如表1中的结果显示,LLaMA模型在四种规模下的性能都有显著提高,超过了ITI和CD,在两倍验证中,一致选择了较高的层-7B:[16,32);13B:[20,40);33B:[40,60);65B:[60,80)。
在FACTOR多项选择任务中,每个例子都有一个长段落和四个全句选项,其中一个为正确选项。我们使用新闻和维基子集作为两折验证的两折。在自适应似然性约束条件中,我们使用-1000而不是-∞。
表1显示,除维基子集上的13B模型外,我们的方法通常比基线高出2-4%,而且比CD更有效。
FACTOR所选的候选层一直较低:7B为[0,16),13B/33B/65B为[0,20)。这与TruthfulQA不同,后者选择的层数更高。
我们认为,这是因为TruthfulQA的多项选择题是简短的事实关键型回答,而FACTOR的是长句完成型回答。正如第2.1节所述,对于关键事实,使用较高图层对比效果更好,但对于包含大量易预测标记的句子,较低图层可能更适合。
在开放式的TruthfulQA设置中,评分由两个关于真实性和信息成熟度的微调GPT-3来判断。通过不回答(即回答”我无可奉告”)可以轻松获得100%的真实性评分,但却会导致0%的信息量评分。
3、开放式生成任务
该工作在StrategyQA和GSM8K上评估了解码策略,这两项任务不仅需要事实性,还需要思维链(CoT)推理能力,才能取得好成绩。
随机抽取10%的GSM8K训练子集作为这两项任务的验证集。
7B的最佳层降压值为[0,16),13B/33B/65B的最佳层降压值为[0,20),
这与FACTOR的结果一致,表明与较低层的对比对于推理任务是有效的。
StrategyQA我们在StrategyQA上对DoLa进行了评估,StrategyQA是一个要求使用多跳策略回答问题的数据集。
如表2所示:
在四种规模的LLaMA中,DoLa将准确率提高了1-4%,而CD则主要降低了性能。这意味着,将大型模型与小型模型进行对比会损害推理能力,因为小型模型也具有一定的推理能力。
在GSM8K上对DoLa进行了测试,这是一个需要事实知识和算术推理的数学单词问题基准。可以看到,除7B外,大多数LLaMA大小的准确率都提高了2%。这表明,即使在需要算术推理的任务中,使用DoLa对较高或较低层进行对比也有利于提高性能。
四、结论分析
1、静态与动态过早层选择
引入了DoLa的变体DoLa-static,它在整个解码过程中选择一个恒定层进行对比。图5和附录B图7中分别展示了GSM8K验证集和FACTOR的部分结果,并列举了所有层的DoLa-static结果。
可以看到,在图5a中,通过对比较低的层,DoLa-static表现更好。一些”最佳”层,如LLaMA-7B中的第10层,甚至优于DoLa。但是,这些最佳层对不同数据集都很敏感,因此如果没有特定任务的验证集,DoLa-static的通用性就会降低,而在实际应用中可能并不总是有特定任务的验证集。
此外,再随机抽取了另一个10%的GSM8K子集,结果如图5b所示,可以看到:
在这两个10%的GSM8K子集中,DoLa-static显示了不同的最优层。第10层在子集#1中是最佳层,而第2层在子集#2中是最佳层(图5a和5b)。
在子集#2中使用子集#1的最佳层会降低其性能,这突出表明了DoLa-static对固定层选择的敏感性。
相比之下,DoLa在两个子集中都保持了较高的分数,几乎与DoLa-static表现最好的层相匹配,这凸显了DoLa的鲁棒性。此
外,DoLa简化了超参数搜索空间:它只需要2-4个桶测试,比DoLa-static所需的所有层16-40次运行少了近10倍。
2、随机层选择基线
为了比较动态层选择方法的最优化程度如何?该工作使用了与DoLa类似的”随机”基线,但图层是随机选择的。
表3中的结果显示,这种随机方法的性能比原始基线差,这突出了我们基于JSD的图层选择策略的重要性。
3、重复惩罚
之前讨论过DoLa有时会重复内容,尤其是在StrategyQA和GSM8K中。为了减轻这种情况,采用了重复惩罚。
图6显示,这提高了DoLa在StrategyQA中的性能,但损害了基线的性能。对于CD,惩罚的效果略有提高,但仍不及基线。
此外,为了检验DoLa在LLaMA系列之外的适用性,我们在MPT-7B模型上测试了DoLa。
表4中的初步结果显示,除GSM8K外,DoLa在大多数数据集上的性能都有所提高。这表明DoLa有潜力在各种变压器模型中实现通用。GSM8K的例外情况可能是由于MPT-7B的数学能力有限。
4、定性研究
表5展示了LLaMA-33B在有DoLa和没有DoLa的情况下回答的TruthfulQA示例,微调后的GPT-3对其真实性和信息量进行了评分。
这些答案是通过贪婪解码确定生成的。在第一个例子中,基准线生成了可信但不正确的日期”1776年7月4日”,而DoLa则输出了正确的日期”1776年8月2日”。在第二个例子中,基准线提供了错误的建议”在提交失踪人员报告前等待24小时”,而DoLa则做出了真实的回应。这些例子凸显了DoLa在避免产生虚假信息方面的有效性。
在第三个例子中,与基线相比,DoLa的真实性表现较差。基线表示”我无可奉告”,真实度为1.0,信息量为0.0。相反,DoLa提供了详细但不正确的信息,真实性得分为0.0,信息性得分为1.0。
5、生成延迟
该工作还评估了DoLa对解码延迟的影响,并将其与基线进行了比较,两者都采用了贪婪解码。
表6中的结果显示,DoLa使解码时间增加了1.01到1.08倍,这个增长并不多。
总结
本文介绍了《DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models》这一工作,该工作动态选择适当的层并对比其对数,以提高解码过程中的事实性。文重的实验结果表明,无需外部信息检索或模型微调,DoLa就能显著提高多个任务的真实性,提供了一种简单的解码策略,但它有可能与检索模块相结合。
不过,DoLa方法提高了LLM的事实性,但它也有局限性,正如该工作所提到的:
其一,还没有探索方法在其他方面的表现,如指令遵循或从人类反馈中学习。
其二,依赖现有的架构和预先训练的参数,不使用人类标签或事实知识库进行微调,从而限制了可能的改进。
其三,该方法完全依赖于模型的内部知识,而不像某些检索增强型LM那样使用外部检索模块。因此无法纠正训练过程中获得的错误信息。
因此,未来的工作可以将上述要素与我们的解码策略相结合,从而进一步解决上述局限性。
最后,GitHub源码提供了实现: github.com/voidism/DoLa,感兴趣的可以看看。
参考文献
1、https://arxiv.org/pdf/2309.03883.pdf
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。