这是蒸馏里最容易被误判的一类问题。输出句子通顺、结构完整,甚至和教师模型风格很像,但关键事实并没有证据。模型并非真的“知道”,而是把教师的确定性语气和常见回答模式一起模仿了。
先拆开“知道”的组成
我通常把一条回答拆成事实、证据、置信表达和行动建议四层。教师模型可能在内部完成了检索或判断,最终只输出一句结论。学生模型学习到的如果只有结论和语气,就会在缺证据时照样给出确定答案。蒸馏损失下降,并不能说明四层都被学会。
若训练数据里“完整回答”远多于“无法确认”样本,学生模型就可能偏向输出完整答案。边界样本少时,停顿、保留意见和转人工很容易被学成少见行为;这要用具体数据分布和独立测试验证,不能只凭现象下结论。
用反事实样本暴露模仿失真
我会给同一个问题做三份上下文:一份证据完整,一份缺少关键字段,一份放入相互冲突的来源。三份问题文字尽量不变,只改变证据状态。若模型三次都使用同样的肯定语气,说明它依赖了问题表面,而不是上下文。
另一个有效做法是把答案中的关键名词替换成不存在的实体,观察模型是否仍然编造定义。这个测试不能证明模型具备真正的不确定性估计,却能很快找出“看起来知道”的样本。
边界样本要写出下一步
仅仅加入“我不知道”并不够。好的停答样本要说明缺什么、为什么不能确认、用户可以提供什么。比如“目前没有订单号和时间范围,无法判断是哪次扣费;请补充这两个字段,或者转人工核对账单”。这样的样本让学生模型学会行动边界,而不是学会逃避。
追问也要有停止条件。连续追问三个无关字段,用户依然得不到帮助,这不是谨慎,而是拖延。训练时应标注最小补充信息,并规定补齐后必须重新判断。
排查顺序
出现自信乱答,我不会先改温度。第一步抽样看训练标签是否把“可猜测”误标成“可回答”;第二步检查证据字段是否在训练过程中被截断;第三步做同问题三上下文的独立评测;最后才考虑提示词和解码参数。因为如果样本边界本身错了,提示词只能暂时遮住症状。
语气是一个独立训练目标
我会给答案中的确定性表达单独打标签,例如“可以确定”“目前无法确认”“在条件成立时可能”。这样做不是要求模型输出概率,而是防止它在证据不足时使用绝对句。评测时把事实正确性和语气适配分开计分,避免一个猜对的样本掩盖十个过度肯定的样本。
还要留意格式造成的错觉。编号、表格和专业术语会让读者觉得答案经过验证,但它们本身不是证据。一个学生模型可能把教师的排版完整复刻,却把关键日期换成训练中出现过的常见日期。边界测试应把格式去掉再看结论是否仍站得住。
反例复盘
如果模型对不存在的产品名称给出详细参数,我会标记为“实体幻觉”;如果它对真实产品给出过期参数,则标记为“时效错位”;如果它把用户猜测当成事实,则标记为“前提吸收”。三种错误都像自信回答,但修复路径不同。
样本复盘完成后,再决定是补数据、改检索上下文,还是调整解码。不要把所有问题都归到“模型太小”。蒸馏的价值在于传递教师的判断过程和边界,而不是把教师的口吻缩小复制。
工程上还可以设置一个“证据覆盖率”检查:回答中的关键断言必须能在输入证据中找到对应片段。覆盖率不是事实正确性的证明,却能及时发现模型引用了上下文之外的常识。对高风险字段,宁可要求人工复核,也不要用语言流畅度替代证据。
具体做法是从回答中抽出可核实的断言,逐条标记为“证据支持、证据冲突、证据未提及”。例如答案声称退款已到账,输入却只有“退款申请已提交”,这一条就属于证据未提及,不能因为措辞像客服公告就放行。把断言级记录与行为标签放在一起,才能看见模型既选错了动作、又说错了事实的情况。
学生模型把“不知道”答成“知道”,可能来自教师样本、证据输入、训练目标,也可能来自上线配置。蒸馏要检查的不只是它复述答案的能力,还包括它能否随证据状态改变语气和行动。把这些层拆开测量,才知道下一次该改数据、系统,还是模型。