3.1 RLHF:基于人类反馈的强化学习

3.1 RLHF:基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)

RLHF 的核心目标是:当任务的"正确行为"很难被写成一个明确、无偏且可泛化的奖励函数时,用人类反馈去学习一个奖励模型(Reward Model, RM),再用强化学习去优化策略,使模型行为更符合人类偏好与价值取向。

本文先介绍 RL 在 NLP 场景下如何做 MDP 建模与优化目标,再详细讲 RLHF 的经典流程(以 2017 年 Deep Reinforcement Learning from Human Preferences 为代表),并用案例解释"偏好比较---奖励学习---策略优化"的关键细节。


3.1.1 RL 在 NLP 场景下的拓展:把文本生成建模为 MDP

要把强化学习用于 NLP,需要先把"语言模型生成过程"抽象成一个马尔可夫决策过程(MDP)。对自回归语言模型而言,生成过程天然是一个逐 token 决策 的序列过程:在时刻 ttt,模型基于已有上下文生成一个 token,然后把它拼到上下文后面进入下一时刻。

1)动作(Action)

  • 动作 ata_tat:在时刻 ttt 生成的 token
  • 动作空间:词表 VVV,大小为 ∣V∣|V|∣V∣

也就是说,每一步决策都在"从词表里选一个 token"。

2)状态(State)

  • 状态 sts_tst:prompt 与当前已生成 token 的拼接序列
  • 初始状态 s0s_0s0:prompt 的 token 序列

可以理解为:状态就是"到目前为止你已经写出来的全部内容"。

3)策略(Policy)

  • 策略 π(at∣st)\pi(a_t|s_t)π(at∣st):在给定状态 sts_tst 下生成 token ata_tat 的概率分布

这正是语言模型的 next-token distribution。

4)状态转移(Transition)

在文本生成里,状态转移通常是确定性的

st+1=[st,at] s_{t+1} = [s_t, a_t] st+1=[st,at]

即:把当前生成的 token 直接拼到序列后面,得到下一时刻状态。

5)奖励(Reward)与价值(Value)

  • 即时奖励 rtr_trt:每一步得到的奖励
  • 状态价值 Vπ(st)V^{\pi}(s_t)Vπ(st):从状态 sts_tst 出发、遵循策略 π\piπ 未来累计奖励的期望

在 NLP/RLHF 场景里,最常见的设定是:

  • 只在整段 response 结束时给一个"整体奖励",中间 token 的即时奖励为 0;
  • 或者把整体奖励分配到 token 上(credit assignment),形成稠密奖励,但实现与稳定性更复杂。

3.1.2 NLP 场景下的 RL 优化目标

1)无约束的目标:最大化期望奖励

给定数据集 D\mathcal{D}D 中的 prompts xxx,策略生成 response yyy,我们希望最大化奖励期望:

max⁡π Ex∼D, y∼π[r(x,y)] \max_\pi \ \mathbb{E}_{x \sim \mathcal{D},\ y \sim \pi} \left[r(x,y)\right] πmax Ex∼D, y∼π[r(x,y)]

其中:

  • xxx:prompt
  • yyy:response(完整生成序列)
  • r(x,y)r(x,y)r(x,y):对"这条回答"打的分(来自人类、奖励模型或规则)

2)为什么需要行为约束(behavior regularization)

直接做 RL 会带来一个典型风险:策略为了"刷高奖励"会迅速偏离原先合理的语言分布,出现:

  • 语法/风格崩坏、胡言乱语
  • 奖励黑客(reward hacking):学会利用奖励函数的漏洞而不是变得更好
  • 训练不稳定、崩溃或模式坍塌

因此常用做法是在目标里加入 KL 约束,让新策略不要离参考策略太远。参考策略通常是:

  • SFT 初始化策略(supervised fine-tuning 的模型)
  • 或行为克隆得到的策略(行为数据的拟合策略)

行为约束形式的目标:

max⁡π Ex∼D, y∼π[r(x,y)] − β DKL[π(y∣x) ∥ πref(y∣x)] \max_\pi \ \mathbb{E}{x \sim \mathcal{D},\ y \sim \pi} \left[r(x,y)\right] \ -\ \beta\ D{\text{KL}}\left[\pi(y|x)\ \|\ \pi_{\text{ref}}(y|x)\right] πmax Ex∼D, y∼π[r(x,y)] − β DKL[π(y∣x) ∥ πref(y∣x)]

进一步把 KL 写进期望里(常见等价写法):

max⁡π Ex∼D Ey∼π(y∣x)[r(x,y) − βlog⁡π(y∣x)πref(y∣x)] \max_\pi \ \mathbb{E}{x \sim \mathcal{D}} \ \mathbb{E}{y \sim \pi(y|x)} \left[ r(x,y) \ -\ \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} \right] πmax Ex∼D Ey∼π(y∣x)[r(x,y) − βlogπref(y∣x)π(y∣x)]

解释:

  • β\betaβ:正则强度(越大越保守,越小越激进)
  • log⁡π(y∣x)πref(y∣x)\log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}logπref(y∣x)π(y∣x):鼓励策略不要给出"参考策略几乎不会给出"的回答
  • 这可以看成对奖励的"修正":回答不仅要高分,还要"像一个正常的模型那样说话"

直观案例

假设 reward 只看"是否包含某个关键词"。那么无约束 RL 可能学到:疯狂重复该关键词来刷分;加入 KL 约束后,模型重复太离谱会显著偏离参考策略分布,从而被惩罚,迫使模型在"自然表达"与"得分"之间平衡。


3.1.3 RLHF 流程:从人类偏好到可优化的奖励模型

RLHF 在深度强化学习中被系统化提出的一条重要脉络是 2017 年论文 Deep Reinforcement Learning from Human Preferences。其核心思想是:

  1. 不让人类直接写奖励函数
  2. 让人类做更容易的事情:对两段行为做比较
  3. 用比较数据训练一个奖励模型 r^\hat{r}r^
  4. 用 RL 去优化策略,使其最大化 r^\hat{r}r^

1)研究背景:为什么需要从偏好中学习奖励

强化学习常见难点是:很多任务的目标很难形式化成一个精确奖励函数。例如:

  • "讲得是否礼貌、是否有帮助、是否安全"
  • "回答是否符合人类常识与价值"
  • "对话是否自然、有条理、不过度自信"
  • "机器人动作是否优雅、是否让人放心"

如果奖励函数写得不对,就会导致:

  • reward hacking:智能体利用奖励漏洞但行为不符合人类期望
  • 偏置放大:奖励忽略某些关键维度,导致行为朝错误方向优化
  • 工程成本高:专家设计与调参非常耗时

与此同时,直接让人类给每条轨迹一个绝对分数又贵又难。相对比较更容易、更稳定。

2)研究目标:让系统既有效又经济

典型目标包括:

  • 人类能识别"哪个更好",但不需要提供完整 demonstration
  • 非专家也能参与反馈
  • 可扩展到大型问题
  • 反馈成本尽量低、信息量尽量大

3.1.4 关键做法:用"轨迹片段比较"收集偏好标签

1)偏好标签形式

给人类呈现两段轨迹片段(例如两段视频、两段文本、两段对话),让人类选择更喜欢哪一个。

设两段轨迹片段为 σ1\sigma^1σ1 和 σ2\sigma^2σ2,偏好关系为:

σ1≻σ2 \sigma^1 \succ \sigma^2 σ1≻σ2

轨迹片段可以写成状态-动作序列(长度为 kkk):

σ1=((s01,a01),...,(sk−11,ak−11)),σ2=((s02,a02),...,(sk−12,ak−12)) \sigma^1 = \left(\left(s_{0}^{1}, a_{0}^{1}\right), \ldots,\left(s_{k-1}^{1}, a_{k-1}^{1}\right)\right), \quad \sigma^2 = \left(\left(s_{0}^{2}, a_{0}^{2}\right), \ldots,\left(s_{k-1}^{2}, a_{k-1}^{2}\right)\right) σ1=((s01,a01),...,(sk−11,ak−11)),σ2=((s02,a02),...,(sk−12,ak−12))

人类给出的标签 yyy 可以是三值:

y∈{0,0.5,1} y \in \{0, 0.5, 1\} y∈{0,0.5,1}

一种常见约定是:

  • y=1y=1y=1:更偏好 σ1\sigma^1σ1
  • y=0y=0y=0:更偏好 σ2\sigma^2σ2
  • y=0.5y=0.5y=0.5:同等偏好(难以区分)

写成集合表达:

y={0,1,0.5} if {σ1≻σ2, σ2≻σ1, σ1=σ2} y = \{0,1,0.5\} \ \text{ if } \ \{\sigma^1\succ\sigma^2,\ \sigma^2\succ\sigma^1,\ \sigma^1=\sigma^2\} y={0,1,0.5} if {σ1≻σ2, σ2≻σ1, σ1=σ2}

2)为什么比较比打分更合适

  • 更容易:人类对"谁更好"通常比"给 7.3 分"更一致
  • 信息更丰富:轨迹片段包含行为序列信息,比只看单步状态更能体现质量
  • 标注更快:比较两段片段通常接近"看完就选"的交互方式

案例(对话)

同一个 prompt:"解释一下 KL 散度,并举例说明它的用途。"

  • 回答 A:定义清晰,解释直观,有例子但略短
  • 回答 B:公式堆砌,例子不贴切,还夹杂错误术语

让人给绝对分数容易出现尺度不一致;但让人选 A 更好,通常一致性更高。RLHF 正是利用这类"相对偏好"的稳定信号。


3.1.5 偏好建模:用 Bradley--Terry 模型把"偏好"连接到"潜在奖励"

有了比较标签 σ1≻σ2\sigma^1 \succ \sigma^2σ1≻σ2,下一步是训练奖励模型 r^\hat{r}r^。关键是建立一个概率模型:人类偏好哪段轨迹的概率应当由该轨迹的"总奖励"决定。

1)核心假设:偏好与累计奖励呈指数相关

设奖励模型对单步 (st,at)(s_t,a_t)(st,at) 输出 r^(st,at)\hat{r}(s_t,a_t)r^(st,at)。

一段片段的总奖励可写为时间累加(这里用 ∑\sum∑ 表示对片段内 ttt 求和):

  • 片段 1 的总奖励:∑r^(st1,at1)\sum \hat{r}(s_t^1, a_t^1)∑r^(st1,at1)
  • 片段 2 的总奖励:∑r^(st2,at2)\sum \hat{r}(s_t^2, a_t^2)∑r^(st2,at2)

Bradley--Terry 假设给出:

P^[σ1≻σ2]=exp⁡∑r^(st1,at1)exp⁡∑r^(st1,at1) + exp⁡∑r^(st2,at2) \hat{P}[\sigma^{1} \succ \sigma^{2}] = \frac{ \exp \sum \hat{r}(s_{t}^{1}, a_{t}^{1}) }{ \exp \sum \hat{r}(s_{t}^{1}, a_{t}^{1}) \ +\ \exp \sum \hat{r}(s_{t}^{2}, a_{t}^{2}) } P^[σ1≻σ2]=exp∑r^(st1,at1) + exp∑r^(st2,at2)exp∑r^(st1,at1)

这个式子可以这样理解:

  • 如果片段 1 的总奖励远大于片段 2,则分子指数项更大,概率接近 1
  • 如果两者总奖励接近,则概率接近 0.5
  • 这是一个"软比较":不是硬阈值,而是可微的概率模型

直观解释(对话例子)

如果奖励模型认为回答 A 的累计质量更高,那么它预测"人类更喜欢 A"的概率就更大。训练的目标就是让这个预测概率与真实标注一致。


3.1.6 奖励学习:用二分类交叉熵训练奖励模型

有了概率模型 P^[σ1≻σ2]\hat{P}[\sigma^{1} \succ \sigma^{2}]P^[σ1≻σ2],训练奖励模型就可以被写成一个监督学习问题:

输入两段片段,预测哪个更被偏好,最小化交叉熵损失。

1)一般形式(含 yyy)

设数据集为 D\mathcal{D}D,每个样本是 (σ1,σ2,y)(\sigma^1,\sigma^2,y)(σ1,σ2,y):

loss(r^)=−E(σ1,σ2,y)∈D[y(σ1≻σ2)log⁡P^[σ1≻σ2]+y(σ2≻σ1)log⁡P^[σ2≻σ1]] \mathrm{loss}(\hat{r}) = \mathrm{}- \mathbb{E}_{(\sigma^{1}, \sigma^{2}, y) \in \mathcal{D}} \left[ y(\sigma^1\succ\sigma^2)\log \hat{P}[\sigma^{1} \succ \sigma^{2}] + y(\sigma^2\succ\sigma^1)\log \hat{P}[\sigma^{2} \succ \sigma^{1}] \right] loss(r^)=−E(σ1,σ2,y)∈D[y(σ1≻σ2)logP^[σ1≻σ2]+y(σ2≻σ1)logP^[σ2≻σ1]]

这里 y(σ1≻σ2)y(\sigma^1\succ\sigma^2)y(σ1≻σ2) 可以理解为"标签对 σ1\sigma^1σ1 更优的指示/权重"。

2)常见化简:只写正负样本形式

把被偏好的片段记为 σ+\sigma^+σ+,不被偏好的记为 σ−\sigma^-σ−,损失可写成:

loss(r^)=−E(σ+,σ−)∈D[log⁡P^[σ+≻σ−]] \mathrm{loss}(\hat{r}) \mathrm{}= \mathrm{}- \mathbb{E}_{(\sigma^{+}, \sigma^{-}) \in \mathcal{D}} \left[ \log \hat{P}[\sigma^{+} \succ \sigma^{-}] \right] loss(r^)=−E(σ+,σ−)∈D[logP^[σ+≻σ−]]

把 P^\hat{P}P^ 展开:

loss(r^)=−E(σ+,σ−)∈D[log⁡exp⁡∑r^(st+,at+)exp⁡∑r^(st+,at+)+exp⁡∑r^(st−,at−)] \mathrm{loss}(\hat{r}) \mathrm{}= \mathrm{}- \mathbb{E}{(\sigma^{+}, \sigma^{-}) \in \mathcal{D}} \left[ \log \frac{ \exp \sum \hat{r}(s{t}^{+}, a_{t}^{+}) }{ \exp \sum \hat{r}(s_{t}^{+}, a_{t}^{+}) + \exp \sum \hat{r}(s_{t}^{-}, a_{t}^{-}) } \right] loss(r^)=−E(σ+,σ−)∈D[logexp∑r^(st+,at+)+exp∑r^(st−,at−)exp∑r^(st+,at+)]

这就是 RLHF 里"奖励模型训练"的经典形式:
让奖励模型对偏好片段给更高的累计得分,并且这个差距足以在 softmax 里体现出来。

案例(对话)

如果人类选了回答 A(σ+\sigma^+σ+)胜过回答 B(σ−\sigma^-σ−),训练会推动:

∑r^(st+,at+) > ∑r^(st−,at−) \sum \hat{r}(s_t^+,a_t^+) \ >\ \sum \hat{r}(s_t^-,a_t^-) ∑r^(st+,at+) > ∑r^(st−,at−)

并且差距越大,P^[σ+≻σ−]\hat{P}[\sigma^+ \succ \sigma^-]P^[σ+≻σ−] 越接近 1,loss 越小。


3.1.7 策略学习:用强化学习最大化学到的奖励

当奖励模型 r^\hat{r}r^ 学好之后,它就能对任意新生成的 response(或轨迹片段)给出一个分数,成为"可微但不可直接求导到策略参数"的外部奖励信号。此时可以用任意 RL 算法(如 PPO 等)去优化策略,使其生成更高奖励的输出。

在 NLP 场景里,奖励通常写为对整段 response 的函数:

r(x,y)=r^(x,y) r(x,y) = \hat{r}(x,y) r(x,y)=r^(x,y)

再结合 KL 约束(避免跑偏)形成最终优化目标(与前述 behavior-regularized 一致):

max⁡π Ex∼D Ey∼π(y∣x)[r^(x,y) − βlog⁡π(y∣x)πref(y∣x)] \max_\pi \ \mathbb{E}{x \sim \mathcal{D}} \ \mathbb{E}{y \sim \pi(y|x)} \left[ \hat{r}(x, y) \ -\ \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} \right] πmax Ex∼D Ey∼π(y∣x)[r^(x,y) − βlogπref(y∣x)π(y∣x)]

案例(奖励黑客与 KL 的作用)

假设奖励模型偏好"回答看起来很自信"。若没有约束,策略可能学会对任何问题都极度自信地给出断言,即使事实错误;加入 KL 后,模型如果变得与参考策略差异过大,会受到惩罚,从而缓解这种极端偏移。


3.1.8 在线学习:奖励模型与策略交替更新

2017 年这条路线强调的是 Online RLHF

  • 当前策略生成新轨迹
  • 人类持续给出比较偏好
  • 奖励模型不断用新标注更新
  • 策略也不断用更新后的奖励模型继续优化

其优点:

  • 系统能持续纠偏:奖励模型看到策略当前分布下的样本,减少"分布外误判"
  • 能避免过度依赖早期不成熟的奖励模型,持续提升

其代价:

  • 人类标注要持续投入,成本很高

因此在大语言模型时代,很多工作开始研究"自动化偏好标签",例如:

  • RLAIF:用更强的大模型代替人类做偏好比较
  • 规则/验证器/工具辅助:把部分偏好判断自动化

3.1.9 总结:RLHF 的本质与优势

1)算法原理总结

RLHF 把"人类偏好"转化成可优化的训练信号,关键链条是:

  1. 人类更容易做比较:σ1\sigma^1σ1 vs σ2\sigma^2σ2
  2. 用 Bradley--Terry 把偏好概率写成"累计奖励的 softmax"
  3. 用交叉熵训练奖励模型 r^\hat{r}r^
  4. 用 RL 在 KL 约束下最大化 r^\hat{r}r^,得到更符合偏好的策略

2)反馈方式的优势

  • 易于提供:比较比绝对打分更一致、更省力
  • 信息更丰富:轨迹片段体现"过程质量"而不是单点状态
  • 更贴近真实目标:很多人类目标难以写成规则,但能被人类直观看出

3)在线反馈的价值与成本

  • 在线能不断适配策略变化,减少奖励模型在分布外的错误
  • 但标注成本高,推动了后续自动化反馈(如 RLAIF)方向

3.1.10 一个贯穿式示例:用偏好训练"更有帮助的解释型回答"

设 prompt 为:

  • xxx:"解释什么是马尔可夫决策过程,并举例说明状态、动作、奖励分别是什么。"

当前策略生成两条回答(记为两段轨迹片段 σ1,σ2\sigma^1,\sigma^2σ1,σ2):

  • σ1\sigma^1σ1:解释清晰,例子是"文本生成的 token 决策",结构完整
  • σ2\sigma^2σ2:概念混乱,把状态和动作混为一谈,例子不对应

人类选择 σ1≻σ2\sigma^1 \succ \sigma^2σ1≻σ2,于是训练奖励模型满足:

  • 让 ∑r^(st1,at1)\sum \hat{r}(s_t^1,a_t^1)∑r^(st1,at1) 相对更大
  • 从而 P^[σ1≻σ2]\hat{P}[\sigma^1 \succ \sigma^2]P^[σ1≻σ2] 更接近 1

奖励模型学好后,策略优化阶段会倾向于生成类似 σ1\sigma^1σ1 的结构与内容,同时在 KL 正则下保持语言分布稳定,避免出现为了讨好奖励模型而产生的极端表达或模式坍塌。

最终得到的策略不仅更可能"答对",也更可能"答得像人类觉得更好"的那种方式:清晰、有条理、例子贴切、少幻觉、少无意义堆砌。


相关推荐
relis1 小时前
从 dma-buf 到 tensor parallel:跨越领域的零拷贝模式
算法
MaoziShan1 小时前
CMU Subword Modeling | 11 Rules of realization and rules of referral
人工智能·语言模型·自然语言处理
一条大祥脚1 小时前
Manacher/马拉车算法
算法
phoenix@Capricornus1 小时前
初等数学中点到直线的距离
人工智能·算法·机器学习
Fairy要carry2 小时前
面试-冷启动
深度学习
田里的水稻2 小时前
FA_规划和控制(PC)-快速探索随机树(RRT)
人工智能·算法·数学建模·机器人·自动驾驶
jaysee-sjc2 小时前
十三、Java入门进阶:异常、泛型、集合与 Stream 流
java·开发语言·算法
天才在此2 小时前
AI时代:软件工程的诞生与死亡
人工智能·软件工程