SFT 后置信度下降怎么办?
分类任务微调后概率分布分散的原因与解决方案
原题:在一个分类任务中,模型在微调前的预测概率分布较为集中(置信度高),但在经过监督微调(SFT)后,输出概率变得分散(置信度下降)。请分析可能导致这一现象的技术原因,并提出可能的解决方案。
模型训练 · 网易真题
回答与解析
先判断“变平”是否真的需要修复
概率分布更分散只表示置信度下降,不自动等于准确率下降或校准恶化。应固定同一数据与推理代码,比较 accuracy/F1、NLL、Brier score、ECE、reliability diagram、logit margin,并按类别与数据域切片。
可能原因包括:SFT 数据的类别先验或域发生变化;样本更模糊、标签冲突;启用了 label smoothing、蒸馏软标签、Mixup、熵或 logit 正则;class weighting 改变有效先验;学习率过大、分类头重置、灾难性遗忘或训练不足;dropout、weight decay 与冻结策略改变;推理阶段重复 softmax、temperature、eval mode、label map、checkpoint 或 dtype 不一致。
修复必须跟随诊断。如果准确率稳定且 NLL/ECE 改善,保持现状可能更合理。如果只是概率尺度系统性偏差,在独立校准集拟合 temperature;T>1 使分布更平,T<1 使分布更尖,但温度应优化得到,不应人为设定。若能力下降,则回退学习率、恢复分类头、调整解冻范围、修复数据和标签。Label smoothing 通常使分布更平,不适合作为“低置信”的默认修复。
口语版讲法(30秒速答 + 90秒主答 + 完整展开)
- 先确认质量、置信度和校准变化
- 排查数据与标签先验
- 核对损失、正则与优化
- 排除推理实现差异
- 按根因选择校准或重训
【30秒速答】 SFT 后概率变平不等于模型一定退化。先在同一测试集看准确率、NLL、Brier、ECE、可靠性图和 logit margin。原因可能来自数据先验、模糊或冲突标签、label smoothing、蒸馏软目标、class weighting、学习率、分类头和推理 temperature。若准确率不降且校准变好,不必把分布强行变尖;若只是尺度偏差,可在独立校准集拟合温度;若能力下降,要修数据或训练。Label smoothing 本来就会抑制极端置信度,不是低置信的默认补救。
【90秒主答】 复现时固定 checkpoint、tokenizer、预处理、label map、推理 batch 和数据切片,保存 SFT 前后每个样本的 logits。观察三种情况:类别预测是否改变,正确样本与错误样本的最大概率是否一起下降,不同类别的 margin 是否对称变化。只看平均最大概率会掩盖某一类完全失效,也无法判断原模型是不是过度自信。
数据变化是常见根因。SFT 样本可能从单一域变成多域,类别比例被重采样,边界样本和冲突标注增多。模型面对真实不确定性时输出更平是合理反应。训练配置里若启用 label smoothing、知识蒸馏软标签、Mixup、熵正则或 logit penalty,目标本身就在减少极端概率。class weighting 与采样还会改变模型学习到的有效先验,必须结合部署分布评估,而不是只追求训练集上的尖锐输出。
【完整展开】 优化问题也会压缩 logit margin。分类头重新初始化后尚未收敛、主干学习率过大导致遗忘、冻结层过多导致无法适配、weight decay 或 dropout 增强、训练过早停止,都可能让特征可分性下降。可以画 SFT 前后的类中心距离、分类头权重范数和逐类 confusion matrix,用小学习率回退、只训练头部、逐层解冻或恢复旧头做消融。一次只改一个变量,才能确定因果。
实现问题要优先排除,包括忘记 model.eval、对概率再次 softmax、temperature 配置不同、加载错误 checkpoint、label id 顺序变化、量化或 dtype 引入数值差异。若准确率正常,只是置信度与真实正确率有稳定偏差,可在独立校准集上最小化 NLL 来拟合一个正温度。温度缩放不改变 argmax,只改概率尺度;T 大于一更平,T 小于一更尖。若上线依靠置信阈值拒答,还要重新画覆盖率、准确率和成本曲线。修复的目标是更可信的决策,不是让所有输出看起来更自信。
【验证补充】若模型输出还参与排序、拒答或成本路由,概率尺度变化会影响下游决策,即使 argmax 准确率不变也要重做阈值验证。应冻结校准方案后再评估独立测试和真实流量。
关键一句:低置信是否有害取决于它和真实正确率的关系,而不是概率看起来够不够尖。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设我们做一个电商客服的意图分类模型,预训练阶段对“退货”类别的预测分很高,但用几千条客服对话微调后,输出概率变得特别平,甚至分不清“退货”和“换货”。你遇到过这种情况吗?可能是什么原因?
- 问法 2 · 层层追问
你微调分类模型时,有没有注意过输出概率的变化?……如果微调前很自信,微调后反而犹豫了,你觉得问题出在哪?……除了过拟合,还有没有更根本的分布层面的原因?
- 问法 3 · 直球架构
微调SFT后,分类模型的输出概率分布从集中变分散,置信度下降。请从技术原理层面分析可能的原因,并给出修复方案,比如温度缩放或者标签平滑怎么用,什么时候用哪种?