小红书

大模型算法一面面经

完整信息

1 条问法 · 1 道题

本篇目录

牛客面经|小红书一面大模型方向真题 原题:能不能做到训练时让模型输出 CoT,推理阶段不输出 CoT,同时保证答案准确率不下降?

很多同学第一反应是 CoT‑prompt 那套,让模型 “先思考再作答”。但这个题的陷阱就在这里:推理阶段不能输出思维链文本。 问题本质考察一个核心认知:CoT 究竟是推理时要打印出来的思考文本,还是仅用于训练的监督信号。

如果把 CoT 当成推理时必须输出的内容,那推理就一定要输出一大段思考。但本题目标:训练靠 CoT 学推理能力,上线推理只输出最终答案,不输出中间思考文字。 难点:训练‑推理范式不一致。训练见过 “先思考再答题”,推理禁止输出思考 token,容易出现效果跳水。下面梳理学术界主流实现路线。

方案 1:DSS 双任务蒸馏(基础解法,面试优先说)

论文:Less Training Data and Smaller Model Sizes 核心思路:Teacher 模型产出样本,小模型做双任务 finetune,推理只用答案分支。

流程:

  1. 数据蒸馏:强 Teacher 对 question 生成两套东西:rationale(CoT 推理过程)、label(最终正确答案)。
  2. 构造两组训练样本,禁止把 question+CoT+answer 拼接成一条长序列当 target。拆成两个独立任务,用 task 标识区分。
  • 任务 A (label):输入问题,直接输出答案
  • 任务 B (rationale):输入问题,输出完整 CoT 推理过程

损失函数:

\(L = L_{label} + \lambda L_{rationale}\)

推理阶段:只启用 label 任务分支,不再生成 CoT 文本。

踩坑提醒:如果直接拼接问题→CoT→答案做单任务自回归训练,CoT 长序列会稀释答案的 loss 权重。模型会优先拟合推理文本,答案效果提升有限。

简易伪代码

def build_samples(question, answer, cot):
    return [
        {
            "task": "label",
            "prompt": f"answer\nQuestion:{question}\nAnswer:",
            "target": answer
        },
        {
            "task": "rationale",
            "prompt": f"rationale\nQuestion:{question}\nReasoning:",
            "target": cot
        }
    ]

实验对比:

  • 单任务直接拼接 CoT+answer:Acc 15%
  • CoT token 加权 loss:Acc 18%
  • Answer token 加权 loss:Acc 55%

工程实践:拆双任务,不要拼成一条长 target。

方案 2:MI‑CoT 双任务互信息对齐(进阶加分点)

论文:Learning to Maximize Mutual Information for Chain‑of‑Thought

DSS 搭建了双任务框架,但两个任务表征之间没有约束。MI‑CoT 做的就是对齐两个任务。

  • PREDICT 分支:直接预测答案
  • EXPLAIN 分支:生成 CoT 文本

训练目标:最大化两个分支表征的互信息。让 EXPLAIN 分支学到的推理知识迁移到预测答案分支。 推理阶段:只跑 PREDICT 分支,不生成 CoT 文本。

关键点:模型提升,不在于是否输出 CoT 文字,而在于内部表征是否具备推理能力。

方案 3:隐式 CoT 路线(拔高,用于和面试官深入聊)

DSS、MI‑CoT 仍然是显式 CoT:训练阶段依旧要输出文字版推理链。更进一步思路:把推理从离散 token 压缩进 hidden state,训练学推理,推理完全不输出思考文本。

3.1 Stepwise Internalization 逐步内化

论文:Learning to Internalize CoT Step by Step 多阶段渐进训练:

  1. Stage1:输出完整 CoT + 答案
  2. Stage2:只输出部分推理步骤
  3. Stage3:不再输出推理文本,直接输出答案

通过多轮 finetune,逼迫模型把原本写在文本上的推理步骤迁移到 Transformer 隐状态。

3.2 CODI:压缩 CoT 至连续隐空间

论文:Compressing Chain‑of‑Thought into Continuous Space via Self‑Distillation 把离散 CoT token 映射成连续隐向量。

  • 训练:Teacher 输出显式 CoT,student 学习对应的隐层表征,在隐空间做多步推理。
  • 推理:student 直接在 hidden state 内部完成推理,外部完全看不到 CoT 文本,直接吐出答案。

路线对比:

  1. No‑CoT:问题直接到答案,无推理引导
  2. Explicit CoT:推理时输出 CoT 文本(常规 CoT)
  3. Implicit CoT (CODI):隐空间完成推理,无外部思考文本输出

面试口述回答总结

适合口述版,面试直接组织语言输出

  1. ❌ 错误做法:把问题+CoT+答案拼接成单条样本训练。推理时模型会倾向输出 CoT;即使截断,性能会明显下滑。
  2. ✅ 基础方案 DSS 双任务蒸馏:Teacher 蒸馏得到 CoT 和答案,拆两个独立任务,分别训练 “直接输出答案”、“生成 CoT”。推理阶段只调用答案任务分支,不生成 CoT。
  3. ✅ 进阶 MI‑CoT:在双任务基础上最大化互信息,对齐推理分支和答案预测分支表征,提升知识迁移。
  4. ✅ 前沿隐式 CoT:通过渐进内化或者隐空间蒸馏,把推理逻辑内化到模型 hidden state。训练学习推理,推理全程不输出任何 CoT 文本。

核心结论:CoT 可以只作为训练监督信号,推理不必输出。本质是把文本形式的思维链内化进模型权重与隐状态。

本篇目录

同作者面经

相关公司