奖励模型设计

构建有效的奖励信号模型

模型架构

基于LLM的奖励模型

使用预训练语言模型作为backbone,添加线性头输出标量奖励

class RewardModel(nn.Module):
def __init__(self, base_model):
self.model = base_model
self.score_head = nn.Linear(hidden_dim, 1)
def forward(self, input_ids):
hidden = self.model(input_ids).last_hidden_state
reward = self.score_head(hidden[:, -1, :])
return reward

训练目标

使用对比损失学习相对偏好:

# Bradley-Terry模型
P(A { 优于} B) = σ(r(A) - r(B))
# 损失函数
L = -log σ(r(x, y_win) - r(x, y_lose))

设计要点

模型规模

通常与策略模型同规模或更大

输出归一化

奖励分数归一化,稳定训练

提示处理

只对回复部分计算奖励

序列池化

使用最后一个token或平均池化

多维度奖励

可以设计多个奖励头分别预测不同维度:

有用性奖励
安全性奖励
真实性奖励
r_total = w1 * r_helpful + w2 * r_safety + w3 * r_truthful

常见问题

奖励黑客

策略模型找到漏洞欺骗奖励模型

过拟合

奖励模型记忆训练数据,泛化差

分布偏移

训练和推理时的数据分布不一致

----