RLHF-奖励模型RM 的“引擎”:Pairwise Loss 梯度计算详解
在上一篇文章中,我们介绍了奖励模型 (RM) 是 RLHF 的“指南针”,它通过 Pairwise Ranking Loss 来学习人类的偏好。我们最终得到了一个损失值,例如 0.312。
但这个数字本身并不能更新模型。真正驱动模型学习的,是这个损失值 (Loss) 相对于模型每一个参数 (θ) 的梯度 (Gradient) 。梯度是一个向量,它指明了参数调整的方向,以最快地降低损失。
这篇文章将深入技术细节,拆解 Pairwise Ranking Loss 的反向传播(Backpropagation)过程,揭示模型是如何通过数学“理解”并“执行”——“拉高赢家分数,压低输家分数”这一指令的。
一、 目标与链式法则:拆解依赖关系
我们的总目标是计算 ∇θL,即总损失 L 相对于模型所有参数 θ 的梯度。
首先,我们回顾一下(为简化起见,我们先忽略平均值 1/(2K)):
L(θ)=−(yw,yl)∑log(σ(rθ(x,yw)−rθ(x,yl)))
我们来看其中一个偏好对 (yw,yl) 产生的损失 Lpair:
Lpair=−log(σ(s))其中 s=rw−rl
(注:rw=rθ(x,yw),rl=rθ(x,yl))
要计算 Lpair 对 θ 的梯度 ∂θ∂Lpair,我们必须使用链式法则 (Chain Rule) 。参数 θ 的改变是通过影响 rw 和 rl 的分数,进而影响 s 的差值,最后影响 Lpair 的。
这个过程有两条路径:
- 路径 1 (通过赢家 rw): θ→rw→s→Lpair
- 路径 2 (通过输家 rl): θ→rl→s→Lpair
因此,总梯度是这两条路径上的梯度之和:
∇θLpair=(∂s∂Lpair⋅∂rw∂s)⋅∇θrw+(∂s∂Lpair⋅∂rl∂s)⋅∇θrl
我们可以把这个过程分为两类关键的偏导数进行计算。
二、 第 1 类:损失 L 对分数 r 的偏导数(“上游梯度”)
这是最核心的数学推导,它定义了 Loss 函数本身的行为。
首先,我们使用一个在数值上更稳定的 Lpair 表达式。
因为 Lpair=−log(σ(s))=−log(1+e−s1)=log(1+e−s)。
- 计算 ∂s∂Lpair (损失对分数 差值 的偏导数):
∂s∂Lpair=dsdlog(1+e−s)=1+e−s1⋅(e−s⋅−1)
=−1+e−se−s=−es+11=−σ(−s)=σ(s)−1
这个结果 σ(s)−1 非常关键。
- 计算 ∂rw∂Lpair (损失对 赢家分数 的偏导数):
∂rw∂Lpair=∂s∂Lpair⋅∂rw∂s
由于 s=rw−rl,我们知道 ∂rw∂s=1。
∂rw∂Lpair=(σ(s)−1)⋅1=σ(rw−rl)−1
- 计算 ∂rl∂Lpair (损失对 输家分数 的偏导数):
∂rl∂Lpair=∂s∂Lpair⋅∂rl∂s
由于 s=rw−rl,我们知道 ∂rl∂s=−1。
∂rl∂Lpair=(σ(s)−1)⋅(−1)=1−σ(rw−rl)
结果分析:
-
对赢家 rw 的梯度 ∂rw∂Lpair=σ(s)−1:
由于 σ(s) 的值域在 (0,1) 之间,这个梯度永远是负数。
-
对输家 rl 的梯度 ∂rl∂Lpair=1−σ(s):
这个梯度永远是正数。
这组正负号,就是“拉高赢家,压低输家”的数学本质。
三、 第 2 类:分数 r 对参数 θ 的偏导数(“本地梯度”)
这一类偏导数是:
- ∇θrw=∂θ∂rθ(x,yw)
- ∇θrl=∂θ∂rθ(x,yl)
这是什么?
这 θ 代表了 RM 神经网络中的所有参数(例如 Transformer 的 WQ,WK,WV 矩阵、FFN 层的权重和偏置等)。
∇θrw 是一个巨大的梯度向量,它由深度学习框架(如 PyTorch)的自动微分(Autograd)引擎计算。它代表了:“为了让 rw 的分数增加 1,模型中的每一个参数 θi 应该如何变化?”
这个计算过程就是标准的反向传播:梯度从 RM 的“回归头”输出 rw 开始,流经 Transformer 的每一层,计算出 rw 对每个参数的偏导数。
∇θrl 同理,但由于输入 yl 与 yw 不同,其计算出的激活值和最终的梯度向量也会完全不同。
四、 组合:完整的梯度更新
现在我们把这两类偏导数组合起来,得到一个偏好对 (yw,yl) 对模型总梯度的贡献 ∇θLpair:
∇θLpair=(∂rw∂Lpair)∇θrw+(∂rl∂Lpair)∇θrl
代入我们在第二节中推导出的结果:
∇θLpair=标量 (负数)(σ(rw−rl)−1)⋅向量∇θrw+标量 (正数)(1−σ(rw−rl))⋅向量∇θrl
梯度下降如何工作:
模型在更新时,遵循的是梯度下降 (Gradient Descent) 规则:
θnew=θold−η⋅∇θL
(其中 η 是学习率)
我们把上面那个偏好对的梯度代入:
θnew=θold−η⋅[(σ(s)−1)⋅∇θrw+(1−σ(s))⋅∇θrl]
整理一下符号:
θnew=θold+正数η⋅(1−σ(s))⋅∇θrw−正数η⋅(1−σ(s))⋅∇θrl
这就是最终的更新指令:
-
这里的 (r_w 的梯度)(即 ∇θrw)本身是一个向量,它指向的是能使 rw 分数增加的方向。
- 参数 θ 正在沿着“能使 rw 增加的方向”移动。
- 最终效果:拉高赢家 rw 的分数。
-
这里的 (r_l 的梯度)(即 ∇θrl)本身是一个向量,它指向的是能使 rl 分数增加的方向。
- 参数 θ 正在沿着“能使 rl 增加的方向”的相反方向移动。
- 最终效果:压低输家 rl 的分数。

六、 核心洞察:梯度大小由“错误程度”决定
1、场景回顾
2. 奖励模型 (RM) 的 Pairwise Ranking Loss 计算
公式:
L(θ)=−(2K)1∑(yw,yl)log(σ(rθ(x,yw)−rθ(x,yl)))
其中 (2K)=(24)=6。
计算步骤:
我们需要计算 6 个偏好对 (yw,yl) 的 log(σ(rw−rl)) 值。
| 偏好对 (w, l) (人类偏好) | RM 分数 rw,rl | 差值 s=(rw−rl) | σ(s)=1+e−s1 (模型认为 w 赢的概率) | log(σ(s)) (单对损失) |
|---|
| (y1,y2) | (2.5, 1.9) | 0.6 | σ(0.6)≈0.646 | log(0.646)≈−0.437 |
| (y1,y3) | (2.5, 2.1) | 0.4 | σ(0.4)≈0.599 | log(0.599)≈−0.512 |
| (y1,y4) | (2.5, -1.0) | 3.5 | σ(3.5)≈0.971 | log(0.971)≈−0.029 |
| (y2,y3) | (1.9, 2.1) | −0.2 | σ(−0.2)≈0.450 | log(0.450)≈−0.798 |
| (y2,y4) | (1.9, -1.0) | 2.9 | σ(2.9)≈0.948 | log(0.948)≈−0.053 |
| (y3,y4) | (2.1, -1.0) | 3.1 | σ(3.1)≈0.957 | log(0.957)≈−0.044 |
最终 Loss 计算:
-
求和 (Sum):
(−0.437)+(−0.512)+(−0.029)+(−0.798)+(−0.053)+(−0.044)=−1.873
-
取平均 (Divide by 6):
−1.873/6≈−0.312
-
取负 (Negate):
L(θ)=−(−0.312)=0.312
此 batch 的最终损失值为 0.312。
3. 梯度计算(关键标量部分)
我们无法计算完整的 ∇θL(这需要访问神经网络内部参数),但我们可以计算出驱动梯度更新的“标量”部分,即损失 L 对 RM 分数 r 的偏导数。
公式(来自我们之前的推导):
- 赢家 rw 的梯度标量:∂rw∂Lpair=σ(s)−1
- 输家 rl 的梯度标量:∂rl∂Lpair=1−σ(s)
我们以两个极端案例为例:模型搞错的 (y2,y3) 和 模型做对的 (y1,y4) 。
案例 1:模型搞错的偏好对 (y2,y3)
- 人类偏好:y2 (赢家) > y3 (输家)
- 差值 s=r2−r3=1.9−2.1=−0.2
- 模型概率 σ(s)=σ(−0.2)≈0.450
计算梯度标量:
解释:
这两个值(-0.55 和 +0.55)的绝对值很大(最大为 1.0)。
在梯度下降 θ←θ−η⋅∇L 中:
- 这个 -0.55(负数)会使 θ 向增加 r2(赢家)的方向更新。
- 这个 +0.55(正数)会使 θ 向减小 r3(输家)的方向更新。
- 结论: 产生了强烈的更新信号,迫使模型“拉高 r2,压低 r3”。
案例 2:模型做对的偏好对 (y1,y4)
- 人类偏好:y1 (赢家) > y4 (输家)
- 差值 s=r1−r4=2.5−(−1.0)=3.5
- 模型概率 σ(s)=σ(3.5)≈0.971
计算梯度标量:
解释:
这两个值(-0.029 和 +0.029)的绝对值非常小(接近 0)。
- 结论: 模型已经正确且自信地将 r1 和 r4 分开了,因此这个偏好对几乎不产生梯度。模型可以“忽略”这个简单的样本,转而专注于学习像 (y2,y3) 这样的错误案例。
结论
梯度计算不是一个黑盒。通过链式法则,Pairwise Ranking Loss 被精确地分解为一组直观的数学指令:
- 方向: ∇θL 的计算结果天然地包含了“拉高 rw”和“压低 rl”的信号。
- 幅度: 梯度的大小与 1−σ(rw−rl) 成正比,即模型对正确答案的“不确定性”或“错误程度”。
这种自适应的调节机制使得 RM 能够高效、稳定地将数万个人类偏好排序,蒸馏到模型的数十亿参数中,最终打造出一个强大的“人类偏好指南针”。
在 RM 训练中,我们通过最小化 Pairwise Ranking Loss 来更新模型参数 θ。这个损失值本身并不能更新模型,真正驱动模型学习的,是这个损失值 (Loss) 相对于模型每一个参数 (θ) 的梯度 (Gradient) 。
梯度是一个向量,它指明了参数调整的方向,以最快地降低损失。这篇文章将深入技术细节,拆解 Pairwise Ranking Loss 的反向传播(Backpropagation)过程,揭示模型是如何通过数学“理解”并“执行”——“拉高赢家分数,压低输家分数”这一指令的。