“幻觉”(_hallucination_)在大模型(尤其是语言模型和生成型模型)的语境下指的是模型生成的输出包括不真实或与事实不符的信息。换句话说,就是模型似乎在”编造”信息而非准确地回答问题或提供信息。理解这一现象需要从大模型的训练过程、数据、以及模型的工作原理几方面来考虑。
幻觉类型
- 事实性幻觉: 强调生成内容与现实世界事实的差异,通常表现为事实不一致或捏造。
- 忠实性幻觉: 生成内容与用户指示或提供的上下文的偏离,以及生成内容的非自洽。
幻觉原因
- 训练数据问题
- 训练过程缺陷
- 预训练阶段
- 架构缺陷
- 只注意力模块缺陷
- 暴露偏差
- 对齐阶段
- 能力错位
- 信念错位
- 预训练阶段
- 推理阶段的随机性
- 固有的抽样随机性
- 不完美的编码
- 上下文关注不足
- softmax瓶颈
训练数据问题
Garbage in,Garbage out 垃圾的训练数据只会训练出垃圾的模型。
通过训练数据的标注与清洗,保证语料的准确性与正确性。
训练过程有缺陷
训练过程包含了两个阶段
- 预训练阶段 (大模型学习通用表示并获取知识)
- 对齐阶段 (微调大模型与人类偏好一致)
预训练阶段
模型的实现原理缺陷导致的重要上下文信息丢失,缺乏整体性。同时预测生成环节中的微小偏差带来后续预测偏差叠加,导致生成内容偏离正确轨道。
对齐阶段
训练数据超出模型的能力范围 与 匹配人类偏好后对信息真实性的牺牲。
推理阶段的随机性
生成型模型(如GPT系列)会尝试基于训练时学到的语言模式来”猜测”最可能的续写或回答,但这种基于统计的方法不可避免地带来了不确定性。
(归根结底模型没有理解世界,只是通过统计模式来进行预测。)
- 固有抽样中再小的概率也有出现的可能,那么就可能导致与生成内容与前文的不协调而产生幻觉。
- 上下文关注的局限性,导致无法准生成与输入一致性的内容。
- softmax函数用于决定下一个最有可能的单词,但是由于没有准确选择最合适的单测,导致表达能力受限,从而影响生成内容的准确性。
解决路径(From GTP4_Turbo_128K)
针对大模型的幻觉问题,我们可以从以下几个方面来进行改进:
1. 提高数据质量
- 清洗数据:确保训练数据尽可能准确无误,去除或更正错误、过时或具有误导性的信息。
- 数据多样性:增加训练数据集中的多样性,确保覆盖更广泛的场景、领域和语言用法,减少偏差和过度泛化的风险。
- 平衡数据集:避免任何特定类型或类别的数据过于占优势,以防模型在这些方面生成过多的幻觉性内容。
2. 强化模型的理解力和常识推理
- 常识知识注入:通过结合外部知识库或常识推理数据库,提高模型对常识的理解和应用能力。
- 强化学习和人工反馈:利用人工反馈进行强化学习,指导模型学习哪些输出是优质的,哪些是应避免的。
- 多任务学习:训练模型在处理多种任务时展示良好的性能,使其能够理解和应对更复杂的语境和信息。
3. 增强模型的解释性和可验证性
- 模型解释性:通过研究和开发更具解释性的模型结构和训练方法,使模型的决策过程更加透明。
- 输出验证:在模型生成输出后,加入验证步骤,使用外部信息源或专门的验证模型来检查输出的准确性和可靠性。
4. 创建更精细的评估和错误检测机制
- 自动和手动评估:结合自动评估系统和人工评估来综合判断模型输出的质量,特别是针对事实准确性和逻辑一致性的评估。
- 改进的损失函数:设计和使用能够准确反映幻觉性内容风险的损失函数,以便在训练过程中减少幻觉的生成。
5. 利用技术和策略减少敏感或危险内容的生成
- 内容过滤系统:开发并应用内容过滤系统,在输出被展示给用户之前筛选掉不安全或不合适的内容。
- 用户指导和输入规范:提供给用户明确的指导和策略,帮助他们以更安全和高效的方式与模型交互,减少幻觉性内容的产生。
通过上述方法综合改进,我们可以显著降低大型模型输出幻觉问题的风险,提高其在各种应用中的可靠性和准确性。