Skip to content

什么是强化学习

本页速览 强化学习是在试错中学习"该怎么做"的范式:没有标签只有事后奖励。本文给出精确定义、智能体-环境交互框架、奖励假设、与监督/无监督的对照,以及一个最小 RL 例子的完整拆解。

什么是强化学习 ​

一句话定位:这一页讲清楚"强化学习"这四个字到底指什么——它解决什么问题、用什么样的交互框架、和熟悉的监督/无监督学习差在哪、以及一个最小例子长什么样。读完后你能对任何人说清楚:RL 是"智能体在环境中试错,用事后奖励学习该怎么做"的机器学习范式。

一、一句话定义与智能体—环境循环 ​

强化学习(Reinforcement Learning, RL) 研究的是:一个智能体(agent)如何通过与环境(environment)的反复交互,学会一种策略(policy),使得从长期看累积的**奖励(reward)**最大化。

关键在于三个"没有":

  • 没有标签:没有人告诉你"此刻正确的动作是 a*";
  • 没有即时反馈:动作的后果(好坏)可能要很久之后才显现;
  • 没有独立同分布数据:你下一步看到什么状态,取决于你上一步做了什么——数据是被你的行为生成和污染过的。

这正是 RL 与监督学习最本质的区别:监督学习学的是"这是什么",RL 学的是"该怎么做"。

交互框架用一张图就能说清:

text
                ┌────────────────────────────┐
                │          环境 Env          │
                │  (规则、模拟器、对手、用户)  │
                └────────────────────────────┘
                     ▲               │
        状态 s_t     │               │  动作 a_t
       (+奖励 r_t) │               ▼
                ┌────────────────────────────┐
                │        智能体 Agent         │
                │  (策略 π、价值函数、记忆)    │
                └────────────────────────────┘

每一时刻 t 发生的事情,在数学上是一次**马尔可夫决策过程(Markov Decision Process, MDP)**的采样,完整的定义见马尔可夫决策过程。这里先给出口语版:

text
循环:
1. 环境处于状态 s_t,把 s_t(以及奖励 r_t)交给智能体
2. 智能体依据策略 π(a|s) 选择动作 a_t
3. 环境根据转移函数 P(s_{t+1} | s_t, a_t) 给出新状态 s_{t+1}
4. 环境根据奖励函数 R(s_t, a_t) 给出即时奖励 r_{t+1}
5. 回到 1,直到终止状态(或预算耗尽)

第一次读到这里就够用了

上面这个循环是整座大楼的骨架。后续所有算法——Q-learning、DQN、PPO、SAC、RLHF——全部是"如何在这个循环里更新智能体内部的参数"的不同答案。把这张图刻进脑子里,再读强化学习系统解剖时你会看到它如何被放大成六层工程系统。

二、奖励假设与四要素 ​

1. 奖励假设(Reward Hypothesis) ​

RL 建立在一条被称为"奖励假设"的公理上,由 Sutton & Barto 明确提出:

任何目标都可以被表述为标量奖励信号(累积奖励)期望值的最大化。

"健康长寿"可以翻译成"每多活一天 +1";"赢得围棋"可以翻译成"赢 +1、输 −1";"推荐用户喜欢的内容"可以翻译成"点击 +0.1、购买 +0.5"。翻译得好不好,直接决定 RL 项目成败——这就是奖励工程整页存在的理由。

奖励假设是"假设"

把目标翻译成奖励几乎总是有损失的:翻译得不准,智能体就会"刷奖励"而不做你想要的事(Reward Hacking)。经典例子:清扫机器人发现"把地毯弄脏再擦干净"能获得更多清扫奖励。这不是 bug,是奖励设计问题。详见奖励工程的案例集。

2. 四个要素:状态、动作、策略、回报 ​

要素英文定义一个直觉例子(CartPole 倒立摆)
状态State s环境在某个时刻可被智能体观测到的全部信息小车位置、速度、杆的角度、角速度
动作Action a智能体可施加的一个选择向左推、向右推
策略Policy π(a|s)从状态到动作(概率分布)的映射杆向左倒得多 → 向左推
回报Return G_t从时刻 t 起累积(折扣)奖励之和未来每一时刻"不倒"的奖励的总和

回报的定义(带折扣因子 γ):

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

折扣因子 γ ∈ [0, 1) 有三个作用:

  1. 数学上让无穷和收敛;
  2. 表达"眼前的钱比未来的钱值钱"——决策者天然偏好早到的奖励;
  3. 控制智能体的"远见":γ 越接近 1 越有长远眼光,γ 越小越短视。

为什么 γ 不等于 1 才合理

如果 γ=1 且任务无限长,回报会发散;即使不发散,"今天的一块钱和十年后的一块钱等价"也违背直觉。绝大多数工程场景 γ 取 0.9~0.99。γ 是调参实践里第一个要动的超参。

三、与监督/无监督学习的三维对照 ​

RL 常被称为机器学习的"第三范式"。用一张表从三个维度对照:

维度监督学习无监督学习强化学习
数据形式输入-标签对 (x, y)只有输入 x状态-动作-奖励轨迹 (s, a, r) 序列
反馈信号每个样本的即时显式标签无标签,靠数据内在结构事后、稀疏、延迟的标量奖励
学习目标拟合输入→输出的映射发现分布/结构(聚类、压缩)通过交互最大化长期累积回报
谁来产生数据外部给定(固定数据集)外部给定智能体自己的行为产生后续数据
错误能否立即纠正能,loss 直接给梯度无明确对错不能——要"背锅"到很久以前的动作
典型任务分类、回归、检测聚类、降维、生成游戏、控制、对话、排序、对齐
成败度量测试集准确率聚类质量/重构误差轨迹回报、任务成功率、样本效率

关键差异浓缩成一句话:监督学习的数据是静止的,RL 的数据是动态的——你正在改变你将要学习的那个分布。这个"分布漂移"(non-stationarity)是所有 RL 算法困难的根源,也解释了为什么 RL 需要探索、需要离线数据安全网。

换一个角度理解

可以把监督学习看成"老师批改作业",把 RL 看成"只有期末总评、平时从不批改"的课程——而且你每次交的作业还会影响下一次上课的内容。想进一步辨析边界(比如 RL vs 最优控制、RL vs 行为克隆),直接去RL vs 相邻领域。

四、为什么"决策序列"难:信用分配与延迟奖励 ​

单个决策很容易:评估每种选择立即带来的奖励,选最大的。但 RL 面对的是序列决策——你今天的一个动作,回报可能出现在一千步之后。这带来两个根本性难题:

1. 信用分配问题(Credit Assignment) ​

当最终收到奖励时,到底该"奖励"过去哪一步的动作?

text
局面一:下了 10 步棋,第 3 步埋下伏笔,第 10 步赢了棋。
问题:+1 的奖励该记在谁的头上?第 3 步?还是第 10 步?

如果奖励只记给最后一步,智能体永远学不会"布局";如果平均记给每一步,又把第 3 步的价值稀释了。TD 学习、资格迹、GAE、价值网络——一半的 RL 算法都是在回答这个问题。

2. 延迟奖励与稀疏奖励 ​

很多真实任务奖励极稀疏:机器人可能走了一万步才碰到一次奖励(抓到物体、到达终点)。此时随机探索几乎不可能"碰巧"拿到奖励,学习原地踏步。对策包括奖励塑形、课程学习、内在奖励(curiosity)等,详见探索与利用与奖励工程。

初学者的常见误区

以为"设计一个密集奖励就能解决问题"。密集奖励确实缓解稀疏性,但随之而来的是 Reward Hacking 与"局部最优动作"风险(比如机器人学会原地转圈刷奖励)。奖励密度不是越高越好——它是密度与"写不歪"之间的权衡。

3. 为什么表格解决不了真实世界 ​

信用分配 + 稀疏奖励 + 高维状态,三座大山压垮了"查表"式方法:现实状态空间连续且巨大(图像、传感器、文本),不可能逐状态存储价值。解法是函数近似——用神经网络把"状态 → 价值/动作分布"学出来,这就是价值学习与策略梯度方法两条主线分别在做的事。

五、最小 RL 例子:Q-learning 学网格世界 ​

理论说太多容易飘,来看一个可以完整拆解的最小例子:3×3 网格世界。

text
┌────┬────┬────┐
│ S  │ ·  │ ·  │    S = 起点
├────┼────┼────┤    G = 终点(奖励 +10,结束)
│ ·  │ ✗  │ ·  │    ✗ = 陷阱(奖励 -5,结束)
├────┼────┼────┤    其他格子:每步 -0.1(鼓励快点到达)
│ ·  │ ·  │ G  │    动作:上下左右
└────┴────┴────┘

智能体不知道地图,只能靠"走一步、看奖励"来学。用 Q-learning 求解——Q 表存"在每个格子做每个动作的长期价值":

python
import random

# 状态:0~8 九个格子;动作:0=上 1=下 2=左 3=右
gamma = 0.9        # 折扣因子:越接近 1 越有远见
alpha = 0.1        # 学习率:新信息替代旧估计的速度
epsilon = 0.2      # 探索率:ε 概率随机动作,否则取当前最优

Q = {}             # Q 表:{(state, action): 价值}

def act(state):
    if random.random() < epsilon:        # 探索:随机走
        return random.randint(0, 3)
    vals = [Q.get((state, a), 0.0) for a in range(4)]  # 利用:取最大
    return vals.index(max(vals))

def step(state, action):
    # 模拟环境的转移(真实项目里这里是 env.step)
    next_state, reward, done = simulate(state, action)
    return next_state, reward, done

for episode in range(5000):
    state = 0                            # 每次从起点开始
    done = False
    while not done:
        a = act(state)
        next_state, r, done = step(state, a)
        old = Q.get((state, a), 0.0)
        # 核心更新:Q-learning 的贝尔曼更新
        # 新价值 = 即时奖励 + γ·(下一步的最好价值)
        best_next = max(Q.get((next_state, a2), 0.0) for a2 in range(4))
        Q[(state, a)] = old + alpha * (r + gamma * best_next - old)
        state = next_state

拆开这十几行代码,你会发现它已经包含了 RL 的全部核心部件:

代码行对应的 RL 概念
gamma = 0.9折扣因子:远期奖励的衰减
epsilon = 0.2探索—利用权衡(ε-greedy),详见多臂老虎机与探索与利用
Q.get((state, a))动作价值函数 Q(s,a):评估"在这里做这件事有多好"
act() 取最大 Q从价值导出策略:贪心
r + gamma * best_next - oldTD 误差(时序差分误差):预测与"现实+期望"之差
Q = Q + alpha * (TD误差)价值学习的基本更新:往 TD 误差方向修正估计

运行 5000 个 episode 后,从起点出发的路径会稳定收敛到:S → 右 → 右 → 下 → 下 → G,避开陷阱。

这个例子的三个"可迁移结论"

  1. 策略不是直接学的:这里只学了 Q 表,策略是"每个状态取 Q 最大的动作"——这是价值学习的范式。
  2. 更新只用了"一步现实 + 一步估计":这就是 TD 的核心思想,比等整局结束再更新(MC)方差小得多。
  3. 表换成了网络,就是 DQN:把 Q[(s,a)] 换成神经网络 Q(s,a;θ),加上经验回放和目标网络,就是价值学习页里 DQN 的全部起点。

真正能跑的完整版本(CartPole 三个版本)在Gymnasium 渐进式教程,建议 2 小时内把它跑通——那比读本文三遍都值。

六、RL 适合解决什么问题的边界表 ​

RL 不是万能锤。工程上判断"要不要上 RL",先看这张边界表:

情形RL 是否合适原因与替代方案
需要做序列决策,且动作会影响未来状态✅ 很合适RL 的本命场景:游戏、控制、对话、排序
任务可以分解成"单次选择、立即反馈"⚠️ 大材小用用上下文多臂老虎机(contextual bandit)即可,见多臂老虎机
有大量监督标签,只是没人教策略⚠️ 优先模仿学习行为克隆/模仿学习,见RL vs 相邻领域
环境模型精确已知且规模可控⚠️ 优先传统方法动态规划、最优控制(LQR/MPC),见基于模型的 RL
每次交互代价极高(手术、真实货币)⚠️ 谨慎考虑离线强化学习或仿真先行
需要一步不错的准确性(如交通信号逻辑)❌ 不太合适规则/启发式更可解释可验证
目标难以写成标量奖励❌ 很难先做奖励工程,否则模型必然"刷奖励"
智能体行为可能造成危险后果⚠️ 必须有护栏加安全约束与人工回退,见RL 系统解剖

最贵的误用

把"环境成本极高、无法模拟、无法承担试错"的问题硬套 RL,同时奖励又写不准——三个雷一起踩。此时唯一合理的路径是:先离线数据 + 行为克隆打底,再逐步过渡,见离线强化学习的决策树。

七、通往其余站点的导览 ​

读到这里,你对 RL 有了地基级理解。接下来往哪走取决于目标:

最后一句送给你:RL 是"学得快、忘得也快"的学科,概念不看第二遍就会漏——好在本站每个概念页都自带"直觉 + 公式 + 例子 + 坑"四件套,回来复习的成本很低。

延伸阅读 ​

  • RL vs 相邻领域 —— 把本文"RL 和别的范式差在哪"的对照展开成七种范式的完整辨析。
  • 马尔可夫决策过程 —— 智能体—环境循环的严格数学化:五元组、回报、贝尔曼方程。
  • 多臂老虎机 —— 去掉时序维度的 RL:探索与利用的最小实验室。
  • 价值学习 —— 本文 Q-learning 例子的完整升级路线:DP → MC/TD → DQN 家族。
  • 策略梯度方法 —— 与价值学习并行的第二条主线:直接学"该怎么做"。
  • AlphaGo 与蒙特卡洛树搜索 —— 用真实历史案例理解"RL + 搜索"的上限。

参考资料 ​