大模型幻觉产生的根源
1.数据自动获取,会收集大量错误的数据
2.大模型的多才多艺,需要建立综合,可靠能够自动评价的benchmark
3.对于错误的不可感知,大模型有着很强的写作能力并且存储着大量的知识所以它产生的幻觉现象很难以辨认。
大模型产生的其它问题
1.模棱两可:说的不清晰。
2.不完全:一个东西说四步完成,但是直说了两个。
3.偏见:训练数据包含历史书,歌剧等等。
4.信息不足,强化学习当中奖励模型过度优化导致。
大语言模型幻觉的评价
1.验证形式:
TruthfulQA:验证模型回答的正确性
FactualityPrompt:
FACTScore;评价生成个人传记的准确性
Kola-kc:
HALUEVAL:需要模型评价哪一个陈述出现了幻觉
FACTOR:判断是否给真实数据分配了一个较高的可能性
2.任务形式
对话,taskinstruction,textcompltte
3.构建过程
要不是手动要不是其他的模型标注
2.2验证指标
手工标注:效果好成本高不现实
基于模型的自动标注
AlignScore :在两个文本之间验证抑制性
利用capabilitues of off-the-shell models
FactScore:使用文档检索器检索相关的信息,通过一个LLAMA
大模型进行评价输出数据的真实性、
他们还通过一些更加细致的方法(F1 score的微分以及错误率来评价自动方法与手工方法的一致性)
还涉及了专有的prompt来观察主观的LLM是否会自我矛盾
基于规则的自动评价
使用准确率进行评估
还有一种启发是的方法 结合了命名实体准则和文本蕴藏准则
比较模型的一致性,通过使用一种自我比较的方法,在promt加入事实和不加入事实来生成两个对话来评判模型的一致性。
大模型幻觉产生的根源
大模型缺乏相关的知识或者内化了错误的知识
大模型会将离得很近的或者有着很强相关行的知识混为一谈
与训练样本有关 在人类搜集到的语料库当中就会存在着很多错误
幻觉的产生跟大模型的只是回溯以及 推理能力有关
大模型有时候高估了他们的能力
对于一个错误的回答以及正确的回答他们的分布熵都是一样的,证明当生成错误答案的时候语言模型一样非常自信
即使gpt4在区分不能回答的答案以及错误的答案的时候跟人类也有明显的区别。
错误的下游任务调整可能会导致幻觉
在进行与训练之后大模型要根据一些其他的指令进行微调,这时候在第一步的pretrain中没有学到这方面的信息就会导致错误的对齐,其次大语言模型趋向于讨好使用者而不是产生正确的答案
大语言模型的生成策略具有潜在的危险性
幻觉累计现象,局部的预测不会导致全局最优 采样策略也会导致危险性
幻觉的消除
在预训练的时候进行消除
在预训练预料中有很多错误,我们可以从模型答案回溯到训练语料然后进行人工或者手动的调整
在大模型时代之前,大部分研究者趋向于手动标注数据
大模型之后趋向于自动
1.通过启发式的规则
2.通过对于可信文本的上采样
3.给可信文档上加一个主题前缀
该阶段解决幻觉需要从语料库上下手,改进措施是通过一些高些的策略来选择可靠的数据
微调时进行幻觉的消除
微调数据让专家进行管理
微调的过程当中总会让模型积极回答问题即使模型不会回答他也会含糊其辞其次起始加入一些honenty-oriented的案例对模型并没有什么帮助,因为导致了模型有限的泛化能力,并且不知道模型知识的边界。
强化学习的时候进行幻觉的去除
让模型勇敢说不,强化学习的honest reward model在保留前面SFT优点的前提下还克服了它的困难。
强化学习允许语言模型探究它们的知识边界,允许他们说不而不是胡乱捏造事实。但是模型会过于保守,避免说出他回到的答案。
在推理的时候进行幻觉的去除
更加便宜以及可控,更多的研究聚集于此
设计解码策略
1.核采样方法落后于贪婪编码,会引入随机性。提出了factual-nucleus sampling做一个事实性与多样性的一个权衡
2.Inference-Time Intervention,在注意力头部安装二分类器,识别一组高度线性的头部,让模型与这些头部产生关联提高模型的可信度
3.CAD方法:让模型在编码的时候更加考虑上下文。当模型的参数化知识与上下文冲突的时候就容易产生幻觉。
解码方案是一种即插即用的方法,但是他需要一朝一生成token的每一个概率但是现在的chatgpt是api调用的,缺乏可见性。
寻求外部知识
根据指令查询外部知识,然后进行引导生成
(1)知识获取
外部知识库
外部工具
(2)知识利用
直接拼接成上下文
自动纠正
挑战:
网上知识很多,难以区分好坏
检索器和固定器的效率
检索的知识与参数化的知识产生冲突
利用不确定性
探索不确定性:
用户可以根据模型的不确定性来选择的相信网络能力
衡量不确定性的方法有三种:
-
logit-based estimation:通过计算token的不确定性来计算不确定性
-
verbalize-based estimation:通过prompt以及verbalizer直接询问模型的确定程度
-
consistency-based estimation:当一个模型产生幻觉以及不确定的时候,对于同一个回答他的逻辑不一致
有很多工作:
a,selfcheckgpt,通过一致性检查幻觉,使用各种指标衡量相似性
b,使用一个llm来衡量两个句子逻辑性是否一致,如果不一致一个产生了幻觉
dengdeng
其他方法
1.muti-agent interaction;多个代理达成一致
2.prompt engineer:使用一些好的prompt 比如思维链
3.Analyzing llm internal states:提取网络内部特征进行分类俩预测是否出现幻觉
4.Human-in-the-loop:幻觉造成的原因是知识与人的query分布没有对齐,鼓励用户去告诉模型正确答案和错误答案
5.优化模型结构,在解码的时候采用考虑双向的信息。比如muti-branch decoder和bidirectional autoregressive architecture
disseminate 散播
synergist 协作剂
simulate 模仿
sought to 试图
prominent 占主要地位的
proprietary 专有的
circumvent 设法避免
burgeoning 迅速成长
meticulously 细节的
sycophancy奉承
pertinent 相关的
spurious 假的