强化学习基础:从 MDP 到 PPO 与 RLHF

强化学习(Reinforcement Learning,简称 RL)是一类让智能体在与环境持续交互中、依据奖励信号自我改进的学习范式。它与监督学习最大的不同在于:训练数据不是预先标注的输入输出对,而是智能体自己「尝试动作、观察后果、获得奖励」产生出来的。本文从最基础的数学框架出发,逐步讲到支撑现代大语言模型对齐的关键技术 RLHF。

强化学习 vs 监督学习

监督学习提供静态的数据集,每个样本都有标准答案,模型目标是最小化预测与标签之间的误差。强化学习没有现成标签,只有环境在每一步给出的标量奖励。智能体必须在一个时间序贯(sequential)的过程中做决策,当前动作会同时影响即时奖励和未来可能到达的状态。

由此派生出三个核心特征:

  • 与环境交互:智能体执行动作,环境返回新的观测与奖励,形成闭环。
  • 奖励信号稀疏且延迟:很多任务直到很久之后才知道当初某步选择是好是坏。
  • 探索与利用的权衡:只利用已知高回报动作会陷入局部最优,只探索又会浪费大量样本,二者必须平衡。

马尔可夫决策过程 MDP

绝大多数强化学习问题都可以建模为马尔可夫决策过程,记为五元组(S, A, P, R, gamma):

  • S 是状态集合,描述环境当前所处情形。
  • A 是动作集合,智能体可选择的行动。
  • P(s’ | s, a) 是转移概率,表示在状态 s 执行动作 a 后到达状态 s’ 的可能性。
  • R(s, a) 或 R(s, a, s’) 是奖励函数,给出即时反馈。
  • gamma 属于 [0, 1],是折扣因子,用于权衡眼前与长远收益。

「马尔可夫」意味着下一时刻的状态只依赖当前状态和动作,与更早的历史无关,这就是状态转移的无后效性。

智能体的目标不是最大化某一步奖励,而是最大化从当前时刻起的折后回报:

G_t = R_{t+1} + gamma R_{t+2} + gamma^2 R_{t+3} + …

折扣因子 gamma 越接近 1,智能体越看重长远收益;越接近 0,则越短视。回报是衡量一条轨迹「整体好坏」的指标。

价值函数与 Bellman 方程

策略 pi(a | s) 定义了在状态 s 下选择动作 a 的概率。在此基础上可以定义两类价值函数:

  • 状态价值函数 V_pi(s):从状态 s 出发、之后一直遵循策略 pi 所能获得的期望回报。
  • 动作价值函数 Q_pi(s, a):在状态 s 先执行动作 a、之后遵循策略 pi 的期望回报。

二者满足关系 Q_pi(s, a) = R(s, a) + gamma 乘以后继状态价值的期望。Bellman 方程直觉上表达了一个自洽思想:一个状态的价值等于即时奖励加上按转移概率加权的后续状态价值的折后和。最优价值函数满足 Bellman 最优方程,由此可推导出最优策略,这也是许多动态规划与时序差分算法的理论根基。

Q-learning 与经验回放

Q-learning 是 Watkins 于 1989 年提出的经典无模型(model-free)算法,它直接学习最优动作价值函数 Q*,而不需要预先知道环境转移概率。其核心是维护一张 Q 表,并用时序差分更新:

Q(s, a) <- Q(s, a) + alpha [ r + gamma max_{a’} Q(s’, a’) - Q(s, a) ]

其中 alpha 是学习率,方括号里是 TD 误差。该更新使用了下一状态的最优动作价值,因此 Q-learning 属于离策略(off-policy)方法,即用来改进策略的数据可以来自其他行为策略。

深度 Q 网络(DQN)把 Q 表换成神经网络,并用两个关键技巧稳定训练:经验回放(experience replay)把历史转移存入缓冲区随机采样,打破样本间的时间相关性;目标网络(target network)用一个缓慢更新的网络计算目标值,减少自举带来的震荡。

import random
import numpy as np

# 极简 Q-learning 示例(离散状态与动作)
Q = {}            # 状态到动作价值向量的映射
alpha = 0.1       # 学习率
gamma = 0.9       # 折扣因子
epsilon = 0.1     # 探索概率

def choose_action(state):
    if state not in Q:
        Q[state] = np.zeros(n_actions)
    if random.random() < epsilon:
        return random.randrange(n_actions)   # 探索
    return int(np.argmax(Q[state]))          # 利用

def update(state, action, reward, next_state):
    if next_state not in Q:
        Q[next_state] = np.zeros(n_actions)
    target = reward + gamma * np.max(Q[next_state])
    Q[state][action] += alpha * (target - Q[state][action])

策略梯度与 REINFORCE

当动作空间连续或策略过于复杂时,直接参数化策略 pi_theta(a | s) 往往比学 Q 表更实用,这就是策略梯度方法。策略梯度定理给出目标函数 J(theta) = E[回报] 对参数的梯度方向,使得我们可以沿梯度上升更新参数:

nabla_theta J(theta) = E[ nabla_theta log pi_theta(a | s) 乘 G_t ]

REINFORCE 算法(Sutton 等,2000)是这一思想的朴素实现:采样若干轨迹,用整条轨迹的回报作为权重去提升被选中动作的对数概率。其缺点是方差很大,因此实践中常减去一个基线(baseline,例如状态价值估计)来降低方差而不改变期望梯度。

import torch

# 策略梯度更新的一步(概念性伪代码)
log_probs = []     # 轨迹中每一步动作的 log pi_theta(a|s)
returns = []       # 对应的折后回报
loss = 0
for log_p, G in zip(log_probs, returns):
    loss -= log_p * G          # 最大化回报,对应最小化负项
loss = loss / len(log_probs)
loss.backward()                # 反向传播更新策略网络参数

PPO:稳定且易用的策略优化

策略梯度对步长很敏感:一次更新过猛可能让新策略偏离旧策略太远,导致训练崩溃。TRPO 用信赖域约束限制策略变化,但实现复杂。PPO(Proximal Policy Optimization,Schulman 等,2017)用更简单的「裁剪目标」达到类似效果。

PPO 的核心是对新旧策略概率比 r(theta) = pi_theta(a|s) / pi_old(a|s) 做裁剪:

L_CLIP(theta) = E[ min( r(theta) A, clip(r(theta), 1-epsilon, 1+epsilon) 乘 A ) ]

其中 A 是优势函数估计(动作价值减去状态价值),epsilon 通常取 0.1 到 0.2。当优势为正时,若 r 超过 1+epsilon 就不再继续鼓励;当优势为负时,若 r 低于 1-epsilon 也不再继续惩罚。这样把策略更新「限制在一个小邻域内」,既利用数据做多轮小批量更新,又避免破坏式的大跳。PPO 实现简单、样本效率较好,因此成为业界训练大模型对齐阶段的主力算法。

RLHF:用人类反馈对齐大语言模型

缩放点积注意力(Vaswani 等,2017)催生了Transformer,使大语言模型(LLM)得以规模化。但模型越大,并不天然更「听话」:它可能输出不实、有害或与用户意图不符的内容,这就是对齐(alignment)问题。RLHF(Reinforcement Learning from Human Feedback)是 OpenAI 在 InstructGPT(Ouyang 等,2022)中系统化的解决方案,分三阶段:

  1. 监督微调 SFT:用人工撰写的高质量示范数据微调预训练模型,使其学会基本的指令遵循格式。
  2. 训练奖励模型 RM:收集同一提示下多个模型输出的排序标注,训练一个奖励模型来拟合人类偏好,把「好回答」映射为高分数。
  3. PPO 优化:以 SFT 模型为策略初始点,用奖励模型给出的分数作为环境奖励,通过 PPO 更新策略,使生成内容更符合人类偏好,同时用 KL 惩罚项约束不要偏离原模型太远。

通过这一链路,模型的「能力」来自预训练,而「行为方向」来自人类反馈。RLHF 把模糊的「有用、诚实、无害」目标,转化为可被强化学习优化的奖励信号,是大模型走向可用产品的关键一步。

局限与误区

  • 样本效率低:RL 通常需要海量交互,尤其在真实环境中成本高昂。
  • 奖励建模困难:人类偏好复杂且会变化,奖励模型只能近似,可能遗漏安全或真实性维度。
  • 奖励 hacking(奖励作弊):智能体可能找到钻奖励模型空子的捷径,表面上拿高分实则违背初衷,例如冗长啰嗦或迎合偏见。
  • 评估困难:缺乏像分类准确率那样的统一指标,很多对齐效果依赖人工评测。

小结

强化学习以「与环境交互、以奖励为信号」区别于监督学习,其数学底座是 MDP 与 Bellman 方程。从 Q-learning、策略梯度到 PPO,算法演进的主线是在保持学习能力的同时提升稳定性与样本效率。PPO 凭借裁剪目标成为 RLHF 的主力优化器,而 RLHF 三阶段(SFT、奖励模型、PPO)则把人类反馈转化为可优化信号,使大语言模型从「能生成」走向「符合意图」。理解这些基础,有助于在模型对齐、决策控制等场景中做出审慎的工程判断。

参考与延伸阅读

  • Schulman, J. 等(2017)。Proximal Policy Optimization Algorithms。arXiv:1707.06347。(已核验)
  • Ouyang, L. 等(2022)。Training language models to follow instructions with human feedback(InstructGPT)。arXiv:2203.02155。(已核验)
  • Vaswani, A. 等(2017)。Attention Is All You Need。arXiv:1706.03762。(已核验)
  • Watkins, C. J. C. H.(1989)。Learning from Delayed Rewards。博士论文,剑桥大学。(Q-learning 起源)
  • Sutton, R. S. 与 Barto, A. G.。Reinforcement Learning: An Introduction(第二版)。MIT Press。(策略梯度与 REINFORCE 的权威教材)
  • OpenAI。Spinning Up in Deep RL。https://spinningup.openai.com/ (面向实现的入门文档)
本文累计阅读