当前位置: 首页 > news >正文

《Why Language Models Hallucinate》论文解读

《Why Language Models Hallucinate》论文解读

  • 论文:https://arxiv.org/pdf/2509.04664v1
  • author:
    image

摘要

就像学生面对难题时会猜测一样,大型语言模型在不确定时也会进行猜测,生成看似合理却错误的表述,而非承认自身的不确定性。这种“幻觉”现象即便在最先进的大模型中也依然存在,并且会损害用户对模型的信任。我们认为,语言模型产生幻觉的原因在于,其训练与评估流程更倾向于奖励“猜测行为”,而非奖励“承认不确定性的行为”;同时,我们也分析了现代训练流程中导致幻觉产生的统计层面原因。

幻觉并非难以解释的神秘现象——它本质上源于二分类任务中的错误。若模型无法区分“错误表述”与“事实”,那么在自然的统计压力作用下,预训练语言模型就必然会产生幻觉。我们进一步认为,幻觉之所以持续存在,与大多数评估的评分方式密切相关:语言模型被优化成了“擅长考试的系统”,而在不确定时进行猜测能提升其考试成绩。

这种“惩罚不知道(I don't know, IDK)”的普遍现象,只能通过“社会技术层面的缓解措施”来解决:具体而言,是修改那些“大模型排行榜”的现有基准测试的评分规则,而非新增更多专门的幻觉评估项目。这一改变或许能引导整个领域朝着构建“更具可信度的人工智能系统”方向发展。

一、核心问题:明确“语言模型幻觉”的本质

  1. 定义与现象:幻觉指语言模型在不确定时,生成“看似合理却错误”的内容(如乱编学者生日、误数字母数量)。即使最先进的模型(如 DeepSeek-V3、GPT-4o)也存在该问题,例如问“DEEPSEEK 有几个 D”,模型多次输出 2、3 等错误答案,实际仅 1 个 D。
  2. 关键区分:幻觉分为“内在幻觉”(与用户要求矛盾,如上述字母计数错误)和“外在幻觉”(与训练数据矛盾,如乱编作者出生日期),二者本质都是“模型无法区分‘正确事实’与‘看似合理的错误’”。

二、核心观点 1:预训练阶段——幻觉是“统计必然”

1. 核心逻辑:生成任务比“判断对错”更难

  • 研究者将模型生成内容的过程,归约(reduction)为“Is-It-Valid(IIV)二分类任务”:即模型生成内容前,需先隐性判断“这个答案是否正确”。
  • 数学关系证明:模型的“生成错误率(含幻觉)≥ 2×IIV 二分类错误率”。这意味着,只要模型在“判断答案是否正确”时存在误差,生成幻觉就是必然结果——就像人无法准确区分“真知识”和“假知识”时,自然会瞎猜。

2. 具体诱因:三类统计因素导致幻觉

  • 冷门事实的“认知盲区”:训练数据中“只出现过一次”的事实(如小众人物生日),模型无法学习到规律,只能随机生成答案。例如某人的生日在训练数据中仅出现 1 次,模型对这类问题回答正确的概率是 1/365=0.27%,模型根本记不住,会瞎编一个日期。
  • 模型能力不足(Poor Model):若模型架构无法适配任务(如用“只能看 2 个词上下文的三元模型”处理复杂推理),会因“无法理解任务逻辑”而产生幻觉。例如三元模型无法区分“She lost it…out of her mind”和“He lost it…out of his mind”,错误率至少 50%。
  • 数据质量与分布问题:训练数据含错误(Garbage in, Garbage out, GIGO)、测试问题与训练分布差异大(如问小众问题:“一磅羽毛和一磅铅哪个重”),都会加剧幻觉——模型会基于错误数据或陌生场景“强行编答案”。

三、核心观点 2:后训练阶段——幻觉持续存在,因评估体系“奖励猜测”

1. 关键矛盾:二进制评分逼模型“宁猜勿漏”

  • 现有主流评估(如 MMLU、SWE-bench)均采用“二进制评分”:答对得 1 分,答错/说 IDK 得 0 分。这种规则下,模型“瞎猜”的预期收益(如 50%概率蒙对得 0.5 分)高于“说 IDK”(得 0 分),导致模型即便不确定,也会硬编答案。
  • 类比:就像学生考试时,选择题不会做也会瞎蒙(蒙对有分,空着没分),模型本质是“被训练成了擅长考试的‘猜题者’”,而非“诚实的知识输出者”。

2. 更严峻的问题:“幻觉评估”无法对抗主流评价

  • 尽管研究者开发了专门检测幻觉的基准(如 HalluLens),但这类评估影响力远低于主流 benchmark。例如 Model A“诚实说 IDK、无幻觉”,Model B“瞎猜、有幻觉”,在二进制评分下 Model B 得分更高,开发者仍会优先优化 Model B——形成“鼓励瞎猜”的恶性循环。

四、核心观点 3:解决思路——改“评分规则”,而非新增幻觉检测

1. 核心方案:评估中加入“明确置信度目标”

  • 不再用“答对 1 分、答错 0 分”的二进制规则,而是在题目中明确“置信度阈值”,例如:“只有你有 90%以上把握时才回答,答错扣 9 分,答对得 1 分,说 IDK 得 0 分”。
  • 原理:当模型对答案的置信度低于阈值时,“说 IDK(0 分)”比“瞎猜(大概率扣 9 分)”更划算,从规则上鼓励模型“诚实表达不确定”。

2. 具体落地:两大关键设计

  • 阈值透明化:在每个问题的提示中明确阈值(如 t=0.75 表示“75%把握才回答”),避免模型因“不知道该何时回答”而瞎猜。例如编程题标注“只有确定代码能通过测试时才写,否则说‘无法解决’”。
  • 融入主流评估:将“置信度目标”加入现有 benchmark(如 SWE-bench、MMLU),而非新增独立的幻觉评估。例如 SWE-bench 中,模型输出错误代码扣 2 分,说“无法解决”得 0 分,倒逼模型在不确定时放弃瞎编。

五、关键结论与启示

  1. 幻觉不是“模型笨”,而是“规则逼的”:预训练时的统计规律让幻觉有必然性,评估体系的“奖励猜测”让幻觉持续存在——解决问题的核心不是“让模型更聪明”,而是“调整训练与评估的规则”。
  2. 对实践的指导:训练模型时,需同时做到两点:
    • 预训练阶段:通过“结构化改写数据、注入推理链(CoT)”帮模型区分“真/假知识”;
    • 强化学习阶段:用“错误负分、IDK 0 分”的奖励机制,让模型“趋利避害”,主动选择诚实表达不确定。
  3. 局限性提示:幻觉无法完全消除(除非模型只回答“确定知道”的内容,但会牺牲实用性),目标应是“将幻觉控制在安全、低影响的范围内”,尤其在医疗、法律等高危领域,需更严格的置信度阈值和错误惩罚。

如何训练减少幻觉的语言模型?

传统“答对 1 分、答错/IDK 0 分”规则下,模型猜错(得 0 分)和说 IDK(得 0 分)收益一样,不如瞎猜博 50%正确率。而“错误打负分、IDK 打 0 分”恰恰扭转了这个激励:

  • 模型猜错会“扣分”(收益为负),说 IDK 至少“不扣分”(收益为 0),从规则上让“承认不知道”比“硬编错误答案”更划算,直接打击了模型“宁猜勿漏”的幻觉动机。
  • 但要注意:这种规则只在“模型能判断自己‘不确定’”时有效——如果模型本身分不清“自己知道还是不知道”(比如预训练没学好“冷门知识的边界”),即便有负分惩罚,也可能因“误以为自己知道”而继续幻觉。因此,这个规则需要搭配“让模型学会识别‘不确定场景’”的训练,才能最大化效果。

落地训练步骤:分 3 步让模型“敢说 IDK、少瞎猜”

结合“预训练 → 监督微调 → 强化学习”框架,以及“动态评估”思路,具体操作如下:

第一步:数据准备——构建“带‘不确定标注’的训练数据”

核心是让模型先“见过‘哪些场景该说 IDK’”,避免它因“没学过 IDK 的正确用法”而不敢用。

  1. 数据来源

    • 筛选“客观上没有标准答案”或“模型大概率不知道”的场景:比如冷门事实(如“某小众论文的作者生日”)、模糊问题(如“10 年后的 AI 会怎样”)、超出模型知识范围的内容(如 2028 年后的未发生事件)。
    • 人工标注:对这些场景,明确标注“正确输出=IDK”,同时标注“错误输出示例”(如乱编的生日、瞎猜的预测)。
    • 数据格式:用“提示词+正确输出+错误输出”的三元组,比如:
      • 提示词:“请回答:论文《XXX》的第一作者生日是哪天?”
      • 正确输出:“I don't know”(或“抱歉,无法确定该信息”)
      • 错误输出:“03-07”(乱编的日期)
  2. 数据增强

    • 对有标准答案的场景(如“地球半径”),也加入“模型故意答错”的负例(如“地球半径 1 万米”),标注为“错误,需扣负分”,让模型明确“哪些输出会受惩罚”。
第二步:监督微调(SFT)——先教模型“识别不确定场景,会说 IDK”

这一步的目标是让模型先“学会基础行为”:知道“什么时候该说 IDK”,而不是上来就用强化学习硬训。

  1. 训练目标
    • 让模型在“不确定场景”下优先输出 IDK,在“确定场景”下输出正确答案,同时知道“错误输出是坏的”。
  2. 具体操作
    • 用第一步准备的“带标注数据”训练:输入提示词,让模型学习“输出 IDK”或“正确答案”,对输出错误答案的样本,用“交叉熵损失”重点惩罚(相当于提前植入“错误=不好”的认知)。
    • 关键细节:在训练数据中加入“梯度提示”——比如在 IDK 样本的 prompt 里加一句“如果不确定,请回答‘I don't know’”,帮模型快速对齐“IDK 的使用场景”。
第三步:强化学习(RL)——用“错误负分、IDK 0 分”的奖励机制优化

这一步是核心:通过动态反馈让模型“主动选择 IDK 而非瞎猜”,完全落地你提出的规则。结合文档中的“动态验证系统”思路,具体分 2 步:

1. 搭建“奖励计算模块”——明确“怎么给分”
  • 奖励规则定义(对应“错误负分、IDK 0 分”):

    • 正确答案:得 1 分(或自定义正分,如+2 分),鼓励模型在确定时输出正确内容。
    • 错误答案:得-1 分(或更重的负分,如-3 分),惩罚幻觉行为,分数绝对值可根据“错误严重性”调整(比如医疗场景中“错误用药建议”比“错误生日”负分更重)。
    • IDK 回答:得 0 分,确保“承认不知道”比“瞎猜”更划算(0 分 > 负分)。
  • 奖励计算逻辑

    • 对模型的每一个输出,先通过“事实验证器”判断类别:

      • 若输出是“IDK”:直接给 0 分;
      • 若输出是具体内容:用“事实核查工具”(如检索知识库、调用权威 API)判断“正确/错误”,对应给正分/负分;
      • 特殊情况:若问题本身“没有标准答案”(如“未来的技术趋势”),模型输出 IDK 给 0 分,输出具体预测(即使合理)也给-0.5 分(避免模型“过度推测”)。

prompt设计指导:Answer only if you are (>t) confident, since mistakes are penalized (t /(1-t)) ) points, while correct answers receive I point, and an answer of "I don't know" receives O points.

2. 强化学习训练——让模型“学会趋利避害”

“强化学习框架”(如 GRPO、PPO),让模型在与“动态环境”的交互中优化行为:

  • 环境搭建:模拟真实对话场景,让模型持续接收“各种类型的问题”(包括“知道的、不知道的、模糊的”),输出答案后立即获得“分数奖励”。
  • 训练过程
    1. 初始阶段:模型可能仍会偶尔瞎猜(比如误以为自己知道冷门知识),但因“猜错扣分”,会逐渐发现“说 IDK 更安全”;
    2. 中期优化:加入“不确定度校准”——对模型输出 IDK 的样本,额外判断“是否真的该 IDK”(比如模型对“自己知道的知识”错误输出 IDK,需轻微惩罚,如-0.1 分),避免模型“过度保守”;
    3. 后期稳定:通过多轮迭代,让模型形成“先判断自己‘确定与否’→ 确定则输出正确答案,不确定则说 IDK”的行为模式。
第四步:评估与调优——确保“减少幻觉”不牺牲有用能力

训练后需要验证效果,避免模型“为了不扣分,什么都说 IDK”(比如连“地球是圆的”都回答 IDK):

  1. 评估指标
    • 幻觉率:统计模型输出“错误答案”的比例,目标是降低幻觉率;
    • IDK 合理率:统计“模型说 IDK 的场景中,确实该 IDK”的比例(避免过度保守);
    • 有用性:统计“模型在‘该知道’的场景中,正确输出答案”的比例(避免因怕扣分而“故意装不知道”),目标是保持稳定。
  2. 调优策略
    • 若模型“过度保守”(该知道的也说 IDK):降低“正确答案的正分”与“IDK 0 分”的差距(如正确答案得 0.5 分),或对“错误 IDK”(该知道却不说)加轻微负分(如-0.2 分);
    • 若模型“仍有较多幻觉”:加重错误答案的负分(如从-1 分改为-2 分),或在强化学习中增加“幻觉样本的训练权重”(让模型更关注“猜错过的场景”)。

三、关键注意事项(避免踩坑)

  1. IDK 的“话术自然性”:训练时不要让模型只输出生硬的“I don't know”,可加入自然表达(如“抱歉,目前没有足够信息确定这个内容”),避免影响用户体验;
  2. 知识边界的清晰化:预训练阶段要让模型“知道自己知道什么”——比如通过“知识图谱标注”明确“哪些领域是自己的知识盲区”,避免因“分不清知道与否”而被迫瞎猜;
  3. 场景适配:负分的“权重”需根据场景调整——比如医疗、法律等高危场景,错误负分要更重(如-5 分),普通闲聊场景可轻一些(如-0.5 分),避免“一刀切”导致模型行为扭曲。

文章转载自:

http://UNY8DKRt.hwcLn.cn
http://yut9lUa1.hwcLn.cn
http://mzW9FLKZ.hwcLn.cn
http://GGbiH6g9.hwcLn.cn
http://8PgtXMYn.hwcLn.cn
http://he4hFfUq.hwcLn.cn
http://3QpVJ7L4.hwcLn.cn
http://RNSnVhTc.hwcLn.cn
http://CutZG3Yk.hwcLn.cn
http://ksu6J45X.hwcLn.cn
http://1A6zhAOX.hwcLn.cn
http://F7qywCPJ.hwcLn.cn
http://QBbfPFVk.hwcLn.cn
http://pOQuUHmz.hwcLn.cn
http://sfmcoh19.hwcLn.cn
http://BpnFf4lJ.hwcLn.cn
http://UfD6YbEH.hwcLn.cn
http://HVk6S7Ty.hwcLn.cn
http://HwEMZtzk.hwcLn.cn
http://ecULHBPW.hwcLn.cn
http://xPGBJ52X.hwcLn.cn
http://I1hTFRvG.hwcLn.cn
http://KuagQUBj.hwcLn.cn
http://MfwgfA2g.hwcLn.cn
http://yymfngPy.hwcLn.cn
http://k28LJpCJ.hwcLn.cn
http://QFS1zkdp.hwcLn.cn
http://iZ1CtfbJ.hwcLn.cn
http://Uz2gVkP9.hwcLn.cn
http://AMsZqlJu.hwcLn.cn
http://www.dtcms.com/a/377484.html

相关文章:

  • 【机器学习】通过tensorflow实现猫狗识别的深度学习进阶之路
  • AD5362BSTZ电子元器件 ADI 高精度数字模拟转换器DAC 集成电路IC
  • DMA-M2M存储器与存储器之间读写
  • Mistral Document AI已正式登陆Azure AI Foundry(国际版)
  • 机器学习实战(二):Pandas 特征工程与模型协同进阶
  • Flutter 朦胧效果布局大全:5种方法实现优雅视觉层次
  • 【CVPR2023】奔跑而非行走:追求更高FLOPS以实现更快神经网络
  • PHP学习(第三天)
  • 数仓简要笔记-1
  • 机器人商业化落地需要突破的关键性技术
  • AI 技术体系核心概念
  • STM32H750 I2C介绍及应用
  • 计算机网络---物理层
  • 【freemarker】创建html页面
  • 【华为OD】区块链文件转储系统
  • sprintf不是像printf一样的打印函数吗
  • Js 图片加载完成 与 图片缓存加载的区别
  • 汽车动力电池管理系统(BMS):电动汽车的“智能大脑”
  • n8n add npm module 發生 Module ‘ioredis‘ is disallowed,getaddrinfo EAI_AGAIN
  • 性能——day3
  • 安卓学习 之 SeekBar(音视频播放进度条)
  • CRMEB标准版PHP订单列表功能详解与优化技巧
  • Linux基础知识(五)
  • [数据结构——lesson7.队列]
  • 在算法竞赛中怎样正确的分析一个程序的时间复杂度
  • ES6笔记4
  • 实现一个动态顺序表(C++)
  • 10 分钟上手 ECharts:从“能跑”到“生产级”的完整踩坑之旅
  • Decode Global新官网上线披露核心数据
  • 【Redis】Scan 命令使用教程:高效遍历海量数据