跳转到内容

强化学习第1章:问题设定、价值函数与 Q-Learning

本章只建立强化学习的最小框架:什么问题属于序列决策,状态、动作和奖励怎样构成 MDP,价值函数为什么能把长期目标写成递归关系,以及 Q-Learning 如何从交互数据中更新动作价值。算法谱系和现代后训练方法分别放到第 2、3 章。

强化学习处理的不是“输入对应什么标签”,而是“连续决策会怎样改变后续状态和长期收益”。智能体根据当前状态选择动作,环境返回新的状态和奖励;训练目标不是逐样本拟合标准答案,而是找到能够提高期望累积回报的策略。

这一区别也限定了它的适用范围。分类、回归,或者已有高质量标签的问题,监督学习通常更直接。只有当动作会改变后续可见信息、奖励延迟出现,或者目标更适合用偏好与效用来表达时,强化学习的建模方式才真正有价值。

本章从 MDP、价值函数和 Q-Learning 建立基本框架,再用 LLM 对齐与分子设计说明“状态—动作—奖励”怎样落到实际问题。

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

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

为什么开放式生成不能只靠固定参考答案?

Section titled “为什么开放式生成不能只靠固定参考答案?”

开放式生成往往不存在唯一的“标准答案”。同一个问题可以有多种合理回答,而帮助性、风格、安全性等目标也很难完全写成逐 token 的监督标签。因此,单纯扩大参考答案集合并不能覆盖所有期望行为。

一种做法是把人类比较或其他偏好信号转成可优化的目标。RLHF 是其中一条路线:先从偏好数据中得到奖励信号,再优化模型策略。实践中也常见 SFT、DPO 等其他方法;因此更准确的理解是,强化学习属于“如何利用反馈调整行为”的工具之一,而不是现代语言模型训练的唯一后训练方式。

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

图示

决策者,例如:

  • 迷宫中的机器人
  • 下棋的 AI 程序
  • 需要优化的语言模型策略

智能体之外的一切:

  • 迷宫的墙壁、通道和宝藏位置
  • 棋盘和对手
  • 提示、采样过程,以及用于计算反馈的奖励模型或规则

当前局面的完整描述:

  • 机器人在迷宫的坐标 (x,y)(x, y)
  • 棋盘上所有棋子的位置
  • 提示与当前已经生成的 token 前缀

智能体能做的选择:

  • 向上/下/左/右移动
  • 落子到某个位置
  • 选择下一个 token;有些方法也把整段响应视为一次动作

环境给的反馈分数:

  • 撞墙 −1-1 分,找到宝藏 +10+10 分
  • 吃掉对方棋子 +5+5 分,被将军 −10-10 分
  • 奖励模型或可验证规则对整段响应给出反馈分数
MDP=(S,A,P,R,γ)\text{MDP} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)
  • S\mathcal{S}:状态空间(所有可能的状态集合)
  • A\mathcal{A}:动作空间(所有可能的动作集合)
  • P(s′∣s,a)\mathcal{P}(s'|s,a):转移概率(执行动作 aa 后,从状态 ss 到 s′s' 的概率)
  • R(s,a,s′)\mathcal{R}(s,a,s'):奖励函数
  • γ∈[0,1]\gamma \in [0,1]:折扣因子(未来奖励的”贬值率”)

关键洞察:马尔可夫性质

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

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

π(a∣s)=P(在状态 s 选择动作 a)\pi(a|s) = P(\text{在状态 } s \text{ 选择动作 } a)
  • 确定性策略:π(s)=a\pi(s) = a(每次都选同一个动作)
  • 随机性策略:π(a∣s)\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+1∣S0=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+1∣S0=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π(a∣s)∑s′P(s′∣s,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]

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

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

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

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

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

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

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

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

最简单的平衡方法:

at={random actionwith probability ϵarg⁡max⁡aQ(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=arg⁡max⁡a[Q(s,a)+cln⁡tN(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):已知价值(利用)
  • ln⁡tN(s,a)\sqrt{\frac{\ln t}{N(s, a)}}:不确定性奖励(探索不常选的动作)

Softmax(玻尔兹曼探索)

P(a∣s)=eQ(s,a)/τ∑a′eQ(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 就像定期小测,让你在学期中就知道哪些章节掌握不好,而不是等到期末才知道。

预训练和监督微调解决的是“从数据中学习分布”和“从示范中学习期望行为”。强化学习只在后训练的一部分场景中出现:模型先产生候选输出,再根据奖励模型、规则验证器或其他可优化反馈更新策略。

历史上,InstructGPT 使用了“监督微调 → 人类偏好排序 → 奖励模型 → PPO”的 RLHF 流程。这条路线说明偏好可以转成策略优化目标,但它不是现代 LLM 后训练的唯一结构。直接偏好优化(如 DPO)不需要显式 PPO 环;有些任务只做 SFT 也足够。更完整的比较放在第 3 章。

若把自回归语言模型写成策略,状态更准确地说是“提示词与已经生成的前缀”,动作通常对应下一个 token(工程实现也常按整段序列计算优势和损失),奖励则可能在完整回复或中间步骤上给出。关键不是名称,而是训练过程中是否真的存在基于反馈的策略优化。

生物设计问题并不会因为搜索空间大、多目标或需要迭代生成就自动变成强化学习。判断标准仍然是:是否存在序列决策过程,策略是否通过与环境或评分器交互产生数据,以及后续更新是否在优化期望累积回报或等价的策略目标。

一个明确的 RL 例子是分子生成。Olivecrona 等人在 2017 年用强化学习调整序列生成模型,使生成分子朝指定性质移动,包括针对 DRD2 活性的优化(J. Cheminformatics 2017)。这类任务可以把逐步生成分子表示为动作序列,并把活性、可合成性或其他评分组合成反馈。

相反,RFdiffusion 不是强化学习。它是对蛋白骨架进行去噪生成的扩散模型,通过条件信息约束生成轨迹;逐步去噪和条件引导本身不等于奖励驱动的策略优化。RFdiffusion 的机制应放在扩散模型系列中理解。

因此,在生物问题中考虑 RL 时,先问四件事:动作是否会改变后续状态;奖励是否能稳定计算;是否真的需要多步信用分配;与监督学习、贝叶斯优化、主动学习或生成模型相比,RL 是否提供了额外价值。缺少其中几项时,先用更简单的方法通常更合理。

下面用一个离散迷宫展示 Q-Learning 的最小训练循环。算法细节和 SARSA、DQN、PPO 的关系放在第 2 章。

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

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

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(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:立即奖励
  • max⁡a′Q(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. 最优策略:训练后,智能体学会避开墙壁和陷阱,找到最短路径
  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] 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 的最佳视频教程之一。

本页导航

目录