AKL AI CLUB BETA ← 前沿导读
FRONTIER · 模型内部

你越教它没学过的东西,它越会编——幻觉不是记性问题,是后训练亲手教出来的

Extrinsic Hallucinations in LLMs

Lilian Weng 自 2017 年起写作 Lil'Log,多篇技术综述被研究者当作入门教材 · 在 OpenAI 长期负责安全系统与模型部署前的安全评估 · 本文串起从预训练成因、检测基准到缓解方法的数十项研究,是幻觉这个题目上最完整的一份地图
2024 年 7 月
为什么选它幻觉是这个专栏一直缺的一块。这篇的价值不在罗列方法,而在它给出一条能直接落到手上的原则:对齐训练只该用模型已经知道的东西,凡是灌进去的新知识,都在教它把不确定答成确定。读完你会知道该测什么、哪些指标是噪音,以及为什么思维链和指令微调对幻觉基本无效。

「幻觉」这个词现在什么都能装——答错了、答偏了、整段瞎编,都叫幻觉。Lilian Weng 这篇 2024 年 7 月的长文第一件事是把它收窄:只谈 extrinsic hallucination(外源幻觉),指模型说出的东西既不来自你给的上下文,也不受预训练语料支撑,纯属凭空造。与之相对的是 in-context hallucination(上下文幻觉)——原文就在提示词里,它总结得却跟原文对不上。前者难得多:要判定一句话是编的,等于要拿整个世界知识去核对它。

值得读的不是那份方法清单,是清单背后那条别扭的线索。Weng 把要求拆成两件必须分开考核的事:模型要说真话,以及在不知道的时候承认不知道。而她梳理的证据反复指向同一个方向——我们用来「让模型更好」的那些常规手段,正在同时破坏这两件事。用监督微调灌新知识,会教它把不确定的东西答得斩钉截铁;用 RLHF 迎合人类偏好,会把它原本还算准的自信度估计搞坏。幻觉不主要是记性问题,很大一部分是后训练亲手教出来的。

你教它没学过的东西,它学会的是「编」

全文最该记住的实验来自 Gekhman 等 2024。他们先按模型答对的概率把闭卷问答样本分成 Known(又分 Highly / Maybe / Weakly)和 Unknown 两类,再拿一半 Known、一半 Unknown 去微调。三个观察:Unknown 样本学得明显更慢;验证集表现最好的时刻,恰恰是模型学会了大部分 Known、只学进去很少 Unknown 的那一刻——等它把 Unknown 也学会了,幻觉就起来了;而 Known 里贡献最大的不是模型早就烂熟的 HighlyKnown,是半生不熟的 MaybeKnown。

这组数背后的解释很朴素:小规模微调根本装不进新事实,它装进去的是「面对这类问题要给出一个确定答案」这个行为模式。所以后面 FLAME 那条工程建议才成立——做 SFT 和 DPO 的数据尽量用模型自己生成的回答,别拿检索出来的正确答案当正样本,那等于在教它模仿一种它并不具备的知识状态。

怎么知道它在编:三条查法

第一条靠外部核对。FActScore 把一段长回答拆成一条条「原子事实」,逐条去维基百科验,算支持率;SAFE 更进一步,让模型当 agent 自己发 Google 查询、多轮推理判断证据是否支持,与人类标注的一致率 72%,两者分歧时有 76% 的情况是人类判错,成本只有人工的二十分之一。第二条不需要任何知识库:SelfCheckGPT 就同一个问题采样多次,看几份答案彼此矛不矛盾——真知道的东西每次说得一样,编的东西每次编得不一样。第三条最巧:Agrawal 等发现,查一条参考文献真伪时,直接问「这篇论文存在吗」远不如绕着问「这篇论文的作者是谁」——编造的条目,多问几次会冒出不同的名字。

比方法更值得记的是两组关于「知不知道自己不知道」的数。TruthfulQA 用 817 道针对人类常见错觉设计的问题去考,人类能到 94%,当时最好的模型只有 58%,而且模型越大越不 truthful——因为它把人类的错误共识也学得更像;注意这个反向缩放只出现在这种对抗性构造的题上,普通事实题并没有。另一边 Kadavath 等 2022 更刺眼:预训练模型在选择题上的自信度其实相当准,说七成就大约七成对,而 RLHF 之后这个校准明显变差

有用的、没用的,和一个反直觉的细节

先说没用的:指令微调和思维链都不降低幻觉,这是 CoVe 论文直接测出来的结论。有效的做法则有个共同点——把「查证」从原答案的上下文里搬出去。CoVe 的四步是先出草稿、让模型自己列核查问题、独立回答这些问题、最后据此改写;其中最关键的一条是核查问题必须分开单独回答,因为把带幻觉的草稿留在上下文里,模型会顺着它继续编。另外两个经验也很实用:短的核查问题比长的答得准,开放式问题比是非题好用。

最后两个工程细节。Lee 等发现 nucleus sampling(按累积概率截断候选词的采样方式)在事实性上不如贪心解码,而且随机性对句子后半段的伤害更大,于是提出让截断阈值随 token 位置衰减的 factual-nucleus sampling——多样性保住了,命名实体错误降下来了。ITI 则用线性探针在各层注意力头里找出与「真话 / 假话」相关的少数几个头,推理时把这些头的激活朝「真」的方向推一把就有效;这说明真假的表征在模型内部是有具体位置的,跟第 10 篇追踪模型思维那条线正好接得上。

这篇的真正贡献不是方法清单,是它把「幻觉」从一句抱怨变成了两个可以分别测量的要求:说真话,和承认不知道。这两件事必须分开考核。一个从不编造但什么都答「我不确定」的模型没用;一个句句斩钉截铁、三成是编的模型更危险。而现在绝大多数产品只测第一件,第二件被当成体验问题,让位给了「有帮助」。

文章里那条最该被记住的线索,Weng 自己没有点破:造成幻觉的主力不是预训练,是后训练。Gekhman 那组实验说的是 SFT 灌新知识会推高幻觉;Kadavath 那组说的是 RLHF 会毁掉本来还不错的自信度校准;FLAME 那组干脆直接量出来 RLHF 让事实性变差——因为人类评审偏爱更长更详细的回答,而更长更详细不等于更真。三份互相独立的证据指向同一件事:我们把一个粗糙、但对自己的无知还有基本感觉的模型,训成了一个说什么都好听、也说什么都笃定的模型。这和第 35 篇(同一作者论奖励作弊)、第 26 篇(你一旦去管它想什么,它就学会了藏)是同一个调子,只是这次的受害者是事实性。

要说局限,外源幻觉这个定义把「预训练语料」当成了世界知识的代理,可语料本身就装着大量过时和错误的内容——按这个定义,模型忠实复述语料里的一条错误不算幻觉。这在工程上说得通(你只能要求它对得起训练数据),在产品上完全说不通(用户要的是对)。另外别把这篇当解法清单用:它列的十来种方法没有一种能把幻觉压到可以不看的程度,真能拿走的只有一条原则——对齐训练只用模型已经知道的东西,别拿它不知道的答案去当正样本。两年过去了,这条原则依然是这个题目上性价比最高的一句话,而它同时也在提醒:只要「有帮助」还是唯一被优化的目标,幻觉就不会真的降下去。
幻觉事实性RLHF校准检索增强
去读原文 本文是原创导读,不是原文翻译——真正的细节、证据和微妙之处都在原文里。 原文Lil'Log · Extrinsic Hallucinations in LLMs(英文,约 29 分钟阅读)→

本文为 AKL AI Club 原创撰写的导读,不是原文翻译;著作权归原文作者所有。 篇目由编辑独立选取,来源均经人工核实。