RLHF, Reward Model, PPO, DPO
TL; DR
为了把人类反馈作为奖励,我们借鉴经济学的概念,建模人类偏好,在人类偏好数据集上,使用神经网络建模奖励(回报)函数,最终形成了用于RLHF的PPO框架。
人工设计奖励函数的缺陷
在 RLHF-2-Actor-Critic#Actor-Critic 架构 中。用于训练 Critic 的目标回报 R^t 是采用人工设计的 TD 和 GAE 进行估计的。
TD 和 GAE 是人工设计的用于解决信用分配问题和优化价值估计的算法机制,但在处理复杂、主观、或安全目标时,面对这些开放性问题,设计一个很好的奖励函数是很困难的。
稀疏奖励问题 (Addressing Sparse Rewards)
在许多任务中,只有在完成任务的终点才能获得奖励(稀疏奖励)。这使得 Critic 很难学习,因为大多数状态的 TD 误差都是零。
好处:奖励模型 (RM) 可以为 每个时间步 或 每个输出 token 提供一个连续的、密集的奖励信号 r^,即使这个信号是基于人类对整个轨迹的评价。这个密集的信号能显著提高 Critic 网络的训练效率。
奖励模型
我们可以使用人类反馈来训练一个奖励模型,来替代简单奖励或人工设计价值函数。奖励模型是一个独立的神经网络,它的目标是学习人类偏好的评估函数 rθ(x,y)。
奖励模型通常由 LLM 主体和一个价值头 (value head) 组成。这意味着它复用了 LLM 强大的理解能力来评估文本。
- 输入:提示 (prompt, x) + 模型生成的回答 (response, y)
- 输出:标量输出作为奖励。这个标量值就是对输入 (x,y) 组合质量的估计分数。
Bradley–Terry 与奖励模型训练
然而,人类反馈反映的是人类的意图,我们无法直接建模意图本身。受到基于偏好的强化学习 (Preference-based RL, PbRL) 的启发,我们转向建模人类的偏好,并期望将人类的偏好数据转化为一个评分器。
我们需要基于偏好排序数据而非直接的评分,来训练一个需要直接给出分数的奖励模型。训练的目标是要迫使 RM 为人类偏好的回答给出更高的分数,在此情况下,这个目标就可以转化为提高「模型觉得人类偏好的回答更好」事件发生的概率。
LR(rθ)=−E(x,y0,y1)∼D[logP(y0≻y1∣x)],
Bradley–Terry 模型可以在给定两个对象的效用分数的情况下,计算最终偏好结果的概率分布,从而把人类偏好和效用分数值联系在一起。具体而言,下面的公式表示一个人觉得 i 比 j 好的概率。其中 si 和 sj 是「效用函数」——在 RM 中,就是模型 rθ 的输出(奖励分数)。
P(i>j)=exp(si)+exp(sj)exp(si)
如果将 Bradley-Terry 模型应用到人类对模型两个输出 A 与 B 的偏好上,我们得到这样一个具体的形式
P(A>B)=1+erθM(B)−rθM(A)1=σ[rθM(A)−rθM(B)]
它表示回答 A 比回答 B 好的概率,依赖于两个回答分别的「效用值」。这个值就可以是
奖励模型给 A 和 B 打的分数 rθM(A) 和 rθM(B) 了。
从而,「『模型觉得人类偏好的回答更好』事件的概率」就被 Bradley–Terry 模型建模了。由于我们可以显式地计算这个事件的概率。因此我们可以使用负对数似然,从而损失函数可以设计为
LR(rθ)=−E(x,y0,y1,i)∼D[log(σ(rθ(x,yi)−rθ(x,y1−i)))](*)
其中:
- D: 人类偏好数据集,其中 (x,y0,y1,i) 代表在提示 x 下,回答 yi 被人类标注者认为优于回答 y{1−i}。
- σ: Sigmoid 函数,用于将分数差转换为概率。
- rθ(x,yi)−rθ(x,y1−i): 优秀回答和较差回答之间的奖励分数差。
通过最小化这个损失函数,迫使 RM 为人类偏好的回答 (yi) 给出更高的分数,从而使其输出的分数差能够准确预测人类的偏好概率。
RLHF Pipeline
RLHF-1-PPO#策略梯度定理 提到,强化学习的最原始的目标是希望一个策略平均来看能够带来更大的总回报,即
J(θ)=Vπθ(s0)=Eτ~Pθ(τ)[G(τ)]
其中 G(τ) 表示轨迹 τ 下的累积奖励。在 RLHF 框架下,G(τ):=rϕ(x,y) 。结合 KL-正则化,我们可以设计出下面的 RLHF 损失函数
πθmaxEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βKL[πθ(y∣x)∥πref(y∣x)]
其中 πref 用于约束当前策略 πθ 的最终分布,防止模型遗忘,是一个人工构造的正则化项。
整个基于人类反馈的强化学习的流程,即包括
- 预先在人类偏好数据集上,按照上面的介绍,训练一个奖励模型;
- 利用训练好的奖励模型构造如上损失函数
- 按照 PPO 的训练思想,但使用上面的损失函数,强化学习微调主模型。