监督微调使模型模仿示例,但它并未明确地告知模型,根据人类价值观,哪种回复更优。为了培养这种质量意识,我们需要另一种方式。RLHF不要求人类给出生成文本的绝对分数(这可能困难、不一致且主观),而是依赖一种更直接的反馈形式:成对比较。人类通常更擅长说明偏好两个选项中的哪一个,而非给每个选项分配精确的数值分数。设想一下评审文章、艺术品,甚至是简单的选择。说“A比B好”通常比自信且一致地给A打8.5分、给B打6.2分要容易。偏好学习就运用了人类的这项能力。潜在设想:偏好暗示分数核心想法是,在给定相同提示的情况下,人类对成对回复的偏好,间接显露出一个潜在的奖励函数。如果人类在给定提示 $x$ 下,持续偏好回复 $y_1$ 而非 $y_2$,这表明 $y_1$ 具有比 $y_2$ 更多的期望品质(如有用性、无害性、准确性等)。我们假定存在一个潜在的标量函数,即奖励模型 ($RM$),表示为 $RM(x, y)$,它赋予一个反映这些期望品质的分数。偏好 $y_1 \succ y_2$(读作“$y_1$ 优于 $y_2$”)表明 $RM(x, y_1) > RM(x, y_2)$。我们的目标是训练一个模型,通常是基于与待微调语言模型相同架构的神经网络,以近似这个潜在奖励函数。这个 $RM$ 以提示和回复作为输入,输出一个标量值,代表预测的人类偏好分数。从偏好到概率我们如何仅使用比较数据来训练这样的模型?我们以概率方式构建学习问题。诸如布拉德利-特里模型(或其变体)等模型,为成对比较和潜在分数之间提供了数学联系。如章概述中所述,我们将人类在给定提示 $x$ 下偏好回复 $y_1$ 而非 $y_2$ 的概率,建模为两个回复各自奖励模型分数之差的函数:$$ P(y_1 \succ y_2 | x) = \sigma(RM(x, y_1) - RM(x, y_2)) $$此处,$\sigma$ 是 Sigmoid 函数,$\sigma(z) = 1 / (1 + e^{-z})$。让我们细致分析此公式:分数差异: $RM(x, y_1) - RM(x, y_2)$ 计算两个回复的预测分数之间的差异。较大的正差异意味着模型预测对 $y_1$ 的偏好更强。Sigmoid 函数: Sigmoid 函数将这个差异(范围从 $-\infty$ 到 $+\infty$)映射到0到1之间的概率。如果 $RM(x, y_1)$ 大幅高于 $RM(x, y_2)$,差异将是较大的正值,因此 $\sigma(\text{差异})$ 趋近于1。这意味着模型预测 $y_1$ 被偏好的概率很高。如果 $RM(x, y_2)$ 大幅高于 $RM(x, y_1)$,差异将是较大的负值,因此 $\sigma(\text{差异})$ 趋近于0。这意味着模型预测 $y_1$ 被偏好的概率很低(或等价地, $y_2$ 被偏好的概率很高)。如果分数相等,差异为0,且 $\sigma(0) = 0.5$,表明无差异或偏好可能性相同。这种概率化的构建方式,使得我们可以使用标准的机器学习技术,特别是二元交叉熵损失,来训练 $RM$。训练数据由元组 $(x, y_1, y_2)$ 构成,其中 $y_1$ 是根据人类标注者偏好的(“获胜”)回复,而 $y_2$ 是不被偏好的(“失败”)回复。模型会学习调整其参数,以便在给定提示下,为获胜回复赋予更高的分数,为失败回复赋予更低的分数。digraph PreferenceLearning { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10, margin=0.2]; edge [fontname="Arial", fontsize=9]; subgraph cluster_Input { label = "输入数据"; bgcolor="#e9ecef"; Prompt [label="提示 (x)"]; Response1 [label="回复 y1", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; Response2 [label="回复 y2", shape=ellipse, style=filled, fillcolor="#ffc9c9"]; } subgraph cluster_Human { label = "人类判断"; bgcolor="#fff3bf"; Preference [label="偏好标签\n(y1 ≻ y2)", shape=diamond, style=filled, fillcolor="#ffe066"]; } subgraph cluster_Model { label = "奖励模型 (RM)"; bgcolor="#d0bfff"; RM [label="RM 网络", shape=component, style=filled, fillcolor="#b197fc"]; Score1 [label="分数(x, y1)", shape=note, style=filled, fillcolor="#e9ecef"]; Score2 [label="分数(x, y2)", shape=note, style=filled, fillcolor="#e9ecef"]; Diff [label="分数(x, y1) - 分数(x, y2)", shape=note, style=filled, fillcolor="#e9ecef"]; Prob [label="P(y1 ≻ y2) = σ(差异)", shape=note, style=filled, fillcolor="#e9ecef"]; } Prompt -> Response1 [style=dashed]; Prompt -> Response2 [style=dashed]; Response1 -> Preference; Response2 -> Preference; Prompt -> RM [style=invis]; /* To align RM */ Response1 -> RM [label="输入"]; Response2 -> RM [label="输入"]; RM -> Score1; RM -> Score2; Score1 -> Diff; Score2 -> Diff; Diff -> Prob; Preference -> Prob [label="训练目标", style=dotted, color="#d6336c"]; {rank=same; Response1; Response2;} {rank=same; Score1; Score2;} }图示说明了提示和两个回复如何产生人类偏好标签,该标签作为训练奖励模型的目标。奖励模型处理这两个回复以预测分数、它们之间的差异,并最终得出其中一个被偏好的概率。基于偏好学习的优点偏好学习相比于直接指定或回归到绝对奖励分数,具有多项优点:人类评判的稳定性: 如前所述,对人类而言,比较性判断通常比分配绝对分数更稳定、更一致,特别是对于像生成文本质量这样复杂、多方面的标准。数据效率: 尽管收集偏好仍需大量人力,但有时它比获取替代方式所需的详细反馈或完善的示例数据更有效。隐式归一化: 比较的性质自动处理了不同评估者评分量表上的差异。无论一个评估者给回复打6-8分,而另一个打3-5分,都没有他们能否一致同意 哪一个 回复更好那么重要。模型学习的是相对顺序。通过训练模型预测这些成对偏好,我们创建了一个反映复杂人类判断的奖励信号。这个习得的 $RM$ 成为目标函数,语言模型随后将使用PPO等强化学习技术对其进行优化,引导它生成更符合人类预期的回复。接下来的章节将考察收集这些偏好数据以及训练奖励模型本身的实践方法。