为什么微调会诱发幻觉以及如何修复 Why Fine-Tuning Encourages Hallucinations and How to Fix It
把 SFT 幻觉重新解读为事实遗忘,并给出参数冻结与自蒸馏两类缓解方案。
前置知识
监督微调 SFT
在大模型预训练后,用有标签数据继续训练以适配下游任务或注入新事实的标准做法。文中指 SFT 在 QA 数据上同时承担学习格式和事实两类信号。
全文的现象与缓解都建立在 SFT 同时承担任务学习和事实学习的双重角色之上,区分两类信号是读懂后续实验的钥匙。
持续学习与灾难性遗忘
持续学习研究顺序训练时旧知识被新任务覆盖的问题,常见工具包括参数正则、replay、蒸馏和架构隔离。文中把 SFT 遗忘放入该框架。
作者的整套缓解方案(冻结 attention、自蒸馏)都直接借鉴自持续学习文献,没有这一背景就难以判断新颖性边界。
自蒸馏 Self-Distillation
用同一模型较早的快照作为冻结 teacher,用 KL 散度约束 student 不偏离原输出分布,损失形如 $\mathcal{L}=\mathcal{L}_{task}+\lambda\,\mathcal{L}_{distill}$。
它是本文缓解 SFT 幻觉的主要工具,温度 $\tau=0.5$ 与 $\lambda=1$ 的具体取值是结果可复现的关键。
SLiCK 事实分类
Gekhman et al. (2024) 提出的四档分类法,在多次随机 few-shot 配置下统计模型是否稳定答对,从而把世界知识切成 HighlyKnown 到 Unknown。
全文的 DKnown、DUnk、DHeld 三组数据划分都来自 SLiCK,没有它就无法把任务学习与事实可塑性分离开。
Transformer 模块角色分工
FFN 被认为储存事实键值对,attention 负责把实体 token 与属性 token 关联,模型中部层(如 Qwen2.5 的 layer 14)常保留最丰富的事实表征。
文中 Table 1 的分组冻结实验与 Figure 5 的 layer 14 cosine drift 都依赖这一模块-功能映射,是机制论证的基础。
研究动机
标准监督微调在注入新事实的同时会以约 15% 的幅度降级模型在已学事实(DHeld)上的准确率,这一现象在 Gekhman et al. (2024) 的实验中已被观察到。Qwen 2.5(1.5B/8B)与 Llama 3.1(8B)在 ENTITYQUESTIONS 上做 SFT 时,模型在 1 到 2 个 epoch 内迅速学会 QA 格式,DKnown 接近 1.0、DHeld 峰值可达 0.93,随后随 DUnk 上升而系统下滑约 15 个百分点;当把 DUnk 从训练集中彻底去掉(Only Known)时 DHeld 几乎不下降,说明遗忘源自事实注入而非微调本身。但已有研究或将其归因为“行为克隆”或归因为“容量受限”,都无法区分这一关键场景:为何全新事实会出现而格式学习不会?也没有给出可操作的缓解方案,所以业界在私域/对齐微调中只能继续接受事实回退的副作用。
本文的目标是本文目标有三:其一,把 SFT 诱发的幻觉重新框定为持续学习框架下的事实遗忘,让事实稳定性成为 SFT 设计中的一阶目标;其二,针对两种现实场景给出可操作方案——当不需要新事实时(如对齐、私域)通过选择性参数冻结抑制事实可塑性,当确实需要新事实时(如领域适配)通过自蒸馏约束输出分布漂移,把 DHeld 的回退幅度从约 15% 压到约 3%;其三,给出可证伪的机制解释:在全局容量限制、行为克隆与局部表征干扰三个候选假说中,用语义相似度可独立控制的合成切片实验加 layer 14 隐层 drift 度量定位主因,最终结论是“表征重叠驱动的局部干扰”而非容量或行为克隆。
与已有工作不同的是,与既有工作相比,本文的独特切入在于把幻觉问题切到事实遗忘层再做机制定位。Gekhman et al. (2024) 记录现象但未给机制;Zhu et al. (2025)、Shenfeld et al. (2026) 把自蒸馏用于多模态或任务级稳定性,但未把它在事实级上的有效性跟表征变化联系起来;Allen-Zhu & Li (2024) 的容量说与 Zhang et al. (2024) 的行为克隆说都未在合成数据上做语义相似度切片。本文设计的关键合成变量是 P17 单关系下的键类型:semantic key(把真实城市名片段拼成 Bergadena 类)与 UUID key(Loc_fcfb46ee 类),前者与既有城市共享表征邻域、后者不应有重叠。即便在 1e6 事实规模下 UUID 造成的 ∆DHeld 仍接近 0,与语义键形成尖锐对照——这是单纯容量或行为克隆说都无法解释的,也是全文最关键的判别证据。
核心方法
方法沿“现象—缓解—机制”三段推进。现象侧用 SLiCK 把 ENTITYQUESTIONS 切成 DKnown(任务学习)、DUnk(事实可塑性)、DHeld(事实稳定性)三组,同步评测以解耦格式学习与事实注入。缓解侧:不需新事实时按 $\theta_S \in \{\text{Attention}, \text{FFN}, \text{All}\}$ 分组冻结;需新事实时先用 DKnown 训 1 epoch 冻结为 teacher $\theta_i$,再以 $\mathcal{L}=\mathcal{L}_{task}+\lambda\,\mathcal{L}_{distill}(\theta;\theta_i)$($\lambda=1, \tau=0.5$)续训。机制侧用 semantic vs UUID 键控制重叠度,并在 10K 设定下取 layer 14 hidden state 算 $R_{D_i}=\mathbb{E}[1-\cos(H_0^{(14)}, H_i^{(14)})]$。
核心创新是把事实可塑性—稳定性权衡同表征重叠度直接挂钩,并据此设计可区分三种候选假说的合成实验。已有蒸馏/正则方案多停留在“约束权重不要走太远”层次,本文发现梯度量级匹配的 ℓ2 正则仍让 DHeld 下降约 10 个百分点,无法复制自蒸馏收益,说明自蒸馏之所以有效不是因为步长小,而是在输出分布层面约束了哪些 token 的概率会被推动:当新事实的输出与旧事实共享部分 token 表征时,限制这个分布恰好能阻断干扰沿共享通道回传到旧实体。结合 synthetic-key 实验,这把“事实遗忘”从模糊的容量问题转化为“表征邻居里的梯度串扰”问题,并在 layer 14 中间层用 1 − cosine drift 量化:纯 SFT-on-semantic 涨到约 11%,UUID key 与 self-distillation 都停在约 5%,多出的约 6 个百分点即可被独立归因到 overlap-driven interference。
方法步骤详情
(1) 数据:SLiCK 用 20 次随机 few-shot 把 ENTITYQUESTIONS 分成 HighlyKnown/Unknown 四档,各采 8000 题做 DKnown 与 DUnk,DHeld 取自 dev split。(2) 基线:lr = 5e-5,分别在 DKnown ∪ DUnk 与 DKnown-only 上训,按 epoch 记录三 split 准确率。(3) 缓解:(i) 分组冻结只更新 Attention 或 FFN;(ii) 自蒸馏 teacher = epoch=1 快照,KL 散度约束 student 与 teacher 在 $M(y)$ 非 padding token 上的输出分布。(4) 机制:对 P17 生成两组键——语义键(Bergadena)与 UUID 键(Loc_fcfb46ee),规模 $10^3$–$10^6$,每档训完测 $\Delta D_{Held}$,并比较 SFT-on-semantic / SFT-on-UUID / self-distillation 三条 layer 14 drift 曲线。
技术新颖性
技术新颖性体现在三点。第一是把 SLiCK 的四类标签从分类工具升级为任务学习—事实可塑性—事实稳定性三轴分离的实验脚手架,为后续事实遗忘研究提供统一坐标系。第二是首次在 SFT 幻觉链上把自蒸馏从通用正则升级为针对表征干扰的精确干预,并通过同实验设置下的梯度匹配 ℓ2 正则证伪“步长小就够了”的解释,凸显 KL-级别的输出分布约束才是关键。第三是用 semantic-vs-UUID 键构造提供了一种可独立变化“语义相似度”和“规模”两个变量的合成实验模板——这是直接回应此前“是否容量受限”长期争议的有力切片;并把抽象的“干扰”落到 layer 14 的 1 − cosine drift ≈ 5% vs ≈11% 的可观测差距上,让表征重叠导致遗忘从叙事变成可证伪证据。
实验结果
(1) 现象:标准 SFT 在 DHeld 上相对峰值回退约 15%;Only Known 设定下 DHeld 几乎不降,证明遗忘由事实注入驱动。(2) 参数分组(Table 1):Attention-only 时 DUnk ≈ 0.010、DKnown = 0.946、DHeld = 0.931(接近 Only Known 上限 0.958);FFN-only DUnk ≈ 0.94 / DHeld ≈ 0.78,印证事实主要储存在 FFN。(3) 自蒸馏(Figure 3):DHeld 仅回退约 3%,DUnk 仍按正常节奏学会,把稳定性—可塑性同时拉满。(4) 机制(Figure 4、5):UUID 键在 $10^3$–$10^6$ 任意规模下 $\Delta D_{Held}$ 均接近 0–4%,语义键随规模急升;layer 14 的 $1-\cos$ drift 显示 UUID 与自蒸馏都停在约 5%,SFT-on-semantic 涨到约 11%,多出 ≈6 个百分点即 overlap-driven interference 的可量化签名。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SFT 后事实稳定性(DHeld accuracy) | Held-out 准确率相对峰值的回退幅度(↓ 越少越好) | ≈3%(自蒸馏,Qwen 2.5-1.5B 主结果) | ≈15%(Gekhman et al. 2024 与本文复现的标准 SFT) | 绝对下降幅度从 ≈15% 压到 ≈3%,相对降幅约 80%,且 DUnk 几乎不被牺牲。 |
| 事实稳定性与可塑性解耦(Table 1:参数分组) | DUnk / DKnown / DHeld 三轴准确率 | Attention-only: DUnk=0.010, DKnown=0.946, DHeld=0.931 | All-params: DUnk=0.946, DKnown=0.990, DHeld=0.780;Only Known 上限 DHeld=0.958 | 在不注入新事实的前提下达到接近 Only Known 上限的事实稳定性,是参数级最便宜的基线。 |
| 机制可分性(UUID vs semantic,Figure 4) | ΔDHeld 在 1e3–1e6 事实规模下 | UUID: ΔDHeld ≈ 0–4%,几乎不随规模放大;semantic: ΔDHeld 随规模急剧上升 | Gekhman et al. (2024) 仅在真实关系上报告,未做规模切片 | 在数量级跨度更大的合成设置下把“语义重叠≠容量”的证据补齐,证伪纯容量说。 |
局限与改进
作者在论文中显式或隐含的局限有四。其一,实验集中在非推理模型 Qwen 2.5(1.5B/8B)与 Llama 3.1(8B)上,附录 B 仅称“趋势一致”而未公开完整数字,结论是否在 reasoning 模型或 ≥70B 规模上仍成立未确证。其二,事实源局限在 ENTITYQUESTIONS 的稀疏关系 triplet 和合成 P17 上,真实 SFT 多伴随上下文、风格、长文档与多跳推理,是否还能由冻结 attention 或自蒸馏守住未验证。其三,机制证据依赖 layer 14 的隐层 drift,未在早期 attention、晚层 MLP 或不同尺寸上做系统消融,“layer 14 作为事实签名层”的稳健性有限。其四,自蒸馏 teacher 取自 epoch=1 快照且 λ=1、τ=0.5 为单点配置,附录 D 提到要做敏感性但文中未给出数字,调参成本对实际部署仍是不确定项。
独立分析的弱点
独立观察仍可补强的弱点有四条。第一,自蒸馏 teacher 的选择(epoch=1 快照)与「什么时候 snapshot」高度耦合——若先训更长 epoch teacher 会携带格式噪声,太短 teacher 又未掌握格式;本文给出经验值但未提供启发式原则,落地要重新调参。第二,缓解方案只在“参数冻结”和“自蒸馏”两条线,没有在持续学习其它经典工具(replay buffer、EWC 类参数正则、PEFT 通道隔离)上做横向基准对比,所以“是否蒸馏特别适合事实遗忘”并未被独立证实,它可能只是“参数位移约束”中更有效的一种实现。第三,机制证据建立在 DUnk 几乎 100% 学到的合成数据上,把“学到”和“干扰”两个变量解耦得很干净,但与真实 SFT 中边学边忘的场景差距较大,外推时需谨慎。第四,DHeld 仅作为预训练事实代理,未在 relation 类型、实体频次、国家/语言等细粒度上切片,因此哪一类预训练事实最容易因 SFT 失效仍是开放问题。
未来方向
可延伸的研究方向分四层。能力维度:把同一框架推广到 reasoning 模型(CoT 微调后是否仍存在事实遗忘)和 ≥70B 大模型,并在 DPO/RLHF/RLAIF 等 post-training recipe 下重测,结论对工业 SFT 更具指导性。架构维度:用 LoRA / adapter 类通道隔离替代或叠加自蒸馏,看是否能把事实稳定性做到几乎零参数共享;并把层选择(layer 14)改成可学习 gating,让模型自动定位事实最敏感的层。任务维度:把 ENTITYQUESTIONS 换成多跳 QA、长文档事实 QA、代码/API 事实类任务,验证结论能否覆盖非稀疏关系。机制维度:构造“语义渐变”键(name-like → 字母扰动 → UUID 三档)做更细粒度的 overlap 度量,并配合 probing 与 circuit-level 分析锁定到底哪些 attention head 主导干扰传播,把“自蒸馏为何生效”做成更形式化的梯度—logits 衰减率解释。
复现评估
复现评估整体难度中等。数据:ENTITYQUESTIONS 与 SLiCK 均公开(Sciavolino et al., 2021;Gekhman et al., 2024),SLiCK 代码也公开,主要成本是 20 次随机 few-shot 的 GPU 推理,单卡数小时可完成。代码:超参披露完整——learning rate = 5e-5、teacher = epoch=1 快照、$\lambda=1, \tau=0.5$、batch size 等核心数值写在正文,模型用 Qwen 2.5 与 Llama 3.1-8B 公开权重。算力:主结果在 Qwen 2.5-1.5B 上完成,单卡 A100 80GB 可跑;附录 B 的 8B 扩展需要更高显存,但未见分布式训练详细描述。技术门槛集中在自蒸馏实现——同时管理 teacher/student 两份权重与前向图、正确写 KL 散度的 non-padding mask;附录 E 给出合成键的语义/UUID 生成算法,对合成实验复现至关重要。整体看作者披露的细节足够让研究者独立复现主要结论。
论文图表
左半部分把参数空间画成三块子空间:低误差区 A(pre-existing facts)、任务区 T(QA 格式)、新事实区 B(new facts),用箭头演示 Standard SFT 在学 B 时丢 A、Parameter freeze 留 A 但不学 B、Self-distillation 同时覆盖 A 与 B。右半部分用 Bergadena vs Milan vs 随机 UUID Loc_fcfb42 三个例子的隐层近邻关系,定性展示只有语义键才会“串扰”到既有实体。
整篇论文的现象定义、缓解目标与机制假设都被压缩在 Figure 1 中:先建立“事实可塑性—稳定性”权衡的几何直觉,再用 Bergadena 案例预告 overlap-driven interference 的核心结论;不读这张图很难跟上后续 Table 1、Figure 3–5 的设计。
左侧三条曲线画 SFT(实线)与 Only Known(虚线)在 DKnown、DUnk、DHeld 上的 accuracy 随 epoch 变化:DKnown 早期冲到接近 1.0、DHeld 峰值约 0.93 后下行约 15 个百分点,Only Known 的 DHeld 几乎不动;右侧数据 split 表把 DKnown/DUnk/DHeld 分别标成 Task learning/Facts plasticity/Facts stability。
它是把 SLA 数据切法与 forgetting 现象“绑定”到一张图上的关键证据:只有同时看到实线下滑与虚线平稳,才能下结论说遗忘由事实注入驱动而非格式学习;split 表也预告了后续 Table 1、Figure 3 的统一评测指标。