跳转到内容

强化学习超详细教程:第1章 - 什么是强化学习

还记得你第一次学骑自行车吗?

没有人递给你一本《骑车动作标准手册》,告诉你”第 3 秒时把车把向左转 15 度,身体重心前倾 8 度”。你只是不断尝试:踩踏板 → 摔倒(痛,负反馈),扶稳车把 → 前进了 2 米(好,正反馈),重心后移 → 又摔了(再次负反馈)。经过几十次摔跤后,你的大脑总结出了一套”骑车策略”。

这就是**强化学习(Reinforcement Learning, RL)**的本质:通过与环境交互,从奖励信号中学习最优行为策略

与传统机器学习方法不同:

  • 监督学习需要明确的标注答案(“这是猫”、“这是狗”)
  • 无监督学习寻找数据内在模式(聚类、降维)
  • 强化学习只给结果评分(“这次做得好”、“这次失败了”),智能体自己摸索路径

强化学习 vs 监督学习 vs 无监督学习

Section titled “强化学习 vs 监督学习 vs 无监督学习”
维度监督学习无监督学习强化学习
训练数据(输入, 正确答案) 对只有输入数据(状态, 动作, 奖励) 序列
学习目标拟合输入到输出的映射发现数据内在结构最大化累积奖励
反馈方式每个样本都有明确标签无反馈延迟的、稀疏的奖励信号
典型应用图像分类、语音识别聚类、降维游戏 AI、机器人控制、LLM 对齐
核心挑战标注成本高评估困难探索-利用权衡、信用分配

为什么监督学习训练不出 ChatGPT?

Section titled “为什么监督学习训练不出 ChatGPT?”

假设你想让 AI 写一篇好文章:

  • 监督学习方式:需要人工为每个问题写出”标准答案”。但好文章千变万化,写作风格、论证方式、深度都可以不同,无法穷举所有正确答案。
  • 强化学习方式:只需人类评分”这篇 A 比 B 更有用”,AI 通过大量这样的成对比较,自己学习什么是”有用”、“无害”、“诚实”。

这正是 ChatGPT 的训练秘诀:RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)——用人类偏好作为奖励信号。我们稍后会详细讲解。

强化学习用**马尔可夫决策过程(Markov Decision Process, MDP)**形式化问题。想象一个走迷宫的机器人:

MDP 智能体-环境交互循环

决策者,例如:

  • 迷宫中的机器人
  • 下棋的 AI 程序
  • 正在训练的 ChatGPT 模型

智能体之外的一切:

  • 迷宫的墙壁、通道和宝藏位置
  • 棋盘和对手
  • 用户的文本输入和人类评分员

当前局面的完整描述:

  • 机器人在迷宫的坐标 (x,y)(x, y)
  • 棋盘上所有棋子的位置
  • LLM 当前生成的候选回复文本

智能体能做的选择:

  • 向上/下/左/右移动
  • 落子到某个位置
  • 调整文本生成的参数

环境给的反馈分数:

  • 撞墙 1-1 分,找到宝藏 +10+10
  • 吃掉对方棋子 +5+5 分,被将军 10-10
  • 人类评分员认为回复”有用” +1+1
MDP=(S,A,P,R,γ)\text{MDP} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)
  • S\mathcal{S}:状态空间(所有可能的状态集合)
  • A\mathcal{A}:动作空间(所有可能的动作集合)
  • P(ss,a)\mathcal{P}(s'|s,a):转移概率(执行动作 aa 后,从状态 ssss' 的概率)
  • R(s,a,s)\mathcal{R}(s,a,s'):奖励函数
  • γ[0,1]\gamma \in [0,1]:折扣因子(未来奖励的”贬值率”)

关键洞察:马尔可夫性质

当前状态 sts_t 包含了做决策所需的全部信息,不需要知道历史路径。就像走迷宫时,只需知道”现在在哪”,不需要记住”是怎么走到这里的”。

智能体的”行动手册”,告诉它在每个状态该做什么:

π(as)=P(在状态 s 选择动作 a)\pi(a|s) = P(\text{在状态 } s \text{ 选择动作 } a)
  • 确定性策略π(s)=a\pi(s) = a(每次都选同一个动作)
  • 随机性策略π(as)\pi(a|s)(按概率分布选择)

价值函数(Value Function)V(s)V(s)

Section titled “价值函数(Value Function)V(s)V(s)V(s)”

“这个状态有多好”的度量:

Vπ(s)=Eπ[t=0γtRt+1S0=s]V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0=s \right]

直觉理解:从状态 ss 开始,按策略 π\pi 行动,未来能获得的总奖励的期望值。

“在状态 ss 做动作 aa 有多好”:

Qπ(s,a)=Eπ[t=0γtRt+1S0=s,A0=a]Q^\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0=s, A_0=a \right]

价值函数满足递归关系:

Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]V^\pi(s) = \sum_a \pi(a|s) \sum_{s'} P(s'|s,a) \left[ R(s,a,s') + \gamma V^\pi(s') \right]

直觉理解:当前状态的价值 = 立即奖励 + 下一个状态价值的折扣。

就像房价评估:这套房的价值 = 今年租金收入 + 明年卖出时的预期价格(打折)。

Bellman 方程递归树

强化学习的核心挑战:探索与利用权衡

Section titled “强化学习的核心挑战:探索与利用权衡”

想象你在赌场,面前有 10 台老虎机(slot machines),每台的中奖概率未知。你只有 100 次拉杆机会,如何获得最大收益?

多臂老虎机问题

  • 纯利用(Exploitation):一直拉当前看起来最好的那台
    风险:可能只是运气好,错过更优选择

  • 纯探索(Exploration):均匀尝试所有老虎机
    风险:浪费机会在明显差的机器上

最优策略:在探索和利用之间找平衡。

最简单的平衡方法:

at={random actionwith probability ϵargmaxaQ(s,a)with probability 1ϵa_t = \begin{cases} \text{random action} & \text{with probability } \epsilon \\ \arg\max_a Q(s, a) & \text{with probability } 1 - \epsilon \end{cases}
  • ϵ=1.0\epsilon = 1.0:纯探索(初期)
  • ϵ=0.01\epsilon = 0.01:主要利用,偶尔探索(后期)

衰减策略ϵt=ϵmin+(ϵmaxϵmin)eλt\epsilon_t = \epsilon_{\text{min}} + (\epsilon_{\text{max}} - \epsilon_{\text{min}}) \cdot e^{-\lambda t}

ε-贪婪探索率衰减

Upper Confidence Bound (UCB)

at=argmaxa[Q(s,a)+clntN(s,a)]a_t = \arg\max_a \left[ Q(s, a) + c \sqrt{\frac{\ln t}{N(s, a)}} \right]
  • Q(s,a)Q(s, a):已知价值(利用)
  • lntN(s,a)\sqrt{\frac{\ln t}{N(s, a)}}:不确定性奖励(探索不常选的动作)

Softmax(玻尔兹曼探索)

P(as)=eQ(s,a)/τaeQ(s,a)/τP(a|s) = \frac{e^{Q(s,a) / \tau}}{\sum_{a'} e^{Q(s,a') / \tau}}

温度参数 τ\tau 控制随机性:

  • τ0\tau \to 0:接近贪婪
  • τ\tau \to \infty:接近随机
领域策略原因
游戏 AIε-贪婪 + 内在奖励(好奇心)需要发现隐藏关卡和技巧
机器人基于模型的探索(主动学习)真实试错成本高,需要高效探索
推荐系统Contextual Bandit + Thompson Sampling平衡推荐准确率与内容多样性
LLM 训练温度采样 + Top-k 过滤在生成多样性与质量间权衡

假设你下国际象棋,在第 10 步走了一招妙手,但到第 50 步才赢棋。如何让 AI 知道第 10 步的价值?

问题:延迟奖励——只有游戏结束才知道输赢,但需要评估每一步的好坏。

解决方案

  1. 时序差分学习(TD Learning):每步都用 Bellman 方程更新价值估计,逐步传播终局奖励
  2. 资格迹(Eligibility Traces):记住最近走过的状态,获得奖励时回溯更新
  3. 优势函数(Advantage)A(s,a)=Q(s,a)V(s)A(s,a) = Q(s,a) - V(s),衡量动作比平均水平好多少

直觉类比

你考试得了 95 分(奖励),但不知道是因为:

  • 考前一周刷题(短期因素)
  • 过去半年的积累(长期因素)

TD Learning 就像定期小测,让你在学期中就知道哪些章节掌握不好,而不是等到期末才知道。

RLHF 三阶段训练流程

阶段 1:预训练(Unsupervised Learning)

Section titled “阶段 1:预训练(Unsupervised Learning)”
  • 在海量文本(互联网、书籍)上学习语言模式
  • 目标:预测下一个词
  • 问题:只会”接话”,不理解人类意图,可能生成有害内容

阶段 2:监督微调(Supervised Fine-Tuning, SFT)

Section titled “阶段 2:监督微调(Supervised Fine-Tuning, SFT)”
  • 人工标注”问题-答案”对(如”解释量子力学” → 一篇详细解释)
  • 训练模型遵循指令格式
  • 问题:无法学习主观偏好(什么是”有用”、“无害”),标注成本极高

问题建模(MDP 视角)

  • 状态:用户输入的 Prompt
  • 动作:模型生成的回复文本
  • 奖励:奖励模型(Reward Model)的打分

训练流程

步骤 1:收集偏好数据

对同一 Prompt,让模型生成多个回复 A、B、C、D,人类标注员排序:B > A > D > C。

步骤 2:训练奖励模型

输入:(Prompt, 回复) 对
输出:分数(越高表示越好)

使用 Bradley-Terry 模型训练:

P(BA)=erBerA+erBP(B \succ A) = \frac{e^{r_B}}{e^{r_A} + e^{r_B}}

这个公式把”B 比 A 好”的概率建模为两个奖励分数的 softmax。

步骤 3:PPO 优化策略

让模型生成回复,获得奖励模型打分,用 PPO 算法更新模型参数。核心目标函数:

E[r(x,y)βKL(πθπref)]\mathbb{E} \left[ r(x, y) - \beta \cdot \text{KL}(\pi_\theta || \pi_{\text{ref}}) \right]
  • r(x,y)r(x, y):奖励模型对生成文本的打分
  • βKL\beta \cdot \text{KL}:KL 散度惩罚,防止模型偏离原始模型太远(避免”奖励黑客”)

简化的 RLHF 伪代码

# 步骤 1: 监督微调(已完成)
sft_model = train_supervised(base_model, instruction_data)
# 步骤 2: 训练奖励模型
reward_model = train_reward_model(preference_data)
# preference_data: {prompt, chosen_response, rejected_response}
# 步骤 3: PPO 强化学习
for batch in prompts:
# 生成多个候选回复
responses = sft_model.generate(batch)
# 获得奖励
rewards = reward_model.score(batch, responses)
# 计算 KL 惩罚
kl_penalty = kl_divergence(sft_model, original_model)
# 最终奖励 = 原始奖励 - β * KL
final_rewards = rewards - beta * kl_penalty
# 用 PPO 更新策略
sft_model.update(final_rewards)
问题监督学习RLHF
标注成本每个样本需要写”完美答案”只需比较”哪个更好”(成本降低 10 倍)
主观性处理难以定义”标准答案”直接学习人类偏好分布
泛化能力只能模仿训练集能推理出训练集外的”好回复”
长期目标优化单步准确率优化对话整体质量

案例 1:药物分子生成(REINVENT)

Section titled “案例 1:药物分子生成(REINVENT)”

任务:设计能抑制特定蛋白(如 DRD2 受体)的小分子药物

为什么适合 RL?

  • 分子空间巨大:106010^{60} 种可能的类药分子
  • 多目标优化:既要活性高,又要易合成、低毒
  • 黑盒评分:生物实验给的是”好/坏”信号,没有梯度

RL 建模(MDP 视角)

  • 状态:当前分子的 SMILES 字符串表示
    (如 C1=CC=CC=C1 表示苯环)

  • 动作:添加/删除原子或化学键
    (如在某个位置连接一个氮原子)

  • 奖励:多目标加权和

    R=w1药物活性+w2合成可行性w3毒性R = w_1 \cdot \text{药物活性} + w_2 \cdot \text{合成可行性} - w_3 \cdot \text{毒性}

药物分子生成 MDP 建模

核心创新:增强型回合似然

REINVENT 不是直接用 REINFORCE 算法(容易模式崩溃),而是将先验对数似然与奖励结合:

logP(A)augmented=logP(A)prior+σS(A)\log P(A)_{\text{augmented}} = \log P(A)_{\text{prior}} + \sigma \cdot S(A)

这确保生成的分子既能优化目标,又保持在类药物分布内。

成果数据

  • DRD2 受体活性分子生成成功率:3% → 97%
  • 在移除训练集中所有 Celecoxib(消炎药)相似分子后,模型仍能在 400 步内重新发现该药物

案例 2:蛋白质结构设计(RFdiffusion)

Section titled “案例 2:蛋白质结构设计(RFdiffusion)”

任务:设计具有特定功能的全新蛋白质骨架

为什么适合 RL 思想?

  • 搜索空间极大:300 个氨基酸的构象数量 >10300> 10^{300}
  • 需要平衡局部和全局结构约束
  • 能量函数可作为奖励信号

方法概述

RFdiffusion 将扩散模型(Diffusion Model)应用于蛋白质生成。虽然不是传统 RL 算法,但其迭代优化思想与 RL 一脉相承:

  1. 从高斯噪声采样初始结构
  2. 逐步去噪,每步通过 RoseTTAFold 预测优化方向
  3. 应用约束引导(拓扑、对称性、功能位点),类似 RL 的奖励塑形

成功案例

  • 设计的金属结合蛋白在湿实验中成功表达并验证功能
  • 生成的酶活性位点保持催化几何构型
  • 可设计对称低聚物(C3、D2 等点群对称)
传统方法强化学习方法
基于物理模拟(计算成本极高)学习近似策略(快速采样)
难以整合多目标约束通过奖励函数自然融合
容易陷入局部最优探索-利用平衡
需要明确的能量函数可用黑盒评分(实验数据)

任务:找到小分子药物在蛋白质结合口袋中的最优结合姿态

传统方法的挑战

  • 分子对接(Molecular Docking):用打分函数评估数千种姿态,但打分函数不完美
  • 分子动力学(MD):模拟原子运动,精确但极慢(1 微秒模拟需数天)

RL 创新方法(AlphaFold 3 后续研究)

MDP 建模

  • 状态:配体当前的 3D 坐标和旋转角度
  • 动作:微小的平移/旋转(6 自由度)
  • 奖励:结合自由能 ΔG\Delta G 的负值(越负越稳定)

蛋白质-配体对接 RL 建模

训练策略

  1. 在已知晶体结构上预训练(监督学习)
  2. 用 RL 微调,优化实验验证的结合亲和力
  3. 用 Soft Actor-Critic (SAC) 处理连续动作空间

实际成果

  • 对接成功率(RMSD < 2Å):传统方法 60% → RL 方法 83%
  • 计算速度提升 100 倍(相比 MD)
  • 能发现传统打分函数低估的”隐藏”结合姿态

1. 搜索空间巨大但结构化

生物分子的搜索空间虽大,但并非完全随机:

  • 蛋白质折叠遵循物理规律(疏水效应、氢键)
  • 药物分子需满足 Lipinski 五规则(类药性约束)

RL 通过**奖励塑形(Reward Shaping)**引导智能体在结构化空间高效探索。

2. 多目标优化的自然建模

现实药物设计需平衡:

  • 靶点亲和力(Binding Affinity)
  • 选择性(不结合其他蛋白)
  • 代谢稳定性(ADMET 性质)
  • 合成可行性(Synthetic Accessibility)

RL 的奖励函数可优雅地表达多目标权衡:

Rtotal=αRaffinity+βRselectivityγCsynthesisR_{\text{total}} = \alpha \cdot R_{\text{affinity}} + \beta \cdot R_{\text{selectivity}} - \gamma \cdot C_{\text{synthesis}}

3. 从实验反馈中学习

生物实验提供的是成对比较排名,而非绝对值:

  • “化合物 A 比 B 更有效”(定性反馈)
  • IC50 值有测量误差(噪声反馈)

这正是 RLHF 类型问题!可以用偏好学习(Preference Learning)替代精确的奖励建模。

4. 安全约束的硬性要求

药物设计不能”试错后反悔”:

  • 不能设计出有毒分子
  • 不能违反专利约束
  • 不能破坏蛋白质稳定性

RL 的约束优化(Constrained RL)和安全探索(Safe Exploration)机制天然适配:

maxπE[R]s.t.Ctoxicity<δ,Cstability>ϵ\max_\pi \mathbb{E}[R] \quad \text{s.t.} \quad C_{\text{toxicity}} < \delta, \quad C_{\text{stability}} > \epsilon

1. 多模态融合

结合序列、结构、生物活性数据:

  • 语言模型(ESM)学习蛋白质序列表示
  • 图神经网络(GNN)学习分子拓扑
  • 扩散模型生成 3D 结构
  • RL 优化综合目标

2. 少样本学习

生物实验昂贵(每个数据点数千美元),需要:

  • 主动学习(Active Learning):智能选择下一个实验
  • 迁移学习:从相似蛋白家族迁移知识
  • 元学习(Meta-RL):学会快速适应新靶点

3. 人在回路(Human-in-the-Loop)

结合专家知识:

  • 化学家提供”不可合成”的负反馈
  • 生物学家标注”不太可能有活性”的区域
  • 交互式设计:实时调整奖励权重

第一个 RL 程序:Q-Learning 走迷宫

Section titled “第一个 RL 程序:Q-Learning 走迷宫”

让我们用 Python 实现一个简单的强化学习智能体,理解算法如何从零学习。

S . . .
. W W .
. . X .
. . . G
  • S:起点 (0,0)
  • G:目标 (3,3),奖励 +10
  • X:陷阱 (2,2),奖励 -10
  • W:墙壁(不可通过)
  • .:空地,每步 -0.04(生存惩罚,鼓励快速到达目标)

Q-Learning 迷宫热力图

Q-Learning 维护一张 Q 表,记录每个 (状态, 动作) 对的价值。更新公式:

Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma \max_{a'} Q(s',a') - Q(s,a) \right]
  • α\alpha:学习率(如 0.1)
  • γ\gamma:折扣因子(如 0.95)
  • rr:立即奖励
  • maxaQ(s,a)\max_{a'} Q(s',a'):下一个状态的最大 Q 值
import numpy as np
import random
# 环境定义
GRID_SIZE = 4
START = (0, 0)
GOAL = (3, 3)
TRAP = (2, 2)
WALLS = [(1, 1), (1, 2)]
ACTIONS = [(0, 1), (0, -1), (1, 0), (-1, 0)] # 右、左、下、上
# Q 表:Q[x][y][action_idx]
Q = np.zeros((GRID_SIZE, GRID_SIZE, 4))
# 超参数
alpha = 0.1 # 学习率
gamma = 0.95 # 折扣因子
epsilon = 1.0 # 初始探索率
epsilon_decay = 0.995
epsilon_min = 0.01
def get_reward(state):
if state == GOAL:
return 10
if state == TRAP:
return -10
return -0.04 # 生存惩罚
def is_valid(state):
x, y = state
if not (0 <= x < GRID_SIZE and 0 <= y < GRID_SIZE):
return False
if state in WALLS:
return False
return True
def choose_action(state, epsilon):
"""ε-贪婪策略"""
if random.random() < epsilon:
return random.randint(0, 3) # 探索
else:
return np.argmax(Q[state]) # 利用
# Q-Learning 训练
episodes = 1000
for episode in range(episodes):
state = START
steps = 0
while state != GOAL and state != TRAP and steps < 100:
# 选择动作
action_idx = choose_action(state, epsilon)
action = ACTIONS[action_idx]
# 执行动作
next_state = (state[0] + action[0], state[1] + action[1])
if not is_valid(next_state):
next_state = state # 撞墙,停在原地
reward = get_reward(next_state)
# Q-Learning 更新
best_next_q = np.max(Q[next_state])
Q[state][action_idx] += alpha * (
reward + gamma * best_next_q - Q[state][action_idx]
)
state = next_state
steps += 1
# 探索率衰减
epsilon = max(epsilon_min, epsilon * epsilon_decay)
# 每 100 轮打印进度
if (episode + 1) % 100 == 0:
print(f"Episode {episode + 1}: epsilon = {epsilon:.3f}")
# 测试学到的策略
print("\n学到的最优路径:")
state = START
path = [state]
for _ in range(20):
action_idx = np.argmax(Q[state])
action = ACTIONS[action_idx]
state = (state[0] + action[0], state[1] + action[1])
if not is_valid(state):
break
path.append(state)
if state == GOAL or state == TRAP:
break
for step, pos in enumerate(path):
print(f"Step {step}: {pos}")
print(f"到达目标用了 {len(path) - 1} 步")
# 可视化 Q 表(起点的 Q 值)
print(f"\nQ 表(起点): {Q[START]}")
print("动作价值:右={:.2f}, 左={:.2f}, 下={:.2f}, 上={:.2f}".format(*Q[START]))
Episode 100: epsilon = 0.606
Episode 200: epsilon = 0.367
...
Episode 1000: epsilon = 0.010
学到的最优路径:
Step 0: (0, 0)
Step 1: (0, 1)
Step 2: (0, 2)
Step 3: (0, 3)
Step 4: (1, 3)
Step 5: (2, 3)
Step 6: (3, 3)
到达目标用了 6 步
Q 表(起点): [8.53, -0.04, 7.21, -0.04]
动作价值:右=8.53, 左=-0.04, 下=7.21, 上=-0.04

关键理解点

  1. Q 表:记录每个 (状态, 动作) 对的长期价值
  2. ε-贪婪:开始时大量随机探索(ε=1.0),逐渐转向利用已知最优动作(ε→0.01)
  3. 价值传播:目标的 +10 奖励逐步向起点传播,形成价值梯度场
  4. 最优策略:训练后,智能体学会避开墙壁和陷阱,找到最短路径

Q 代表 Quality(质量),Q(s,a)Q(s, a) 衡量在状态 ss 执行动作 aa 的”质量”(长期价值)。

与价值函数 V(s)V(s) 的关系

V(s)=maxaQ(s,a)V(s) = \max_a Q(s, a)

状态的价值 = 该状态下最好动作的 Q 值。

Q-Learning 是 Off-Policy 算法,意味着:

  • 行为策略(Behavior Policy):用 ε-贪婪探索环境
  • 目标策略(Target Policy):用贪婪策略(maxaQ(s,a)\max_a Q(s',a'))评估

这让 Q-Learning 能从任何策略收集的数据中学习最优策略,甚至可以从人类演示或其他智能体的经验中学习。

Off-Policy vs On-Policy 对比

对比 SARSA(On-Policy)

Q(s,a)Q(s,a)+α[r+γQ(s,a)Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma Q(s',a') - Q(s,a) \right]

SARSA 用实际执行的下一个动作 aa' 更新,而 Q-Learning 用最优动作 maxaQ(s,a)\max_{a'} Q(s',a')

实际影响

  • Q-Learning:更快收敛到最优策略,但在随机环境中可能过于激进
  • SARSA:更保守,适合风险敏感任务(如悬崖行走问题)

学习率 α(Alpha)

Qnew=(1α)Qold+α[新估计]Q_{\text{new}} = (1-\alpha) \cdot Q_{\text{old}} + \alpha \cdot [\text{新估计}]
  • α=0\alpha = 0:不学习任何新东西
  • α=1\alpha = 1:完全抛弃旧知识
  • 最佳实践:0.01 ~ 0.3,或用衰减策略 αt=11+t\alpha_t = \frac{1}{1 + t}

折扣因子 γ(Gamma)

未来奖励权重=γt\text{未来奖励权重} = \gamma^t
γ 值行为特征适用场景
0.0只看当前奖励,短视单步决策问题
0.52 步后奖励贬值 75%短期规划
0.910 步后仍保留 35%中期规划(常用)
0.99100 步后仍保留 37%长期规划(围棋、战略游戏)

实验对比

在 4×4 迷宫中,不同 γ 值的收敛速度:

γ = 0.5: 450 轮收敛,路径长度 7 步(绕远路)
γ = 0.9: 280 轮收敛,路径长度 6 步(最优)
γ = 0.99: 650 轮收敛,路径长度 6 步(过度谨慎)

探索率 ε(Epsilon)

阶段ε 值行为
初期(0-20%)1.0 → 0.5大量随机探索,发现环境
中期(20-70%)0.5 → 0.1开始利用好的动作,偶尔探索
后期(70-100%)0.1 → 0.01主要执行最优策略

优势

  1. 模型无关(Model-Free):不需要知道环境转移概率 P(ss,a)P(s'|s,a)
  2. Off-Policy:可以从任何策略的数据中学习
  3. 简单高效:易于实现,适合小规模问题
  4. 理论保证:在表格形式下,保证收敛到最优 Q 函数

局限

  1. 状态空间爆炸:围棋有 1017010^{170} 个状态,Q 表无法存储
  2. 样本效率低:需要大量重复探索才能学到稳定策略
  3. 无法泛化:见过 (0,0) 的 Q 值不能帮助推断 (0,1)
  4. 过估计问题max\max 操作会放大 Q 值估计误差

Q-Learning 训练阶段

进化路线

Q-Learning (表格)
↓ 解决状态爆炸
DQN (神经网络近似)
↓ 解决过估计
Double DQN
↓ 解决样本效率
Rainbow DQN (集成 7 种改进)

Q-Learning 进化路线

适合的场景

  • ✅ 离散、小规模状态空间(< 10,000 状态)
  • ✅ 离散动作空间
  • ✅ 确定性或近确定性环境
  • ✅ 快速原型验证

不适合的场景

  • ❌ 连续状态空间(机器人关节角度)
  • ❌ 连续动作空间(油门踏板深度)
  • ❌ 高维感知输入(图像、视频)
  • ❌ 需要快速在线学习(实时游戏)

解决方案映射

  • 连续状态 → 函数近似(DQN、DDPG)
  • 连续动作 → Actor-Critic、PPO
  • 高维输入 → 深度神经网络 + 卷积层
  • 实时学习 → 经验回放 + 异步训练

RL 范式对比

DQN (2015)
DeepMind 的 DQN 算法在 49 款 Atari 游戏中达到人类水平,单一算法仅凭像素输入即可掌握多样化任务。核心创新是用深度神经网络近似 Q 函数,替代传统的 Q 表。

AlphaGo (2016)
以 4:1 击败世界冠军李世石。围棋搜索空间达 1017010^{170},传统搜索算法无法穷举。AlphaGo 结合蒙特卡洛树搜索和自我对弈,通过 RL 学习出超越人类千年经验的策略。

关键洞察:监督学习只能让 AI 达到人类棋谱的上限。要超越人类,需要通过自我对弈探索人类未曾尝试过的策略——这正是 RL 的独特优势。

OpenAI Dactyl (2018)
实现灵巧手操作魔方,完全在仿真中训练后迁移到真实机器人。通过域随机化(在仿真中随机改变物理参数)学习鲁棒策略,展现前所未有的灵巧操作能力。

为什么用 RL?
灵巧操作涉及高维连续控制(20+ 自由度)和复杂物理交互,难以用显式规则描述。RL 通过在仿真中数千次试错,自动学习适应环境变化的策略。

YouTube 推荐
用 Contextual Bandit(RL 的简化版)平衡探索新内容与利用已知偏好,优化长期用户参与度而非单次点击率。

为什么用 RL?
推荐系统需优化长期目标(用户生命周期价值),而非短期指标。RL 的延迟奖励机制天然适配此场景,能避免推荐陷入”过滤气泡”。

技术细节:Contextual Bandit

推荐系统是 RL 的特殊情况——单步决策,无需考虑状态转移:

MDP 简化建模

  • 上下文(Context):用户特征、时间、设备
  • 动作(Arm):候选推荐项(视频、商品)
  • 奖励:点击、观看时长、点赞

经典算法:LinUCB

at=argmaxaA(θaTxt+αxtTAa1xt)a_t = \arg\max_{a \in \mathcal{A}} \left( \theta_a^T x_t + \alpha \sqrt{x_t^T A_a^{-1} x_t} \right)
  • 第一项:预测点击率(利用)
  • 第二项:不确定性奖励(探索)

实际挑战

  1. 冷启动:新用户/新内容没有历史数据
  2. 长期价值:短视频吸引点击,但深度内容增加留存
  3. 多样性:避免推荐同质化内容

工业界解决方案

  • 分层 RL:召回 → 粗排 → 精排 → 重排,每层用不同策略
  • 离线评估:用历史日志训练离线策略(Offline RL)
  • A/B 测试:小流量在线实验验证新策略

Waymo 决策规划
用 RL 优化复杂交通场景中的驾驶决策。在仿真中学习数百万次驾驶场景,发现人类难以总结的最优决策规则,支撑商业化无人出租车服务。

技术细节:分层决策架构

高层规划(Route Planning)

  • 使用 A* / Dijkstra 算法规划全局路线
  • 输入:起点、终点、实时路况
  • 输出:途经路口序列

中层决策(Behavior Planning)

  • 使用 RL 决策车道变换、超车、让行
  • 状态:周围车辆位置/速度、交通灯、车道线
  • 动作:保持车道、左/右变道、加速、减速、停车
  • 奖励
    • 到达目标 +1000
    • 碰撞 -10000(致命惩罚)
    • 违反交规 -500
    • 每秒 -0.1(时间成本)
    • 乘客舒适度(急刹/急转 -10)

底层控制(Motion Control)

  • PID 控制器执行具体的转向/油门/刹车
  • 输入:目标轨迹
  • 输出:方向盘角度、踏板深度

安全保障机制

  • 约束 RL:硬性约束(不能撞车、不能闯红灯)
  • 安全护栏(Safety Shield):监控 RL 输出,违反安全规则时覆盖决策
  • 仿真验证:每个策略必须通过 10 亿英里仿真测试

与监督学习的对比

方法监督学习(模仿学习)强化学习
训练数据人类驾驶日志仿真环境试错
泛化能力受限于人类经验可探索新场景
极端情况数据稀缺可人工构造
最优性模仿人类(非最优)优化目标函数
安全性依赖数据覆盖通过约束保证

真实案例

Waymo 在凤凰城的商业化运营中:

  • RL 策略在十字路口让行决策上比人类更保守(安全第一)
  • 在高速合流时更激进(基于精确的距离/速度计算)
  • 平均每千英里接管次数:0.02(人类:8.5)
图示
  1. RL 的独特性:通过试错学习,只需奖励信号,无需标注答案
  2. MDP 五要素:状态、动作、转移、奖励、折扣
  3. 马尔可夫性质:当前状态包含决策所需的全部信息
  4. Bellman 方程:价值函数的递归定义,是所有 RL 算法的基础
  5. RLHF:ChatGPT 的核心技术,用人类偏好对齐 LLM
  6. 探索-利用权衡:既要尝试新动作,又要利用已知好的动作

以下哪些场景更适合用强化学习而非监督学习?为什么?

a) 识别医学影像中的肿瘤
b) 训练机器人学会走路
c) 预测股票明天的价格
d) 让 AI 玩《超级马里奥》并通关
e) 优化数据中心的能耗

点击查看分析

适合 RL:b、d、e

  • b) 机器人走路:典型的序列决策问题,有明确的奖励信号(前进距离、能耗),需要探索不同的步态。
  • d) 玩游戏:有明确的得分和输赢,可以自我对弈无限生成训练数据。
  • e) 能耗优化:多目标优化(性能 vs 能耗),需要长期策略,环境动态变化。

不适合 RL:a、c

  • a) 肿瘤识别:有大量标注数据,监督学习更直接有效。
  • c) 股票预测:时间序列预测问题,监督学习更合适;且股市是非平稳环境,RL 难以稳定学习。

思考题 2:AlphaGo 为什么需要 RL?

Section titled “思考题 2:AlphaGo 为什么需要 RL?”

为什么 AlphaGo 不能只学习人类棋谱,而需要通过自我对弈的强化学习?

点击查看分析

人类棋谱只能让 AI 达到人类水平的上限。围棋是一个信息完全、零和博弈的游戏,存在客观的最优策略,但人类还远未找到。

通过自我对弈,AlphaGo 能够:

  1. 探索人类从未尝试过的落子位置和策略
  2. 通过试错发现更优的中盘定式
  3. 不受人类认知偏见的限制

AlphaGo Zero 甚至完全不用人类棋谱,纯靠自我对弈从零学习,最终超越了学习过人类棋谱的 AlphaGo。这证明了 RL 在探索复杂策略空间时的独特价值。

你要训练一个送餐机器人,从厨房送餐到餐桌。以下哪种奖励函数设计更合理?

方案 A

  • 成功送达 +100
  • 每秒 -0.1(鼓励快速)
  • 撞到障碍物 -50

方案 B

  • 成功送达 +100
  • 每靠近目标 1 米 +1
  • 撞到障碍物 -50
  • 洒出食物 -100
点击查看分析

方案 B 更优,原因:

  1. 密集奖励:“每靠近 1 米 +1” 提供了方向引导,解决了奖励稀疏问题。方案 A 中,机器人可能长时间随机游走都得不到正反馈。

  2. 关键约束:“洒出食物 -100” 是任务的核心约束。方案 A 只优化速度和碰撞,可能学会”快速撞到餐桌把餐盘甩过去”。

  3. 潜在改进:还可以加入”保持直立 +0.01/秒”(稳定性奖励)、“偏离最短路径 -0.5”(效率引导)。

核心原则:奖励函数要同时覆盖主要目标(送达)、关键约束(不洒)和效率引导(快速、安全)。

RLHF 让 ChatGPT 变得更有用,但这项技术有什么潜在问题?

点击查看分析

主要局限

  1. 奖励黑客(Reward Hacking)
    模型可能学会”钻空子”获得高分,而非真正解决问题。例如,过度迎合用户(阿谀奉承)而非诚实回答。

  2. 人类偏好的局限性
    人类标注员也会犯错、有偏见。模型会学到这些偏见,甚至放大它们。

  3. 短期 vs 长期
    人类评分员往往偏好”看起来有用”的回复,而非真正解决长期问题的答案。

  4. 可扩展性
    高质量人工标注成本极高,难以覆盖所有场景和语言。

解决方向

  • Constitutional AI(用明确原则替代隐式偏好)
  • AI 反馈(RLAIF)降低人工标注需求
  • 多样化评分员(减少单一视角偏见)

我们的 4×4 迷宫用 Q 表很有效,但如果换成《超级马里奥》会怎样?

点击查看分析

Q 表的致命问题:状态空间爆炸。

  • 4×4 迷宫:16 个状态 × 4 个动作 = 64 个 Q 值
  • 超级马里奥:屏幕分辨率 256×240,每个像素 256 色,加上马里奥位置、速度、敌人状态……状态数 > 1010010^{100}

解决方案:Deep Q-Network (DQN)

用神经网络 Q(s,a;θ)Q(s, a; \theta) 近似 Q 函数,将状态(像素)映射到 Q 值。神经网络能泛化到相似状态,不需要为每个状态单独存储。

这就是深度强化学习的起点,我们会在后续章节详细讲解。

  1. Reinforcement Learning: An Introduction (2nd Edition)
    作者:Richard S. Sutton & Andrew G. Barto
    免费在线阅读
    RL 领域的”圣经”,从 MDP 基础到深度 RL,系统完整。第 2 版增加了 AlphaGo、深度 Q 网络等现代内容。
  1. Gymnasium
    官方文档
    标准 RL 环境库,包含 CartPole、Atari 游戏、机器人控制等经典环境。学习 RL 算法的必备工具。

  2. Stable-Baselines3
    GitHub 仓库
    生产级 RL 算法实现(DQN、PPO、SAC 等),代码质量高,适合快速实验和学习算法细节。

  3. Hugging Face TRL
    文档
    专门用于 LLM 的 RLHF 训练,提供 SFTTrainer、RewardTrainer、PPOTrainer 等高层 API,是实践 ChatGPT 式训练的最佳起点。

  1. David Silver 的 RL 课程
    课程主页 | YouTube 播放列表
    DeepMind 首席研究员、AlphaGo 核心开发者的经典课程。从 MDP 讲到深度 RL,理论与实践结合,深入浅出。

在第 2 章,我们将深入马尔可夫决策过程(MDP)的求解方法

  • 动态规划:策略评估、策略迭代、值迭代
  • 如何在已知环境模型时求解最优策略
  • GridWorld 上的完整实现和可视化
  • 为理解 Q-Learning、SARSA 等无模型算法打基础

准备好深入数学细节了吗?我们下一章见!


以下是本章引用的核心文献和工具资源,按主题分类:

[1] Reinforcement Learning: An Introduction (2nd Edition)
Richard S. Sutton and Andrew G. Barto
在线阅读 · Free online textbook

强化学习领域的经典教材,系统讲解 MDP、动态规划、蒙特卡洛方法、时序差分学习等核心算法。第2版(2018年更新)增加了深度强化学习内容。本书从基础概念出发,逐步深入到策略梯度、Actor-Critic 等现代方法,是理解 RL 数学基础的权威资源。

[2] Training language models to follow instructions with human feedback
Long Ouyang et al. (OpenAI)
论文链接 · arXiv:2203.02155

OpenAI InstructGPT 论文,首次系统阐述 RLHF(人类反馈强化学习)方法。论文提出三阶段训练流程:监督微调(SFT)建立基线,训练奖励模型(RM)捕捉人类偏好,用 PPO 算法优化策略。实验证明 RLHF 模型在真实性、有用性和无害性上显著优于纯监督学习模型,且只需 1.3B 参数即可超越 175B 的 GPT-3。这是 ChatGPT 训练方法的理论基础。

[3] Constitutional AI: Harmlessness from AI Feedback
Yuntao Bai et al. (Anthropic)
论文链接 · arXiv:2212.08073

Anthropic 提出的 Constitutional AI 方法,用 AI 反馈替代人类标注来训练安全对齐的语言模型。核心思想是用一组明确的原则(宪法)指导模型自我批评和修正。方法分两阶段:SL-CAI(监督学习阶段让模型根据原则自我修正)和 RL-CAI(用 AI 标注的偏好数据训练奖励模型)。相比 RLHF,CAI 降低了人工标注成本,且让价值观约束变得可审计。

[4] De novo design of protein structure and function with RFdiffusion
Joseph L. Watson et al.
Nature 论文 · Nature 2023

RFdiffusion 将扩散模型应用于蛋白质结构生成,通过在 RoseTTAFold 结构预测网络上微调去噪任务,实现了全新蛋白质骨架的生成式设计。论文展示了多种设计任务:无条件单体生成、拓扑约束设计、对称低聚物、酶活性位点脚手架等。设计的蛋白质在湿实验中成功验证,展示了 RL 思想(迭代优化)在生物计算中的突破性应用。

[5] Molecular de-novo design through deep reinforcement learning
Marcus Olivecrona et al.
论文链接 · Journal of Cheminformatics 2017

REINVENT 算法将强化学习应用于药物分子生成。方法先在 ChEMBL 数据集上预训练 SMILES-RNN,再通过增强型回合似然函数微调,防止模式崩溃。核心创新是将先验对数似然与奖励函数结合,使智能体在探索新分子的同时保持在类药物分布内。实验中,模型在 DRD2 受体活性优化任务中将成功率从 3% 提升至 97%。

[6] Gymnasium: A Standard API for Reinforcement Learning
Farama Foundation
官方文档 · MIT License

Gymnasium 是 OpenAI Gym 的官方升级版,提供标准化的 RL 环境接口。包含经典控制(CartPole、MountainCar)、Atari 游戏、机器人控制(MuJoCo)等多种环境。文档详细讲解了环境 API(reset、step、render)、观察空间和动作空间的定义、以及如何自定义环境。是 RL 实战的必备工具库。

[7] Stable-Baselines3: Reliable RL Implementations
DLR-RM
文档 · MIT License

生产级强化学习算法库,基于 PyTorch 实现了 DQN、PPO、A2C、SAC、TD3 等主流算法。代码质量高、文档完善、易于使用,适合快速原型开发和实验。提供统一的训练接口、自动日志记录(TensorBoard)、模型保存/加载等实用功能。是学习 RL 算法实现细节的优秀参考。

[8] TRL (Transformer Reinforcement Learning)
Hugging Face
文档 · Apache 2.0

Hugging Face 开发的专门用于语言模型 RLHF 训练的工具库。提供 SFTTrainer(监督微调)、RewardTrainer(奖励模型训练)、PPOTrainer(PPO 优化)等高层 API,简化了 RLHF 流程。支持 LoRA、8-bit 量化等显存优化技术,能在消费级 GPU 上微调大模型。是实践 ChatGPT 式 RLHF 的最佳起点。

[9] UCL Course on RL by David Silver
David Silver (DeepMind)
课程主页 · Educational resource

DeepMind 首席研究员 David Silver 在 UCL 的强化学习课程,YouTube 上有完整视频。课程从 MDP 基础讲到深度 RL,覆盖价值函数近似、策略梯度、Actor-Critic、AlphaGo 等前沿主题。Silver 是 AlphaGo 的核心开发者,课程深入浅出,理论与实践结合,是入门 RL 的最佳视频教程之一。