核心结论:reward network 可导,不代表能够直接从 reward 穿过生成的 token,反向传播到 policy。
真正阻断普通 backprop 的是离散采样:模型先产生概率分布,再从 categorical distribution 中选出一个 token。Policy gradient 的作用,是计算“改变这个采样分布以后,期望 reward 如何变化”。
1. 真正要优化的目标
设语言模型 policy 的参数为 ,它生成序列 的概率为 。Reward model 给整条序列一个分数 。
我们想最大化的不是某一次 sampled response 的 reward,而是当前 policy 所能获得的期望 reward:
计算图是:
这里 reward model 内部可以完全 differentiable,但中间的 是离散随机选择。
2. 为什么不能直接从 reward 普通 backprop
普通 chain rule 看起来应该是:
问题在于 sampled token 是一个离散 index。小幅改变 logits,sampled token 通常完全不变;只有跨过某个离散边界时,token 才突然变化。因此:
- 对固定随机 sample,reward 关于参数通常是阶梯函数;
- 导数几乎处处为 0,在跳变点不可导;
- 即使 reward network 对 token embedding 可导,也无法自动穿过 categorical sampling node。
这和下面的计算图相同:
输出离散 index,普通 pathwise derivative 无法提供有效梯度。
3. 三种导数不要混淆
3.1 训练 reward model
这会使 reward model 这个“裁判”预测得更准确,但不会自动让生成模型变好。
3.2 Reward 对输入 representation 的导数
如果 reward model 接收 token embedding :
可以计算:
但这个导数只说明“怎样连续移动 embedding 可以增加 reward”。合法 token 是离散的 embedding lookup 点;沿 gradient 移动后的向量通常不对应任何真实 token。
3.3 真正需要的 policy gradient
它回答的是:
怎样改变 policy 参数,使高 reward sequence 被采样出来的概率增加?
4. 最小二元例子
模型生成好 token 的概率为:
否则生成坏 token 。设:
用 表示 sampling:
固定某次随机数,例如 。当 从 0.40 变为 0.41、0.42、0.43 时,sample 仍然是 ,reward 始终为 0。只有 跨过 0.7 时,reward 才突然从 0 跳到 1。
因此,穿过某一次 hard sample 做 backprop:
几乎处处成立。
但期望 reward 是:
其导数为:
所以关键区别是:
RL 要优化的是右边:改变整个采样分布后,平均 reward 如何变化。
5. Policy gradient 如何跨过离散 sampling
将期望展开为对所有输出的求和:
对参数求导:
利用 log-derivative identity:
得到:
即:
这里不需要计算:
只需要知道:
- sampled sequence 得分多少;
- 该 sequence 在当前 policy 下的 log probability。
高 reward 的 sequence 乘上较大的正权重,使其概率上升;低于 baseline 的 sequence 得到负 advantage,使其概率下降。
6. Policy gradient 仍然使用普通 backprop
实现时通常构造 surrogate loss:
Token-level actor-critic / PPO 中则是:
然后照常运行 neural-network backprop:
因此二者的关系不是“policy gradient 对 backprop”,而是:
- Policy-gradient theorem:告诉我们应该构造什么梯度估计,才能优化离散采样下的期望 reward;
- Backpropagation:把这个 surrogate loss 的梯度传到 Transformer 的所有参数。
7. 为什么直接增加 predictor head 的输出有问题
7.1 只训练 reward predictor
设 predictor head 为:
训练目标:
这只解决“这个回答预计能得多少分”,不会直接解决“下一步应该生成哪个 token”。PPO 中的 value head 就属于这种 predictor,它主要用于估计 baseline 和 advantage。
7.2 直接最大化共享 hidden state 上的 reward head
可以构造:
数学上确实能够 backprop,但模型可能学会操纵 reward head 依赖的 hidden representation,而不是真正改善输出文本。例如改变 hidden-state norm,使 predictor 给出更高分,却没有生成更好的答案。
这属于 surrogate exploitation / reward hacking:模型优化的是预测器内部表示,不一定是真实行为质量。
7.3 把 softmax distribution 或 expected embedding 输入 reward model
可以定义:
再优化:
这条路径可导,但优化的是:
而真正的 expected reward 是:
由于 reward network 非线性,一般有:
前者评价的是不存在于真实语言中的“soft token mixture”,例如 30% cat、20% dog、50% car。完整 autoregressive generation 中,这会形成一条真实模型永远不会生成的 soft trajectory,并导致严重 distribution shift。
8. Q-value predictor 是可行的,但会重新导出 policy gradient
假设 predictor 能准确输出每个 action 的长期价值:
可以定义:
直接求导:
利用 :
减去 baseline:
就得到 actor-critic 的 policy-gradient 形式:
所以一个准确的 Q-head 确实可以帮助优化,但它没有消灭 policy gradient,而是从另一个角度重新推导出了它。
真正困难的是: 必须预测“选完当前 token 后,再生成几十或几百个 token,最终能够获得多少 reward”。这本身就是 long-horizon credit assignment。
9. 什么情况下确实不需要 sampled policy gradient
如果输出空间很小,可以精确枚举全部 action:
那么可以直接对这个精确 expectation 做 backprop,不必使用 Monte Carlo REINFORCE。
但完整语言序列的输出空间是:
例如 vocabulary 为 50,000、输出长度为 100,可能序列数是:
不可能枚举每条 sequence 并分别运行 reward model。Policy gradient 的计算价值是:
用少量 sampled sequences,估计原本需要对指数级 sequence space 求和的梯度。
10. 最终记忆框架
普通 pathwise backprop 想做的事
它要求:
存在,但 hard token sampling 不满足这个条件。
Policy gradient 做的事
它不问:
当前这个 hard token 应该怎样连续移动?
而是问:
参数变化以后,各种离散 sequence 出现的概率怎样变化?
Policy gradient 存在的根本必要性:输出是离散 autoregressive sequence,reward 可以是任意 black-box scalar,无法枚举所有 sequence,也无法穿过 hard sampling 直接求导。Policy gradient 只用 sampled reward 和 sequence log probability,就能无偏地估计期望 reward 对 policy 参数的梯度。
最容易混淆的一步
Reward model 的 differentiability 只保证它内部可以做 backprop,并不保证从离散 sampled token 回到 policy logits 的路径可导。
因此应当分清:
- Reward model负责评价 output;
- Policy gradient负责把 sampled outcome 转换成“怎样改变输出概率分布”的学习信号;
- Backprop负责把这个信号继续传到所有模型参数。