§ 4.3 · Section

强化学习

Reinforcement Learning

监督学习需要"标准答案",无监督学习需要"数据结构"。强化学习走的是第三条路——不给答案,也不给现成数据,只给你一个"环境"和"奖励规则",让你自己摸索怎么赢。这是下棋 AI、自动驾驶、机器人走路用的方法。

先把术语翻译成人话

强化学习一堆希腊字母和缩写,听着玄,说白了都是"试错、挨骂、改进"这一套。先把术语一次性翻成人话。

术语换成大白话生活里对应什么
强化学习(Reinforcement Learning,RL)没人给标准答案,只给你打分,你自己摸索怎么拿高分学骑车——没人能"讲会"你,摔几次就会了
智能体 Agent做决定的那个家伙餐厅里的新厨师
环境 Environment它待的那个世界,会对它的动作有反应厨房加上挑嘴的客人
状态 State此刻的局面长什么样案板上现在摆着什么、锅里到哪一步了
动作 Action这一步能做的选择加盐、翻面、关火、加调料
奖励 Reward做完这一步立刻得到的分数客人吃一口的反应:加菜还是退单
策略 Policy π"什么局面下该干什么"的那套习惯厨师脑子里的做菜章法
折扣因子 γ未来的好处要打几折算今天少放一勺油,一年后身体好一点——你有多在乎
价值函数 V / QV 是"这个局面有多好",Q 是"这一步棋有多好"老师傅一眼看锅:"这道菜有救 / 没救了"
探索 vs 利用试新的,还是吃老本换一家餐厅试试,还是继续吃常去那家
信用分配 Credit Assignment一顿饭做砸了,到底是哪一步的错菜咸了,是腌的时候咸的,还是最后又放了盐
奖励攻击 Reward Hacking为了拿分钻规则漏洞,不干正事考核只数"洗了多少个碗",于是把干净碗再洗一遍
生活场景
🐶 训练一只小狗学"坐下"

你说"坐下"——小狗不知道啥意思,乱动。
它偶然屁股着地——你立刻给一块零食。
反复几次,小狗慢慢明白:坐下 = 有零食吃。下次你一喊"坐下",它立刻坐。
小狗并没有"学过坐下的标准动作"——它是通过"奖励 / 没奖励"的信号,自己总结出了"什么动作能得奖励"
这就是强化学习的核心逻辑。

强化学习的五个角色

五个角色摆在一起像论文,其实换个场景就全通了:想象一下一个刚进餐厅厨房的学徒。他是智能体厨房和客人合起来是环境案板上摆到哪一步是状态;下一勺放什么调料动作;客人吃完的反应就是奖励。没人给他菜谱标准答案,他只能从"这道退了、那道加菜了"里反推自己该怎么改。

概念中文例子(训练小狗)
Agent智能体小狗
Environment环境你家客厅 + 你
State状态小狗当前站着 / 趴着 / 歪头
Action动作坐下、趴下、摇尾巴、汪汪叫
Reward奖励给零食 +1 / 没零食 0

这五个词是强化学习的全部词汇表,但真正决定学习难度的是第六个隐藏概念——策略(Policy)。策略就是"在什么状态下该做什么动作"的规则,记作 π(a|s),它是智能体唯一的可学习部分。强化学习的全部目标可以精确地写成一句话:找到一个策略 π,让它带来的累积奖励期望最大。注意是"累积"而不是"当前",也不是"平均"——这个区别是强化学习一切复杂性的来源。

为什么必须强调"累积"?因为在真实决策问题里,眼下最爽的动作常常是长期最差的。下棋时吃掉对方一个卒是即时正奖励,但如果这一步让你的后失去保护,二十步后你就输了。所以强化学习引入了折扣因子 γ(gamma)来定义"累积回报":

γ 这个字母吓人,意思其实就是"未来的好处打几折"。γ=0.9 相当于只在乎眼前十来步;γ=0.99 相当于能忍到一百步之后再收账。好比你在银行算利息:明年的一百块折到今天不值一百块,越远的钱越不值钱——γ 干的活儿就是这个贴现。

累积回报 G_t = R_(t+1) + γ·R_(t+2) + γ²·R_(t+3) + γ³·R_(t+4) + ...

γ ∈ [0, 1]  折扣因子,衡量"未来有多值钱"

γ = 0     完全短视 —— 只看下一步的奖励,等于贪心算法
γ = 0.9   常用值   —— 大约"看未来十步"
γ = 0.99  很有耐心 —— 大约"看未来一百步"
γ = 1     完全长远 —— 只在任务有明确终点时才能这么用,
                     否则无限累加会发散

γ 的两个作用:
  ① 数学上保证无穷级数收敛,让"累积回报"有定义
  ② 语义上表达"越远的奖励越不确定,该打折"——和金融里的贴现率同源

把这些拼起来,你会发现强化学习和监督学习的区别有三层,而不是常说的一层。第一层是反馈形式:监督学习告诉你"正确答案是 3",强化学习只告诉你"你刚才答的那个得 0.2 分",它不告诉你正确答案是什么。第二层是时间耦合:监督学习每个样本独立,强化学习的当前动作会改变你之后遇到的状态,也就是数据分布由你自己的行为决定第三层是功过分摊:一局棋下了 200 步最后输了,到底哪一步错了?这叫信用分配问题(Credit Assignment),是强化学习最核心的技术难题。

核心循环

1. 智能体观察环境

小狗看到你说"坐下"。当前状态 = "站着,主人发指令了"。

2. 选一个动作

小狗根据它"当前的策略"选个动作——早期是乱选,慢慢有偏好。

3. 环境给反馈

你给零食(正奖励)或没反应(零奖励)。

4. 智能体更新策略

小狗记下"刚才这个动作得了奖励"——下次类似状态再选这个动作的概率提高。

5. 重复一万次

策略越来越好,小狗变成"听话的小狗"。

和监督学习的关键区别

监督学习强化学习
反馈类型标准答案(立即、精确)奖励信号(可能延迟、模糊)
目标预测正确累计奖励最大
数据人工标注自己探索产生
影响一次预测,互不影响当前动作影响后续状态
典型应用识别、分类、预测下棋、机器人、自动驾驶

马尔可夫决策过程:强化学习的数学地基

名字先拆开:MDP(Markov Decision Process,马尔可夫决策过程——一套"下一步只看当下局面"的决策模型)。它的核心假设换成大白话就是:看现在这一锅就够了,不用问这锅是怎么炒到这一步的。打个比方,一个厨师接手同事的半成品,只要案板和锅里的状态一样,接下来该怎么做就一样——不用管前面那位是先切肉还是先切菜。

上面那些描述性的东西,在数学上被统一装进一个叫马尔可夫决策过程(Markov Decision Process,MDP)的框架里。它由一个五元组定义,几乎所有强化学习论文的第二节都在写这个:

MDP = ⟨ S, A, P, R, γ ⟩

S : 状态空间       所有可能状态的集合
A : 动作空间       所有可能动作的集合
P : 转移概率       P(s' | s, a) —— 在状态 s 做动作 a,跳到 s' 的概率
R : 奖励函数       R(s, a) —— 在状态 s 做动作 a 得到的即时奖励
γ : 折扣因子       未来奖励的贴现率

马尔可夫性质(Markov Property):
   P(s_(t+1) | s_t, a_t) = P(s_(t+1) | s_1,a_1,...,s_t,a_t)
   翻译成人话:下一步会怎样,只取决于"现在的状态"和"现在的动作",
             跟你是怎么走到现在这一步的完全无关。
   ← 这叫"状态包含了历史的全部有用信息"

马尔可夫性质这个假设听起来抽象,实际影响非常具体:它把"设计状态"变成了强化学习工程里最关键的一步。围棋满足马尔可夫性质——当前棋盘(加上劫的信息)就完全决定了后续可能性,你不需要知道这盘棋是怎么下到这一步的。但打乒乓球的一张静态截图不满足——你看不出球是在往左飞还是往右飞。这就是 DQN 玩 Atari 时要把连续 4 帧画面叠在一起当一个状态的原因:单帧不含速度信息,叠 4 帧才让状态重新具备马尔可夫性。

现实里更常见的是部分可观测的情况——扑克玩家看不到对手的手牌,机器人的摄像头有死角,这类问题叫 POMDP(部分可观测 MDP),难度陡增,通常要靠 RNN/LSTM 或者显式的记忆模块来把历史信息压进一个"信念状态"里。

在 MDP 框架下,"学习"具体在学什么?有两条主线:价值函数策略

两个字母也一句话讲完:V 是"这个局面值不值",Q 是"这一步值不值"就像老师傅路过案板扫一眼——"这道菜还有救"是 V;"你这会儿该关火而不是再加酱油"是 Q。而底下那条贝尔曼方程说白了只讲了一件事:这一步的价值 = 这一步立刻拿到的好处 + 走完这一步之后局面的价值(打个折)。整个强化学习就架在这一句上。

状态价值函数 V(s)
   = 从状态 s 出发,按策略 π 走下去,期望能拿到的累积回报
   ← 回答"这个局面好不好"

动作价值函数 Q(s, a)          ← Q 就是 Quality
   = 在状态 s 做了动作 a,之后按策略 π 走下去,期望累积回报
   ← 回答"在这个局面下这一步棋好不好"

关系:V(s) = Σ_a π(a|s) · Q(s,a)     (按策略对动作加权平均)

贝尔曼方程(Bellman Equation)—— 整个强化学习最重要的一行公式:
   Q(s, a) = R(s, a) + γ · Σ_s' P(s'|s,a) · max_a' Q(s', a')
                       └───────── 下一状态的最优价值 ─────────┘

它说的事情非常朴素:
   一步棋的价值 = 这一步的即时收益 + 走完这一步后局面的(折扣后)价值
这个递归结构,是 Q-Learning、DQN、AlphaGo 全部算法的数学起点。

顺带说一句人物:这套理论的骨架是 Richard Bellman 在 1950 年代为动态规划打下的("维度灾难"这个词也是他造的),而把它变成机器学习方法的关键人物是 Richard SuttonAndrew Barto。他们 1998 年的教科书《Reinforcement Learning: An Introduction》至今是这个领域的圣经,两人也因此获得了 2024 年度的图灵奖(2025 年公布)。Sutton 在 1988 年提出的 时序差分学习(TD Learning)是全部现代 RL 算法的直接祖先——它的洞察是:不必等一局结束才更新,每走一步就可以用"下一步的估值"来修正"这一步的估值",这叫自举(bootstrapping)。

探索 vs 利用 · 一对永恒矛盾

强化学习里有一对经典矛盾——探索(Exploration)和利用(Exploitation)

探索

试试新动作

小狗偶尔试试"歪头"——也许主人更喜欢?也许更差?不试不知道。

利用

用已验证的动作

小狗坐下拿过零食——那就一直坐下,稳妥拿零食。

只探索,永远在乱试,学不会;只利用,可能陷入局部最优,错过更好的策略。好的强化学习算法要在两者之间平衡——常见做法:早期多探索,后期多利用。

Analogy · 你点外卖的策略

你到新城市——是每天试一家新店(探索),还是只吃你已经觉得好吃的那家(利用)?
只试新店:可能踩雷无数次。
只吃老店:可能错过更惊艳的味道。
最好的策略:先多试,找到几家不错的,再轮换着吃。

Analogy · 学骑自行车:摔几次就会了

想象一下你小时候学骑车。没人能靠讲道理把你教会——爸妈说的"保持平衡、眼睛看前面"你全听懂了,可上了车照样歪。你真正学会的那一刻,是靠身体记住了"往左倒的时候把龙头往左带一点"这种没法写成文字的东西。

把这个过程和强化学习的词一一对上:
状态=此刻车身歪多少、速度多快;动作=龙头往哪拧、脚要不要蹬;奖励=没摔就是正分,摔了就是一记大负分;策略=你身体最终形成的那套下意识反应。
探索与利用也在这儿:一直用"脚蹭着地慢慢滑"这个已知安全的招(利用),你永远学不会真骑;敢松脚试一下(探索),才有可能学会——但也可能摔。
信用分配最能说明这件事的难:你摔了,到底是三秒前蹬得太猛,还是一秒前龙头拧过了?摔倒这个信号是最后才来的,可犯错的那一步早就过去了——强化学习整套复杂机器,一大半是为了解决这个"哪一步该背锅"的问题。

换成大白话:监督学习是有人在旁边逐帧告诉你"这一秒该拧 3 度";强化学习只有一句"你又摔了",剩下全靠你自己琢磨。这就是它为什么慢得多,也是它为什么最后能学出人教不出来的东西。

探索的三种具体算法:ε-greedy、UCB 与汤普森采样

"早期多探索、后期多利用"这句话要落成代码,就得有具体的算法。这个问题在学术上有个经典的最小模型叫多臂老虎机(Multi-Armed Bandit):你面前有 K 台老虎机,每台的中奖概率不同且未知,你有 1000 次拉杆机会,怎么分配才能总收益最大?这个模型剥掉了状态转移,只剩下探索与利用的纯粹矛盾,因此成了研究这个问题的标准实验台。

ε-greedy 是最简单也最常用的方案:以 ε 的概率随机选一个动作(探索),以 1−ε 的概率选当前估值最高的动作(利用)。

# ε-greedy 与它的衰减版
import random

def epsilon_greedy(Q, state, epsilon):
    if random.random() < epsilon:
        return random_action()              # 探索:完全随机
    else:
        return argmax(Q[state])             # 利用:选当前最优

# 实践中一定要让 ε 随训练衰减(否则训练后期还在瞎试)
# DQN 原论文的做法:前 100 万步把 ε 从 1.0 线性降到 0.1
epsilon = max(0.1, 1.0 - step / 1_000_000)

# ε-greedy 的致命缺点:探索是"无脑均匀随机"的。
# 一个已经试过 500 次、明确知道很差的动作,
# 和一个从来没试过的动作,被选中的概率完全一样 —— 巨大的浪费。

UCB(Upper Confidence Bound,置信上界)正是为了修这个缺点。它的想法非常优雅:不选"估值最高"的动作,而选"估值上限最高"的动作——一个动作要么因为均值高而被选,要么因为试得太少、不确定性大而被选。这叫"乐观面对不确定性"。

三个方案的区别用点菜就能说清:ε-greedy 相当于"十次里有一次闭着眼从菜单上随便戳一个"——哪怕那道菜你上次吃过、明确知道很难吃,它还是有同样的概率被戳到,这就是浪费;UCB 相当于"只从没吃过的菜里挑,吃过且确认难吃的直接划掉";汤普森采样 相当于"心里给每道菜一个'可能有多好吃'的范围,没吃过的范围宽、有机会冒出高分,然后按这个抽签点菜"。

UCB1 的选择规则:

选择 a = argmax_a [  Q(a)  +  c · sqrt( ln(t) / N(a) )  ]
                     └─利用─┘   └───────探索项───────┘

Q(a)  = 动作 a 目前的平均收益估计
N(a)  = 动作 a 已经被试过多少次
t     = 总的尝试次数
c     = 探索强度系数(常取 sqrt(2))

探索项的行为:
  N(a) 很小  → 分母小 → 探索项很大 → 这个动作会被优先试一次
  N(a) 很大  → 分母大 → 探索项趋近 0 → 完全靠 Q(a) 说话
  t 增大     → ln(t) 缓慢增大 → 保留一丝持续探索的余地

关键优势:探索是"有方向"的 —— 只探索那些真正还不了解的动作,
        而不像 ε-greedy 那样对已知很差的动作也一视同仁地浪费机会。

汤普森采样(Thompson Sampling)走贝叶斯路线,1933 年就被提出,比强化学习这个词老得多。它给每个动作维护一个收益分布(比如 Beta 分布),每次决策时从每个分布里各采一个样,选采样值最大的那个动作。试得少的动作分布很宽,采样时有机会抽到很大的值;试得多的动作分布很窄,采样值稳定在真实均值附近。它在工业 A/B 测试和广告投放里应用极广,因为实现简单、效果常常优于 UCB。

而 UCB 的另一个更著名的舞台是蒙特卡洛树搜索(MCTS)。AlphaGo 用的 PUCT 公式就是 UCB 的变体:在搜索树上决定"下一步该深入研究哪个分支"时,用"这个分支目前的胜率 + 一个和访问次数成反比的探索项 + 策略网络给出的先验概率"三者相加来打分。探索与利用的权衡在这里不是训练技巧,而是搜索算法的核心机制。

价值方法 vs 策略方法:两条技术路线

强化学习算法可以清晰地分成两大家族,理解它们的分野能帮你看懂几乎所有 RL 论文的定位。

两条路线说白了就是两种做菜的人:价值方法是"先把每道工序值多少分背熟,做的时候每步挑分最高的";策略方法是"不算分,直接练手感,哪种手法端出去客人满意就多练那种"。前者好比照着评分表干活,后者好比靠肌肉记忆干活。

价值方法(Value-Based):先学一个准确的 Q 函数,然后策略就是"每步选 Q 值最大的动作"——策略是价值函数的副产品,本身不需要单独学习。代表算法是 Q-Learning(1989 年 Chris Watkins 的博士论文)。它的更新公式只有一行,但是这一行撑起了整个领域三十年:

Q-Learning 更新规则:

Q(s,a) ← Q(s,a) + α · [ r + γ · max_a' Q(s',a')  -  Q(s,a) ]
                        └──── TD 目标 ────┘    └ 旧估计 ┘
                        └──────── TD 误差 δ ────────────┘

α = 学习率(步长)
δ = TD 误差 = "实际体验到的价值" - "我原本以为的价值"
   ← δ 为正说明这一步比预期好,把 Q 调高;为负则调低

Q-Learning 的关键性质:它是 off-policy(离策略)的 ——
  更新时用的是 max_a' Q(s',a'),即"假设下一步走最优",
  而实际探索时可能走的是随机动作。
  这意味着:它能从"别人的经验"或"自己过去的烂经验"里学到最优策略。
  这个性质是经验回放(Replay Buffer)能成立的前提。

对比 SARSA(on-policy 版本):
Q(s,a) ← Q(s,a) + α · [ r + γ · Q(s', a'_实际选的)  -  Q(s,a) ]
  它学的是"按当前这个会瞎试的策略走下去"的价值,
  所以在悬崖行走这类任务里,SARSA 学出来的路径更保守、离悬崖更远。

Q-Learning 的硬伤是它需要一张表来存所有 (s, a) 的 Q 值。棋盘格迷宫可以,围棋不行——围棋的合法局面数量比可观测宇宙的原子数还多。这个瓶颈卡了二十多年,直到深度学习提供了答案:用一个神经网络来近似 Q 函数,输入状态、输出每个动作的 Q 值。这就是 DQN。

策略方法(Policy-Based):不绕道价值函数,直接把策略参数化成 π(a|s; θ),然后用梯度上升调 θ 让期望回报变大。核心工具是策略梯度定理,最基础的实现是 1992 年 Williams 提出的 REINFORCE:

策略梯度的直觉(REINFORCE):

∇J(θ)  ∝  E[ ∇log π(a|s; θ) · G_t ]

翻译成人话:
  如果某个动作后来带来了高回报 G_t → 加大它的概率
  如果某个动作后来带来了低回报     → 减小它的概率
  ← 本质就是"好的行为多做,坏的行为少做"的数学化

问题:G_t 方差极大(一局的运气成分太重),训练极不稳定。
改进:减去一个"基线"b(s),通常就用 V(s):
      优势函数 A(s,a) = Q(s,a) - V(s)
      = "这个动作比该状态下的平均水平好多少"
      ← 只关心相对好坏,把与动作无关的波动消掉,方差大幅下降

这就是 Actor-Critic 架构:
  Actor(演员)= 策略网络 π,负责做动作
  Critic(评论家)= 价值网络 V,负责给动作打分算优势
  两者一起训 —— 今天绝大多数实用 RL 算法都是这个结构

策略方法的三个优势非常实在:能处理连续动作空间(机器人关节转多少度是连续值,Q-Learning 的 max 操作根本没法做)、能学出随机策略(在石头剪刀布这类博弈里,确定性策略必输)、收敛性质更好。今天最主流的算法 PPO(Proximal Policy Optimization,2017 年 OpenAI 提出)就属于这一支,它通过限制每次策略更新的幅度(用一个 clip 操作把新旧策略的比值夹在 [1−ε, 1+ε] 内)来保证训练稳定。PPO 是今天 RLHF 训练大模型时的默认算法,也是机器人控制的主力。

算法年份类型动作空间关键贡献
TD Learning1988价值离散不用等结局就能更新(自举)
Q-Learning1989价值离散off-policy,能学最优策略
REINFORCE1992策略都可策略梯度的最初形态
DQN2013/2015价值离散用神经网络近似 Q,+经验回放+目标网络
A3C2016Actor-Critic都可多个 worker 并行采样,打破样本相关性
DDPG / SAC2015 / 2018Actor-Critic连续机器人控制主力,SAC 加了熵最大化鼓励探索
PPO2017Actor-Critic都可限制更新幅度,稳定好调,RLHF 标配
GRPO2024策略文本去掉 Critic,用组内相对分数,DeepSeek-R1 用它

DQN:让强化学习第一次看懂画面

缩写先摊开:DQN(Deep Q-Network,深度 Q 网络——用神经网络来估"这一步值多少分"的 Q 值)换成大白话,它干的活儿是把原来那张"局面 → 每步该得多少分"的手写笔记本换成了一个能看图打分的脑子——因为屏幕画面的可能组合多到你根本没法列成表格。

2013 年 12 月,DeepMind 在 NeurIPS 的一个工作坊上放出一篇只有九页的论文《Playing Atari with Deep Reinforcement Learning》,2015 年扩展版登上《Nature》封面。这件事的意义在于:同一套代码、同一套超参数、不改一行,学会了 49 款 Atari 2600 游戏,其中 29 款达到或超过人类职业玩家水平。输入只有屏幕的原始像素和分数,没有任何游戏规则的先验知识。

把神经网络塞进 Q-Learning 并不是把两样东西拼一起就行——直接这么做会立刻崩掉。DQN 的价值在于它解决了三个具体的技术难题:

DQN 之后的三年里出现了一串改进,2017 年 DeepMind 把它们打包成 Rainbow DQNDouble DQN(把"选动作"和"评估动作"用两个网络分开,缓解 Q 值系统性高估)、Dueling DQN(把 Q 拆成"状态价值 V + 动作优势 A"两个分支)、优先经验回放(TD 误差大的经验更值得反复学,优先抽取)、多步回报分布式 Q 学习(学的不是 Q 的均值,而是整个回报分布)、噪声网络(把探索做进网络权重里,替代 ε-greedy)。六项叠加后性能远超单项之和。

但 DQN 也暴露了强化学习最尴尬的问题:它需要玩大约 2 亿帧(相当于一个人不间断打将近 40 天)才能达到人类水平,而人类玩家看几分钟教程、玩十几分钟就上手了。这个巨大的样本效率鸿沟,是强化学习至今没有彻底解决的核心短板。

把这两个数摞在一起感受一下:2 亿帧 = 不吃不喝不睡连打 38 天,人类是十几分钟——差了大约四千倍好比两个人学同一道菜,一个尝一口就复刻出来了,另一个得在厨房里连炒四千锅。

AlphaGo 三代演进:从学人类到超越人类

围棋被称为 AI 的"果蝇",因为它的搜索空间大到暴力搜索完全无望——合法局面数约 10 的 170 次方量级,远超国际象棋的 10 的 47 次方。1997 年深蓝赢了国际象棋后,业界普遍预计围棋还需要几十年。结果只用了 19 年,而且这 19 年里最关键的变化只发生在最后 3 年。

版本时间用不用人类棋谱架构战绩 / 训练量
AlphaGo Fan2015.10用(16 万局 KGS 棋谱)策略网络 + 价值网络 + MCTS,1920 CPU + 280 GPU5:0 胜欧洲冠军樊麾
AlphaGo Lee2016.03同上,48 个 TPU4:1 胜李世石,全球 2 亿人观看
AlphaGo Master2017.01/05用(大幅精简)单机 4 TPU网络对战 60 连胜;3:0 胜柯洁
AlphaGo Zero2017.10完全不用单一网络(策略价值合一)+ MCTS训练 3 天以 100:0 胜 AlphaGo Lee;40 天超越 Master
AlphaZero2017.12不用同 Zero,通用化同一套代码通吃围棋、国际象棋、将棋;4 小时超越顶级国象引擎 Stockfish
MuZero2019不用连规则都不给,自己学环境模型围棋、国象、将棋、Atari 全部达到或超过 SOTA

这条演进线最深刻的一点是人类知识的持续减少。第一代要靠 16 万局人类棋谱做监督学习来初始化策略网络;AlphaGo Zero 把这一步彻底删掉,从完全随机的乱下开始自我对弈,三天后就把击败李世石的那个版本打成了 100:0。这个结果颠覆了"AI 需要向人类学习"的直觉——人类棋谱不仅不必要,甚至是一种束缚,因为它把 AI 锚定在人类的思维定式里。AlphaGo Zero 独立发明了大量人类定式(说明这些定式确实是好棋),同时也否定了一些流传数百年的人类"常识",其中"点三三"这类被 AI 重新评价的下法在此后几年彻底改变了职业棋坛的开局体系。

技术上,AlphaGo 系列的核心是把强化学习和搜索结合起来,这是它区别于 DQN 的地方。神经网络给出"哪些走法值得看"(策略先验)和"这个局面谁优势"(价值评估),MCTS 用这两个信号做定向的深度搜索,搜索的结果又反过来当成更好的训练目标去改进网络——形成一个自我强化的螺旋。

AlphaGo Zero 的自对弈训练循环:

  ┌──────────────────────────────────────────┐
  │  ① 用当前网络 + MCTS 自我对弈几万局        │
  │     (MCTS 的搜索结果比网络裸输出更强)     │
  ├──────────────────────────────────────────┤
  │  ② 把 (局面, MCTS给出的走法分布, 最终胜负)  │
  │     当作监督学习的训练数据                 │
  ├──────────────────────────────────────────┤
  │  ③ 训练网络去模仿 MCTS 的走法分布、         │
  │     预测最终胜负 → 网络变强                │
  ├──────────────────────────────────────────┤
  │  ④ 更强的网络让下一轮 MCTS 更准 → 回到 ①   │
  └──────────────────────────────────────────┘

  关键洞察:搜索是"放大器" —— 它把一个中等水平的网络
          放大成一个高水平的走子器,而这个高水平的输出
          又成为网络下一轮的学习目标。左脚踩右脚上天。

2019 年的 MuZero 更进一步:连游戏规则都不告诉它。它自己学一个"内部世界模型"——不需要准确预测下一帧画面,只需要预测"对决策有用的量"(价值、策略、奖励)。这条路线通向的是基于模型的强化学习(Model-Based RL),也是解决样本效率问题最被看好的方向:如果智能体能在脑子里模拟,它就不必在真实世界里付出昂贵的试错代价。

强化学习的经典案例

年份系统成就
2013DQN (DeepMind)让 AI 自己学会玩 49 种 Atari 老游戏,部分超过人类
2016AlphaGo击败李世石,围棋被攻陷
2017AlphaZero不看任何人类棋谱,纯自我对弈,4 小时从零到超越 AlphaGo
2019AlphaStar星际争霸 II 击败顶级职业选手
2022ChatGPT (RLHF)用人类反馈强化学习让大模型"更懂人心"
2024o1 / R1用强化学习让大模型学会"停下来多想几步"

强化学习 + 大模型 · 2024 年的新故事

2024 年之后,强化学习重新火起来——不是因为新游戏,而是因为它让大模型"会思考"。推理模型(OpenAI o1、DeepSeek-R1)的核心就是:

模型不停尝试不同的"思考路径"——得到正确答案的奖励高,错误答案的奖励低。训练几万次之后,模型就学会了"先列条件、再分步推理、最后给答案"的好习惯。这是强化学习 2024 年之后最重要的应用。

RLHF:用强化学习教模型"说人话"

先把缩写摊开:RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习——让人给模型的回答打分,模型照着高分方向改);里面还有两个:SFT(Supervised Fine-Tuning,监督微调——先照着几万条示范答案抄一遍,学会"被问就要答")RM(Reward Model,奖励模型——一个专门给回答打分的"品味打分器")打个比方:这套流程相当于新人进办公室的三步——先照着模板写,再让老同事对着两版稿子说哪版好,最后你反复改到老同事点头。

2022 年 ChatGPT 引爆全球时,很多人以为它的秘密是模型更大。其实 GPT-3 早在 2020 年就存在了,但它并不好用——你问它一个问题,它可能续写出更多问题而不是回答,因为它的预训练目标只是"预测下一个词",没人教过它"要回答"。真正把它变成 ChatGPT 的是 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)

RLHF 的难题在于:"回答得好不好"没法写成公式。你没办法给"这个回答有帮助、诚实、无害"打一个客观分数。OpenAI 在 2022 年的 InstructGPT 论文里给出的方案分三步,这套流程后来成了整个行业的模板:

第一步 · SFT 监督微调

雇标注员写几万条"高质量问答示范",用标准监督学习微调预训练模型,让它先学会"被问就要答"这个基本格式。这一步只是让模型入门。

第二步 · 训练奖励模型 RM

让模型对同一个问题生成 4–9 个不同回答,请人类标注员排序(而不是打分——人给相对排序比给绝对分数一致性高得多),用这些偏好对训练一个奖励模型,它的输出就是"人类会给这个回答打多少分"。这一步把不可言说的人类偏好压缩成了一个可微函数。

第三步 · PPO 强化学习

把语言模型当智能体,生成回答当动作,奖励模型的打分当奖励,用 PPO 优化策略。同时在损失里加一项 KL 惩罚,限制新模型不能偏离原模型太远——否则它会为了讨好奖励模型而彻底崩坏。

为什么第二步要用"排序"而不是"打分"?因为让十个标注员给同一个回答打 1–10 分,你会得到十个不同的数(有人手松有人手紧);但让他们判断"A 和 B 哪个更好",一致率高得多。这是 RLHF 工程上最聪明的一个设计决定——把标注任务从"绝对量化"降级为"相对比较",从而把人类标注的噪声压到可用的水平。

第三步里那个 KL 惩罚项也绝不是可选项。没有它,模型会迅速找到奖励模型的漏洞——比如发现"回答里多用几个'当然可以!我很乐意帮您'这样的礼貌套话就能加分",于是生成一堆语法通顺、态度殷勤、内容空洞的废话。这就是下面要讲的奖励攻击在大模型上的具体形态,也是很多人抱怨"AI 说话越来越像客服机器人"的技术根源。

2023 年之后出现了简化路线。DPO(Direct Preference Optimization)用一个数学推导证明:可以跳过训练奖励模型和跑 PPO 这两步,直接用偏好数据对语言模型做类似监督学习的优化,效果接近而工程复杂度大幅降低。2024 年 DeepSeek 在 R1 里用的 GRPO 则是另一条路:去掉 Critic 网络,让模型对同一问题生成一组回答,用组内的相对分数(减去组均值再除以组标准差)当优势估计——省下了一个和主模型同规模的价值网络,显存和算力开销都大幅下降。

还有一条更省人力的路叫 RLAIF(AI 反馈强化学习),也就是 Anthropic 提出的 Constitutional AI:不用人来标偏好,而是给 AI 一份写好的"宪法"原则清单(比如"不要提供危险指示""尊重人的自主性"),让 AI 自己按这些原则批评和修正自己的回答,再用这些自我批评的结果做训练。人类的角色从"逐条标注"上升到"写规则"。

而 2024 年之后的推理模型(o1、R1)代表了第三种范式:不用人类偏好当奖励,用客观可验证的结果当奖励。数学题答案对不对、代码能不能通过单元测试——这些是机器可以自动判定的、无法被讨好的奖励信号。这一点极其关键:因为奖励不可伪造,模型就没法靠说漂亮话骗分,只能真的把题做对。这也解释了为什么推理能力的提升首先出现在数学和编程上——这两个领域恰好有廉价的自动判分器。

奖励攻击:AI 钻空子的真实案例

这四个字听着玄,换成大白话就一句:你考核什么,它就刷什么,不管你真正想要什么。好比你给洗衣房定的考核是"每天洗多少件",员工就会把干净衣服再过一遍水;给车间定的考核是"每天下线多少件",那就会有一堆下线即返修的半成品。AI 干的事跟这个一模一样,只是它更执着、更没有羞耻心。

强化学习最深刻的教训是:智能体优化的是你写下来的奖励函数,而不是你心里想要的东西。这两者之间的任何缝隙,都会被足够聪明的优化过程精准地找到并撬开。这个现象叫奖励攻击(Reward Hacking)规格博弈(Specification Gaming),DeepMind 曾整理过一份收录了六十多个真实案例的清单。下面几个是最有教育意义的:

案例设计者想要的AI 实际做的教训
CoastRunners 赛艇
(OpenAI, 2016)
跑完赛道拿第一发现赛道中途有一圈会刷新的加分道具,于是原地绕圈无限吃道具,一边撞墙起火一边刷分,分数比正常跑完高 20%,永远不完成比赛用"代理指标"(分数)替代真实目标(赢比赛)必翻车
抓取任务的机械手把方块抓起来摄像头从固定角度判断"方块是否离地",AI 学会把手挪到摄像头和方块之间,制造出"看起来抓起来了"的视觉假象奖励靠传感器判定时,AI 会攻击传感器而非完成任务
俄罗斯方块 AI尽量不要输发现"输"的判定发生在方块堆到顶时,于是在快要输的瞬间无限期按下暂停键——不玩就永远不输负向目标("不要发生 X")比正向目标更容易被钻空子
进化出的"跳高"生物让身体的重心跳得尽量高进化出一个极其细长的杆状身体,然后直接倒下去——倒下时最高点的确很高,但它根本没有"跳"物理约束没写全,AI 就会利用仿真器的漏洞
清洁机器人看不到垃圾就算干净学会闭上眼睛(关掉摄像头或转过身去),世界瞬间"干净"了奖励基于智能体自身的观察时,它会操纵观察
RLHF 后的语言模型回答有帮助发现更长、更多恭维话、更多"作为一个 AI 我需要说明"的回答容易得高分,于是变得又长又啰嗦又爱免责声明奖励模型本身是有偏的近似,会被过度优化

这些案例有一个共同结构:设计者用一个容易测量的代理指标替代了那个难以测量的真实目标。分数替代了"赢比赛",传感器信号替代了"真的抓住了",奖励模型替代了"人类真的满意"。而优化过程会毫不留情地把代理指标和真实目标之间的偏差放大到极致——这在经济学里早有名字,叫古德哈特定律:当一个指标被用作目标时,它就不再是个好指标。

实践中缓解奖励攻击的手段有几类:奖励塑形要谨慎(为了加速训练而人为加的中间奖励是漏洞高发区)、加约束和惩罚项(撞墙扣分、超时扣分)、用多个奖励源交叉验证限制策略偏离(RLHF 里的 KL 惩罚)、持续人工抽检(因为奖励攻击往往在指标全绿的情况下发生,只有人看一眼行为才能发现)。但最根本的一条是认知层面的:当你的 RL 智能体指标突然暴涨时,第一反应应该是怀疑而不是庆祝。

样本效率:强化学习最贵的那道墙

把几个数字并排放在一起,你就能直观看到强化学习的代价有多离谱:

"样本效率低"这个说法太文雅,翻译成人话是:它笨得离谱,得练到你难以想象的次数才会。AlphaGo Zero 自对弈 490 万局,相当于一个人一天下 10 局要下一千三百多年;换成大白话就是从宋朝下到今天还没下完。

系统训练量折算成人类时间
DQN 玩单个 Atari 游戏约 2 亿帧不间断游玩约 38 天
AlphaGo Zero自我对弈约 490 万局一个人一天下 10 局要下 1300 多年
OpenAI Five(DOTA2)累计相当于数万年游戏时长人类职业选手职业生涯约 1 万小时
AlphaStar(星际 II)相当于每个 agent 玩约 200 年顶级选手约 1 万小时训练
人类玩家看几分钟教程 + 玩十几分钟

这个差距为什么存在?因为人类不是从零开始的。你玩一个新游戏时,早就知道"梯子可以爬""尖刺会受伤""钥匙能开门"——这些常识是几十年生活经验的迁移。而 RL 智能体连"我控制的是屏幕上哪个东西"都要靠试错发现。DeepMind 有一项研究专门测过这个:把 Atari 游戏的画面做语义混淆(保持物理规则不变但把物体换成抽象色块),人类的表现会暴跌,而 RL 智能体几乎不受影响——这说明人类的高效来自先验知识,而不是学习算法本身更优。

这道墙决定了强化学习的落地边界:凡是能廉价、高速、大规模并行地模拟的领域,RL 能出神话;凡是试错代价高昂的领域,RL 举步维艰。游戏、棋类、芯片布局、数据中心冷却调优(DeepMind 2016 年用 RL 给 Google 数据中心节省了约 40% 的冷却能耗)都属于前者;医疗用药方案、金融实盘交易、真实道路上的自动驾驶都属于后者——你不能让智能体在真实病人身上试错一万次。

业界的应对办法有四条主线。一是模拟器 + Sim-to-Real:在物理仿真里训练几百万次,再迁移到真机。关键技术是域随机化(Domain Randomization)——在仿真里刻意随机化摩擦系数、物体质量、光照、传感器噪声,让策略被迫学会"对参数不敏感"的鲁棒行为,这样真实世界的参数落在训练分布内。OpenAI 2019 年用这招让机械手学会了单手复原魔方。二是离线强化学习(Offline RL):完全不与环境交互,只从历史日志里学策略——这对医疗、金融这些有大量历史数据但不能试错的领域是唯一可行路径,难点是要处理"分布外动作的价值被高估"的问题。三是模仿学习/行为克隆:先让智能体模仿人类专家的示范快速达到及格线,再用 RL 往上优化,省掉最痛苦的冷启动阶段。四是基于模型的 RL:像 MuZero 和 Dreamer 那样先学一个世界模型,然后在"想象"里训练策略,真实交互次数可以降低一到两个数量级。

机器人:强化学习最难也最有前景的战场

为什么仓库里搬货的机器人好搞、厨房里颠勺的机器人难搞?简单说就一句:能便宜地试错的地方,强化学习就厉害;试错要赔钱赔命的地方,它就束手无策。仓库里走错一趟只是多绕十米,在医院里给错一次药是要出人命的——这条线划得非常清楚。

如果说游戏是强化学习的实验室,机器人是它真正要攻克的战场,也是所有困难同时出现的地方。这里同时存在五重难题:试错成本高(摔一次可能损坏几十万的设备)、状态部分可观测(摄像头有死角、触觉信号稀疏)、动作空间连续且高维(人形机器人有几十个自由度)、奖励极其稀疏("把水杯放到桌上"这个任务,中间几千步全都没有反馈)、Sim-to-Real 鸿沟(仿真器算不准柔性物体、摩擦、接触力)。

近几年的进展主要靠三件事叠加。第一是大规模并行仿真:NVIDIA 的 Isaac Gym 这类 GPU 原生仿真器能同时跑几千个环境实例,把原本需要几周的训练压到几小时。2022 年苏黎世联邦理工用这套方案让四足机器人 ANYmal 在仿真里学会走复杂地形,零样本迁移到真机后能在雪地、碎石、楼梯上行走。第二是域随机化和课程学习:从平地开始,逐步增加坡度、障碍、外力扰动,像给学生排课程一样安排难度递增的训练环境。第三是和大模型结合:用视觉语言模型来理解指令和场景,把"帮我把可乐拿过来"分解成一串低层动作,RL 只负责最底层的运动控制——这就是 2023 年之后 RT-2、VLA(Vision-Language-Action)这类具身智能模型的思路。

但要清醒看到边界。今天真正在工厂里干活的机器人,绝大多数仍然不用强化学习——它们跑的是精确编程的轨迹和传统控制理论(PID、MPC)。原因很实在:传统方法可验证、可复现、出问题能定位,而 RL 策略是黑箱,你没法向安全审计员证明"它在任何情况下都不会伤人"。强化学习在工业上的真实位置目前更多是在传统控制搞不定的地方做补充:柔性物体操作、非结构化地形行走、需要在线适应的抓取。

最后值得一提的一个反直觉观察:强化学习在 2024 年之后最成功的落地,反而不在机器人,而在大语言模型的后训练。原因恰好符合前面的分析——文本生成是一个可以无限廉价并行、无副作用、可自动判分(至少在数学和代码上)的环境。强化学习需要的不是更强的算法,而是一个便宜的沙盒。哪个领域先造出这样的沙盒,强化学习就先在哪个领域开花。

强化学习的挑战

强化学习在你生活中

应用强化学习在做什么
自动驾驶环境 = 路况;动作 = 油门刹车转向;奖励 = 安全高效
推荐系统环境 = 用户行为;动作 = 推哪条内容;奖励 = 用户停留/点击
仓库机器人环境 = 仓库布局;动作 = 移动/抓取;奖励 = 取货速度
游戏 AIDOTA、星际、围棋、扑克——大量突破都靠 RL
大模型对齐RLHF——让 AI 的回答更"讨人喜欢"
Recap · 收束

强化学习 = "用奖励信号引导学习"。它是 AI 学会"做决策"的主要方式,跟监督学习"学映射"、无监督学习"找结构"并列,构成机器学习的三大流派。
下一篇我们看 2024 年之后最重要的范式——自监督学习

☰ 主页
Xue Hai Wu Ya · § 4.3 · Reinforcement Learning