在 GPT 等大语言模型的实际应用中,存在一个关键问题——幻觉(Hallucinations)。即模型可能生成看似合理但实际上错误的内容,涉及事实性错误、逻辑矛盾或不合常识的回答。理解这一现象的成因及如何通过解码策略缓解,对于工程落地至关重要。
一、什么是 LLMs 的幻觉?
幻觉是指模型在生成文本时,输出了不正确或虚构的信息。这些错误可能是事实性错误、逻辑漏洞、偏见或者是违反常识的内容。例如,当你问一个 LLM:"世界上最高的山是什么?"模型可能正确地回答:"珠穆朗玛峰是世界上最高的山。"但有时候,它可能会回答:"乞力马扎罗山是世界上最高的山。"这种情况下,模型生成了一个事实性错误的回答,即产生了幻觉。
二、LLMs 内部知道它们何时犯错吗?
1. 真实性信息集中在确切答案词元上
研究人员发现,LLMs 在生成答案时,关于答案真假的信息主要集中在确切答案词元(exact answer tokens)上。所谓确切答案词元,是指在模型生成的答案中,直接给出关键信息的词。例如,在回答"中国首都在哪里?"时,模型可能回答:"中国的首都在北京。"这里的"北京"就是确切答案词元。
2. 利用探测分类器提高错误检测
基于上述发现,研究人员训练了探测分类器(probing classifiers),专门对 LLM 在生成确切答案词元时的内部激活状态进行分析,以预测答案的正确性。实验表明,针对确切答案词元的内部表示进行训练,可以显著提高错误检测的性能。
3. 模型的内在表示包含更多信息
即使 LLM 生成了错误的答案,其内部表示却可能已经包含了正确答案的信息。这意味着模型"知道"正确的答案,但在生成过程中由于各种原因(如训练策略、解码方法等)输出了错误的内容。
三、模型内外不一致的原因以及工程学上的意义
模型的内部表示与其外部输出可能存在不一致性,这一发现揭示了 LLMs 在训练和生成过程中的一些深层次问题。
例子:模型内部知道,但外部不说 假设我们问模型:"爱因斯坦提出的著名方程是什么?"模型回答:"爱因斯坦提出了相对论,但我不确定具体的方程。"然而,模型内部可能已经生成了"E=mc²",但由于一些原因(可能是训练中学到的表达方式或者谨慎策略),没有在外部输出。
这个例子表明,我们可以尝试调整模型的生成策略,让其更充分地利用内部的正确信息,提供更准确的答案。
改进方向:
- 优化模型的训练策略:在训练过程中,增加对正确答案词元的关注度,或者引入新的损失函数,强化模型对真实性的敏感性。
- 改进解码方法:在生成过程中,结合探测分类器的反馈,实时调整生成路径,引导模型输出正确的答案。
- 开发开放源码模型:由于利用模型内部激活状态需要白盒访问,开源的模型更有利于工程实践中的应用和改进。
四、激活(Activation)详解
首先普及一下"激活"的概念,这是理解模型内部决策的关键。
1、什么是激活(Activation)?
在神经网络(包括大型语言模型)中,**"激活"**是指神经元在接收到输入信号后输出的结果。可以把它想象成每个神经元的"兴奋程度"或"活跃程度"。
通俗的比喻: 把一个神经网络想象成一群决策者(神经元)在开会。每个决策者接收到信息(输入),然后根据自己的判断标准,决定要不要"发言"或者"表态"。激活就是这个决策者的"发言力度"或"支持程度",可能强烈支持,也可能不表态,或者反对。
在神经网络中,激活函数决定了神经元的输出(激活值)的范围。常见的激活函数有:
- 线性激活函数:特点是没有对输入进行任何非线性变换。激活值范围从负无穷到正无穷。
- ReLU(Rectified Linear Unit)激活函数:公式 f(x) = max(0, x)。特点是将输入小于 0 的部分截断为 0,输入大于 0 的部分保持不变。激活值范围 0 到正无穷。
- Sigmoid 激活函数:公式 f(x) = 1 / (1 + e^{-x})。特点是将输入压缩到 0 到 1 之间。
- Tanh 激活函数:公式 f(x) = (e^{x} - e^{-x}) / (e^{x} + e^{-x})。特点是将输入压缩到 -1 到 1 之间。
- GeLU(Gaussian Error Linear Unit)激活函数:常用于 Transformer 模型。是一种平滑的非线性函数,没有严格的上下限。


