跳到主要内容

强化学习

强化学习(Reinforcement Learning,RL)是机器学习的第三大范式,与监督学习和无监督学习根本不同:它通过智能体与环境的持续交互,依据奖励信号自主学习最优行为策略。RL 是 AlphaGo 战胜人类围棋冠军的技术核心,也是 ChatGPT 等大语言模型对齐人类价值观的关键方法(RLHF)。

RL 基本框架

强化学习的核心要素:

  • 智能体(Agent):做出决策的主体(机器人、游戏玩家、语言模型)
  • 环境(Environment):智能体交互的外部世界(棋盘、物理世界、用户)
  • 状态(State, s):当前时刻对环境的完整描述(棋盘局面、机器人位置、对话历史)
  • 动作(Action, a):智能体可执行的操作(移动棋子、控制关节、输出 token)
  • 奖励(Reward, r):环境对智能体行为的即时反馈(赢棋 +1,输棋 -1,每步 -0.01)
  • 策略(Policy, π):从状态到动作的映射,π(a|s) 表示在状态 s 下选择动作 a 的概率

交互循环

时间步 t:
1. 智能体观察状态 s_t
2. 依据策略选择动作 a_t = π(s_t)(或 a_t ~ π(·|s_t))
3. 环境返回下一状态 s_{t+1} 和奖励 r_t
4. 智能体更新策略以最大化累积奖励

累积折扣奖励(Return)

G_t = r_t + γ·r_{t+1} + γ²·r_{t+2} + ...
= Σ_{k=0}^∞ γᵏ · r_{t+k}

折扣因子 γ ∈ [0,1]:控制对未来奖励的重视程度
- γ接近0:只关心即时奖励(短视)
- γ接近1:充分考虑长期收益(有远见)

马尔可夫决策过程(MDP)

RL 的数学形式化框架是马尔可夫决策过程,由五元组 (S, A, P, R, γ) 定义:

  • S:状态空间
  • A:动作空间
  • P(s'|s,a):状态转移概率(环境动态)
  • R(s,a,s'):奖励函数
  • γ:折扣因子

马尔可夫性质:下一状态只依赖当前状态和动作,与历史无关。

P(s_{t+1} | s_t, a_t, s_{t-1}, a_{t-1}, ...) = P(s_{t+1} | s_t, a_t)

这一假设简化了分析,但现实中有时需要部分可观测 MDP(POMDP)来处理不完整信息。

值函数:评估状态或状态-动作对的长期价值:

状态值函数 V^π(s) = E_π[G_t | s_t = s]   ← 从状态 s 出发,遵循策略 π 的期望回报
动作值函数 Q^π(s,a) = E_π[G_t | s_t=s, a_t=a] ← 在 s 执行 a 后,遵循 π 的期望回报

贝尔曼方程(递推关系):
V^π(s) = Σ_a π(a|s) Σ_{s'} P(s'|s,a) [R(s,a,s') + γV^π(s')]

Q-learning

Q-learning 是最基础的无模型值迭代算法,直接学习动作值函数 Q(s,a):

Q 表更新规则(Bellman 更新)

Q(s_t, a_t) ← Q(s_t, a_t) + α [r_t + γ · max_a Q(s_{t+1}, a) - Q(s_t, a_t)]

其中:
- α:学习率(0 到 1)
- r_t + γ·max_a Q(s_{t+1}, a):TD 目标(Temporal Difference Target)
- [TD 目标 - Q(s_t, a_t)]:TD 误差

ε-greedy 探索策略

import random

def epsilon_greedy(Q, state, epsilon=0.1):
if random.random() < epsilon:
return env.action_space.sample() # 随机探索
else:
return Q[state].argmax() # 贪心利用

Q-learning 适用于状态空间和动作空间都是离散且有限的简单环境(如格子世界、简单游戏)。

深度 Q 网络(DQN)

当状态空间过大(如 Atari 游戏的像素图像:84×84×4)时,Q 表无法存储,需要用神经网络近似 Q 函数:

import torch.nn as nn

class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.conv = nn.Sequential(
nn.Conv2d(4, 32, 8, stride=4), nn.ReLU(),
nn.Conv2d(32, 64, 4, stride=2), nn.ReLU(),
nn.Conv2d(64, 64, 3, stride=1), nn.ReLU(),
)
self.fc = nn.Sequential(
nn.Linear(64*7*7, 512), nn.ReLU(),
nn.Linear(512, action_dim)
)

def forward(self, x):
x = self.conv(x / 255.0)
return self.fc(x.flatten(1))

DeepMind 的 DQN(2015, Nature)的关键技术:

  • 经验回放(Experience Replay):将 (s, a, r, s') 存入回放缓冲区,随机采样小批量打破时间相关性
  • 目标网络(Target Network):用缓慢更新的副本计算 TD 目标,防止训练不稳定
  • 帧堆叠:将连续 4 帧叠加作为状态,让网络感知运动方向

DQN 在 49 款 Atari 游戏中超越人类水平,是深度 RL 的里程碑。

Policy Gradient——REINFORCE 算法

与值函数方法不同,策略梯度方法直接对策略 π_θ 进行参数化和优化:

目标:最大化期望总回报 J(θ) = E_π[G_t]

策略梯度定理

∇_θ J(θ) = E_π [∇_θ log π_θ(a_t|s_t) · G_t]

REINFORCE 算法

def compute_policy_gradient(states, actions, returns, policy):
log_probs = policy.log_prob(states, actions)
# 减去基线(baseline)减少方差
baseline = returns.mean()
loss = -(log_probs * (returns - baseline)).mean()
return loss

REINFORCE 的缺点:方差高(回报估计噪声大),样本效率低(每次 rollout 只用一次)。

Actor-Critic 架构

Actor-Critic 结合了策略梯度(Actor,负责选择动作)和值函数(Critic,评估动作质量):

Actor π_θ(a|s):参数化策略,决定动作
Critic V_φ(s):估计状态值,计算优势函数

优势函数(Advantage):A(s,a) = Q(s,a) - V(s)
← 动作 a 比平均水平好多少?正值说明当前动作优于平均

Actor 更新:∇_θ J ∝ ∇_θ log π_θ(a|s) · A(s,a)
Critic 更新:最小化 (V_φ(s) - G_t)²

优势函数减少了梯度估计的方差,使训练更稳定。

PPO——近端策略优化

PPO(Proximal Policy Optimization,Schulman et al., 2017)是目前最广泛使用的深度 RL 算法,被 OpenAI 用于 RLHF 对齐大语言模型:

核心思想:限制每次策略更新的幅度,防止更新过大导致训练崩溃:

PPO-Clip 目标:
L_CLIP(θ) = E_t [min(r_t(θ)·A_t, clip(r_t(θ), 1-ε, 1+ε)·A_t)]

其中:
r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t) ← 新旧策略的概率比
ε = 0.2(通常) ← 裁剪范围

当概率比 r_t 超出 [1-ε, 1+ε] 时,梯度被截断,防止策略变化过剧。

PPO 在 RLHF 中的应用

RLHF 训练流程:
1. 预训练语言模型 LM_ref(SFT 阶段)
2. 训练奖励模型 R_φ(从人类偏好对比数据学习)
3. 用 PPO 优化语言模型 LM_θ:
目标 = E[R_φ(x,y)] - β·KL(LM_θ(y|x) || LM_ref(y|x))
← KL 惩罚防止语言模型偏离参考模型太远(避免奖励欺骗)

AlphaGo 与 AlphaZero 技术解析

AlphaGo(2016)

DeepMind 的 AlphaGo 结合了三项核心技术:

  • 监督学习策略网络:从人类棋谱学习合理落子,提供高质量搜索先验
  • 自博弈强化学习:在监督学习的基础上自我对弈,持续改进
  • 蒙特卡罗树搜索(MCTS):结合策略网络(指导搜索方向)和价值网络(评估棋局胜率),比传统暴力搜索高效百倍

AlphaZero(2017)

AlphaZero 完全抛弃人类棋谱,从零开始纯靠自博弈训练,在围棋、国际象棋、将棋三项游戏上全面超越各自领域最强引擎:

  • 只告诉规则,不告诉任何人类知识
  • 单一网络同时输出策略(各落点的概率)和价值(当前局面的胜率估计)
  • 证明了在规则明确的复杂博弈中,自监督 RL 可以超越人类积累的所有知识

AlphaZero 的思路被 AlphaFold(蛋白质结构预测)、MuZero(无需规则的 MCTS)等后续工作广泛继承和扩展。