Loss 平均:Token、回答与长度权重#
TL;DR#
本页内容7 个部分
1. 平均单位为什么重要#
同一批有两条回答,长度分别为 2 和 4。若第一条的 token loss 都是 1,第二条都是 3,对全部 token 平均得到 ,先在回答内平均再对回答平均却得到 。数据没有改变,为什么 loss 和训练权重会不同?
将 token 或回答的训练项汇总为一个 loss 时,需要明确平均的单位与范围。回答长度不同时,“每个 token 等权”和“每条回答等权”是两种不同选择。
2. 有效位置与两种平均定义#
本节比较同一批 token loss 的两种聚合配置:(1)将全部有效位置的 loss 相加,再除以 token 总数;(2)先分别计算每条回答内 token loss 的均值,再对回答取平均。聚合分母决定各项的梯度系数,选择不同配置可能改变合成梯度的方向。
第二种配置同时采用回答内平均与回答间平均。“对回答平均”本身只指定外层操作,不规定每条回答的目标内部怎样计算。 例如,RLOO 在回答内对 token score 求和,再对回答平均;它没有逐回答长度分母。
2.1 训练项与有效位置的约定#
设这次汇总包含 条回答,第 条有 个有效生成位置,单个位置的 loss 为 。在 PPO 中,它可以是 clipped 目标取负后的 Actor loss;下面不改变这个单项公式,只改变怎样汇总。
按实际参与训练的 mask 计数,排除 prompt 和 padding;本文完整回答计入终止 token。以下比较固定的已采样 batch,长度和 mask 在这次反传中视为常数。
“Batch 平均”仍需说明是对 token 还是回答平均。核对时,可以选定一个 token,把各层平均的分母相乘,计算该训练项的最终系数。
2.2 两条不等长回答的 loss 与权重#
假设同一批只有两条回答,所有位置都有效,单个 token loss 如下:
| 回答 | 长度 | 各 token 的 loss | 回答内总和 | 回答内平均 |
|---|---|---|---|---|
按 token 平均,得到 ;按回答平均,则是 。
各聚合分母对应的训练项权重如下:
| 比较对象 | Token 平均 | 回答平均 |
|---|---|---|
| 中每个 token 的权重 | ||
| 中每个 token 的权重 | ||
| 的平均 loss 的权重 | ||
| 的平均 loss 的权重 |
因此,token 平均使长回答的平均 loss 获得更高权重;回答平均让两条回答的平均 loss 等权。等权不表示它们的 loss 数值相同或梯度向量范数相同。 上面是聚合方式的手算例子,不是训练实验。
2.3 定义两种平均目标#
把所有有效位置的 loss 相加,再除以有效 token 总数:
每个 token 的权重都是 。长回答提供更多项,因此在各回答的平均 loss 之间,权重与长度成正比。
例如,TRL 的 PPO 实现对当前计算批次的 Actor loss 使用带 mask 的整体均值,分母就是该批的有效位置数。[1]
先将第 条回答的 token loss 之和除以该回答的长度 ,再对 条回答取平均:
每条回答的平均 loss 占 ;但该回答内每个 token loss 的聚合系数是 ,所以短回答的单个 token 权重更大。
两种方法都做了归一化。区别不是“有没有除长度”,而是除以整批的总长度,还是先除以每条回答自己的长度。若所有 ,两式都变成 乘全部 token loss 之和;长度不等时才显出相对权重的差异。
3. 聚合分母与梯度权重#
3.1 两条回答合成的梯度方向#
仍取长度为 和 的两条回答。若在当前参数处,它们各自的平均 token 梯度为 和 ,则 token 平均得到 ,回答平均得到 。两个向量不平行,区别已经超出整体尺度。
3.2 聚合系数的梯度推导#
固定这批样本,对两种 loss 求导:
第一种给所有 token 梯度乘同一个系数;第二种按各回答的长度分配系数。当长度不等、各回答的梯度又不共线时,相对权重改变就可能改变合成梯度的方向,不能一般地用调整一个学习率抵消。
还可以先在每条回答内求和,只在 batch 上平均,即 。对同一固定 batch,有 ,二者的纯梯度方向相同,只差本批共用的尺度;但这个尺度会随 batch 的平均长度改变。
从整条回答的期望奖励出发, 自然展开为 token 梯度之和,没有每条回答自己的 。REINFORCE 推导了这个形式;再除长度,就是额外的权重选择。
4. 跨批汇总与回答数的尺度换算#
4.1 按有效计数汇总小批次#
沿用长度为 2 和 4、token 平均 loss 分别为 和 的两条回答。若它们分在两个 microbatch 中,直接把这两个均值平均,得到 ,并不等于合在一起后的 token 均值 。
若要保留整个 batch 的 token 平均,就要按各块的有效 token 数加权。 本例的合并 loss 为 。梯度累积或多卡汇总时,局部均值、有效 token 数与最后的梯度缩放也要保持同一口径。[2]
4.2 回答级梯度的求和与平均#
以 TailRL 为例,设一组有 条回答,第 条的回答权重为 ,完整回答的 score 为 。TailRL 未中心化的梯度估计器是 。
若实现改为对 条回答取平均,即 ,应令 ,才能保留相同的梯度估计。中心化时,先定义组均值 ,再在回答平均中使用 。
沿用 TailRL 的三条回答算例,中心化权重为 ,均值形式应使用 。
乘以 只补偿回答平均引入的分母。TailRL 的同组均值中心化还会把对应有限阶目标从 阶变为 阶;这一目标变化由 TailRL 的有限组推导说明。
5. 聚合选择与方法对照#
5.1 与 Advantage 归一化的分工#
这两步作用在不同对象上:
- Advantage 归一化:先对更新权重 减均值、除标准差,再用它构造各 token 的 loss。
- Loss 平均:单个 token 的 loss 已经确定,再决定用 token 数还是回答数及各自长度来汇总。
两步可以组合,但应分别记录。Loss 已经求平均,并不要求 return、任务评分或 advantage 再除一次长度;额外除法会再次改变权重。
5.2 训练项与聚合范围的比较条件#
PPO 中的 表示采样位置上的经验平均。固定长度采样段下,多种聚合表达式可能相同。[3]
LLM 回答长度可变时,就应展开这个平均的分母。比较两种方法,先对齐有效位置、回答权重和汇总范围,再讨论梯度差异。同一种 PPO clipped 目标可以采用两种聚合,算法名不能代替配置说明。
如果联合使用 Actor、Critic 或单独的 KL loss,还要分别写清它们怎样平均;只改变其中一项的聚合,可能同时改变这些项之间的相对强度。
5.3 各方法采用的聚合配置#
各方法页采用的聚合配置如下:
| 方法与配置 | Loss 怎样聚合 | 还需分别说明什么 |
|---|---|---|
| PPO(本站示例) | 计算批次内有效 token 平均 | Mask 与汇总范围;不能把该配置泛化到所有 PPO |
| REINFORCE++ | 先回答内平均,再对回答平均 | Return 的全局归一化与 loss 的回答平均是不同操作 |
| RLOO | 回答内 token score 求和,再对回答平均 | 加入逐回答长度平均会改变原序列级梯度 |
| GRPO(原始目标) | 先回答内平均,再对组内回答平均;实际还对问题平均 | 组内 Advantage 标准化与回答长度权重分别产生影响 |
| Dr. GRPO | token 求和,除以回答数乘共同常数 | 共同常数与每条回答自己的长度不同;去标准差是另一项修改 |
| DAPO | 保留组内按有效 token 平均 | 跨题、microbatch 与多卡的计数仍需展开;动态采样另外改变数据 |
| GSPO | 回答目标平均;几何平均 ratio 的求导带来 | 长度已进入 ratio,不能据此推断没有长度权重 |
| ReCo | 回答内平均,再组内平均 | 回答似然权重、方差比和 loss 分母是三层不同权重 |
| ERPO | 任务项乘题目权重;Query 惩罚在问题 token mask 上单独聚合 | 静态 reference 权重与动态 current 权重分开;内部 Actor 仍沿用所选更新器 |
| SRPO | 单轨迹目标对有效 token 平均 | 轨迹内教师/old 对数概率差的中心化与 loss 平均分开;跨题汇总另行声明 |
| TailRL | 原始估计器对回答 score 加权求和 | 若改成回答平均,应将权重乘组大小;逐回答再除长度会另改目标 |
| ARPO(默认数学目标) | 轨迹内有效模型 token 平均,再对完整轨迹平均 | 共享前缀仍计入各轨迹,长度分母影响分支信号的合成 |
| PivotRL(回合级数学目标) | 对局部动作组平均,再对选中状态平均;动作概率内部为 token 概率乘积 | 完整动作 ratio 未取长度次方根;逐 token surrogate 与长度平均若另加,须单列 |
| DPO(原始目标) | 回答内 log 概率求和,两条回答构造一个 loss,再对偏好对平均 | 不先除逐回答长度;sigmoid 作用在两回答分差上,不是独立 token loss 的平均 |
DPO 的平均单位是一对回答。要先得到完整回答的分差,再经过 sigmoid 与负 log;把各 token 分别算 loss 后平均,通常不能得到同一个结果。
单独的 KL loss 也要注明自己的聚合范围;、 描述采样表达式,不能仅凭这个名称推断 loss 的平均分母。比较完整训练目标时,要同时对齐任务项与正则项的权重。