智谱

大模型算法工程师面经

完整信息

1 条问法 · 1 道题

本篇目录

🔥 面试高频 | 建议收藏 | RLHF 核心考点

兄弟们,最近面智谱的是不是都被这道题干懵了?

"大模型强化学习训练中,为什么会出现熵坍塌现象?应该在哪个环节优化?"

这题看着简单,实则藏得很深。背概念的人只能答出 "熵下降太快",但面试官想听的是数学推导 + 工业界方案。今天把这道题扒得明明白白,看完直接去面。

📌 先搞懂:熵坍塌到底是个啥?

简单说:RL 训练刚开始没几步,模型的熵就崩了 —— 输出越来越单一,多样性直接躺平。

后果很严重:后面再训几千步,性能基本不涨。因为模型太早 "自负" 了,觉得自己啥都会,不再探索新解法。

上数据,直观感受一下 👇

表格

前 200 步 73% 76%
前 800 步 94% 93%
后 1600 步 仅 6% 仅 7%

看到没?95% 的性能增益都在前 800 步干完了,后面全是无效训练。模型的天花板,在早期就被焊死了。

💡 一句话记住:熵坍塌 = 模型太早 "摆烂",不再探索了。

📌 重点来了:为什么会熵坍塌?(面试官最想听的推导)

这部分是核心,推导过程一定要会,光背结论不够。

第一步:策略梯度公式

强化学习要最大化期望奖励,策略梯度长这样:

\(\nabla_\theta J(\theta) = \mathbb{E}_\pi \left[ \sum_t \nabla_\theta \log \pi_\theta(y_t | y_{<t}) A_t \right]\)

\(A_t\) 是优势函数,代表这个动作比平均水平好多少。

第二步:协方差变换(关键一步!)

利用协方差公式 \(\text{Cov}(X, Y) = \mathbb{E}[XY] - \mathbb{E}[X]\mathbb{E}[Y]\),令:

  • \(X = \nabla_\theta \log \pi_\theta(y_t | y_{<t})\)
  • \(Y = A_t\)

对策略分布来说,\(\mathbb{E}[X] = \mathbb{E}[\nabla_\theta \log \pi_\theta] = 0\)(这是 policy gradient 的经典性质)。

所以策略梯度直接简化成:

\(\nabla_\theta J(\theta) = \mathbb{E}_\pi \left[ \sum_t \text{Cov}\left( \nabla_\theta \log \pi_\theta(y_t | y_{<t}), A_t \right) \right]\)

翻译成人话:策略梯度的方向和大小,完全由动作概率对数梯度和优势函数的协方差决定。

  • 协方差正 → 增大这个动作的概率
  • 协方差负 → 减小这个动作的概率

第三步:四种情况,一目了然

表格

① 高概率 + 高奖励 高 高 ✅ 正 概率越来越高 → 其他 token 被挤没 → 熵暴跌
② 低概率 + 高奖励 低 高 负 增加熵,促进探索
③ 高概率 + 低奖励 高 低 负 增加熵
④ 低概率 + 低奖励 低 低 正 降低熵

罪魁祸首就是场景①:概率本来就高、奖励又高的 token,协方差为正,越训概率越高,其他 token 的概率被疯狂压缩。策略分布越来越尖锐,熵就这么塌了。

📌 怎么解决?工业界两大方案(加分项!)

方案一:字节 DAPO — Clip-Higher 策略 ⭐

字节的 DAPO 算法,核心思路是非对称裁剪—— 对高低概率 token 区别对待。

传统 PPO 是对称的:\([1-\epsilon, 1+\epsilon]\)

Clip-Higher 拆成两个参数:

  • \(\epsilon_{\text{low}}\):管高概率 token,限制它降多少(防止过度利用)
  • \(\epsilon_{\text{high}}\):管低概率 token,允许它升更多(鼓励探索)

而且 \(\epsilon_{\text{high}} > \epsilon_{\text{low}}\)。

举个栗子 🌰

表格

低概率 token 0.01 \(\epsilon_{\text{high}}=0.28\) 最高 0.0128 多探索 28% 的空间
高概率 token 0.9 \(\epsilon_{\text{low}}=0.2\) 最低 0.72 最多降 20%,稳着来

面试话术:Clip-Higher 通过解耦上下限裁剪参数,给低概率 token 更大的上升空间,同时约束高概率 token 不要过度利用,从而延缓熵坍塌。

方案二:KL-Cov — 精准打击高协方差词元

另一个思路:用 KL 散度约束策略别跑偏太远。

\(L_{\text{KL}} = L + \beta D_{\text{KL}}(\pi_\theta \parallel \pi_{\text{ref}})\)

但全局加 KL 太 "伤" 了,KL-Cov 的做法更聪明 ——只惩罚协方差最高的那部分词元:

  1. 算每个词元的 \(\text{Cov}(y_i)\)
  2. 按协方差排序,取 top-k
  3. 只对这些高协方差词元加 KL 惩罚

为什么这样有效?因为协方差高的地方,就是策略更新最剧烈的地方,也是熵坍塌的 "震中"。精准打击,既保探索,又不拖性能。

📌 终极总结:熵坍塌的本质是什么?

最后拔高一下,面试结尾说这个,直接封神 👇

熵坍塌的根源,在于预训练模型的先验知识太强了。

LLM 经过预训练,本身已经具备大量知识。对很多推理题,它生成的高概率答案本来就是对的,所以优势值也高。这就导致了 ——高概率和高优势强正相关。

模型不是在探索新解法,而是在反复确认自己已有的认知。所以 \(\text{Cov}(\log \pi, A)\) 一直是正的,熵就一直掉,直到坍塌。

✅ 面试答题模板(直接背)

被问到熵坍塌,按这个顺序答:

  1. 定义:RL 训练早期熵急剧下降,模型过度自信,探索空间萎缩
  2. 数据:95% 性能增益在前 800 步,后续提升微乎其微
  3. 原因:从策略梯度→协方差推导→高概率高奖励正协方差→熵下降
  4. 方案:①Clip-Higher 非对称裁剪 ②KL-Cov 精准惩罚
  5. 本质:预训练先验太强,高概率与高优势正相关,模型在确认而非探索
本篇目录
  1. 01
    > **"大模型强化学习训练中,为什么会出现熵坍塌现象?应该在哪个环节优化?"**

同作者面经

相关公司