大模型算法工程师面经
完整信息
本篇目录
🔥 面试高频 | 建议收藏 | 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 的做法更聪明 ——只惩罚协方差最高的那部分词元:
- 算每个词元的
\(\text{Cov}(y_i)\) - 按协方差排序,取 top-k
- 只对这些高协方差词元加 KL 惩罚
为什么这样有效?因为协方差高的地方,就是策略更新最剧烈的地方,也是熵坍塌的 "震中"。精准打击,既保探索,又不拖性能。
📌 终极总结:熵坍塌的本质是什么?
最后拔高一下,面试结尾说这个,直接封神 👇
熵坍塌的根源,在于预训练模型的先验知识太强了。
LLM 经过预训练,本身已经具备大量知识。对很多推理题,它生成的高概率答案本来就是对的,所以优势值也高。这就导致了 ——高概率和高优势强正相关。
模型不是在探索新解法,而是在反复确认自己已有的认知。所以
\(\text{Cov}(\log \pi, A)\)一直是正的,熵就一直掉,直到坍塌。
✅ 面试答题模板(直接背)
被问到熵坍塌,按这个顺序答:
- 定义:RL 训练早期熵急剧下降,模型过度自信,探索空间萎缩
- 数据:95% 性能增益在前 800 步,后续提升微乎其微
- 原因:从策略梯度→协方差推导→高概率高奖励正协方差→熵下降
- 方案:①Clip-Higher 非对称裁剪 ②KL-Cov 精准惩罚
- 本质:预训练先验太强,高概率与高优势正相关,模型在确认而非探索
本篇目录
当前问题0101
- 01
> **"大模型强化学习训练中,为什么会出现熵坍塌现象?应该在哪个环节优化?"**