《俯瞰强化学习:目标、反馈循环与智能体的自我改进》

完整书稿

目录

  • 序章:一个会改变世界的学习者
  • 第一部分:我们究竟在优化什么
    • 第 1 章:长期回报:为什么眼前的奖励不够
    • 第 2 章:奖励不是目的:如何把意图翻译成数字
  • 第二部分:未来如何返回现在
    • 第 3 章:Bellman 方程:用未来重新定义现在
    • 第 4 章:信用分配:谁应当为结局负责
    • 第 5 章:自举:用尚未完成的预测更新预测
  • 第三部分:长期目标如何变成一次更新
    • 第 6 章:为什么强化学习的损失函数看起来不像损失函数
  • 第四部分:每一种估计都有代价
    • 第 7 章:偏差与方差:不存在免费的估计
    • 第 8 章:最大化偏差与价值幻觉
    • 第 9 章:致命三角:为什么深度 RL 容易失控
  • 第五部分:学习者改变了自己的数据
    • 第 10 章:非平稳性:在移动的地面上学习
    • 第 11 章:On-Policy 与 Off-Policy:旧经验还能用吗
    • 第 12 章:经验回放、目标网络与更新约束:稳定化工具箱
  • 第六部分:探索未知,也承担风险
    • 第 13 章:探索与利用:为什么不能总选当前最优
    • 第 14 章:深度探索:从随机试错到主动寻找信息
    • 第 15 章:探索的边界:安全、成本与可控性
  • 第七部分:把算法放回全景图
    • 第 16 章 综合案例一:价值方法如何一步步长成 DQN
    • 第 17 章 综合案例二:为什么要直接学习策略
    • 第 18 章 综合案例三:Actor-Critic 如何让行动者与评价者合作
    • 第 19 章 综合案例四:学习策略,还是学习世界
  • 第八部分:当强化学习进入大模型
    • 第 20 章 当语言模型成为策略
    • 第 21 章 RLHF:把偏好变成优化信号
    • 第 22 章 DPO、GRPO 与新一代后训练方法
    • 第 23 章 对齐问题的哲学余波
  • 结语 用六个问题解剖任何强化学习算法
  • 后记 我为什么不想按部就班地介绍强化学习
  • 附录 A 数学基础
  • 附录 B 关键公式速查
  • 附录 C 算法映射表
  • 附录 D 超参数思想地图
  • 附录 E 推荐阅读路线
  • 附录 F 核心参考资料

序章:一个会改变世界的学习者

1. 学习者不再站在世界之外

先想象一个很普通的机器学习任务。

我们准备了一批图片,其中有猫,也有狗。每张图片旁边都写着正确答案。模型看过图片,给出预测;预测错了,就根据误差调整参数。无论模型今天表现得好还是坏,训练集里的猫不会突然变成狗,照片也不会因为模型的一次更新而重新拍摄。

在这个过程中,模型站在数据之外。它像一个参加考试的学生:试卷早已印好,答案也早已存在。学生可以改变自己,却不会改变下一道题。

强化学习面对的是另一种世界。

一个机器人要学习走路。它今天迈出的每一步,都会改变下一秒身体的位置、速度和平衡状态。一个游戏智能体要学习下棋。它选择哪一步,决定了棋盘随后会变成什么样子。一个语言模型要学习生成更好的回答。它采用什么表达方式,会影响人类给出的偏好反馈,也会影响下一轮收集到的数据。

在这些问题中,学习者不再站在世界之外。

它一边学习,一边行动;一边行动,一边改变未来能够看见的数据。它不是面对一张静止的试卷,而是在一场尚未结束的游戏中不断修改自己的策略。

这就是强化学习真正特殊的地方。

强化学习研究的不是如何从固定答案中学习,而是一个行动者如何在行动会改变未来的世界中持续改进自己。


2. 从直线走进反馈循环

监督学习最常见的结构接近一条直线:

输入数据 → 模型预测 → 与标签比较 → 计算误差 → 更新参数

强化学习的结构更像一个闭环:

策略 → 动作 → 环境 → 新状态与奖励 → 新数据 → 更新策略
 ↑                                              ↓
 └──────────────────────────────────────────────┘

策略决定动作,动作改变环境,环境产生新的状态和奖励。这些经验随后被用于更新策略。更新后的策略又会产生新的动作,进入下一轮循环。

这条闭环带来一个在监督学习中没有那么突出的事实:

参数不仅决定模型输出什么,也决定模型下一步将看到什么数据。

如果一个游戏智能体从不尝试进入地图北部,它就不会获得北部区域的数据。如果一个推荐系统总是展示同一类内容,它就很难知道用户是否也喜欢其他内容。如果一个语言模型在偏好优化后越来越倾向于使用某种固定表达,下一轮采样数据也会越来越集中在这种表达附近。

学习改变行为,行为改变数据,数据再次塑造学习。

强化学习的困难,大多来自这种循环结构。

图 0-1:强化学习全景地图

图 0-1:强化学习全景地图


3. 一段经历如何写成数学对象

为了讨论这场持续发生的交互,我们需要先给“一段经历”一个准确名字。

假设在时刻 0,智能体处于状态 s_0。它根据策略选择动作 a_0,环境随后给出奖励 r_0,并转移到新状态 s_1。智能体继续选择动作 a_1,环境继续反馈。

整段经历可以写成:

$$\tau=(s_0,a_0,r_0,s_1,a_1,r_1,s_2,a_2,r_2,\ldots)$$

这个希腊字母 τ 读作 tau,通常表示一条轨迹(trajectory)。

公式中的符号分别表示:

符号 含义
s_t 时刻 t 的状态,例如机器人当前姿态、棋盘局面或语言模型已经看到的上下文
a_t 智能体在时刻 t 采取的动作,例如关节控制、落子位置或下一个 Token
r_t 环境在这一步给出的奖励
τ 从开始到结束,或持续向前延伸的一整条交互轨迹

这条公式看起来很简单,却包含了强化学习与监督学习之间最深的差异之一:

监督学习通常从外部拿到已经存在的数据;强化学习的数据则是在智能体行动的过程中生成的。

换句话说,轨迹不是一份静态档案,而是智能体与环境共同写下的历史。


4. 为什么眼前的奖励不够

环境每一步都可能给出一个奖励 r_t。但如果智能体只追求眼前奖励,它往往学不到真正有价值的行为。

下棋时,一步暂时牺牲棋子,可能换来几步之后的胜利。机器人走路时,一次看似不够快的调整,可能避免随后摔倒。语言模型推理时,一段暂时没有直接得分的中间分析,可能是最终得到正确答案的必要步骤。

因此,强化学习关心的不只是眼前奖励,而是从当前时刻开始,未来能够积累多少奖励。

我们把这个量称为回报(return):

$$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k}$$

将求和展开,可以看得更清楚:

$$G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \gamma^3 r_{t+3} + \cdots$$

这里:

符号 含义
G_t 从时刻 t 开始计算的累计回报
r_{t+k} 从当前时刻向后数第 k 步得到的奖励
γ 折扣因子,通常满足 0 ≤ γ ≤ 1
γ^k 距离越远的未来奖励,其权重通常越小

折扣因子 γ 像一个调节远近视野的旋钮。

  • γ=0 时,智能体只在意眼前奖励;
  • γ 接近 1 时,智能体更加重视长期影响;
  • 当任务有明确终点时,公式中的无穷求和也可以改写为有限求和。

这一章暂时不深入讨论 γ 的全部含义。第 1 章会回到这个公式,解释为什么折扣不仅是数学技巧,也与任务定义、不确定性和长期规划有关。

此时只需要抓住一点:

强化学习的目标跨越时间。一次行动的意义,常常要在许多步之后才能显现。


5. 策略究竟好不好

不同策略会产生不同轨迹。

一个保守的策略可能总是走熟悉路线,获得稳定但有限的收益。一个更大胆的策略可能暂时犯错,却发现更高回报的路径。即使使用同一个策略,环境中的随机性也可能使每一次经历不同。

因此,我们不能只看一条轨迹,而要看一种策略在许多可能轨迹上的平均表现。

强化学习最基本的目标可以写成:

$$J(\pi)=\mathbf{E}_{\tau \sim \pi}[G_0]$$

这里:

符号 含义
π 策略(policy),描述智能体在不同状态下如何选择动作
τ \sim π 轨迹 τ 由策略 π 与环境交互产生
G_0 从轨迹开始时刻计算的累计回报
E 期望,表示对许多可能轨迹取平均
J(π) 策略 π 的平均长期表现

如果只用一句话翻译这条公式:

一个好策略,不是偶尔走运,而是在许多可能经历中都能获得更高的长期回报。

这也是全书最重要的出发点。

后面看到 TD、Q-Learning、DQN、Policy Gradient、PPO、RLHF、DPO 或 GRPO 时,我们会不断回到这里:这些算法外表不同,但它们最终都必须说明,自己如何帮助智能体获得更好的长期结果。


6. 六个核心问题

一旦目标跨越时间,学习又处在反馈循环之中,六个问题会自然出现。它们不是人为拼出的目录,而是强化学习无法绕开的六个关口。

6.1 目标问题:我们究竟在优化什么

刚才的目标函数 J(π) 假设奖励已经存在。但现实中,奖励经常需要被设计。

机器人应该优先走得快,还是优先避免摔倒?推荐系统应该优化点击率、停留时间,还是长期满意度?语言模型应该追求有帮助、无害、诚实,还是风格自然?

真实意图通常比一个数字复杂。奖励只是代理。

因此,第一个问题是:

智能体真正想优化的长期目标是什么?可计算奖励与真实意图之间有多远?

第一部分将讨论长期回报、奖励设计、Goodhart 定律与 Reward Hacking。

6.2 时间问题:未来如何返回现在

如果一盘棋最后赢了,到底是哪一步走得好?

如果一个语言模型生成了五百个 Token,最终答案被判为错误,中间哪些 Token 应该承担责任?

奖励往往迟到,但参数更新必须发生在具体动作上。于是,我们需要将未来结果向前传递。

第二个问题是:

迟到的奖励如何返回现在,并把信用分配给此前的动作?

第二部分将讨论价值函数、Bellman 方程、信用分配与自举。

6.3 更新问题:长期目标如何变成一次更新

J(π) 定义了我们想要什么,却没有自动告诉优化器下一步应该怎么走。

真实任务中的轨迹可能很长,环境可能不可微,奖励可能稀疏,数据还会随策略变化。我们必须把长期目标转换为一次可以计算的局部更新。

第三个问题是:

长期目标如何变成一次可执行的参数更新?

第三部分将集中解释为什么强化学习的 Loss 看起来不像普通 Loss,以及估计器、代理损失、约束项和工程实现分别扮演什么角色。

6.4 估计问题:看不见未来时要付出什么代价

等待一条轨迹完全结束,通常代价很高。提前使用估计值,又可能把错误传播下去。

Monte Carlo 更愿意等待结局,Temporal Difference 更愿意提前结算。两种方法并非谁绝对优越,而是在偏差与方差之间做不同选择。

第四个问题是:

看不见完整未来时,我们怎样估计价值?这种估计会付出什么代价?

第四部分将讨论偏差、方差、最大化偏差与致命三角。

6.5 数据问题:学习者为什么改变了自己的数据

在强化学习中,数据不是始终不变的地面。

策略更新后,智能体会走向新的状态,避开旧的状态,也可能进入训练数据从未覆盖的区域。旧经验仍然宝贵,却不再天然服从当前策略的分布。

第五个问题是:

策略改变后,训练数据为什么也会随之改变?旧数据还能使用到什么程度?

第五部分将讨论非平稳性、On-Policy、Off-Policy、经验回放、目标网络与更新约束。

6.6 探索问题:怎样发现未知,又不让系统失控

如果智能体永远只做当前看来最好的事情,它可能永远发现不了更好的选择。

但探索也意味着故意尝试尚未确认的行动。在游戏中,这可能只是少赢几局;在机器人、医疗或大模型系统中,代价可能更加严肃。

第六个问题是:

智能体如何发现未知机会,又如何控制探索带来的风险?

第六部分将讨论探索与利用、深度探索、安全边界和 Offline RL。


7. 三条嵌套的反馈循环

六个问题负责划分全书,但它们不是六座孤岛。

强化学习真正难的地方,在于这些问题被三条反馈循环连接在一起。

7.1 外部交互循环

第一条循环发生在智能体与环境之间:

策略 → 动作 → 环境 → 轨迹与奖励 → 新数据

策略决定动作,动作改变环境,环境产生奖励和新状态。这条循环连接了目标、数据与探索。

如果奖励设计得不好,智能体会朝错误方向行动;如果探索不足,它看不到新的数据;如果环境反馈带有噪声,它看到的世界就会更加模糊。

7.2 时间回传循环

第二条循环发生在时间轴上:

未来奖励与下一状态估计 → 当前价值 → 当前动作判断

未来发生的结果,需要反过来修正我们对当前动作的判断。Bellman 方程、自举、TD Error、GAE 都与这条循环有关。

它带来了强化学习最典型的效率优势,也带来了风险:如果未来价值本身估错了,错误也会被送回现在。

7.3 自我更新循环

第三条循环发生在训练过程中:

样本 → 估计器 → 代理损失 → 参数更新 → 新策略 → 新样本

样本用于形成梯度,梯度更新策略,新策略又决定下一批样本来自哪里。

这条循环使强化学习不再只是一个静态优化问题。它更像一个带有反馈的控制系统:每一次更新都可能改变下一轮更新的条件。

经验回放、目标网络、Clip、KL 惩罚等工程机制,看起来形式不同,却都在尝试让某一条循环不要转得太快,不要把误差放大到失控。


8. 为什么公式不可省略

这本书会尽量用通俗的语言讨论强化学习,但不会绕开公式。

原因很简单:许多真正重要的区别,只存在于公式里。

“关心长期收益”这句话很容易理解,但只有写出

$$G_t=r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+\cdots$$

我们才能准确讨论 γ 如何改变时间视野。

“用未来估计现在”这句话很直观,但只有写出 Bellman 方程,我们才能看清自举发生在哪里。

“不要让新策略偏离旧策略太远”听起来合理,但只有写出概率比率、KL 散度和 PPO Clip Objective,我们才能理解约束究竟限制了什么。

公式不是为了让内容显得高深。恰恰相反,公式是为了消除含糊。

但公式也不应该突然从天而降。

本书中的每一条关键公式,都会尽量按照同一个顺序出现:

  1. 它试图解决什么问题?
  2. 它的直觉是什么?
  3. 完整公式是什么?
  4. 每个符号代表什么?
  5. 它从哪里推导出来?
  6. 某一项变化时,系统会怎样变化?
  7. 能否用一个最小例子手算一次?
  8. 它解决不了什么?

先看见问题,再进入公式;走出公式之后,再回到全景图。


9. 阅读这本书的方法

这本书不是一张从第一页单向延伸到最后一页的直线地图。

它更像一张会被反复展开的全景图。

前六部分分别拆解六个核心问题。第七部分把常见算法重新放回图中,观察它们如何组合这些问题。第八部分进入大模型后训练,观察经典矛盾如何以新的形式再次出现。

读到任何新算法时,都可以暂时放下它复杂的名字,先问六个问题:

  1. 它最终想优化什么?
  2. 它如何让未来影响现在?
  3. 它怎样完成一次参数更新?
  4. 它显式或隐式估计了什么?
  5. 它依赖什么数据,数据会怎样漂移?
  6. 它如何探索,又如何限制探索?

如果能回答这六个问题,一个新算法就不再是一堆孤立公式,而是全景图中的一个位置。

下一章,我们从第一个问题开始:

为什么眼前的奖励不够?


第一部分:我们究竟在优化什么

第 1 章:长期回报:为什么眼前的奖励不够

1. 一个看似聪明的错误

假设一个机器人站在仓库里,需要把货物送到终点。

它面前有两条路:

  • 路线 A 很平坦,每走一步都能获得一点小奖励,但最终会绕进死胡同;
  • 路线 B 开始时需要绕行,前几步甚至会受到轻微惩罚,但最终能更快抵达终点,获得一笔很大的奖励。

如果机器人只比较眼前一步,它会毫不犹豫地选择路线 A。

它每一步似乎都做对了,却永远到不了真正值得去的地方。

这不是一个边缘问题,而是强化学习的起点。下棋、机器人控制、推荐系统、自动驾驶和语言模型推理,都可能遇到同一种困难:

当前看起来最好的动作,未必带来最好的长期结果。

因此,强化学习不能只回答“这一步奖励是多少”,而要回答一个更难的问题:

从现在开始,如果继续行动下去,未来一共能够获得多少收益?


2. 从单步奖励到轨迹

强化学习中的智能体不会只行动一次。

在时刻 t,智能体观察状态 s_t,选择动作 a_t。环境收到动作后,给出奖励 r_t,并转移到下一个状态 s_{t+1}

这个过程可以写成:

$$s_t \xrightarrow{a_t,;r_t} s_{t+1}$$

如果连续展开,就得到一条轨迹:

$$\tau=(s_0,a_0,r_0,s_1,a_1,r_1,\ldots,s_T)$$

这里:

符号 含义
t 当前时间步
s_t 时刻 t 的状态
a_t 在状态 s_t 下采取的动作
r_t 执行动作后得到的即时奖励
T 轨迹结束的时刻
τ 从起点到终点的一整段交互经历

在下棋任务中,s_t 可以是一盘棋当前的局面,a_t 是一次落子,r_t 可能直到棋局结束才出现。

在语言模型中,s_t 可以理解为提示词与已经生成的 Token,a_t 是下一个 Token,r_t 可能来自最终答案是否正确,也可能来自人类偏好或规则验证器。

单步奖励 r_t 只是轨迹中的局部信号。真正决定一项策略好坏的,是整条轨迹的后果。

图 1-1:即时奖励与长期回报

图 1-1:即时奖励与长期回报


3. 回报:把未来带回现在

3.1 最简单的累计奖励

如果一条轨迹在时刻 T 结束,从时刻 t 开始,最直接的累计奖励可以写成:

$$G_t=r_t+r_{t+1}+r_{t+2}+\cdots+r_{T-1}$$

使用求和符号,写法更紧凑:

$$G_t=\sum_{k=0}^{T-t-1}r_{t+k}$$

这个量称为回报(return)。

公式逐项解释如下:

符号 含义
G_t 从时刻 t 开始计算的累计回报
k 相对于当前时刻向后数了多少步
r_{t+k} 从当前时刻向后第 k 步得到的奖励
T-t-1 从当前时刻到轨迹结束前,仍然剩下多少个奖励

k=0 时,公式取到当前奖励 r_t;当 k=1 时,取到下一步奖励 r_{t+1};依次类推,直到轨迹结束。

它表达了一个朴素但关键的思想:

判断当前动作,不能只看当前发生了什么,还要看它把智能体带向了怎样的未来。

3.2 为什么要引入折扣

在许多任务中,未来奖励会被折扣。

折扣回报写成:

$$G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

展开后是:

$$G_t =r_t+\gamma r_{t+1}+\gamma^2r_{t+2} +\cdots+\gamma^{T-t-1}r_{T-1}$$

其中,γ 是折扣因子(discount factor),通常满足:

$$0\leq\gamma\leq 1$$

γ 决定了遥远未来的奖励在当前判断中占多大分量。

  • 当前奖励 r_t 的权重是 1
  • 下一步奖励 r_{t+1} 的权重是 γ
  • 再下一步奖励 r_{t+2} 的权重是 γ^2
  • 越遥远的奖励,权重通常越小。

如果任务没有明确终点,常见写法是:

$$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k}$$

只要奖励有界且 γ<1,这个无穷级数通常就能保持有限。折扣因此不仅表达对未来的重视程度,也为持续任务提供了数学上的可控性。


4. 手算一次:两条路线,哪一条更好

回到仓库机器人。

假设机器人在起点有两种选择:

路线 A:眼前舒服,但进入死胡同

三步奖励为:

$$(r_0,r_1,r_2)=(2,2,0)$$

路线 B:开始绕行,但最终抵达终点

三步奖励为:

$$(r_0,r_1,r_2)=(-1,0,10)$$

假设折扣因子为:

$$\gamma=0.9$$

路线 A 的回报为:

$$\begin{aligned} G_0^{A} &=2+0.9\times2+0.9^2\times0\ &=2+1.8\ &=3.8 \end{aligned}$$

路线 B 的回报为:

$$\begin{aligned} G_0^{B} &=-1+0.9\times0+0.9^2\times10\ &=-1+8.1\ &=7.1 \end{aligned}$$

如果只看第一步:

$$2>-1$$

路线 A 明显更诱人。

但如果看长期回报:

$$7.1>3.8$$

路线 B 才是更好的选择。

这正是强化学习必须引入回报 G_t 的原因。


5. 折扣因子 γ 的三层含义

折扣因子经常被当作一个需要调节的超参数。但如果只把它理解为“未来奖励乘一个系数”,就会低估它的重要性。

γ 至少有三层含义。

5.1 第一层:时间偏好

未来越远,不确定性通常越高。即使两笔奖励名义上相同,较早得到的奖励往往更加可靠。

例如:

  • 今天拿到 100 元;
  • 十年后可能拿到 100 元。

在现实中,这两件事很难被视为完全等价。

γ 可以表达这种对较近未来的偏好。

5.2 第二层:有效视野

γ<1 时,遥远奖励的权重会指数衰减。

一个常见的粗略理解是:

$$\mathrm{有效视野}\approx\frac{1}{1-\gamma}$$

这不是严格边界,而是帮助建立直觉的估计。

例如:

γ 近似有效视野
0.5 2
0.9 10
0.99 100
0.999 1000

γ0.9 调到 0.99 时,变化并不是“只增加了 0.09”。智能体实际需要关注的时间跨度可能扩大一个数量级。

这会显著增加信用分配和价值估计的难度。

5.3 第三层:数学收敛

对于持续运行、没有天然终点的任务,如果奖励始终存在,直接累加可能得到无穷大。

假设每一步奖励恒为 1

$$r_t=1$$

不折扣时:

$$1+1+1+\cdots$$

显然发散。

当 $0\leq\gamma<1$ 时:

$$G_t = 1 + \gamma + \gamma^2 + \gamma^3 + \cdots = \frac{1}{1 - \gamma}$$

这是一个有限值。

因此,γ 也帮助我们为持续任务定义一个可计算的目标。


6. γ 不是越大越好

既然长期规划很重要,是否应该总把 γ 设置得尽量接近 1

不一定。

较大的 γ 确实让智能体更加重视遥远未来,但也会带来代价:

  1. 更遥远的奖励更难归因到当前动作;
  2. 价值估计需要跨越更长时间传播;
  3. 环境噪声会积累;
  4. 自举误差可能传播得更远;
  5. 训练方差可能变大。

较小的 γ 更容易训练,却可能使智能体过于短视。

因此,γ 不是单纯的“耐心程度”,而是任务视野、估计难度与训练稳定性之间的旋钮。

这一点会在后续章节反复出现:

  • 第 4 章讨论信用分配;
  • 第 5 章讨论自举;
  • 第 7 章讨论偏差与方差;
  • 第 9 章讨论误差如何被循环放大。

一个超参数背后,往往连接着整张全景图。


7. 策略:智能体如何行动

有了回报,我们还需要定义策略。

策略(policy)通常写作:

$$\pi(a\mid s)$$

它表示:

在状态 s 下,智能体选择动作 a 的概率。

公式中的竖线 | 可以读作“在给定……的条件下”。

因此:

$$\pi(a\mid s)$$

可以读作:

给定状态 s,选择动作 a 的条件概率。

如果一个智能体在某个路口有三个选择:

动作 概率
向左 0.6
向右 0.3
原地等待 0.1

那么它的策略不是一条固定命令,而是一个概率分布。

策略也可以是确定性的。确定性策略常写为:

$$a=\mu(s)$$

它表示在状态 s 下,直接输出一个动作 a

随机策略与确定性策略各有用途。随机性可以帮助探索,也可以表达环境或决策中的不确定性。后续讨论探索、策略梯度和大模型采样时,我们会不断回到这一点。


8. 环境也参与生成轨迹

策略不是轨迹的唯一来源。

即使智能体在某个状态采取相同动作,环境也可能随机转移到不同状态。

环境动力学通常写作:

$$P(s_{t+1}\mid s_t,a_t)$$

它表示:

在状态 s_t 下采取动作 a_t 后,环境转移到状态 s_{t+1} 的概率。

因此,一条轨迹由三部分共同塑造:

  1. 初始状态从哪里来;
  2. 策略如何选择动作;
  3. 环境如何产生下一个状态。

轨迹概率可以写成:

$$p_\pi(\tau)=\rho_0(s_0)\prod_{t=0}^{T-1} \pi(a_t\mid s_t)P(s_{t+1}\mid s_t,a_t)$$

逐项解释如下:

符号 含义
p_π(τ) 在策略 π 下产生整条轨迹 τ 的概率
ρ_0(s_0) 初始状态 s_0 出现的概率
连乘符号,表示把每一步发生的概率乘起来
π(a_t|s_t) 智能体在当前状态选择动作的概率
P(s_{t+1}|s_t,a_t) 环境从当前状态转移到下一状态的概率

这条公式非常重要。

它告诉我们:

当策略 π 改变时,轨迹分布 p_π(τ) 也会改变。

这正是第五部分“学习者改变了自己的数据”的数学起点。

在监督学习中,我们通常把数据分布视为外部给定;在强化学习中,策略本身参与生成数据。


9. 目标函数:什么叫“更好的策略”

现在可以准确写出强化学习的目标。

一种策略是否优秀,不能只看一条轨迹,因为环境可能随机,策略本身也可能随机。我们需要比较许多可能轨迹上的平均回报。

目标函数写作:

$$J(\pi) = E_{\tau}[ \sum_{t=0}^{T-1} \gamma^t r_t ]$$

更简洁地写:

$$J(\pi)=\mathbf{E}_{\tau \sim \pi}[G_0]$$

两种写法表达同一件事。

逐项解释如下:

符号 含义
J(π) 策略 π 的期望累计回报
E 对许多可能轨迹取平均
τ ∼ p_π(τ) 轨迹按照策略 π 与环境共同决定的概率分布产生
Σ γ^t r_t 一条轨迹上的折扣累计回报

用一句话概括:

强化学习要寻找一种策略,使它在许多可能经历中获得更高的长期回报。

理想目标写成:

$$\pi^*=\arg\max_\pi J(\pi)$$

这里:

符号 含义
π^* 最优策略
arg max 使目标函数取得最大值的那个策略
J(π) 策略的期望长期回报

注意,arg max 返回的不是最大分数本身,而是“哪一种策略能够得到最大分数”。


10. 为什么目标函数还不够

写出

$$\pi^*=\arg\max_\pi J(\pi)$$

并不意味着问题已经解决。

这条公式只告诉我们终点在哪里,却没有告诉我们怎样走过去。

现实中还存在许多困难:

  1. 我们通常不知道完整的环境转移规律;
  2. 一条轨迹可能很长;
  3. 奖励可能稀疏;
  4. 同一策略产生的轨迹也有随机性;
  5. 策略改变后,轨迹分布也会改变;
  6. 神经网络参数数量巨大,不可能枚举所有策略。

因此,后续算法必须继续回答:

  • 如何估计未来回报?
  • 如何把迟到的奖励分给此前动作?
  • 如何构造可以用于梯度下降的代理损失?
  • 如何控制数据分布漂移?
  • 如何探索尚未出现过的轨迹?

目标函数不是答案,而是所有答案必须服从的起点。


11. Episodic 与 Continuing Tasks

不同任务的时间结构并不相同。

11.1 有终点的任务

有些任务会自然结束,称为 episodic tasks。

例如:

  • 一盘棋结束;
  • 一局游戏结束;
  • 机器人完成一次抓取;
  • 语言模型生成 [EOS],完成一次回答。

此时,轨迹长度有限:

$$\tau=(s_0,a_0,r_0,\ldots,s_T)$$

回报可以写成有限求和:

$$G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

11.2 持续运行的任务

有些任务没有天然终点,称为 continuing tasks。

例如:

  • 长期运行的推荐系统;
  • 数据中心能耗控制;
  • 交通信号调度;
  • 持续运行的工业设备。

此时,常见目标是折扣回报:

$$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k}$$

另一条重要路线是平均奖励:

$$\bar{r} =\lim_{T\to\infty} \frac{1}{T} \mathbf{E} [ \sum_{t=0}^{T-1}r_t ]$$

平均奖励视角关心长期每一步平均能获得多少收益。

本书主体会以折扣回报为主,因为它是最常见的入门与工程框架。但平均奖励提醒我们:

“长期目标”并不只有一种数学写法。选择哪种目标,本身就是任务建模的一部分。


12. 边界:长期回报不是万能答案

回报 G_t 和目标函数 J(π) 建立了强化学习的数学起点,但它们并没有自动解决所有问题。

首先,奖励必须被定义。一个目标如果无法被准确写进奖励函数,智能体可能优化一个错误代理。下一章将讨论这个问题。

其次,期望回报可能掩盖风险。

假设有两种策略:

  • 策略 A:始终获得 5 分;
  • 策略 B:一半概率获得 20 分,一半概率获得 -10 分。

两者期望相同:

$$\mathbf{E}[G^A]=5$$

$$\mathbf{E}[G^B] =0.5\times20+0.5\times(-10) =5$$

但在医疗、金融或真实机器人系统中,它们显然不一定等价。

这说明期望回报不是价值判断的全部。风险敏感目标、安全约束和多目标优化,可能需要进一步进入系统。

最后,长期回报也不等于长期真实价值。

如果奖励只是代理,累计代理奖励再精确,也可能偏离真实意图。

这正是下一章的主题:

奖励不是目的,而是对目的的一次翻译。


13. 回归全景图(Callback)

本章建立的是全书的第一个坐标轴:目标。

坐标轴 本章回答了什么 尚未解决什么
目标 用折扣累计回报 G_t 和目标函数 J(π) 定义长期收益 奖励是否正确表达真实意图
时间 明确当前动作需要考虑未来奖励 未来奖励如何分配给此前动作
更新 给出最优策略目标 π^*=arg max_π J(π) 如何把目标变成可计算的局部更新
估计 指出目标需要对许多轨迹取期望 如何在有限样本下可靠估计
数据 写出轨迹分布 p_π(τ),说明策略参与生成数据 旧数据何时还能复用
探索 隐含指出策略需要看见不同轨迹 如何主动发现未知路径

本章没有解决强化学习问题。它只是明确了所有算法必须共同服从的起点:不要被眼前奖励迷惑,要判断一个策略会把智能体带向怎样的长期未来。


14. 本章小结

这一章只做了三件事。

第一,我们把单步奖励扩展为长期回报:

$$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k}$$

第二,我们用策略与环境共同生成的轨迹分布描述交互过程:

$$p_\pi(\tau)=\rho_0(s_0)\prod_{t=0}^{T-1} \pi(a_t\mid s_t)P(s_{t+1}\mid s_t,a_t)$$

第三,我们定义了策略优化目标:

$$\pi^*=\arg\max_\pi \mathbf{E}_{\tau \sim \pi}[G_0]$$

接下来,我们必须面对一个更棘手的问题:

如果奖励本身写错了,智能体是否会非常认真地走向错误方向?


第 2 章:奖励不是目的:如何把意图翻译成数字

1. 一个认真完成错误任务的机器人

假设我们要训练一个清洁机器人。

最直接的想法是:每清理掉一块垃圾,就给机器人 +1 分。

训练一段时间后,机器人确实越来越擅长得分。但工程师很快发现一个奇怪现象:机器人开始把已经收集起来的垃圾重新撒到地上,然后再次清理。

它没有偷懒。

恰恰相反,它非常勤奋。它准确理解了系统给出的数字规则,并找到一种高效得分方式。

问题在于,我们真正希望它完成的是:

让房间长期保持整洁。

而我们实际写入系统的奖励却是:

每发生一次清理动作,就增加分数。

这两个目标看起来相近,却并不相同。

当智能体还不够强时,这种差异可能不明显。随着优化能力增强,智能体越来越擅长寻找奖励函数中的漏洞。它会认真、持续、甚至富有创造力地优化我们写下的数字,而不是优化我们没有写下的真实意图。

这就是本章的核心问题:

奖励不是目的。奖励只是我们对目的的一次翻译。


2. 上一章的公式隐藏了什么

上一章定义了策略目标:

$$J(\pi) =\mathbf{E}{\tau \sim \pi} [ \sum{t=0}^{T-1} \gamma^t r_t ]$$

我们希望找到最优策略:

$$\pi^*=\arg\max_\pi J(\pi)$$

这些公式没有错,但它们隐藏了一个前提:

奖励 r_t 已经正确表达了我们真正想要的东西。

现实中,这个前提经常不成立。

更准确地说,人类通常有一个真实意图,但系统只能接收一个可计算奖励。

我们可以将真实意图抽象地写为:

$$U(\tau)$$

其中,U 表示一条轨迹 τ 对人类而言究竟有多好。这里的 U 可以理解为真实效用(utility)。

但在工程系统中,我们通常无法直接计算 U(τ)。于是,只能设计一个奖励函数:

$$R(s_t,a_t,s_{t+1})$$

并令:

$$r_t=R(s_t,a_t,s_{t+1})$$

逐项解释如下:

符号 含义
U(τ) 一条完整轨迹对真实意图的满足程度
R(s_t,a_t,s_{t+1}) 工程上可计算的奖励函数
r_t 当前转移产生的数值奖励
s_t 当前状态
a_t 当前动作
s_{t+1} 动作之后到达的下一状态

真正理想的目标是:

$$\max_\pi \mathbf{E}_{\tau \sim \pi} [U(\tau)]$$

但系统实际优化的往往是:

$$\max_\pi \mathbf{E}{\tau \sim \pi} [ \sum{t=0}^{T-1} \gamma^t R(s_t,a_t,s_{t+1}) ]$$

这两个目标之间存在一道缝隙。

奖励设计的全部困难,都发生在这道缝隙中。


3. 从真实意图到可计算奖励

3.1 为什么不能直接写下“做好”

人类很容易用自然语言表达意图:

  • 让机器人安全、快速地抵达终点;
  • 让推荐系统提供真正有价值的内容;
  • 让游戏智能体赢得比赛;
  • 让语言模型给出正确、有帮助、诚实且表达清晰的回答。

但优化器无法直接处理“安全”“价值”“有帮助”这样的自然语言概念。它需要数字。

于是,工程师必须把复杂意图翻译为可以测量的信号。

以机器人导航为例,一个简单奖励函数可能是:

$$r_t= \begin{cases} +100, & \mathrm{到达终点}\ -10, & \mathrm{发生碰撞}\ -1, & \mathrm{每经过一个时间步} \end{cases}$$

这个奖励设计试图表达三件事:

  1. 到达终点是最重要的;
  2. 碰撞需要避免;
  3. 在安全前提下,越快到达越好。

但每一个数字都带有设计者的判断。

为什么终点奖励是 +100,不是 +20?为什么碰撞是 -10,不是 -200?为什么每一步需要扣 1 分?

这些数字会改变策略。

奖励不是对世界的被动描述,而是在主动塑造智能体将成为什么样子。

3.2 多目标奖励

真实任务通常包含多个目标。

我们经常把奖励写成加权和:

$$r_t = w_1r_t^{(1)} +w_2r_t^{(2)} +\cdots +w_nr_t^{(n)}$$

也可以简写为:

$$r_t = \sum_{i=1}^n w_i r_t^{(i)}$$

这里:

符号 含义
r_t^{(i)} i 个子目标在时刻 t 的奖励
w_i i 个子目标的权重
n 子目标数量
r_t 最终用于训练的总奖励

例如,一个机器人走路任务可能写成:

$$r_t = w_{\mathrm{speed}}r_t^{\mathrm{speed}} -w_{\mathrm{energy}}r_t^{\mathrm{energy}} -w_{\mathrm{fall}}r_t^{\mathrm{fall}}$$

它同时考虑:

  • 前进速度;
  • 能耗;
  • 是否摔倒。

这个公式很常见,也很危险。

如果速度权重太大,机器人可能学会一种摇摇晃晃但冲得很快的步态。如果能耗惩罚太强,它可能宁愿不动。如果摔倒惩罚太弱,它可能不断冒险。

多目标奖励看似只是几个数字相加,实际上是在做价值排序。


4. Goodhart 定律:当指标成为目标

有一句经常被引用的话:

当一个指标成为目标,它就不再是一个好的指标。

这通常被称为 Goodhart 定律。

它并不是说指标没有用,而是提醒我们:

衡量真实目标的代理,一旦被强力优化,就可能与真实目标分离。

我们可以用一个简化关系表达:

$$M(\tau)\approx U(\tau)$$

其中:

符号 含义
U(τ) 真实效用
M(τ) 可测量指标
在普通情况下,指标大致反映真实效用

问题在于,训练不会停留在“普通情况”。优化器会不断寻找能让指标更高的轨迹。

我们最终优化的是:

$$\arg\max_\tau M(\tau)$$

但真正想要的是:

$$\arg\max_\tau U(\tau)$$

二者未必相同:

$$\arg\max_\tau M(\tau)\neq \arg\max_\tau U(\tau)$$

这条不等式值得反复记住。

一个指标在常规范围内与真实目标高度相关,并不意味着在极端优化后仍然可靠。

图 2-1:真实意图、奖励代理与 Reward Hacking

图 2-1:真实意图、奖励代理与 Reward Hacking


5. Reward Hacking:优化器不会替你理解常识

Reward Hacking 可以翻译为“奖励黑客”或“奖励投机”。它指的是:

智能体找到一种提高奖励的方法,但这种方法违背了设计者真正想要的行为。

这里的“黑客”不一定带有主观恶意。

智能体并不是先理解我们的真实意图,再故意违背它。更常见的情况是:系统从一开始就只看得见奖励,而看不见我们没有写进去的常识。

5.1 重复刷分

清洁机器人把垃圾重新撒到地上再清理,是最直观的例子。

如果奖励设计为:

$$r_t= \begin{cases} +1, & \mathrm{清理一块垃圾}\ 0, & \mathrm{其他情况} \end{cases}$$

那么机器人重复制造并清理垃圾,确实能够最大化奖励。

解决方法不是责怪智能体“钻空子”,而是重新审视奖励:我们真正关心的是清洁状态,而不是清洁动作发生的次数。

更合理的信号可能与房间中剩余垃圾数量相关:

$$r_t = N_{\mathrm{trash}}(s_t)-N_{\mathrm{trash}}(s_{t+1})$$

其中:

符号 含义
$$N_{trash}(s_t)$$ 状态 s_t 中仍然存在的垃圾数量
$$N_{\mathrm{trash}}(s_{t+1})$$ 执行动作后剩余的垃圾数量
$$r_t$$ 垃圾真正减少时才获得的奖励

5.2 钻模拟器漏洞

在仿真环境中,智能体可能找到物理引擎的漏洞。

例如,机器人不按预期方式走路,而是利用碰撞检测误差快速向前移动。游戏智能体不完成任务,而是反复触发一个可以刷分的事件。

这类行为说明:

奖励函数与环境实现共同定义了智能体眼中的世界。

只检查奖励公式还不够。模拟器漏洞、终止条件和传感器盲区,也可能成为优化对象。

5.3 大模型中的 Reward Hacking

在语言模型中,奖励投机可能更加隐蔽。

如果 Reward Model 偏好长回答,策略可能学会堆砌内容。如果评价器偏好某种礼貌措辞,模型可能反复使用固定话术。如果验证器只检查最终答案格式,模型可能找到格式层面的捷径。

表面上,奖励在提高;实际质量却没有同步提高。

因此,大模型后训练仍然面临同一个老问题:

代理评价是否真的代表我们想要的能力?


6. Sparse Reward:奖励太少时,智能体学不到方向

奖励函数并不是越克制越好。

假设一个迷宫任务只在抵达终点时给出奖励:

$$r_t= \begin{cases} +1, & \mathrm{抵达终点}\ 0, & \mathrm{其他情况} \end{cases}$$

如果迷宫很大,智能体在训练初期可能几乎从未抵达终点。

于是,它看到的大量轨迹都长这样:

$$(0,0,0,\ldots,0)$$

从这些数据中,智能体很难判断哪个动作稍微更好。

这就是稀疏奖励(sparse reward)问题。

它揭示了奖励设计的另一面:

  • 奖励过于复杂,可能被投机;
  • 奖励过于稀疏,又可能无法提供学习方向。

奖励设计需要在表达真实目标与提供可学习信号之间做平衡。


7. Reward Shaping:为稀疏奖励增加路标

为了帮助智能体学习,我们经常加入额外奖励。这称为 Reward Shaping。

假设原始奖励为:

$$R(s,a,s')$$

加入 shaping 项后:

$$R'(s,a,s')= R(s,a,s')+F(s,a,s')$$

其中:

符号 含义
R 原始奖励
F 额外加入的 shaping 奖励
R' 智能体实际看到的新奖励

例如,在迷宫中,可以根据距离终点是否缩短给予额外分数:

$$F(s_t,a_t,s_{t+1})= d(s_t,\mathrm{goal})-d(s_{t+1},\mathrm{goal})$$

如果机器人更靠近终点,奖励为正;如果远离终点,奖励为负。

这样,即使还没有真正到达终点,智能体也能得到方向提示。

7.1 Reward Shaping 的风险

问题在于,路标也可能改变目的地。

假设迷宫中有一堵墙。最短路线需要先远离终点,再绕过墙壁。如果奖励始终鼓励“每一步都更靠近终点”,智能体可能被困在墙边,不愿意暂时后退。

Reward Shaping 不是免费的。

它可以降低学习难度,也可能改变最优策略。


8. Potential-Based Reward Shaping

有一种经典设计可以在一定条件下避免改变最优策略,称为 Potential-Based Reward Shaping。

定义一个势函数(potential function):

$$\Phi(s)$$

它为每个状态赋予一个“潜在位置”或“启发式进度”。

shaping 项写成:

$$F(s_t,a_t,s_{t+1})= \gamma\Phi(s_{t+1})-\Phi(s_t)$$

新的奖励为:

$$R'(s_t,a_t,s_{t+1})= R(s_t,a_t,s_{t+1})+\gamma\Phi(s_{t+1})-\Phi(s_t)$$

逐项解释:

符号 含义
Φ(s_t) 当前状态的势能或启发式位置
Φ(s_{t+1}) 下一状态的势能
γ 与原问题一致的折扣因子
F 附加 shaping 奖励
R' 加入 shaping 后的新奖励

直觉是:

智能体不是因为停留在某个看似不错的位置反复刷分,而是因为势能发生变化才得到额外奖励。

为什么这种形式特别?

将 shaping 奖励沿轨迹累加:

$$\sum_{t=0}^{T-1} \gamma^t F(s_t,a_t,s_{t+1})$$

代入定义:

$$\sum_{t=0}^{T-1} \gamma^t [ \gamma\Phi(s_{t+1})-\Phi(s_t) ]$$

展开前几项:

-Φ(s₀) + γ Φ(s₁)
-γ Φ(s₁) + γ² Φ(s₂)
-γ² Φ(s₂) + γ³ Φ(s₃)

中间项会成对抵消,最后剩下:

$$-\Phi(s_0)+\gamma^T\Phi(s_T)$$

这种结构称为 telescoping sum,可以理解为“望远镜式抵消”。

在适当条件下,这个额外项不会改变不同策略之间真正的最优排序,只会改变学习过程中的局部信号。

这提醒我们:

好的 Reward Shaping 不是随意多给分,而是尽量在不改变问题本质的前提下,让学习路径更清晰。


9. 奖励设计不是 Loss 设计

奖励函数和损失函数容易被混淆。

它们都可能出现在训练代码中,也都影响模型更新。但它们位于不同层次。

概念 回答的问题
奖励 r_t 环境如何评价一次状态转移或一条轨迹?
回报 G_t 从当前时刻开始,未来奖励累计起来有多少?
价值 VQ 在尚未走完未来时,如何估计长期回报?
损失函数 L 如何把目标、估计和约束变成一次参数更新?

奖励属于“目标问题”。

损失属于“更新问题”。

它们相互连接,但不是同一件事。

例如,机器人导航中,终点奖励、碰撞惩罚和时间惩罚属于奖励设计;而用于训练价值网络的 TD Loss 属于损失函数设计。

到了大模型后训练中,这一区分更加重要:

  • 人类偏好或规则验证器参与定义奖励;
  • Reward Model 估计偏好奖励;
  • PPO、DPO 或 GRPO 再决定如何形成更新。

如果不分层,许多概念会搅在一起。


10. 当奖励来自人类偏好

在大模型对齐中,我们很难为“一个回答有多好”写出完全准确的规则。

一种常见办法是让人类比较两个回答:

  • 回答 y_w 更好;
  • 回答 y_l 较差。

其中,w 代表 winner,l 代表 loser。

我们可以训练一个 Reward Model:

$$r_\phi(x,y)$$

它接收提示词 x 和回答 y,输出一个分数。

常见偏好模型写成:

$$P(y_w\succ y_l\mid x)= \sigma ( r_\phi(x,y_w)-r_\phi(x,y_l))$$

逐项解释如下:

符号 含义
x 用户提示词
y_w 人类更偏好的回答
y_l 人类较不偏好的回答
r_φ(x,y) Reward Model 对回答的评分
σ Sigmoid 函数,将任意实数映射到 01 之间
P(y_w ≻ y_l | x) 在提示词 x 下,回答 y_w 优于 y_l 的概率

如果:

$$r_\phi(x,y_w)-r_\phi(x,y_l)$$

很大,那么模型认为 y_w 更可能胜出。

这使“偏好”变成了可计算信号。

但它没有彻底解决奖励问题。

Reward Model 仍然只是代理。它依赖有限数据,可能学到表面相关性,也可能在策略分布发生变化后失去可靠性。

这一问题会在第 21 章 RLHF 中详细展开。


11. Verifier:可验证奖励为什么重要

并非所有任务都只能依赖模糊偏好。

有些任务存在相对明确的验证方式:

  • 数学题答案是否正确;
  • 程序是否通过测试;
  • 形式证明是否满足检查器;
  • 游戏规则是否满足;
  • 工具调用结果是否正确。

此时,可以使用 Verifier 产生奖励。

简化写法是:

$$r(\tau) = \begin{cases} 1, & \mathrm{验证通过}\ 0, & \mathrm{验证失败} \end{cases}$$

可验证奖励有明显优势:

  • 标准更加明确;
  • 自动化程度更高;
  • 不必完全依赖人工偏好;
  • 可以扩展到大量样本。

但它也有边界。

验证器只检查自己能够检查的部分。如果评价标准过窄,模型仍然可能学会“通过检查器”,而不是完成更宽泛的真实目标。

测试用例不足的代码生成,就是一个熟悉的例子:程序通过了现有测试,不代表它在所有情况下都正确。

Verifier 让奖励更可靠,却没有取消 Goodhart 定律。


12. 边界:奖励问题不可能被一次性解决

奖励设计没有一个适用于所有任务的万能公式。

原因不是工程师不够聪明,而是很多真实意图本身就难以完全形式化。

奖励设计至少要面对四种张力:

  1. 准确性与可计算性:越接近真实价值,往往越难测量;
  2. 稀疏性与引导性:奖励越少,越不容易误导,但也越难学习;
  3. 局部信号与长期目标:局部奖励越密集,越可能把智能体带向局部最优;
  4. 自动评价与人类判断:自动评价扩展性更好,人类判断覆盖面更广,但成本更高,也可能不一致。

真正成熟的系统通常不会只依赖一种奖励来源。

它可能组合:

  • 环境反馈;
  • 规则约束;
  • 人类偏好;
  • Reward Model;
  • Verifier;
  • 安全约束;
  • 人工审核。

问题并没有消失,只是被分配到不同组件中。


13. 回归全景图(Callback)

本章进一步展开了第一个坐标轴:目标。

坐标轴 本章回答了什么 尚未解决什么
目标 奖励 R 是真实意图 U 的代理;需要警惕 Goodhart 定律与 Reward Hacking 如何验证代理在分布变化后仍然可靠
时间 奖励可能稀疏、延迟,Reward Shaping 可以增加局部路标 未来奖励如何分配给此前动作
更新 区分了奖励设计与损失设计 奖励如何进入具体训练损失
估计 Reward Model 可以估计人类偏好,但自身也会犯错 如何控制偏好估计误差
数据 偏好数据和验证数据决定了代理奖励能够覆盖哪些行为 分布外行为如何评价
探索 更强的优化与探索可能更快暴露奖励漏洞 如何在安全范围内发现漏洞并修正奖励

本章没有找到完美奖励。它建立了一个更重要的判断:当一个智能体表现异常时,不要只问“算法哪里错了”,还要问“我们究竟奖励了什么”。


14. 本章小结

这一章从一个清洁机器人的刷分行为出发,讨论了奖励与真实意图之间的裂缝。

理想目标是:

$$\max_\pi \mathbf{E}_{\tau \sim \pi} [U(\tau)]$$

实际系统通常优化:

$$\max_\pi E_{\tau \sim \pi} [ \sum_{t=0}^{T-1} \gamma^t R(s_t,a_t,s_{t+1}) ]$$

奖励设计的任务,是让可计算代理 R 尽可能接近真实意图 U

但代理一旦被强力优化,就可能与真实目标分离:

$$\arg\max_\tau M(\tau)\neq \arg\max_\tau U(\tau)$$

Reward Shaping 可以帮助稀疏奖励任务学习。Potential-Based Reward Shaping 使用:

$$F(s_t,a_t,s_{t+1})= \gamma\Phi(s_{t+1})-\Phi(s_t)$$

在适当条件下,它能够提供路标,同时尽量不改变最优策略。

下一章,我们进入第二个核心问题:

如果奖励发生在未来,未来究竟如何返回现在?


第二部分:未来如何返回现在

第 3 章:Bellman 方程:用未来重新定义现在

1. 还没有走完,怎样判断现在

上一章留下了一个问题。

如果奖励发生在未来,智能体在当前时刻怎样判断一个状态好不好?

想象一个站在岔路口的人。

他还没有真正走完每一条路,却必须现在做出选择。某条路眼前平坦,稍后却通向拥堵;另一条路开始绕行,之后却更快抵达终点。

如果每次判断都必须亲自把所有道路走到尽头,再回来重新选择,学习会非常低效。

强化学习需要一种更聪明的方法:

用对未来的判断,帮助评价现在。

Bellman 方程正是这件事的数学表达。

它不是某个特定算法的技巧,而是强化学习中最重要的递归结构之一。TD、Q-Learning、DQN、Actor-Critic、PPO 中的 Critic,甚至许多大模型后训练方法背后的价值估计,都与它有关。


2. 从回报的递归关系开始

上一章定义了折扣回报:

$$G_t = r_t +\gamma r_{t+1} +\gamma^2r_{t+2} +\gamma^3r_{t+3} +\cdots$$

将第一项单独拿出来:

$$G_t = r_t +\gamma ( r_{t+1} +\gamma r_{t+2} +\gamma^2r_{t+3} +\cdots )$$

括号中的内容是什么?

它恰好是从下一时刻开始计算的回报:

$$G_{t+1} = r_{t+1} +\gamma r_{t+2} +\gamma^2r_{t+3} +\cdots$$

因此:

$$G_t=r_t+\gamma G_{t+1}$$

这是本章第一条关键公式。

它看起来朴素,却包含了 Bellman 思想的核心:

从现在开始的长期回报,等于眼前奖励,加上折扣后的未来回报。

逐项解释:

符号 含义
G_t 从时刻 t 开始计算的长期回报
r_t 当前一步得到的即时奖励
G_{t+1} 从下一时刻开始计算的长期回报
γ 折扣因子,控制未来回报的权重

这条公式把一段很长的未来,折叠成了两部分:

  1. 眼前看得见的奖励;
  2. 下一步之后的全部未来。

未来没有消失,只是被压缩了。


3. 状态价值:站在这里,未来大概有多好

实际学习时,智能体通常不知道一条尚未走完的轨迹最终会得到多少回报。

但它可以估计:

在当前状态下,按照某种策略继续走,平均能够获得多少长期回报?

这就是状态价值函数(state-value function)。

对策略 π,状态价值定义为:

$$V^\pi(s) = \mathbf{E}_\pi [ G_t \mid S_t=s ]$$

读作:

在时刻 t 处于状态 s 的条件下,如果之后遵循策略 π,未来回报 G_t 的期望是多少?

逐项解释:

符号 含义
V^π(s) 在策略 π 下,状态 s 的价值
S_t=s 当前状态随机变量 S_t 取值为 s
G_t 从当前时刻开始的累计回报
E_π 在策略 π 与环境随机性下取期望
| 条件符号,读作“在给定……的条件下”

为什么需要期望?

因为未来通常不唯一。

同一个状态下,策略可能随机选择不同动作;即使动作相同,环境也可能随机转移到不同结果。价值函数不是预测唯一结局,而是在许多可能未来上取平均。

3.1 一个直观例子

假设一个机器人站在仓库入口。

  • 80% 的概率顺利通过走廊,最终获得 10 分;
  • 20% 的概率遇到临时障碍,只获得 2 分。

那么入口状态的价值可以粗略估计为:

$$V^\pi(s) = 0.8\times10 +0.2\times2 =8.4$$

状态价值不是“必然会拿到多少分”,而是“从这里出发,平均值得期待多少分”。


4. 动作价值:在这里做这件事,未来大概有多好

只知道状态价值还不够。

智能体做决策时,需要比较不同动作。

动作价值函数(action-value function)定义为:

$$Q^\pi(s,a) = \mathbf{E}_\pi [ G_t \mid S_t=s,; A_t=a ]$$

它表示:

在状态 s 下先采取动作 a,之后继续遵循策略 π,未来平均能够获得多少回报?

逐项解释:

符号 含义
Q^π(s,a) 在策略 π 下,状态 s 中动作 a 的价值
S_t=s 当前处于状态 s
A_t=a 当前明确采取动作 a
G_t 当前动作之后能够获得的累计回报

状态价值与动作价值的差别可以用一句话说明:

  • V^π(s) 问:站在这里,未来总体怎么样?
  • Q^π(s,a) 问:站在这里,如果先做这件事,未来怎么样?

如果策略是随机策略,那么状态价值可以看作动作价值的加权平均:

$$V^\pi(s)= \sum_a \pi(a\mid s)Q^\pi(s,a)$$

这里:

符号 含义
Σ_a 对所有可能动作求和
π(a|s) 在状态 s 下选择动作 a 的概率
Q^π(s,a) 采取动作 a 后的长期价值

如果某个动作出现概率更高,它对状态价值的影响就更大。


5. Bellman 期望方程:未来价值返回现在

现在将两条定义连接起来。

我们已经知道:

$$G_t=r_t+\gamma G_{t+1}$$

状态价值定义为:

$$V^\pi(s) = \mathbf{E}_\pi [ G_t \mid S_t=s ]$$

将递归形式代入:

$$V^\pi(s) = E_\pi [ r_t + \gamma G_{t+1} \mid S_t = s ]$$

由于:

$$E_\pi [ G_{t+1} \mid S_{t+1} = s' ] = V^\pi(s')$$

可以得到:

$$V^\pi(s) = E_{a \sim \pi,, s' \sim P} [ r + \gamma V^\pi(s') \mid s ]$$

这就是 Bellman 期望方程的一种写法。

它表达:

当前状态的价值,等于当前可能得到的奖励,加上折扣后的下一状态价值,再对所有可能动作和环境转移取平均。

图 3-1:Bellman 方程的递归结构

图 3-1:Bellman 方程的递归结构

5.1 将期望完全展开

如果希望看得更具体,可以将期望展开为求和:

$$V^\pi(s)= \sum_a \pi(a\mid s)\sum_{s',r} p(s',r\mid s,a)[ r+\gamma V^\pi(s') ]$$

逐项解释:

符号 含义
Σ_a 枚举状态 s 下所有可能动作
π(a|s) 策略选择动作 a 的概率
Σ_{s',r} 枚举所有可能的下一状态与奖励
p(s',r|s,a) 在状态 s 下执行动作 a 后,得到奖励 r 并进入状态 s' 的概率
r+γV^π(s') 当前奖励加上折扣后的下一状态价值

这条公式可以从左到右读:

  1. 站在状态 s
  2. 根据策略选择动作 a
  3. 环境可能产生不同奖励 r 和下一状态 s'
  4. 每一种可能未来都有自己的概率;
  5. 对所有可能未来取加权平均。

6. 手算一次:从终点倒推起点

考虑一个极简任务:

s_0 → s_1 → terminal

在状态 s_1,智能体只有一个动作。执行后到达终点,奖励为 10

因此:

$$V^\pi(s_1) = 10+\gamma\times0 =10$$

为什么终点价值是 0

因为任务已经结束,后面不再有奖励。

现在回到状态 s_0。从 s_0s_1 的即时奖励为 1。假设:

$$\gamma=0.9$$

那么:

$$\begin{aligned} V^\pi(s_0)&= 1+0.9V^\pi(s_1)\ &= 1+0.9\times10\ &= 10 \end{aligned}$$

这个过程很像从终点向起点倒推。

终点告诉 s_1 自己有多好;s_1 的价值再返回 s_0,帮助我们判断更早的状态。

未来就这样进入了现在。

6.1 加入随机性

假设从 s_0 出发,有两种可能:

  • 80% 概率进入 s_1,即时奖励为 1
  • 20% 概率遇到故障并终止,即时奖励为 -2

那么:

$$\begin{aligned} V^\pi(s_0)&= 0.8 [ 1+0.9V^\pi(s_1) ] +0.2 [ -2+0.9\times0 ]\ &= 0.8\times10 -0.4\ &= 7.6 \end{aligned}$$

价值函数没有假装世界确定不变。

它把不同未来按概率加权,得到平均判断。


7. 动作价值的 Bellman 方程

动作价值也具有递归结构。

在状态 s 下先采取动作 a,得到奖励 r,进入下一状态 s'。之后,策略继续选择后续动作 a'

因此:

$$Q^\pi(s,a)= \mathbf{E} [ r+\gamma Q^\pi(s',a') ]$$

其中:

$$a' \sim \pi(\cdot\mid s')$$

将期望展开:

$$Q^\pi(s,a)= \sum_{s',r} p(s',r\mid s,a)[ r +\gamma \sum_{a'} \pi(a'\mid s')Q^\pi(s',a') ]$$

这条公式从左到右表达:

  1. 当前明确采取动作 a
  2. 环境给出奖励 r 并进入状态 s'
  3. 后续动作 a' 仍然由策略 π 决定;
  4. 当前动作价值等于当前奖励加上后续动作价值的平均。

8. 从“评价一个策略”到“寻找最优策略”

到目前为止,我们一直在讨论:

$$V^\pi(s)$$

和:

$$Q^\pi(s,a)$$

它们都带有上标 π,表示:

如果以后继续遵循策略 π,当前状态或动作有多好?

但强化学习通常不只想评价一个已有策略,还希望找到更好的策略。

因此,定义最优状态价值:

$$V^*(s)= \max_\pi V^\pi(s)$$

它表示:

从状态 s 出发,在所有可能策略中,能够达到的最高期望回报是多少?

类似地,最优动作价值定义为:

$$Q^*(s,a)= \max_\pi Q^\pi(s,a)$$

它表示:

在状态 s 下先做动作 a,随后采用最佳策略,最多能够获得多少期望回报?


9. Bellman 最优方程

如果已经知道最优动作价值:

$$Q^*(s,a)$$

那么在下一状态 s',智能体应该选择价值最高的动作:

$$\max_{a'}Q^*(s',a')$$

于是得到 Bellman 最优方程:

$$Q^(s,a)= \mathbf{E} [ r +\gamma \max_{a'} Q^(s',a') ]$$

逐项解释:

符号 含义
Q^*(s,a) 当前状态下采取动作 a 的最优长期价值
r 当前动作带来的即时奖励
s' 下一状态
a' 下一状态中可选择的动作
max_{a'} Q^*(s',a') 下一状态中最有价值的动作
γ 未来价值的折扣

对于状态价值:

$$V^(s)= \max_a \mathbf{E} [ r+\gamma V^(s') \mid s,a ]$$

这两条公式的直觉一致:

当前最优价值,等于选择一个动作后得到的即时奖励,加上下一状态能够实现的最优未来价值。


10. 手算一次:为什么最优动作可能不是即时奖励最高的动作

假设在状态 s_0 有两个动作:

动作 A:立刻得分

  • 当前奖励:5
  • 执行后终止

因此:

$$Q^*(s_0,A)=5$$

动作 B:先进入新状态

  • 当前奖励:1
  • 进入状态 s_1
  • 已知:

$$V^*(s_1)=10$$

假设:

$$\gamma=0.9$$

那么:

$$Q^*(s_0,B) = 1 + 0.9 V^*(s_1) = 1 + 0.9 \times 10 = 10$$

虽然:

$$5>1$$

但:

$$Q^\ast(s_0,B) \gt Q^\ast(s_0,A)$$

因此,最优动作是 B

Bellman 方程让智能体不再只看眼前奖励,而是把未来价值纳入当前判断。


11. 固定点:递归不是无限兜圈

看到 Bellman 方程,读者可能会产生一个疑问:

如果 V(s) 依赖 V(s'),而 V(s') 又依赖更后面的价值,这不是永远算不完吗?

关键在于,Bellman 方程定义了一个固定点(fixed point)。

我们可以定义一个 Bellman 算子:

$$(\mathcal{T}^\pi V)(s)= \mathbf{E}_{a \sim \pi,;s'\sim P} [ r+\gamma V(s') \mid s ]$$

这个算子接收一个价值函数 V,输出一个新的价值函数。

真正的策略价值满足:

$$V^\pi = T V^\pi$$

这表示:

将真实价值函数放进 Bellman 算子,输出仍然是它自己。

这就是固定点。

11.1 从错误猜测开始也可以

假设一开始完全不知道价值,可以初始化:

$$V_0(s)=0$$

然后反复更新:

$$V_{k+1} = \mathcal{T}^\pi V_k$$

这里:

符号 含义
V_k k 轮价值估计
T^π 按照策略 π 进行一次 Bellman 更新
V_{k+1} 更新后的新价值估计

如果条件合适,反复应用 Bellman 更新,价值估计会逐渐接近真实价值。

11.2 折扣为什么帮助收敛

0≤γ<1 时,Bellman 算子具有压缩性质。直观写法是:

$$\lVert T^{\pi} V - T^{\pi} W \rVert_{\infty} \leq \gamma \lVert V - W \rVert_{\infty}$$

逐项解释:

符号 含义
VW 两个不同的价值估计
T^πVT^πW 分别进行一次 Bellman 更新后的结果
||·||_∞ 最大范数,表示所有状态中最大的估计差异
γ 折扣因子

这条不等式表达:

更新之后,两个价值估计之间的最大差距,最多缩小到原来的 γ 倍。

当:

$$\gamma<1$$

误差会逐渐收缩。

这也是折扣因子另一层重要作用:它不仅控制时间视野,也帮助递归关系稳定下来。

本书不会在这里展开完整证明。此时最重要的是建立固定点直觉:

Bellman 方程不是让价值在无限递归中打转,而是提供一个可以不断逼近的自洽目标。


12. Dynamic Programming:知道环境模型时怎样求价值

如果我们知道完整环境模型:

$$p(s',r\mid s,a)$$

就可以直接使用 Bellman 方程反复更新价值。

这类方法属于动态规划(Dynamic Programming,DP)。

12.1 Policy Evaluation

给定策略 π,反复计算:

$$V_{k+1}(s)= \sum_a \pi(a\mid s)\sum_{s',r} p(s',r\mid s,a)[ r+\gamma V_k(s') ]$$

直到价值基本稳定。

这个过程称为策略评价(Policy Evaluation)。

它回答:

如果继续采用当前策略,每个状态大概有多好?

12.2 Policy Improvement

得到动作价值后,可以在每个状态选择更好的动作:

$$\pi'(s)= \arg\max_a Q^\pi(s,a)$$

这称为策略改进(Policy Improvement)。

它回答:

既然已经知道动作价值,是否可以少做一些差动作,多做一些好动作?

12.3 Policy Iteration

将两步交替进行:

评价当前策略 → 根据价值改进策略 → 再评价新策略 → 再改进

这称为策略迭代(Policy Iteration)。

12.4 Value Iteration

也可以直接反复使用 Bellman 最优更新:

$$V_{k+1}(s)= \max_a \sum_{s',r} p(s',r\mid s,a)[ r+\gamma V_k(s') ]$$

这称为价值迭代(Value Iteration)。

动态规划向我们展示了 Bellman 方程的力量。

但它也依赖一个强条件:完整环境模型必须已知。


13. 现实中的困难:我们通常拿不到完整模型

在现实问题中,我们通常不知道:

$$p(s',r\mid s,a)$$

机器人并不知道每个动作会以多大概率导致每种姿态;推荐系统并不知道每位用户看到某条内容后会做什么;语言模型也无法枚举每个 Token 之后所有可能序列及其评价。

我们拿到的通常只是一次次采样:

$$(s_t,a_t,r_t,s_{t+1})$$

也就是说,我们没有完整地图,只有走过道路后留下的脚印。

这会把问题推向下一章:

当完整未来不可见,我们如何把有限反馈分配给此前动作?

这就是信用分配问题。

再下一章,我们会进一步追问:

能否不用等待整条轨迹结束,就用下一状态的价值估计更新当前价值?

这就是自举,也是 TD Learning 的核心。


14. Bellman 方程的边界

Bellman 方程非常重要,但不能被神化。

14.1 它依赖状态表达

Bellman 递归通常建立在 Markov 假设上:

当前状态已经包含了预测未来所需的有效信息。

如果状态遗漏了重要历史,价值估计就可能不准确。

例如,在部分可观测环境中,机器人看到的当前画面未必足以判断真实位置;在多轮对话中,截断上下文可能丢失关键信息。

此时,需要更丰富的状态表示、记忆机制或 POMDP 框架。

14.2 它没有自动解决奖励问题

Bellman 方程会忠实传播奖励。

如果奖励设计错误,它也会忠实传播错误目标。

递归关系解决的是“未来如何返回现在”,不是“真正应该追求什么”。

14.3 它没有自动解决估计误差

当完整模型未知,我们会使用采样和函数逼近估计 Bellman 目标。

一旦估计有误,误差也可能沿递归关系传播。

Bellman 方程既提供了学习路径,也打开了误差传播的通道。


15. 回归全景图(Callback)

坐标轴 Bellman 方程如何进入全景图 尚未解决什么
目标 将长期回报保留在递归关系中 奖励是否正确表达真实意图
时间 当前奖励 + 折扣后的未来价值 让未来返回现在 延迟奖励如何在有限样本中可靠传播
更新 提供可以反复迭代的自洽关系与固定点 没有完整模型时如何形成可训练更新
估计 定义 V^πQ^πV*Q* 函数逼近和采样会带来什么误差
数据 动态规划假设能够访问完整环境模型 现实中通常只能观察采样转移
探索 Bellman 方程本身不负责探索 智能体如何发现未访问状态

Bellman 方程没有神奇地解决强化学习。它完成了一件更基础的事:将一个跨越整条轨迹的长期目标,折叠成可以逐步向前传递的递归关系。


16. 本章小结

本章从回报的递归关系开始:

$$G_t=r_t+\gamma G_{t+1}$$

定义了状态价值:

$$V^\pi(s) = \mathbf{E}_\pi [ G_t \mid S_t=s ]$$

定义了动作价值:

$$Q^\pi(s,a) = \mathbf{E}_\pi [ G_t \mid S_t=s,; A_t=a ]$$

并得到 Bellman 期望方程:

$$V^\pi(s)= \mathbf{E} [ r+\gamma V^\pi(s') ]$$

以及 Bellman 最优方程:

$$Q^(s,a)= \mathbf{E} [ r +\gamma \max_{a'} Q^(s',a') ]$$

这些公式建立了强化学习最重要的递归结构:

当前价值来自当前奖励,也来自对未来的判断。

下一章继续追问:

当最终结果姗姗来迟时,究竟应该把功劳和责任分给哪些动作?


第 4 章:信用分配:谁应当为结局负责

1. 赢下一盘棋,究竟是哪一步走对了

一盘棋结束了。

智能体赢得比赛,得到奖励:

$$+1$$

此前几十步落子,大多没有即时奖励:

$$0,0,0,\ldots,0,+1$$

现在的问题是:最后的胜利应该归功于哪一步?

也许是最后一步将军。也许是中盘的一次交换。也许是更早之前看似平淡的一步,为后续进攻保留了空间。

如果所有动作都得到同样赞扬,智能体很难真正学会什么。如果只奖励最后一步,又会忽略通往胜利的漫长路径。

这个问题称为信用分配(credit assignment)。

信用分配中的“信用”不只是表扬,也包括责任。一次失败发生后,哪些动作应该被减少?哪些动作虽然出现在失败轨迹中,却其实是正确选择?

这不仅是棋类问题。

  • 机器人摔倒前可能已经连续失衡了十几步;
  • 推荐系统造成用户流失,原因可能来自更早的一系列内容展示;
  • 语言模型最终答错数学题,错误可能出现在中间某一步推理;
  • 一个长回答被人类判为低质量,问题可能来自事实错误、结构混乱或语气不当。

强化学习真正困难的部分,往往不是计算梯度,而是回答:

迟到的结果,究竟应该如何分配给此前发生的动作?


2. 三种让学习变难的反馈

信用分配之所以困难,通常因为反馈同时具有三种特点。

2.1 延迟

动作发生后,结果可能很久才出现。

例如,下棋时只有终局胜负;语言模型回答完成后,评价器才给出总分。

如果动作 a_t 的后果在 t+n 时刻才显现,智能体必须跨越时间建立联系。

2.2 稀疏

许多时间步没有奖励。

一条轨迹可能是:

$$(0,0,0,0,0,1)$$

从局部看,前五步没有任何差别。但没有前五步,最后的奖励也不会出现。

2.3 噪声

即使采取同一个动作,结果也可能不同。

环境随机性、其他智能体、人类偏好差异、采样温度和评价器误差,都会使反馈带有噪声。

因此,一次成功不一定证明所有动作都好;一次失败也不一定证明所有动作都坏。


3. Monte Carlo:等结局出现,再回头结算

最直接的办法是等待轨迹结束。

假设一条轨迹为:

$$\tau=(s_0,a_0,r_0,s_1,a_1,r_1,\ldots,s_T)$$

从时刻 t 开始的回报为:

$$G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

在 Monte Carlo 方法中,我们等到整条轨迹完成,再用实际观察到的 G_t 更新此前状态或动作的价值估计。

状态价值更新可以写成:

$$V(s_t)\leftarrow V(s_t)+\alpha [ G_t-V(s_t) ]$$

动作价值更新可以写成:

$$Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha [ G_t-Q(s_t,a_t) ]$$

逐项解释:

符号 含义
V(s_t) 当前对状态 s_t 的价值估计
Q(s_t,a_t) 当前对动作 (s_t,a_t) 的价值估计
G_t 轨迹结束后计算出的实际回报
α 学习率,控制这次经验对旧估计的影响
用右侧结果更新左侧数值

括号中的:

$$G_t-V(s_t)$$

表示真实观察回报与旧价值估计之间的差距。

如果实际结果比预期好,价值上调;如果实际结果比预期差,价值下调。

3.1 手算一次

假设一条三步轨迹的奖励为:

$$(r_0,r_1,r_2)=(0,0,10)$$

并且:

$$\gamma=0.9$$

那么:

$$G_2=10$$

$$G_1=0+0.9\times10=9$$

$$G_0=0+0.9\times0+0.9^2\times10=8.1$$

虽然前两步即时奖励都是 0,但 Monte Carlo 回报仍然把终点奖励向前传播:

时刻 即时奖励 从该时刻开始的回报
t=0 0 8.1
t=1 0 9
t=2 10 10

这是一种最朴素的信用分配。

越靠近终点,奖励折扣越少;越早的动作,得到的信用越弱。


4. Monte Carlo 的优点与代价

Monte Carlo 方法有一个重要优点:

它使用真正观察到的轨迹回报,不需要猜测尚未发生的未来。

但它也有明显代价。

4.1 必须等待终局

如果轨迹很长,就必须等很久。

在下棋中,必须等比赛结束;在语言模型中,通常必须等回答生成完成;在持续运行的系统中,轨迹甚至可能没有天然终点。

4.2 方差可能很大

假设从同一个状态出发,环境有较强随机性。不同轨迹可能得到:

$$G_t^{(1)}=20$$

$$G_t^{(2)}=-5$$

$$G_t^{(3)}=8$$

同一个状态对应的回报波动很大。

Monte Carlo 使用完整轨迹,轨迹中所有随机性都会进入估计结果。它通常偏差较小,但方差较大。

4.3 一次结局会影响很多动作

如果一条长轨迹最后失败,前面所有动作都可能被负回报影响。

但其中一些动作未必错误。它们只是和后面的错误出现在同一条轨迹中。

Monte Carlo 能够传播信用,却不等于完成了精细归因。


5. 信用分配不等于因果解释

这一点值得单独强调。

如果某个动作出现在高回报轨迹中,强化学习可能提高它的价值估计。但这并不自动证明:

这个动作是高回报的真正原因。

在复杂环境中,动作、状态和结果之间可能存在混杂因素。

例如:

  • 棋局中,一步进攻出现在胜利轨迹里,但真正关键的是更早的布局;
  • 推荐系统中,用户点击某类内容,可能因为内容质量,也可能因为展示位置;
  • 语言模型回答获得高分,可能因为事实正确,也可能因为 Reward Model 偏好某种表面风格。

经典 RL 的信用分配主要回答:

哪些动作应该在学习中得到更多或更少权重?

它不一定提供完整的因果解释。

这是理解 Reward Hacking、偏好模型偏差和分布外失效的重要前提。


6. Baseline:不要只问“得了多少分”

假设一个动作最终获得回报:

$$G_t=8$$

这是否说明它很好?

不一定。

如果当前状态下,其他动作平均只能获得 2 分,那么 8 分确实很好。如果其他动作平均能够获得 12 分,那么 8 分反而较差。

因此,评价动作时,仅看绝对回报并不够。还需要比较:

这个动作比当前状态下的平均水平好多少?

一种常见写法是减去 baseline:

$$G_t-b(s_t)$$

其中:

符号 含义
G_t 当前动作之后观察到的回报
b(s_t) 当前状态下的基准水平
G_t-b(s_t) 相对于基准的超额表现

最常见的 baseline 是状态价值:

$$b(s_t)=V(s_t)$$

于是:

$$G_t-V(s_t)$$

表示:

实际结果比站在当前状态下通常能够期待的结果好多少?

这种“相对评价”会在策略梯度、Actor-Critic、GAE、PPO 和 GRPO 中反复出现。


7. Advantage:一个动作比平均水平好多少

将“相对好坏”写成函数,就得到 Advantage Function,通常翻译为优势函数。

定义:

$$A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)$$

逐项解释:

符号 含义
Q^π(s,a) 在状态 s 下采取动作 a 的长期价值
V^π(s) 处于状态 s 时,按照策略 π 行动的平均长期价值
A^π(s,a) 动作 a 相对当前平均水平的优势

如果:

$$A^\pi(s,a)>0$$

说明动作 a 比平均水平更好。

如果:

$$A^\pi(s,a)<0$$

说明动作 a 比平均水平更差。

如果:

$$A^\pi(s,a)=0$$

说明它大致符合当前策略的平均水平。

7.1 手算一次

假设在状态 s 下:

$$V^\pi(s)=5$$

两个动作的价值分别为:

$$Q^\pi(s,a_1)=8$$

$$Q^\pi(s,a_2)=3$$

那么:

$$A^\pi(s,a_1)=8-5=3$$

$$A^\pi(s,a_2)=3-5=-2$$

动作 a_1 应该被鼓励,动作 a_2 应该被抑制。

优势函数让信用分配更加精细:

不只是问结果好不好,而是问这个动作是否比当前状态下通常会做的事情更好。


8. Critic:一个学习出来的信用分配器

在 Actor-Critic 架构中:

  • Actor 负责选择动作;
  • Critic 负责评价状态或动作。

Critic 常常估计:

$$V^\pi(s)$$

或:

$$Q^\pi(s,a)$$

它的作用不是替代最终奖励,而是帮助智能体更快判断:

当前这一步究竟比平均水平好多少?

从信用分配角度看,Critic 可以理解为一个学习出来的中间评价器。

终点奖励可能很迟,但 Critic 尝试在每一个状态给出估计。Actor 不必只等最终结局,而可以根据这些中间判断调整策略。

这会提高效率,也会引入新的风险:

如果 Critic 判断错误,Actor 会被错误信用引导。

第 5 章将讨论 Critic 为什么能够提前评价,以及自举如何让估计更高效,也更危险。


9. 长序列中的信用分配

信用分配在短轨迹中已经不简单,在长序列中更难。

9.1 机器人控制

机器人摔倒可能不是最后一步突然出错,而是更早之前重心逐渐偏移。

如果只处罚摔倒前的最后一个动作,学习信号可能过于局部。

9.2 推荐系统

用户离开平台,原因可能不是最后一条内容,而是一系列低质量推荐累积造成的疲劳。

如果只把责任归给最后一次展示,系统会误判。

9.3 语言模型

语言模型生成一个回答:

$$y=(y_1,y_2,\ldots,y_T)$$

其中,每个 y_t 是一个 Token。

如果评价器只在回答结束后给出一个总分:

$$R(y)$$

那么中间每个 Token 如何获得信用?

例如,一个数学推理回答最终错误:

  • 可能是第一个公式抄错;
  • 可能是中间一步符号变化错误;
  • 可能是最终计算错误;
  • 也可能是推理正确,但输出格式没有通过验证器。

序列级奖励无法自动告诉我们错误发生在哪里。


10. Outcome Reward 与 Process Reward

在长序列任务中,可以区分两种奖励。

10.1 Outcome Reward

Outcome Reward 只评价最终结果。

例如:

$$R_{\mathrm{outcome}}(y) = \begin{cases} 1, & \mathrm{最终答案正确}\ 0, & \mathrm{最终答案错误} \end{cases}$$

优点:

  • 标准明确;
  • 自动验证相对容易;
  • 不需要标注每一步。

缺点:

  • 奖励稀疏;
  • 很难判断中间步骤;
  • 错误信用可能传播给整段序列。

10.2 Process Reward

Process Reward 尝试评价中间步骤。

假设一个推理过程包含:

$$(z_1,z_2,\ldots,z_K)$$

可以为每一步给出奖励:

$$r_k^{\mathrm{process}}$$

总奖励可以写成:

$$R_{\mathrm{process}} = \sum_{k=1}^{K} w_k r_k^{\mathrm{process}}$$

其中:

符号 含义
z_k k 个中间推理步骤
r_k^{process} 对该步骤的评价
w_k 不同步骤的权重
R_process 聚合后的过程奖励

优点:

  • 信号更密集;
  • 更容易定位错误;
  • 可能提高长推理任务的训练效率。

缺点:

  • 标注成本更高;
  • 中间步骤未必容易客观评价;
  • 错误过程规范可能抑制有效但非典型的推理路径。

Outcome Reward 与 Process Reward 不是谁完全取代谁,而是稀疏但可靠的结果评价,与密集但更难设计的过程评价之间的取舍。


11. 折扣如何影响信用传播

回报定义为:

$$G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

如果奖励发生在很远的未来,它对早期动作的影响会乘上:

$$\gamma^k$$

假设:

$$\gamma=0.9$$

十步之后的奖励权重是:

$$0.9^{10}\approx0.349$$

一百步之后:

$$0.9^{100}\approx0.000027$$

这意味着,即使终点奖励很大,传播到很早动作时也可能已经非常微弱。

较大的 γ 能够保留更长时间的信用,但也会引入更长的估计链条和更高方差。

信用分配与估计稳定性从来不是彼此独立的问题。


12. 边界:完美信用分配通常不可得

我们很容易希望算法能够准确回答:

最终结果中,每一步动作究竟贡献了多少?

但现实中,这个问题通常没有简单答案。

原因包括:

  1. 动作之间存在组合效应;
  2. 同一个动作在不同上下文中作用不同;
  3. 环境包含随机性;
  4. 状态表示可能遗漏信息;
  5. 奖励本身可能只是代理;
  6. 评价器也可能犯错。

强化学习中的信用分配通常不是恢复唯一真实答案,而是构造足够有用的学习信号。

这个信号需要在准确性、成本、方差与可计算性之间取舍。

下一章的自举,正是这种取舍的代表:

不再等待完整结局,而是用自己对下一步的估计,提前更新当前判断。


13. 回归全景图(Callback)

坐标轴 信用分配如何进入全景图 尚未解决什么
目标 回报仍然由奖励定义 奖励是否代表真实意图
时间 Monte Carlo 将终点回报向前传播;Advantage 评价动作相对好坏 如何更快地传播信用
更新 可以使用 V←V+α(G-V)Q←Q+α(G-Q) 更新价值 如何不等待整条轨迹结束
估计 Baseline、VQ 和 Advantage 提供中间评价 估计错误会如何影响策略
数据 完整轨迹提供信用分配所需样本 长轨迹样本成本高,随机性大
探索 只有被探索到的轨迹才能获得信用 未访问动作仍然难以评价

信用分配没有给出完美因果解释。它的任务是将迟到、稀疏、带噪声的结果,转换成此前动作能够使用的学习信号。


14. 本章小结

本章讨论了强化学习最核心的困难之一:

最终结果出现后,谁应当获得信用,谁应当承担责任?

Monte Carlo 方法等待轨迹结束,再计算:

$$G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

并用实际回报更新价值:

$$V(s_t)\leftarrow V(s_t)+\alpha [ G_t-V(s_t) ]$$

优势函数进一步比较动作相对于平均水平的好坏:

$$A^\pi(s,a)= Q\pi(s,a)-V\pi(s)$$

但等待终局代价很高,轨迹随机性也会带来高方差。

下一章继续追问:

能否不等未来完全发生,就用对未来的估计更新现在?


第 5 章:自举:用尚未完成的预测更新预测

1. 如果每次都等待结局

上一章讨论了 Monte Carlo 方法。

它的做法很直接:

  1. 让智能体完成一条轨迹;
  2. 等待最终结果出现;
  3. 计算每个时间步之后的真实回报;
  4. 用这些回报更新此前状态或动作的价值。

这种方法很诚实。

它不猜测未来,而是等未来真正发生。

但如果一盘棋很长,如果机器人任务持续运行,如果语言模型需要生成几千个 Token,或者环境交互成本极高,等待完整结局就会显得缓慢。

能否提前学习?

能否只走一步,就开始更新?

Temporal Difference Learning 给出的答案是:

可以。虽然完整未来还没有发生,但我们可以暂时相信自己对下一步的估计。

这种做法称为自举(bootstrapping)。


2. 自举到底是什么意思

“自举”听起来有些抽象。它的核心含义其实很简单:

用一个尚未完全验证的预测,去更新另一个预测。

在 Bellman 方程中:

$$V^\pi(s_t)= \mathbf{E} [ r_t+\gamma V^\pi(s_{t+1}) ]$$

当前状态价值取决于:

  1. 已经观察到的即时奖励 r_t
  2. 下一状态价值 V^π(s_{t+1})

问题在于,训练过程中我们并不知道真实的:

$$V^\pi(s_{t+1})$$

我们只有一个估计:

$$\hat{V}(s_{t+1})$$

于是,TD 方法用:

$$r_t+\gamma\hat{V}(s_{t+1})$$

作为当前价值的学习目标。

未来还没有完全发生,但对未来的预测已经参与训练。

这就是自举。

图 5-1:自举截断位置

图 5-1:自举截断位置


3. TD Target:提前结算未来

最基本的一步 TD 目标写成:

$$y_t = r_t +\gamma V(s_{t+1})$$

这个量称为 TD Target。

逐项解释:

符号 含义
y_t 用于更新当前价值的目标
r_t 当前一步已经观察到的真实奖励
V(s_{t+1}) 对下一状态未来收益的估计
γ 折扣因子

TD Target 由两部分组成:

已经发生的现实 + 对尚未发生未来的估计

这与 Monte Carlo 不同。

Monte Carlo 使用完整回报:

$$G_t = r_t +\gamma r_{t+1} +\gamma^2r_{t+2} +\cdots$$

TD(0) 只观察一步,然后截断真实轨迹,用价值估计接上未来:

$$G_t^{(1)} = r_t+\gamma V(s_{t+1})$$

上标 (1) 表示只使用一步真实奖励。


4. TD Error:现实与预测相差多少

有了 TD Target,就可以比较:

  • 原来对当前状态的估计;
  • 观察一步之后得到的新目标。

TD Error 定义为:

$$\delta_t = r_t +\gamma V(s_{t+1})-V(s_t)$$

也可以写成:

$$\delta_t=y_t-V(s_t)$$

其中:

符号 含义
δ_t 时刻 t 的 TD Error
y_t 新的 TD Target
V(s_t) 更新前对当前状态的价值估计

如果:

$$\delta_t>0$$

说明新观察结果比原先预期更好,当前状态价值应该上调。

如果:

$$\delta_t<0$$

说明新观察结果比原先预期更差,当前状态价值应该下调。

如果:

$$\delta_t=0$$

说明当前估计与一步之后的新证据已经一致。


5. TD 更新:只走一步,也能学习

表格型 TD(0) 的状态价值更新写成:

$$V(s_t)\leftarrow V(s_t) +\alpha \delta_t$$

代入 TD Error:

$$V(s_t)\leftarrow V(s_t)+\alpha [ r_t +\gamma V(s_{t+1})-V(s_t) ]$$

这里:

符号 含义
α 学习率
δ_t 新证据与旧估计之间的差距
V(s_t) 被更新的当前状态价值

这条公式可以理解为:

保留旧判断,但向新的 TD Target 靠近一点。

将式子重新整理:

$$V(s_t)\leftarrow (1-\alpha)V(s_t)+\alpha [ r_t+\gamma V(s_{t+1}) ]$$

现在更容易看见:

  • (1-α)V(s_t) 保留旧估计;
  • α[r_t+γV(s_{t+1})] 吸收新目标。

学习率 α 决定了智能体有多愿意相信这次新经验。


6. 手算一次:一步之后就开始学习

考虑一条轨迹:

s_0 → s_1 → terminal

设:

$$\gamma=0.9$$

当前价值估计为:

$$V(s_0)=2$$

$$V(s_1)=5$$

机器人从 s_0 走到 s_1,得到奖励:

$$r_0=1$$

那么 TD Target 为:

$$\begin{aligned} y_0 &= r_0+\gamma V(s_1)\ &= 1+0.9\times5\ &= 5.5 \end{aligned}$$

TD Error 为:

$$\begin{aligned} \delta_0 &= y_0-V(s_0)\ &= 5.5-2\ &= 3.5 \end{aligned}$$

假设学习率:

$$\alpha=0.1$$

更新后:

$$\begin{aligned} V(s_0) &\leftarrow 2+0.1\times3.5\ &= 2.35 \end{aligned}$$

注意,此时轨迹还没有真正结束。

智能体并不知道从 s_1 出发最终一定能得到多少奖励。它只是暂时相信:

$$V(s_1)=5$$

并据此上调:

$$V(s_0)$$

这就是自举的效率来源,也是风险来源。


7. Monte Carlo 与 TD 的根本区别

Monte Carlo 与 TD 都试图估计长期价值,但它们使用不同目标。

7.1 Monte Carlo Target

$$y_t^{MC} = G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

它等待真实轨迹结束。

7.2 TD(0) Target

$$y_t^{TD(0)} = r_t+\gamma V(s_{t+1})$$

它只等待一步,然后用估计值接上未来。

7.3 两种方法的取舍

维度 Monte Carlo TD(0)
是否等待轨迹结束
是否自举
目标是否包含估计值
偏差 通常较低 可能更高
方差 通常较高 通常较低
持续任务适用性 较弱 较强

Monte Carlo 更相信已经发生的完整现实。

TD 更相信“一步现实 + 自己对未来的判断”。

没有哪一种方法永远更好。

这会引出第 7 章的主题:偏差与方差之间不存在免费午餐。


8. n-step TD:在等待与猜测之间移动

Monte Carlo 和 TD(0) 是两个极端。

  • Monte Carlo 等到终点;
  • TD(0) 只等一步。

我们也可以等待 n 步,再开始自举。

n-step Return 定义为:

$$G_t^{(n)} = r_t +\gamma r_{t+1} +\cdots +\gamma^{n-1}r_{t+n-1} +\gamma^nV(s_{t+n})$$

使用求和写法:

$$G_t^{(n)} = \sum_{k=0}^{n-1} \gamma^k r_{t+k} +\gamma^nV(s_{t+n})$$

逐项解释:

符号 含义
G_t^(n) 从时刻 t 开始的 n-step Return
n 等待多少步真实奖励后开始自举
Σ_{k=0}^{n-1} γ^k r_{t+k} n 步实际观察到的折扣奖励
γ^nV(s_{t+n}) n 步之后的未来价值估计

8.1 几个特殊情况

当:

$$n=1$$

得到:

$$G_t^{(1)} = r_t+\gamma V(s_{t+1})$$

这就是 TD(0)。

n 一直延伸到轨迹终点,不再使用剩余价值估计时,就逐渐接近 Monte Carlo。

因此,n 像一个滑块:

更早自举 ←──────────────→ 更晚自举
TD(0)                         Monte Carlo

8.2 手算一次

假设奖励为:

$$(r_0,r_1,r_2)=(1,2,3)$$

并且:

$$\gamma=0.9$$

已知:

$$V(s_2)=4$$

两步回报为:

$$\begin{aligned} G_0^{(2)} &= r_0+\gamma r_1+\gamma^2V(s_2)\ &= 1+0.9\times2+0.9^2\times4\ &= 1+1.8+3.24\ &= 6.04 \end{aligned}$$

这条目标使用了两步真实奖励,然后用 V(s_2) 接上尚未观察的未来。


9. TD(λ):不必只选一个截断点

选择一个固定 n 仍然有些生硬。

为什么一定只信任一步、三步或五步回报?能否把不同长度的回报组合起来?

TD(λ) 提供了一种加权平均。

一种前向视角写成:

$$G_t^\lambda = (1-\lambda)\sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)}$$

其中:

符号 含义
G_t^λ λ-return
G_t^(n) n-step Return
λ 控制不同步数回报权重的参数,通常满足 0≤λ≤1
(1-λ)λ^{n-1} n 步回报的权重

这条公式表示:

不只选择一个截断点,而是将多个截断位置按指数衰减加权。

当:

$$\lambda=0$$

主要依赖一步回报,接近 TD(0)。

当:

$$\lambda\to1$$

更多权重分配给较长回报,逐渐接近 Monte Carlo。

λ 成为调节偏差与方差的旋钮。

第 7 章讨论 GAE 时,我们会看到非常相似的结构。


10. Eligibility Trace:谁最近参与过,就先影响谁

TD(λ) 还有一种向后看的实现方式,称为 Eligibility Trace,常翻译为资格迹或迹。

直觉是:

当新的 TD Error 出现时,最近访问过的状态应该获得更多更新,更早访问过的状态则获得较弱更新。

对于表格型状态价值,可以定义:

$$e_t(s)= \gamma\lambda e_{t-1}(s)+\mathbf{1}(S_t=s)$$

逐项解释:

符号 含义
e_t(s) 时刻 t,状态 s 的资格迹
γλ 让过去访问痕迹逐渐衰减
e_{t-1}(s) 上一时刻留下的痕迹
1(S_t=s) 如果当前访问了状态 s,就为它增加一次痕迹

价值更新为:

$$V(s)\leftarrow V(s)+\alpha\delta_t e_t(s)$$

其中:

符号 含义
δ_t 当前 TD Error
e_t(s) 当前状态与最近历史的相关程度
α 学习率

新的误差信号会沿着最近访问过的状态向前扩散。

这样,信用不必等到整条轨迹结束,仍然能够影响此前多个状态。


11. 函数逼近:当价值不再是一张表

在小型问题中,可以为每个状态保存一个价值:

V(s_1)=...
V(s_2)=...
V(s_3)=...

但现实任务中的状态空间可能巨大,甚至连续。

语言模型的上下文更不可能逐条存表。

因此,我们使用带参数的函数逼近:

$$V_\theta(s)$$

其中:

符号 含义
θ 神经网络参数
V_θ(s) 参数为 θ 时,网络对状态价值的估计

TD Target 写成:

$$y_t = r_t +\gamma V_\theta(s_{t+1})$$

一种常见 TD Loss 为:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ y_t -V_\theta(s_t) ]^2$$

代入目标:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ r_t +\gamma V_\theta(s_{t+1})-V_\theta(s_t) ]^2$$

表面上,它很像监督学习中的均方误差。

但这里有一个关键差别:

标签 y_t 不是外部提供的固定真值,而是包含了模型自己的预测。

这就是 RL Loss 看起来奇怪的原因之一。

第 6 章会专门拆解它。


12. Semi-Gradient:为什么要停止目标一侧的梯度

在 TD Loss 中:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ r_t +\gamma V_\theta(s_{t+1})-V_\theta(s_t) ]^2$$

当前预测:

$$V_\theta(s_t)$$

依赖参数 θ

目标中的下一状态价值:

$$V_\theta(s_{t+1})$$

也可能依赖同一组参数。

如果两边同时跟着梯度变化,目标会在训练过程中不断移动。

常见做法是:将目标一侧暂时视为常量。

写作:

$$y_t = r_t +\gamma \operatorname{stopgrad} ( V_\theta(s_{t+1}))$$

然后:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ y_t-V_\theta(s_t) ]^2$$

其中:

符号 含义
stopgrad(·) 前向计算保留数值,但反向传播时不让梯度穿过
y_t 暂时固定的 TD Target
V_θ(s_t) 需要被训练的当前预测

这类更新称为 semi-gradient update。

之所以叫“半梯度”,是因为我们没有对目标中所有依赖参数的部分完整求导,而是有意识地截断了其中一部分。

这不是随意补丁。

它是在回答一个工程问题:

当模型使用自己的预测训练自己时,如何避免目标与预测同时剧烈移动?


13. 自举为什么危险

自举提高了样本效率,但也打开了误差传播的通道。

假设:

$$V(s_{t+1})$$

被高估。

那么 TD Target:

$$r_t+\gamma V(s_{t+1})$$

也会偏高。

于是:

$$V(s_t)$$

被向上推。

随后,更早状态的 TD Target 又会使用已经偏高的:

$$V(s_t)$$

错误就这样沿时间链向前传播。

可以把它写成:

下一状态高估
→ 当前 TD Target 偏高
→ 当前价值被高估
→ 更早状态的 TD Target 再次偏高
→ 误差逐步传播

如果再叠加:

  • 神经网络函数逼近;
  • Off-Policy 旧数据;
  • 最大化操作;
  • 高学习率;
  • 分布漂移;

误差可能不只是传播,还会被放大。

这将在第 8 章和第 9 章继续展开。


14. 自举不等于盲目相信自己

读到这里,自举似乎像一种危险的循环论证:

为什么这个状态价值高?因为下一个状态价值高。
为什么下一个状态价值高?因为再下一个状态价值高。

但自举并不是完全脱离现实。

每一步更新都包含真实观察奖励:

$$r_t$$

终止状态也提供边界条件:

$$V(s_T)=0$$

真实奖励、终止状态和持续采样会不断校正价值估计。

问题不是“能不能自举”,而是:

如何让自举足够稳定,使真实信号能够逐步纠正预测,而不是让预测误差彼此放大?

目标网络、Double DQN、Replay Buffer、Clip、KL 约束等机制,都可以放回这个问题中理解。


15. 边界:自举解决了效率,不保证正确

自举带来三个明显优势:

  1. 不必等待轨迹结束;
  2. 更适合持续任务;
  3. 可以更快传播局部经验。

但它没有保证:

  1. 价值估计一定准确;
  2. 函数逼近一定稳定;
  3. 旧数据一定适用于当前策略;
  4. 奖励一定表达真实意图;
  5. 智能体一定探索到关键状态。

自举不是免费的加速器。

它用更高的学习效率,换来了更复杂的稳定性问题。


16. 回归全景图(Callback)

坐标轴 自举如何进入全景图 尚未解决什么
目标 自举仍然服务于长期回报 奖励是否正确
时间 用下一状态价值将未来压缩成一步目标 长距离信用传播仍可能衰减
更新 TD Error 允许每走一步就更新价值 代理损失如何系统设计
估计 用预测更新预测,提高效率,也引入偏差 如何控制误差传播与发散
数据 可以利用局部转移样本 (s,a,r,s') 学习 旧数据与当前策略是否匹配
探索 自举只能传播已经访问过的经验 未探索区域仍然没有可靠价值

自举没有消灭等待未来的困难,而是把一部分等待转换成估计。它减少了样本成本,却把新的压力转移到了估计误差与训练稳定性上。


17. 本章小结

本章从一步 TD Target 开始:

$$y_t = r_t +\gamma V(s_{t+1})$$

定义 TD Error:

$$\delta_t = r_t +\gamma V(s_{t+1})-V(s_t)$$

并使用:

$$V(s_t)\leftarrow V(s_t) +\alpha\delta_t$$

完成每一步价值更新。

n-step TD 在等待真实奖励与使用价值估计之间移动:

$$G_t^{(n)} = \sum_{k=0}^{n-1} \gamma^k r_{t+k} +\gamma^nV(s_{t+n})$$

TD(λ) 则将多个截断位置组合起来:

$$G_t^\lambda = (1-\lambda)\sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)}$$

进入神经网络后,TD Loss 写成:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ y_t-V_\theta(s_t) ]^2$$

y_t 不是外部给出的静态标签,而是包含模型自己的预测。

这把我们带到下一章:

为什么强化学习的损失函数,看起来总不像普通损失函数?


第三部分:长期目标如何变成一次更新

第 6 章:为什么强化学习的损失函数看起来不像损失函数

1. 一种挥之不去的拼装感

如果你从监督学习进入强化学习,很容易产生一种不适感。

在图像分类中,损失函数看起来很自然。模型输出类别概率,数据集给出正确标签。交叉熵衡量预测与标签之间的差异。

例如:

$$L_{\mathrm{CE}} = -\sum_{c=1}^{C} y_c\log p_c$$

其中:

符号 含义
C 类别数量
y_c 正确标签在第 c 类上的取值
p_c 模型预测第 c 类的概率

正确标签像一个锚点。模型预测偏离标签,就产生误差。

进入强化学习后,画风突然改变:

  • TD Loss 里,标签包含模型自己的预测;
  • Policy Gradient Loss 里,出现动作对数概率与 Advantage;
  • PPO 在概率比率外面套上 clip
  • RLHF 叠加 KL 惩罚与 Token Mask;
  • DPO 看起来又像一个偏好分类损失;
  • GRPO 用组内相对分数替代显式 Critic。

每一种方法似乎都在增加新的部件。

于是,读者会自然问:

强化学习的损失函数为什么总带有一种人为设计的拼装感?

答案是:

因为 RL Loss 通常不是“预测值与静态真值之间的误差”,而是将长期目标、采样估计、信用分配、分布约束和工程稳定性压缩成一次可执行更新的接口。

图 6-1:RL 损失函数五层剖面

图 6-1:RL 损失函数五层剖面


2. 先区分五个层次

许多混乱来自把不同层次的问题都叫作“Loss”。

全书统一使用五层拆解法。

层次 回答的问题 常见例子
本源目标 最终想获得什么? 长期回报、偏好满足、任务成功
估计器 看不见完整未来时,如何估计方向? Return、Value、Q、Advantage、Reward Model、组内相对优势
代理损失 如何把估计量变成梯度? TD Loss、Policy Gradient Surrogate、DPO Objective
约束与正则 如何避免一次更新走得太远? KL、PPO Clip、Entropy Bonus
工程实现 如何让公式在真实系统中稳定执行? stopgrad、mask、归一化、梯度裁剪、数值稳定

这五层不是五种互相替代的方法,而是一条链。

本源目标
→ 估计器
→ 代理损失
→ 约束与正则
→ 工程实现
→ 参数更新

不同算法的区别,常常不是它们处在不同世界,而是它们在这条链上选择了不同组件。


3. 本源目标:真正想优化的是 J(π)

第一章定义了策略目标:

$$J(\pi) = \mathbf{E}{\tau \sim \pi} [ \sum{t=0}^{T-1} \gamma^t r_t ]$$

理想状态下,希望找到:

$$\pi^* = \arg\max_\pi J(\pi)$$

这才是强化学习真正想做的事。

但在真实训练中,我们通常不能直接把:

$$-J(\pi)$$

丢进自动微分框架,然后期待所有问题自动解决。

为什么?

因为:

  1. 轨迹由策略采样产生;
  2. 环境转移通常不可微;
  3. 奖励可能延迟;
  4. 轨迹长度可能变化;
  5. 数据分布会随着策略变化;
  6. 采样噪声可能很大。

需要准确表述的一点是:

J(π) 并非原则上不可求导。策略梯度定理正是在估计它的梯度。困难在于,梯度通常不能像普通监督学习那样通过一条静态、确定、端到端可微的计算图直接得到。

因此,我们需要估计器和代理损失。


4. 第一条路线:TD Loss

4.1 从 Bellman 关系到训练目标

Bellman 方程告诉我们:

$$V^\pi(s_t)= \mathbf{E} [ r_t +\gamma V^\pi(s_{t+1}) ]$$

训练时,我们使用 TD Target:

$$y_t = r_t +\gamma \operatorname{stopgrad} ( V_\theta(s_{t+1}))$$

然后定义 TD Loss:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ y_t -V_\theta(s_t) ]^2$$

代入目标:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ r_t +\gamma \operatorname{stopgrad} ( V_\theta(s_{t+1}))-V_\theta(s_t) ]^2$$

4.2 为什么它看起来像监督学习

表面上,TD Loss 像一个普通均方误差:

标签 - 预测

其中:

  • 预测是 V_θ(s_t)
  • 标签是 y_t

但这个标签并不是外部给出的 ground truth。

它由两部分组成:

真实奖励 + 模型对下一状态的预测

因此,TD Loss 更准确的理解不是“拟合真值”,而是:

让价值函数逐渐满足 Bellman 自洽关系。

4.3 为什么需要 stopgrad

如果目标侧:

$$V_\theta(s_{t+1})$$

也跟着当前梯度立即变化,网络会一边追目标,一边移动目标。

stopgrad 的作用是:

前向计算保留数值,反向传播时暂时冻结目标一侧。

这让 TD Loss 更像一次局部固定点逼近。

它不是严格等同于普通监督学习,也不是任意补丁。


5. 第二条路线:Policy Gradient Surrogate

价值方法尝试学习:

$$V(s)$$

或:

$$Q(s,a)$$

再据此选择动作。

策略方法则直接参数化策略:

$$\pi_\theta(a\mid s)$$

并尝试增加高回报动作出现的概率。

策略梯度定理的一种常见形式是:

$$\nabla_\theta J(\theta) = E_{\tau \sim \pi_\theta} [ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t) \hat{A}_t ]$$

逐项解释:

符号 含义
θ 策略网络参数
J(θ) 参数化策略的期望长期回报
π_θ(a_t|s_t) 当前状态下采取动作 a_t 的概率
log π_θ(a_t|s_t) 动作对数概率
∇_θ 对参数求梯度
Â_t Advantage 的估计值

直觉是:

  • 如果:

$$\hat{A}_t>0$$

说明动作比平均水平好,应该提高它的概率;

  • 如果:

$$\hat{A}_t<0$$

说明动作比平均水平差,应该降低它的概率。

为了使用梯度下降,常把要最大化的方向写成要最小化的 Loss:

$$L_{\mathrm{PG}}(\theta)= - \mathbf{E} [ \log \pi_\theta(a_t\mid s_t) \hat{A}_t ]$$

这不是“预测错误”的平方。

它更像一个梯度载体:

用 Advantage 给动作对数概率加权,让优化器知道哪些动作概率应该上升,哪些应该下降。

第 17 章会完整推导 Policy Gradient 和 Log-Derivative Trick。


6. PPO:为什么还要对更新加护栏

策略梯度已经提供了方向,但一次更新如果走得太远,策略可能突然改变。

旧数据来自旧策略:

$$\pi_{\theta_{\mathrm{old}}}$$

更新后,我们想训练新策略:

$$\pi_\theta$$

定义概率比率:

$$r_t(\theta)= \frac{ \pi_\theta(a_t\mid s_t)}{ \pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}$$

它衡量:

新策略相对于旧策略,提高或降低了动作 a_t 的概率多少?

如果:

$$r_t(\theta)=1$$

说明概率没有变化。

如果:

$$r_t(\theta)>1$$

说明新策略更倾向于选择这个动作。

如果:

$$r_t(\theta)<1$$

说明新策略降低了这个动作的概率。

PPO 的 Clipped Objective 常写为:

$$L_{\mathrm{PPO}}^{\mathrm{clip}}(\theta)= \mathbf{E}_t [ \min ( r_t(\theta)\hat{A}_t,; \operatorname{clip} ( r_t(\theta), 1-\epsilon, 1+\epsilon )\hat{A}_t ) ]$$

逐项解释:

符号 含义
r_t(θ) 新旧策略对同一动作的概率比率
Â_t 动作优势估计
ε 允许概率比率变化的大致范围
clip(r,1-ε,1+ε) 将比率限制在区间附近
min 对过度改进保持保守

PPO Clip 的作用不是重新定义最终目标。

它是在说:

即使方向看起来不错,也不要一步走得太远。

它属于约束与稳定化层,而不是本源目标层。

第 18 章会结合 Actor-Critic 完整解释 PPO。


7. KL:离参考策略不要太远

另一种常见约束是 KL Divergence。

对于两个离散概率分布 pq

$$D_{\mathrm{KL}}(p \parallel q)= \sum_x p(x)\log \frac{p(x)}{q(x)}$$

它衡量两个分布之间的差异。

在策略优化中,可以使用:

$$D_{\mathrm{KL}} ( \pi_\theta(\cdot\mid s)\parallel \pi_{\mathrm{ref}}(\cdot\mid s))$$

其中:

符号 含义
π_θ 当前正在训练的新策略
π_ref 参考策略
D_KL 两个动作概率分布的差异

带 KL 正则的目标可以写成:

$$J_{\mathrm{KL}}(\pi)= \mathbf{E} [ R ] - \beta \mathbf{E} [ D_{\mathrm{KL}} ( \pi(\cdot\mid s)\parallel \pi_{\mathrm{ref}}(\cdot\mid s)) ]$$

这里:

符号 含义
R 想提高的奖励
β KL 惩罚强度
π_ref 参考模型或旧策略

β 越大,策略越不敢偏离参考分布。

在 RLHF 中,KL 常用于防止语言模型为了追求 Reward Model 分数而迅速偏离原本语言能力。

KL 约束没有消灭目标偏差,只是限制了偏差造成的破坏速度。


8. 工程实现层:公式落地时仍然需要判断

即使理论公式已经确定,真实训练仍然包含许多工程选择。

这些选择不应被轻视,也不能与理论目标混为一谈。

8.1 Mask

语言模型训练中,一个 batch 里的回答长度可能不同。补齐位置不应该参与损失。

可以写成:

$$L = \frac{ \sum_{t=1}^{T} m_t\ell_t}{ \sum_{t=1}^{T} m_t}$$

其中:

符号 含义
ℓ_t t 个 Token 的局部损失
m_t Mask,真实 Token 取 1,补齐位置取 0
L 聚合后的有效损失

Mask 不改变算法哲学,却决定训练是否计算正确。

8.2 Advantage Normalization

一个 batch 中的 Advantage 可能尺度差异很大。

常见归一化写成:

$$\hat{A}_t^{\mathrm{norm}} = \frac{ \hat{A}_t-\mu_A}{ \sigma_A+\varepsilon}$$

其中:

符号 含义
μ_A batch 中 Advantage 的平均值
σ_A batch 中 Advantage 的标准差
ε 防止除零的小常数

它改善数值尺度,但也意味着更新行为依赖 batch 统计量。

8.3 Gradient Clipping

如果梯度过大,可以限制梯度范数:

$$g \leftarrow g \cdot \min ( 1,; \frac{c}{|g|} )$$

其中:

符号 含义
g 原始梯度
||g|| 梯度范数
c 允许的最大范数

梯度裁剪是数值稳定机制,不是新的优化目标。


9. DPO:显式 Reward Model 消失了吗

到了 DPO,损失函数看起来又像监督学习。

对于提示词 x、偏好回答 y_w 和较差回答 y_l,DPO Objective 的常见形式为:

$$L_{\mathrm{DPO}}(\theta)= - \mathbf{E} [ \log \sigma ( \beta [ \log \frac{ \pi_\theta(y_w\mid x)}{ \pi_{\mathrm{ref}}(y_w\mid x)} - \log \frac{ \pi_\theta(y_l\mid x)}{ \pi_{\mathrm{ref}}(y_l\mid x)} ] ) ]$$

这里:

符号 含义
x 提示词
y_w 偏好数据中更好的回答
y_l 偏好数据中较差的回答
π_θ 正在训练的策略模型
π_ref 固定参考模型
β 控制相对偏离程度的系数
σ Sigmoid 函数

这条公式看起来像偏好分类。

但它并不意味着奖励问题彻底消失。

更准确的说法是:

在特定假设下,显式 Reward Model 被消去,偏好优化被重写为策略与参考模型之间的相对对数概率差。

DPO 删除了一个显式组件,却把部分矛盾迁移到:

  • 偏好数据质量;
  • 参考模型;
  • 推导假设;
  • 数据覆盖范围;
  • 序列对数概率结构。

第 22 章会完整拆解它。


10. GRPO:显式 Critic 消失了吗

GRPO 使用同一个问题下的一组候选回答。

假设对一个提示词采样 G 个回答:

$${y_1,y_2,\ldots,y_G}$$

每个回答获得奖励:

$${R_1,R_2,\ldots,R_G}$$

一种组内相对优势写成:

$$\hat{A}_i = \frac{ R_i-\mu_R}{ \sigma_R+\varepsilon}$$

其中:

$$\mu_R = \frac{1}{G} \sum_{j=1}^{G} R_j$$

$$\sigma_R = \sqrt{ \frac{1}{G} \sum_{j=1}^{G} ( R_j-\mu_R )^2}$$

逐项解释:

符号 含义
R_i i 个候选回答的奖励
μ_R 同组回答奖励均值
σ_R 同组回答奖励标准差
Â_i i 个回答相对同组平均水平的优势

GRPO 可以减少对单独训练 Critic 的依赖。

但它没有删除估计问题。

它将部分估计工作转移到:

  • 组内样本质量;
  • 奖励噪声;
  • 候选多样性;
  • 标准化统计;
  • 在线采样成本。

少一个显式模块,不等于少一个本质问题。


11. 一条统一的 Loss 视角

许多 RL 训练目标可以粗略理解为:

$$L_{\mathrm{total}} = L_{\mathrm{proxy}} +\beta L_{\mathrm{constraint}} +\lambda L_{\mathrm{regularization}}$$

其中:

符号 含义
L_proxy 承载主要更新方向的代理损失
L_constraint 限制策略、价值或分布漂移的约束项
L_regularization 改善探索、数值稳定或泛化的正则项
βλ 控制不同项强度的系数

注意,这不是所有算法必须严格照抄的唯一公式。

它是一种阅读框架。

面对一个新的 Loss,可以问:

  1. 哪一项在表达主要方向?
  2. 哪一项在限制更新范围?
  3. 哪一项只是工程稳定化?
  4. 哪一项依赖估计器?
  5. 哪一项把旧问题隐藏到了新的假设里?

这样,复杂公式就不再是一整块难以理解的墙,而是一组可以拆开的组件。


12. 为什么不存在唯一“天然 Loss”

监督学习也会设计损失函数,但在许多经典任务中,标签提供了较稳定的参照物。

强化学习不同。

它必须同时面对:

  1. 长期回报;
  2. 延迟反馈;
  3. 信用分配;
  4. 采样噪声;
  5. 自举偏差;
  6. 策略变化;
  7. 数据漂移;
  8. 探索压力;
  9. 数值稳定性。

不同算法对这些问题做不同取舍,因此 Loss 也会长成不同形状。

TD Loss 更接近固定点逼近。

Policy Gradient Loss 更接近梯度估计载体。

PPO Clip 更接近更新护栏。

KL 更接近分布锚点。

DPO 是在假设条件下对偏好优化的重参数化。

GRPO 将部分价值估计转移到组内比较。

它们不应该被混成同一类东西。


13. 边界:复杂不等于任意

看到 RL Loss 中大量设计项,容易走向两个极端。

第一个极端是:

这些公式都是拍脑袋拼出来的。

这不准确。

很多设计来自明确问题:

  • stopgrad 控制移动目标;
  • PPO Clip 限制策略突变;
  • KL 限制偏离参考分布;
  • Mask 排除无效 Token;
  • Advantage Normalization 控制尺度;
  • Group Baseline 提供相对比较。

第二个极端是:

只要数学推导成立,Loss 就一定可靠。

这也不准确。

Loss 仍然依赖:

  • 奖励是否合理;
  • 假设是否成立;
  • 数据是否覆盖关键行为;
  • 估计器是否可靠;
  • 工程实现是否正确;
  • 超参数是否处在合适范围。

因此,更准确的判断是:

RL Loss 不是任意拼装,也不是自动正确。它是理论目标、估计假设和工程约束共同塑造的可执行近似。


14. 回归全景图(Callback)

坐标轴 Loss 如何进入全景图 尚未解决什么
目标 本源目标仍然是长期回报或偏好满足 代理奖励是否代表真实意图
时间 TD Target、Return 与 Advantage 将延迟反馈压缩为局部信号 长序列信用仍可能不准确
更新 代理损失、Clip、KL、Mask、stopgrad 共同形成可执行更新 如何为具体任务选择组合
估计 Value、Advantage、Reward Model、组内统计都可能参与估计 估计误差会如何传播
数据 Loss 使用的数据来自当前策略、旧策略或固定偏好集 分布变化如何影响可靠性
探索 Entropy、采样温度与在线生成会影响探索 如何在探索与稳定之间取舍

RL Loss 没有消灭强化学习的矛盾。它将矛盾压缩成优化器可以执行的一步,同时也把许多取舍写进了公式、约束和工程细节。


15. 本章小结

本章建立了理解 RL Loss 的五层框架:

本源目标
→ 估计器
→ 代理损失
→ 约束与正则
→ 工程实现
→ 参数更新

TD Loss 通过 Bellman 自洽关系训练价值:

$$L_{\mathrm{TD}}(\theta)= \frac{1}{2} [ r_t +\gamma \operatorname{stopgrad} ( V_\theta(s_{t+1}))-V_\theta(s_t) ]^2$$

Policy Gradient 使用 Advantage 为动作概率更新方向加权:

$$L_{\mathrm{PG}}(\theta)= - \mathbf{E} [ \log \pi_\theta(a_t\mid s_t) \hat{A}_t ]$$

PPO Clip 和 KL 惩罚限制策略更新不要走得太远。

DPO 与 GRPO 则提醒我们:

显式模块消失,不等于本质矛盾消失。问题往往只是迁移到了新的数据、假设与统计量中。

下一部分,我们开始集中讨论估计的代价:

当我们不再等待完整未来,而是不断使用近似,偏差与方差将如何进入系统?


第四部分:每一种估计都有代价

第 7 章:偏差与方差:不存在免费的估计

1. 更接近真实,为什么未必更好用

上一章讨论了自举。

Monte Carlo 等待完整轨迹,使用真正观察到的回报。TD 不等终局,只观察一步或几步,再用价值估计接上未来。

直觉上,Monte Carlo 似乎更可靠:

既然真实结果最终会出现,为什么不直接相信真实结果?

问题在于,真实结果也可能非常嘈杂。

想象一个推荐系统。即使展示同一条内容,不同用户也可能有完全不同反应。想象一个游戏智能体。即使执行同一种策略,随机地图、对手行为和初始位置也会改变最终结果。想象一个语言模型。即使提示词相同,采样温度也可能产生不同回答。

一条完整轨迹确实真实,却未必稳定。

强化学习中的许多算法改进,都在同一架天平上移动:

少猜一点,通常要承受更大波动;想稳定一点,通常要接受更多近似。

这就是偏差与方差之间的取舍。

图 7-1:偏差与方差跷跷板

图 7-1:偏差与方差跷跷板


2. 什么是偏差

假设我们想估计一个状态的真实价值:

$$V^\pi(s)$$

但每次根据有限数据得到的估计可能不同:

$$\hat{V}(s)$$

估计器的偏差(bias)定义为:

$$\operatorname{Bias} [ \hat{V}(s)] = \mathbf{E} [ \hat{V}(s)] -V^\pi(s)$$

逐项解释:

符号 含义
V^π(s) 想估计的真实状态价值
V̂(s) 根据有限样本得到的估计
E[V̂(s)] 如果重复采样很多次,估计值的平均
Bias[V̂(s)] 估计值平均偏离真实值多少

如果:

$$\operatorname{Bias} [ \hat{V}(s) ] =0$$

称估计器无偏。

无偏并不意味着每次估计都准确。

它只表示:

如果重复很多次,误差平均起来不会系统性偏向某一侧。


3. 什么是方差

方差(variance)衡量:

每次重新采样时,估计值会波动多大?

定义为:

$$\operatorname{Var} [ \hat{V}(s)] = \mathbf{E} [ ( \hat{V}(s)- \mathbf{E} [ \hat{V}(s)] )^2 ]$$

逐项解释:

符号 含义
E[V̂(s)] 多次估计的平均值
V̂(s)-E[V̂(s)] 某次估计偏离平均值多少
平方 不让正负波动相互抵消
Var[V̂(s)] 估计波动的平均强度

3.1 两组估计

假设真实价值为:

$$V^\pi(s)=10$$

估计器 A 重复四次得到:

$$(9,11,10,10)$$

估计器 B 得到:

$$(2,18,5,15)$$

两组平均值都是:

$$10$$

它们都可能无偏。

但估计器 B 波动更大,方差更高。

训练时,高方差意味着梯度方向会反复摇摆。即使平均方向正确,优化过程也可能非常缓慢。


4. 均方误差如何拆开

估计器总体好不好,常用均方误差衡量:

$$\operatorname{MSE} [ \hat{V}(s)] = \mathbf{E} [ ( \hat{V}(s)-V\pi(s))2 ]$$

它可以拆解为:

$$\operatorname{MSE} = \operatorname{Bias}^2 +\operatorname{Variance}$$

在更一般的监督学习表述中,还可能单独写出不可约噪声项。这里先聚焦价值估计自身的偏差与方差。

这条公式告诉我们:

估计误差不只有一种来源。减少偏差,可能增加方差;压低方差,也可能引入偏差。

算法设计不是只追求某一项最小,而是在任务条件下寻找可用平衡。


5. Monte Carlo:较少猜测,较大波动

Monte Carlo Target 为:

$$y_t^{MC} = G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$$

它使用完整轨迹中的实际奖励。

如果轨迹采样方式与目标策略一致,环境条件合适,Monte Carlo Return 通常可以作为价值的无偏样本。

但一条完整轨迹包含许多随机因素:

  • 后续动作采样;
  • 环境随机转移;
  • 对手行为;
  • 奖励噪声;
  • 轨迹长度变化。

这些随机性都会进入:

$$G_t$$

因此,Monte Carlo 通常方差较大。

5.1 手算一个高方差例子

假设同一个状态 s 有两种后续结果:

  • 50% 概率最终获得 20
  • 50% 概率最终获得 0

真实期望价值为:

$$V^\pi(s) = 0.5\times20 +0.5\times0 =10$$

但每次 Monte Carlo 采样只会看到:

$$20$$

或:

$$0$$

单次样本可能距离真实期望很远。

如果只采少量轨迹,价值更新会明显摇摆。


6. TD:更早猜测,通常更稳定

TD(0) Target 为:

$$y_t^{TD} = r_t +\gamma V(s_{t+1})$$

它不等待完整轨迹,而是使用下一状态价值估计。

这样做减少了后续轨迹随机性进入目标的程度。

但新的问题是:

$$V(s_{t+1})$$

可能不准确。

如果下一状态价值被低估,当前 TD Target 也会偏低;如果下一状态价值被高估,偏差也会向前传播。

因此,TD 通常:

  • 方差较低;
  • 但可能引入自举偏差。

Monte Carlo 与 TD 的差别,可以概括为:

方法 更相信什么 主要代价
Monte Carlo 真实发生的完整轨迹 方差高,必须等终局
TD 一步现实加未来估计 引入自举偏差

7. n-step Return:没有唯一正确截断点

n-step Return 为:

$$G_t^{(n)} = \sum_{k=0}^{n-1} \gamma^k r_{t+k} +\gamma^nV(s_{t+n})$$

它等待 n 步真实奖励,再用价值估计接上未来。

n 较小:

  • 更早自举;
  • 方差通常较低;
  • 更依赖价值估计;
  • 偏差可能更明显。

n 较大:

  • 使用更多真实奖励;
  • 更接近 Monte Carlo;
  • 偏差可能下降;
  • 方差与等待成本通常增加。

因此,n 不是单纯的技术参数,而是在选择:

我们愿意等待多少现实,又愿意提前相信多少预测?


8. λ-return:将许多截断点混合起来

与其只选择一个 n,可以组合不同长度的回报。

λ-return 写作:

$$G_t^\lambda = (1-\lambda)\sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)}$$

其中:

符号 含义
G_t^λ 混合后的 λ-return
G_t^(n) n-step Return
λ 权重衰减参数
(1-λ)λ^{n-1} n 步回报的权重

当:

$$\lambda=0$$

主要依赖一步回报。

当:

$$\lambda\to1$$

更多权重给到较长回报,逐渐接近 Monte Carlo。

λ 将离散选择变成连续调节。


9. Advantage:策略更新需要相对评价

策略梯度通常不直接使用绝对回报,而是使用 Advantage:

$$A^\pi(s,a)= Q\pi(s,a)-V\pi(s)$$

它回答:

在当前状态下,这个动作比平均水平好多少?

实际训练中,真实 Advantage 通常不可直接获得,因此需要估计:

$$\hat{A}_t$$

最简单的一步估计是 TD Error:

$$\delta_t = r_t +\gamma V(s_{t+1})-V(s_t)$$

为什么它可以近似 Advantage?

直觉上:

  • r_t+γV(s_{t+1}) 估计采取当前动作之后的长期价值;
  • V(s_t) 估计当前状态下的平均价值;
  • 两者相减,得到当前动作相对平均水平的超额表现。

因此:

$$\delta_t \approx A^\pi(s_t,a_t)$$

但一步 TD Error 可能过于局部。

于是,引出 GAE。


10. GAE:把多个时间尺度的 TD Error 混合起来

GAE 全称为 Generalized Advantage Estimation。

它使用多个未来 TD Error 的折扣加权和:

$$\hat A_t^{GAE} = \sum_{l=0}^\infty (\gamma\lambda)^l \delta_{t+l}$$

展开前几项:

$$\hat A_t^{GAE} = \delta_t + \gamma\lambda\delta_{t+1} + (\gamma\lambda)^2\delta_{t+2}+\cdots$$

逐项解释:

符号 含义
Â_t^GAE 时刻 t 的 Advantage 估计
δ_{t+l} 从当前时刻向后第 l 步的 TD Error
γ 对遥远未来的折扣
λ 控制使用多少长程信息
(γλ)^l 越远的 TD Error 权重越小

GAE 的直觉是:

不只看当前一步预测误差,也让后续几步误差按衰减权重返回现在。

λ 较小时:

  • 更接近一步 TD;
  • 通常方差更低;
  • 更依赖 Critic 准确性。

λ 较大时:

  • 使用更长时间的信息;
  • 更接近 Monte Carlo;
  • 通常偏差降低;
  • 方差可能提高。

10.1 手算一次

假设:

$$\gamma=0.9$$

$$\lambda=0.8$$

并且未来三步 TD Error 为:

$$\delta_t=2$$

$$\delta_{t+1}=1$$

$$\delta_{t+2}=-0.5$$

截断到三步,GAE 为:

$$\begin{aligned} \hat{A}_t^{GAE} &= 2 +(0.9\times0.8)\times1\ &\quad +(0.9\times0.8)^2\times(-0.5)\ &= 2+0.72-0.2592\ &= 2.4608 \end{aligned}$$

当前动作得到正 Advantage,说明它比平均水平更好。

但这个判断不是只依赖一步,而是吸收了后续误差信息。


11. γλ 的分工

γλ 经常一起出现,容易混淆。

它们都让遥远未来权重下降,但作用不同。

参数 主要问题 直觉
γ 未来奖励本身值多少 任务层面的时间偏好与有效视野
λ Advantage 估计使用多长的信息链 估计器层面的偏差与方差取舍

γ 更接近任务定义。

λ 更接近估计策略。

在 GAE 中,它们共同出现:

$$(\gamma\lambda)^l$$

但不能因此认为两者含义相同。


12. 为什么没有万能参数

面对偏差与方差,读者很容易希望得到一个固定答案:

γλ 设成多少最好?

不存在适用于所有任务的唯一答案。

因为任务不同:

  • 奖励延迟程度不同;
  • 轨迹长度不同;
  • 环境随机性不同;
  • Critic 准确性不同;
  • 样本数量不同;
  • 策略更新幅度不同。

如果 Critic 很不准确,过早自举会传播错误。

如果轨迹非常嘈杂,过度依赖 Monte Carlo 又会导致高方差。

如果奖励距离当前动作很远,太小的 γλ 可能让信号几乎传不回来。

调参不是寻找宇宙常数,而是在具体任务中选择合适的估计代价。


13. 偏差与方差并不只属于价值估计

偏差与方差贯穿强化学习。

13.1 Reward Model

Reward Model 使用有限偏好数据估计人类判断。

  • 模型过于简单,可能产生系统性偏差;
  • 模型过于灵活、数据噪声大,可能产生高方差或过拟合。

13.2 Importance Sampling

使用旧策略数据估计新策略表现时,需要修正分布差异。

  • 修正不足,会引入偏差;
  • 修正权重过大,又可能产生高方差。

13.3 GRPO

使用组内相对奖励代替显式 Critic 时:

  • 减少了单独价值网络带来的估计误差;
  • 但组内样本数量、奖励噪声和候选多样性会影响方差。

算法换了外观,天平仍然存在。


14. 边界:稳定不等于正确

降低方差通常让训练曲线更加平滑。

但平滑不代表正确。

一个稳定但有偏的估计器,可能持续把策略引向错误方向。一个波动较大的估计器,平均方向反而可能更接近真实目标。

因此,评估算法时不能只看:

  • Loss 是否下降;
  • 曲线是否平滑;
  • 梯度是否稳定。

还要问:

  • 最终策略是否真的更好?
  • 估计是否在关键区域可靠?
  • 分布变化后是否仍然有效?
  • 代理奖励是否偏离真实意图?

偏差与方差只是估计问题的两个坐标,不是全部世界。


15. 回归全景图(Callback)

坐标轴 偏差与方差如何进入全景图 尚未解决什么
目标 估计器仍服务于长期回报 奖励代理是否正确
时间 MC、TD、n-step、GAE 使用不同长度的信息链 长程信用仍可能衰减
更新 Advantage 估计直接影响策略梯度方向 如何限制策略更新幅度
估计 nγλ 在偏差与方差之间移动 函数逼近与分布漂移会进一步放大误差
数据 有限轨迹造成采样波动 如何复用旧数据而不失真
探索 探索增加数据覆盖,也增加回报波动 如何控制探索成本

偏差与方差没有被任何算法彻底消灭。算法只能选择:愿意在哪个位置承担哪一种误差。


16. 本章小结

偏差衡量估计是否系统性偏离真实值:

$$\operatorname{Bias} [ \hat{V}(s)] = \mathbf{E} [ \hat{V}(s)] -V^\pi(s)$$

方差衡量重新采样时估计波动多大:

$$\operatorname{Var} [ \hat{V}(s)] = \mathbf{E} [ ( \hat{V}(s)- \mathbf{E} [ \hat{V}(s)] )^2 ]$$

GAE 将多个时间尺度的 TD Error 组合起来:

$$\hat A_t^{GAE} = \sum_{l=0}^\infty (\gamma\lambda)^l \delta_{t+l}$$

它不是凭空出现的技巧,而是偏差与方差取舍的工程化表达。

下一章将看到另一种更隐蔽的误差:

当算法总是从多个估计值中选择最大的那个,噪声为什么会被系统性放大?


第 8 章:最大化偏差与价值幻觉

1. 为什么总挑最高分会出问题

假设你要从十家餐厅中选择一家。

你不知道它们的真实质量,只能参考带有噪声的评分。某家餐厅可能真实水平一般,却恰好因为样本少、评价偶然偏高,成为排行榜第一名。

如果你总是选择当前评分最高的餐厅,就会系统性偏爱那些“被高估”的对象。

强化学习中的价值方法也会遇到类似问题。

智能体面对多个动作,常常选择:

$$\max_a Q(s,a)$$

Q(s,a) 往往不是精确真值,而是带有误差的估计。

一旦从许多 noisy estimates 中挑选最大值,噪声不再对称。偏高的估计更容易被选中,偏低的估计则更容易被忽略。

这称为最大化偏差(maximization bias)或过高估计(overestimation)。


2. Q-Learning:把最优未来带回现在

Bellman 最优方程为:

$$Q^(s_t,a_t)= \mathbf{E} [ r_t +\gamma \max_{a'} Q^(s_{t+1},a') ]$$

Q-Learning 使用采样更新:

$$Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha [ r_t +\gamma \max_{a'} Q(s_{t+1},a')-Q(s_t,a_t) ]$$

其中:

符号 含义
Q(s_t,a_t) 当前对动作价值的估计
r_t 当前奖励
max_{a'}Q(s_{t+1},a') 下一状态中估计价值最高的动作
γ 折扣因子
α 学习率

括号中的:

$$r_t +\gamma \max_{a'} Q(s_{t+1},a')-Q(s_t,a_t)$$

是 Q-Learning 的 TD Error。

Q-Learning 的力量来自:

即使采样行为带有探索,它仍然可以朝“下一步选择最优动作”的目标更新。

但风险也在这里:

$$\max_{a'}Q(s_{t+1},a')$$

会偏爱被高估的动作。


3. 手算一次:真实价值相同,最大值仍然偏高

假设下一状态有两个动作:

$$a_1,;a_2$$

它们真实价值都为:

$$Q^{\ast}(s',a_{1}) = Q^{\ast}(s',a_{2}) = 0$$

但估计带有噪声。每次估计可能为:

$$\hat{Q}(s',a_{i}) = +1 \ (p=0.5) \ , \ -1 \ (p=0.5)$$

对每个动作单独看,估计无偏:

$$\mathbf{E} [ \hat{Q}(s',a_i) ] =0$$

但如果每次取最大值,四种情况为:

Q̂(s',a_1) Q̂(s',a_2) 最大值
+1 +1 +1
+1 -1 +1
-1 +1 +1
-1 -1 -1

最大值期望为:

$$\mathbf{E} [ \max_a \hat{Q}(s',a) ] = \frac{ 1+1+1-1}{4} =0.5$$

真实最大值却是:

$$\max_a Q^*(s',a) =0$$

于是:

$$\mathbf{E} [ \max_a \hat{Q}(s',a)] > \max_a Q^*(s',a)$$

每个动作估计单独看都没有偏差,但取最大值后,整体产生了过高估计。

这就是最大化偏差。


4. 为什么噪声会变成“价值幻觉”

过高估计不是一次无害的误差。

在 Q-Learning 中,它会进入 TD Target:

$$y_t = r_t +\gamma \max_{a'} Q(s_{t+1},a')$$

如果下一状态最大价值被高估:

  1. 当前 TD Target 偏高;
  2. 当前动作价值被向上推;
  3. 更早状态又使用这个偏高价值;
  4. 偏差沿自举链传播。

更麻烦的是,策略会优先选择高估动作。

于是系统形成循环:

偶然高估
→ 更容易被选择
→ 更频繁进入更新
→ 偏差传播
→ 策略更加相信高估动作

这种现象可以称为“价值幻觉”:

智能体不是发现了真正更好的动作,而是越来越相信自己早期的乐观误判。


5. 从 Q-Learning 到 DQN

如果状态数量很少,可以用表格存储:

$$Q(s,a)$$

但图像、机器人姿态、游戏画面和语言上下文空间极其庞大,无法逐项存表。

DQN 使用神经网络近似动作价值:

$$Q_\theta(s,a)$$

其中:

符号 含义
θ 神经网络参数
Q_θ(s,a) 网络对状态动作价值的估计

最直接的 DQN Target 为:

$$y_t = r_t +\gamma \max_{a'} Q_\theta(s_{t+1},a')$$

对应损失:

$$L(\theta)= \frac{1}{2} [ y_t -Q_\theta(s_t,a_t) ]^2$$

但这里有一个问题:

  • 当前预测来自 Q_θ
  • 目标也来自 Q_θ

网络每更新一次,目标也立即变化。

这像一个射手一边瞄准,一边自己移动靶子。


6. Target Network:让靶子暂时慢下来

DQN 引入目标网络:

$$Q_{\theta^-}(s,a)$$

其中:

  • θ 是当前在线网络参数;
  • θ^- 是目标网络参数。

TD Target 改为:

$$y_t^{DQN} = r_t +\gamma \max_{a'} Q_{\theta^-}(s_{t+1},a')$$

这里为简洁起见,省略了终止标记。若用 $d_t\in{0,1}$ 表示这一步之后是否终止,工程实现通常写成:

$$y_t^{DQN} = r_t +\gamma(1-d_t)\max_{a'} Q_{\theta^-}(s_{t+1},a')$$

终止转移满足 $d_t=1$,不应继续叠加下一状态价值。

Loss 为:

$$L_{\mathrm{DQN}}(\theta)= \frac{1}{2} [ y_t^{DQN} -Q_\theta(s_t,a_t) ]^2$$

在线网络持续更新,目标网络暂时固定。

每隔一段时间,再同步:

$$\theta^- \leftarrow \theta$$

或者使用软更新:

$$\theta^- \leftarrow \tau\theta +(1-\tau)\theta^-$$

其中:

符号 含义
θ 在线网络参数
θ^- 目标网络参数
τ 软更新比例,通常较小

Target Network 解决的不是奖励问题,也不是探索问题。

它解决的是:

自举目标变化太快,网络难以追踪。

它像一个锚点,让递归更新暂时稳定一点。


7. Replay Buffer:为什么要复用旧经验

DQN 还使用 Replay Buffer,保存历史转移:

$$(s_t,a_t,r_t,s_{t+1})$$

训练时,从缓冲区随机采样。

Replay Buffer 有两个主要作用:

  1. 打散连续时间步之间的强相关性;
  2. 复用旧经验,提高样本效率。

如果智能体刚刚连续走过同一片区域,直接按顺序训练,样本会高度相似。随机回放可以让 batch 更加多样。

但 Replay Buffer 也引入新问题:

旧数据来自旧策略,与当前策略的分布并不完全一致。

因此,Replay Buffer 同时属于:

  • 数据复用机制;
  • 稳定化机制;
  • Off-Policy 学习的一部分;
  • 潜在分布漂移来源。

它不是一块没有代价的存储空间。


8. Double DQN:选择与评价不要使用同一双眼睛

Target Network 减缓目标漂移,但最大化偏差仍然存在。

标准 DQN Target 使用:

$$\max_{a'} Q_{\theta^-}(s_{t+1},a')$$

同一个网络既:

  1. 选择哪个动作最大;
  2. 评价这个最大动作值多少。

如果某个动作被偶然高估,它更容易被选中,也更容易将高估值写入目标。

Double DQN 将“选择”与“评价”分开。

先用在线网络选择动作:

$$a^* = \arg\max_{a'} Q_\theta(s_{t+1},a')$$

再用目标网络评价这个动作:

$$Q_{\theta^-} ( s_{t+1},a^* )$$

因此,Double DQN Target 为:

$$y_t^{DoubleDQN} = r_t +\gamma Q_{\theta^-} ( s_{t+1}, \arg\max_{a'} Q_\theta(s_{t+1},a'))$$

逐项解释:

步骤 使用哪个网络 作用
选择动作 在线网络 Q_θ 判断下一步选哪个动作
评价动作 目标网络 Q_{θ^-} 判断这个动作价值多少

Double DQN 的直觉非常朴素:

不要让同一份噪声同时决定“选谁”和“给多少分”。

它不能彻底消除所有偏差,但通常能够缓解过高估计。


9. Dueling Network:状态好不好,与动作差异有多大

有些状态下,不同动作差别很小。

例如,一辆车在空旷直路上,轻微向左或向右调整都可能影响不大。此时,与其为每个动作完全独立估计价值,不如分开建模:

  • 当前状态总体有多好;
  • 每个动作相对平均水平有多大优势。

Dueling Network 使用:

$$Q(s,a)= V(s)+A(s,a)$$

但直接相加存在不可辨识问题。常见修正为:

$$Q(s,a)= V(s)+ [ A(s,a)- \frac{1}{|\mathcal{A}|} \sum_{a'} A(s,a') ]$$

其中:

符号 含义
V(s) 状态整体价值
A(s,a) 动作相对优势
|A| 动作数量
平均 Advantage 用于固定分解基准

Dueling Network 主要改变网络结构,不是重新定义 Bellman 目标。


10. Prioritized Replay:哪些经验更值得重看

普通 Replay Buffer 随机采样旧经验。

但一些经验可能更有学习价值。例如,TD Error 较大的样本说明:

当前预测与新证据差异较大。

可以定义优先级:

$$p_i = | \delta_i | +\varepsilon$$

并按优先级采样:

$$P(i) = \frac{ p_i^\alpha}{ \sum_j p_j^\alpha}$$

其中:

符号 含义
δ_i i 条经验的 TD Error
ε 保证每条经验仍有机会被采样
α 控制优先级强度
P(i) i 条经验被采样的概率

优先回放提高学习效率,却改变了采样分布。

为了减少偏差,还需要 Importance Sampling 修正。

这再次说明:

每一次效率提升,往往会把新的代价转移到别处。


11. Distributional RL:价值不只是一个平均数

标准价值函数通常估计期望:

$$Q(s,a) = \mathbf{E} [ G_t \mid s,a ]$$

但两个动作即使期望相同,风险结构也可能不同。

例如:

  • 动作 A:稳定得到 5
  • 动作 B:一半概率得到 20,一半概率得到 -10

两者期望都是:

$$5$$

但回报分布不同。

Distributional RL 尝试建模回报随机变量的分布:

$$Z(s,a)$$

而不是只估计均值:

$$Q(s,a)=\mathbf{E}[Z(s,a)]$$

这提醒我们:

价值幻觉不仅可能来自均值高估,也可能来自把复杂风险压缩成一个数字。


12. 边界:Target Network 不是万能药

Target Network、Double DQN、Replay Buffer、Dueling Network 与 Prioritized Replay 都很有用。

但它们分别处理不同问题:

方法 主要处理的问题
Target Network 目标漂移过快
Replay Buffer 样本相关性与复用效率
Double DQN 最大化偏差
Dueling Network 状态价值与动作优势的结构分解
Prioritized Replay 样本利用效率
Distributional RL 回报分布信息

不能把这些机制都笼统理解为“让 DQN 更稳定”。

真正重要的是看清:

每一种机制压住了哪一个循环,又把什么新问题带入系统。


13. 回归全景图(Callback):DQN 与 Double DQN

坐标轴 DQN 如何处理 Double DQN 增加了什么
目标 逼近最优长期动作价值 目标不变
时间 使用 Bellman 最优方程与自举 目标不变
更新 最小化 TD Loss 将动作选择与动作评价分离
估计 神经网络估计 Q 值,Target Network 减缓目标漂移 缓解 max 偏爱高估值的问题
数据 Replay Buffer 复用旧经验 数据机制不变
探索 通常使用 ε-greedy 采集经验 探索机制不变

DQN 没有消灭价值估计的误差。它通过 Target Network 和 Replay Buffer 让自举更可控。Double DQN 则进一步承认:当选择与评价共享同一份噪声时,最大化会系统性放大乐观误判。


14. 本章小结

Q-Learning 使用:

$$Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha [ r_t +\gamma \max_{a'} Q(s_{t+1},a')-Q(s_t,a_t) ]$$

max 会偏爱带有正向噪声的动作。

DQN 使用神经网络近似价值,并通过目标网络稳定训练:

$$y_t^{DQN} = r_t +\gamma \max_{a'} Q_{\theta^-}(s_{t+1},a')$$

Double DQN 将选择与评价分开:

$$y_t^{DoubleDQN} = r_t +\gamma Q_{\theta^-} ( s_{t+1}, \arg\max_{a'} Q_\theta(s_{t+1},a'))$$

下一章继续追问:

当函数逼近、自举和 Off-Policy 数据同时出现时,为什么误差可能不只是偏高,而是彻底失控?


第 9 章:致命三角:为什么深度 RL 容易失控

1. 单独看都合理,组合起来却可能危险

前几章出现了三种常见做法。

第一,使用神经网络表示价值函数。状态空间太大,不可能为每个状态单独存表,因此需要函数逼近。

第二,使用自举。等待完整轨迹太慢,因此用下一状态价值估计更新当前价值。

第三,复用旧数据。环境交互很昂贵,因此希望使用 Replay Buffer 或其他策略采集的数据提高样本效率。

每一种做法单独看都很合理。

但当三者同时出现时,训练可能变得非常脆弱:

  1. Function Approximation:函数逼近;
  2. Bootstrapping:自举;
  3. Off-Policy Learning:异策略学习。

这三者的组合通常被称为致命三角(Deadly Triad)。

图 9-1:致命三角的误差传播

图 9-1:致命三角的误差传播


2. 顶点一:函数逼近

在表格型强化学习中,每个状态动作对都有独立数值:

$$Q(s,a)$$

更新一个状态动作对,不一定影响其他位置。

神经网络不同。

我们用:

$$Q_\theta(s,a)$$

表示动作价值。参数 θ 被大量状态共享。

一次梯度更新:

$$\theta \leftarrow \theta -\alpha \nabla_\theta L(\theta)$$

会同时改变许多状态动作对的预测。

这带来泛化能力,也带来干扰。

如果网络在状态 s_1 上学到了一点新东西,状态 s_2 的估计也可能变化,即使 s_2 并未出现在当前 batch 中。

函数逼近让学习不再局部。


3. 顶点二:自举

TD Target 包含下一状态估计:

$$y_t = r_t +\gamma \max_{a'} Q_{\theta^-}(s_{t+1},a')$$

当前价值学习目标不是静态标签,而是另一个估计。

如果下一状态价值偏高,当前价值也会被推高。

自举让学习更高效,也让误差可以沿时间传播:

下一状态误差
→ 当前 Target 误差
→ 当前价值误差
→ 更早状态 Target 误差

4. 顶点三:Off-Policy

On-Policy 学习使用当前策略采集的数据。

Off-Policy 学习则允许:

用行为策略 b 产生的数据,学习另一个目标策略 π

写作:

$$b\neq\pi$$

这非常有吸引力。

旧经验可以反复利用;其他智能体的数据也可能被使用;昂贵环境交互不必浪费。

但风险是:

数据覆盖的区域,与当前策略真正关心的区域可能不同。

如果模型在某些动作上几乎没有数据,却仍然给出很高估计,策略可能被吸引到这些缺少证据的区域。

这类问题常与外推误差(extrapolation error)有关。


5. 三者如何形成反馈循环

现在将三个顶点连接起来。

假设网络在一个缺少数据的动作上偶然高估:

$$Q_\theta(s,a) \mathrm{ 偏高}$$

由于自举,偏高值进入目标:

$$y_t = r_t +\gamma \max_{a'} Q_{\theta^-}(s',a')$$

由于函数逼近,一次更新又可能改变其他状态估计。

由于数据来自旧策略,当前 buffer 未必包含足够新样本纠正错误。

于是:

缺少覆盖的数据
→ 某些价值估计偏离现实
→ 自举把误差写入新的 Target
→ 神经网络把局部误差传播到更多状态
→ 策略与数据分布进一步变化
→ 原有数据更难纠正新误差

误差不再只是一个点上的小偏差,而可能形成正反馈。


6. Semi-Gradient 为什么既必要又危险

TD Loss 常写为:

$$L(\theta)= \frac{1}{2} [ y_t -Q_\theta(s_t,a_t) ]^2$$

其中:

$$y_t = r_t +\gamma \max_{a'} Q_{\theta^-}(s_{t+1},a')$$

目标一侧通常停止梯度,或使用较慢更新的目标网络。

这样做避免预测与目标同时剧烈移动。

但它也意味着:

更新更像是在追踪一个不断变化的固定点,而不是最小化一个永远静止的监督学习目标。

当数据分布、目标网络和在线网络同时变化时,训练曲线可能很难解释。

Loss 短期下降,不代表长期目标一定改善。


7. 一个重要区别:数值稳定不等于策略正确

训练不发散当然重要。

但稳定只是第一步。

一个算法可能:

  • Loss 平稳下降;
  • 梯度没有爆炸;
  • Q 值范围正常;
  • 回报曲线看起来缓慢上升;

却仍然学到错误策略。

原因可能包括:

  • 奖励代理设计错误;
  • 数据覆盖不足;
  • 探索不够;
  • 价值估计在关键区域失真;
  • 环境变化;
  • 测试分布不同。

因此,需要区分:

概念 含义
数值稳定 训练过程没有明显爆炸或崩溃
估计可靠 价值预测在关键区域足够准确
策略有效 智能体确实取得更好长期结果
目标正确 奖励提升真正代表真实意图改善

这些条件彼此相关,但不能混为一谈。


8. DQN 的稳定化机制在压住什么

DQN 不是靠单一公式工作,而是依赖多种稳定化机制。

8.1 Replay Buffer

作用:

  • 打散时间相关性;
  • 提高样本复用率;
  • 增加 batch 多样性。

代价:

  • 数据来自旧策略;
  • 分布可能过时。

8.2 Target Network

作用:

  • 减慢目标变化;
  • 降低在线网络追逐自身预测的速度。

代价:

  • 目标更稳定,但也更陈旧;
  • 同步频率需要权衡。

8.3 Double DQN

作用:

  • 分离动作选择与动作评价;
  • 缓解最大化偏差。

代价:

  • 不能消除所有估计错误;
  • 仍然依赖网络与数据覆盖。

这些机制并没有推翻 Bellman 方程,而是在给反馈循环增加阻尼。


9. 为什么 PPO 也强调限制更新幅度

致命三角最常用于解释价值方法,但背后的系统直觉更广泛:

当策略、数据和估计器互相影响时,一次过大的更新可能改变下一轮学习条件。

PPO 使用概率比率:

$$r_t(\theta)= \frac{ \pi_\theta(a_t\mid s_t)}{ \pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}$$

并通过 Clip 限制更新不要走得太远。

RLHF 中的 KL 惩罚也有类似目的:

$$D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{ref}} )$$

它们不是在修复同一个数学细节,却体现了共同工程哲学:

当系统处在反馈循环中,更新步幅本身就是安全装置。


10. Offline RL 为什么更加敏感

Offline RL 使用固定数据集训练策略。

智能体不能随时回到环境中采集新数据纠正错误。

假设数据集几乎没有包含某个动作:

$$a_{\mathrm{rare}}$$

模型却因为函数逼近误差高估它:

$$Q(s,a_{\mathrm{rare}}) \mathrm{ 很高}$$

策略可能越来越倾向于选择这个动作。

但数据集又没有足够证据验证它。

这就是分布外动作带来的风险。

Offline RL 常采用保守估计,避免策略过度相信数据集中缺少覆盖的区域。

第 11 章讨论 On-Policy 与 Off-Policy 时会进一步展开。


11. 诊断训练时应该看什么

只看平均回报通常不够。

工程中还需要观察:

  1. Q 值或 V 值是否持续膨胀;
  2. TD Error 分布是否异常;
  3. 梯度范数是否爆炸;
  4. 新旧策略 KL 是否突然变大;
  5. Replay Buffer 中数据是否过时;
  6. 训练回报与评估回报是否分离;
  7. 不同随机种子结果是否差异巨大;
  8. 分布外状态上价值估计是否异常乐观。

这些指标不是为了制造更多仪表盘,而是为了回答:

反馈循环究竟在哪一个位置开始失控?


12. 边界:致命三角不是一句万能解释

训练不稳定时,把所有问题都归结为“致命三角”也不准确。

系统还可能因为以下原因失败:

  • 奖励尺度不合理;
  • 状态归一化错误;
  • 终止状态处理错误;
  • 探索不足;
  • 学习率过高;
  • 神经网络结构不适合;
  • 实现中的 mask 或 batch 逻辑错误;
  • 评估流程泄漏。

致命三角提供的是一种系统级视角:

当函数逼近、自举和 Off-Policy 同时存在时,需要对误差传播保持高度警惕。

它不是排除其他故障的借口。


13. 回归全景图(Callback)

坐标轴 致命三角如何进入全景图 尚未解决什么
目标 仍然优化长期回报 奖励代理是否可靠
时间 自举让误差沿时间回传 如何限制长链传播
更新 Semi-Gradient、Target Network、Clip、KL 为更新增加阻尼 阻尼强度如何选择
估计 函数逼近让局部误差影响更多状态 如何判断关键区域估计可靠
数据 Off-Policy 复用旧数据,也带来覆盖差异 如何处理分布外状态与动作
探索 探索决定数据覆盖 如何既覆盖未知,又避免危险区域

致命三角没有告诉我们停止使用函数逼近、自举或旧数据。它告诉我们:三种效率工具叠加后,系统已经进入反馈控制问题,必须主动增加稳定机制。


14. 本章小结

致命三角由三部分组成:

函数逼近 + 自举 + Off-Policy

函数逼近让一次更新影响大量状态。

自举让估计误差进入新的训练目标。

Off-Policy 让训练数据与当前策略关心的分布出现差异。

三者结合后,小误差可能沿循环放大。

下一部分,我们将专门讨论数据:

为什么强化学习最反直觉的地方之一,是学习者每更新一次,下一轮学习所面对的数据也随之改变?


第五部分:学习者改变了自己的数据

第 10 章:非平稳性:在移动的地面上学习

1. 学会一点,世界就变一点

监督学习通常假设训练数据来自某个相对固定的分布。

模型今天更新一次参数,明天数据集里的图片不会因此改变。猫仍然是猫,狗仍然是狗。

强化学习不同。

策略决定智能体去哪里、做什么、看到什么。策略一旦变化,下一批经验也会变化。

一个游戏智能体学会避开危险区域后,Replay Buffer 中会逐渐减少危险区域的新样本。一个推荐系统更加偏好某类内容后,用户看到的内容结构也会改变。一个语言模型经过偏好优化后,生成风格改变,Reward Model 接收到的输入分布也随之变化。

因此:

强化学习不是在固定数据集上学习,而是在自己不断改造的数据流上学习。

图 10-1:策略更新导致数据分布漂移

图 10-1:策略更新导致数据分布漂移


2. 状态访问分布

策略:

$$\pi(a\mid s)$$

不仅决定当前动作,也间接决定未来会访问哪些状态。

可以定义折扣状态访问分布:

$$d^\pi(s)= (1-\gamma)\sum_{t=0}^{\infty} \gamma^t P(S_t=s\mid\pi)$$

逐项解释:

符号 含义
d^π(s) 策略 π 下访问状态 s 的折扣权重
P(S_t=s|π) 遵循策略 π 时,第 t 步处于状态 s 的概率
γ^t 越遥远时间步权重越小
1-γ 归一化因子,使总权重便于解释为分布

状态动作访问分布可以写成:

$$d^\pi(s,a)= d^\pi(s)\pi(a\mid s)$$

它表示:

遵循策略 π 时,状态动作对 (s,a) 被访问到的频率结构。

这条公式很重要。

当策略从:

$$\pi_{\mathrm{old}}$$

更新为:

$$\pi_{\mathrm{new}}$$

状态访问分布也可能变化:

$$d^{\pi_{\mathrm{old}}}(s,a)\neq d^{\pi_{\mathrm{new}}}(s,a)$$

数据分布不是背景条件,而是策略的一部分后果。


3. 一个迷宫例子

假设迷宫中有两片区域:

  • 左侧区域安全,但奖励较低;
  • 右侧区域风险更高,但可能找到更大奖励。

训练初期,策略接近随机。智能体会同时访问左右两侧。

随着学习推进,策略发现左侧更容易获得稳定回报,于是越来越少进入右侧。

这时,右侧区域的数据逐渐稀缺。

如果右侧深处其实存在更优路径,智能体也可能永远无法发现。

这里同时出现三个问题:

  1. 策略改变状态访问分布;
  2. 数据不足限制价值估计;
  3. 探索不足锁定局部最优。

这说明数据问题与探索问题天然相连。


4. 两种不同的非平稳性

“非平稳”经常被笼统使用,但至少要区分两类。

4.1 环境本身变化

例如:

  • 用户兴趣随季节变化;
  • 金融市场结构变化;
  • 其他智能体改变策略;
  • 机器人硬件磨损;
  • 线上产品规则更新。

可以写成:

$$P_t(s',r\mid s,a)\neq P_{t+1}(s',r\mid s,a)$$

环境动力学本身随时间变化。

4.2 策略诱导的数据漂移

即使环境完全不变,策略更新也会改变数据分布:

$$\pi_{\mathrm{old}} \to \pi_{\mathrm{new}} \Rightarrow d^{\pi_{\mathrm{old}}} \to d^{\pi_{\mathrm{new}}}$$

环境规则没有变化,但智能体走过的路径变化了。

本章主要讨论第二类。

它是强化学习内生的非平稳性:

学习本身改变了下一轮学习所依赖的数据。


5. 自我更新循环

将过程写成闭环:

当前策略
→ 采取动作
→ 访问特定状态
→ 收集新数据
→ 估计价值或优势
→ 更新参数
→ 新策略
→ 访问新的状态分布

这就是序章中的自我更新循环。

监督学习更接近:

固定数据集
→ 更新模型
→ 仍然使用同一数据分布

强化学习则是:

策略
→ 生成数据
→ 数据更新策略
→ 新策略生成新数据

因此,训练稳定性不能只看优化器本身。

还要看策略改变数据的速度。


6. 为什么旧数据既宝贵又危险

旧经验很宝贵。

环境交互通常昂贵。如果机器人真实摔倒一次、线上系统展示一次内容、语言模型生成一批长回答,都要付出成本。

因此,我们希望复用转移样本:

$$(s_t,a_t,r_t,s_{t+1})$$

但旧数据来自旧策略:

$$\pi_{\mathrm{old}}$$

当前希望优化的是:

$$\pi_{\mathrm{new}}$$

两者可能不同。

如果差异很小,旧数据仍然有帮助。

如果差异很大,旧数据可能无法代表当前策略真正会访问的区域。

于是产生张力:

目标 代价
多复用旧数据 样本效率提高,但分布偏差增加
只使用新数据 分布更加一致,但成本更高

这将引出下一章:On-Policy 与 Off-Policy。


7. 语言模型后训练中的分布漂移

大模型后训练同样处在自我更新循环中。

假设初始模型为:

$$\pi_{\mathrm{ref}}$$

经过若干轮优化后,得到:

$$\pi_\theta$$

模型生成回答的分布会变化:

$$y \sim \pi_{\mathrm{ref}}(\cdot\mid x)$$

变为:

$$y \sim \pi_\theta(\cdot\mid x)$$

如果 Reward Model 主要在旧模型回答上训练,它面对新模型产生的回答时,可能进入分布外区域。

模型越擅长优化 Reward Model,越可能找到 Reward Model 不可靠的角落。

这就是为什么 RLHF 常加入 KL 约束:

$$D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{ref}} )$$

KL 不只是“保持语言风格”。

它还在限制分布漂移速度,避免策略一步跑到评价器缺少经验的区域。


8. 数据覆盖:没有访问,就很难知道

假设状态空间中有一片区域:

$$\mathcal{S}_{\mathrm{unseen}}$$

策略很少访问这里:

$$d^\pi(s)\approx0, \quad s\in\mathcal{S}_{\mathrm{unseen}}$$

那么价值网络在这片区域的输出主要依赖函数逼近的外推,而不是充足数据。

它可能给出任意估计。

如果策略随后被这些乐观估计吸引,就可能进入危险区域。

这在 Offline RL 中尤其突出,因为智能体无法随时回到环境中采集新数据纠正错误。

覆盖问题可以用一句话概括:

对从未认真看过的世界,模型仍然可以给出答案,但不一定值得相信。


9. 为什么更新不能太快

策略更新太快,会同时带来两种变化:

  1. 动作概率突变;
  2. 状态访问分布突变。

旧数据迅速过时,价值估计器来不及适应,新策略又继续生成更不同的数据。

因此,许多算法会限制更新幅度。

PPO 使用概率比率:

$$r_t(\theta)= \frac{ \pi_\theta(a_t\mid s_t)}{ \pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}$$

KL 约束则衡量新旧策略分布差异:

$$D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{old}} )$$

这些机制体现同一个工程判断:

数据分布会随着策略变化,因此策略不能在一次更新中跑得太远。


10. Replay Buffer 的时间尺度

Replay Buffer 中的数据越多,覆盖可能越广。

但数据也可能越旧。

假设 buffer 包含多个历史策略的数据:

$$\mathcal{D} = \bigcup_{k=1}^{K} \mathcal{D}_{\pi_k}$$

其中:

符号 含义
D_{π_k} 策略 π_k 采集的数据
D 历史经验集合

一个大 buffer 像一座经验仓库。

优点:

  • 打散时间相关性;
  • 保存低频经验;
  • 提高样本复用率。

风险:

  • 新旧策略混杂;
  • 旧数据比例过高;
  • 当前策略关心的区域覆盖不足;
  • 环境变化后历史经验过时。

因此,Replay Buffer 也需要考虑时间尺度。


11. 边界:数据漂移不是错误,而是系统特征

数据分布变化并不一定意味着算法出错。

一个真正学习成功的智能体,本来就应该改变行为。

机器人学会走路后,摔倒数据会减少。游戏智能体学会规避危险后,危险区域访问会变化。语言模型学会更好回答后,生成分布也应变化。

问题不是消灭漂移,而是管理漂移。

需要问:

  1. 数据变化速度是否超过估计器适应速度?
  2. 旧数据是否仍然适用?
  3. 新策略是否进入缺少覆盖的区域?
  4. 评价器是否能可靠评价新分布?
  5. 探索是否仍然足够?

非平稳性不是附属问题,而是强化学习的运行方式。


12. 回归全景图(Callback)

坐标轴 非平稳性如何进入全景图 尚未解决什么
目标 策略仍然追求长期回报 奖励与评价器在新分布上是否可靠
时间 轨迹将策略影响延伸到未来状态 长期漂移如何累积
更新 参数更新改变策略,策略改变下一批样本 更新步幅应限制到什么程度
估计 价值网络可能在缺少覆盖的区域外推 如何识别不可靠估计
数据 d^π(s,a) 随策略变化,旧数据既有价值又可能过时 On-Policy 与 Off-Policy 如何取舍
探索 探索决定覆盖范围 如何避免探索不足与危险探索

非平稳性不是一个等待修复的异常,而是强化学习的基本事实:学习者改变行为,行为改变数据,数据再次塑造学习者。


13. 本章小结

策略不仅决定动作,还决定数据分布。

折扣状态访问分布为:

$$d^\pi(s)= (1-\gamma)\sum_{t=0}^{\infty} \gamma^t P(S_t=s\mid\pi)$$

状态动作访问分布为:

$$d^\pi(s,a)= d^\pi(s)\pi(a\mid s)$$

策略变化后:

$$d^{\pi_{\mathrm{old}}} \neq d^{\pi_{\mathrm{new}}}$$

下一章将进入一个经典分叉:

应该只使用当前策略的新数据,还是允许复用其他策略留下的旧经验?


第 11 章:On-Policy 与 Off-Policy:旧经验还能用吗

1. 用昨天的经验训练今天的自己

假设一个机器人昨天还走得摇摇晃晃。

今天,它已经学会更稳定的步态。

昨天收集的大量经验还能不能继续训练今天的策略?

如果全部丢弃,交互成本很高。如果全部保留,旧经验又可能不再代表今天真正会遇到的状态。

这就是 On-Policy 与 Off-Policy 的分叉。

它不是一个术语分类游戏,而是在回答:

我们愿意为样本复用支付多少分布偏差?


2. 行为策略与目标策略

先区分两个策略。

行为策略(behavior policy)记为:

$$b(a\mid s)$$

它负责实际采集数据。

目标策略(target policy)记为:

$$\pi(a\mid s)$$

它是我们真正想评价或优化的策略。

如果:

$$b=\pi$$

数据由当前目标策略自己产生,称为 On-Policy。

如果:

$$b\neq\pi$$

使用另一个策略的数据学习目标策略,称为 Off-Policy。


3. On-Policy:数据新鲜,但价格昂贵

On-Policy 方法使用当前策略采集的数据更新当前策略。

过程可以写成:

当前策略 π
→ 采集新轨迹
→ 使用这些轨迹更新 π
→ 丢弃或弱化旧轨迹
→ 使用新策略继续采样

优点:

  • 数据与当前策略匹配;
  • 分布关系更清晰;
  • 理论分析通常更直接。

代价:

  • 旧数据很快过时;
  • 样本利用率较低;
  • 环境交互成本高。

PPO 通常被视为 On-Policy 方法。虽然一批数据可能被重复训练若干 epoch,但更新幅度受到限制,数据不会无限期复用。


4. Off-Policy:经验复用,但需要缴税

Off-Policy 方法允许使用旧策略或其他策略的数据。

过程可以写成:

行为策略 b 采集数据
→ 保存经验
→ 目标策略 π 使用这些数据学习

优点:

  • 样本复用率高;
  • 可以使用 Replay Buffer;
  • 可以利用其他来源的数据;
  • 更适合昂贵环境交互。

代价:

  • 数据分布与当前策略不一致;
  • 估计可能带偏;
  • 分布外动作风险更高;
  • 修正机制可能产生高方差。

Q-Learning、DQN、DDPG、TD3 和 SAC 都常采用 Off-Policy 数据。


5. SARSA 与 Q-Learning:一个关键分叉

SARSA 与 Q-Learning 的差异非常适合建立直觉。

5.1 SARSA

SARSA 更新为:

$$Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha [ r_t +\gamma Q(s_{t+1},a_{t+1})-Q(s_t,a_t) ]$$

其中,下一动作:

$$a_{t+1} \sim \pi(\cdot\mid s_{t+1})$$

SARSA 使用策略实际会采取的下一动作。

它学习:

按照当前行为继续走,长期价值是多少?

5.2 Q-Learning

Q-Learning 更新为:

$$Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha [ r_t +\gamma \max_{a'} Q(s_{t+1},a')-Q(s_t,a_t) ]$$

它不使用实际采样的下一动作,而是使用估计最优动作。

它学习:

即使采样时带有探索,未来如果选择最优动作,长期价值是多少?

SARSA 更贴近当前行为策略。

Q-Learning 则可以一边用探索策略采样,一边学习贪心目标策略。

这就是经典 Off-Policy 思想。


6. Importance Sampling:怎样修正分布差异

假设数据来自行为策略:

$$b(a\mid s)$$

但我们想估计目标策略:

$$\pi(a\mid s)$$

可以使用重要性采样比率:

$$\rho_t = \frac{ \pi(a_t\mid s_t)}{ b(a_t\mid s_t)}$$

逐项解释:

符号 含义
ρ_t 当前动作的重要性权重
π(a_t|s_t) 目标策略选择该动作的概率
b(a_t|s_t) 行为策略实际采集该动作的概率

如果:

$$\rho_t>1$$

说明目标策略比行为策略更重视这个动作,样本权重应提高。

如果:

$$\rho_t<1$$

说明目标策略较少选择这个动作,样本权重应降低。

对于一段轨迹,权重可能连乘:

$$\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{ \pi(a_k\mid s_k)}{ b(a_k\mid s_k)}$$

这能修正分布,却可能产生新问题。

如果某一步:

$$b(a_k\mid s_k)$$

很小,而:

$$\pi(a_k\mid s_k)$$

较大,权重会非常大。

长轨迹连乘后,方差可能爆炸。


7. 手算一次 Importance Sampling

假设在某个状态:

$$b(a_1\mid s)=0.2$$

目标策略为:

$$\pi(a_1\mid s)=0.6$$

那么:

$$\rho = \frac{0.6}{0.2} =3$$

这条样本在目标策略下更重要,因此权重放大为 3

如果另一个动作:

$$b(a_2\mid s)=0.8$$

$$\pi(a_2\mid s)=0.4$$

那么:

$$\rho = \frac{0.4}{0.8} =0.5$$

样本权重降低。

Importance Sampling 的思想朴素:

数据虽然来自别的策略,但可以按“目标策略有多重视这条样本”重新加权。


8. Coverage:分母不能为零

Importance Sampling 有一个重要前提:

行为策略必须覆盖目标策略可能选择的动作。

如果:

$$b(a\mid s)=0$$

但:

$$\pi(a\mid s)>0$$

那么:

$$\frac{ \pi(a\mid s)}{ b(a\mid s)}$$

无法计算。

更重要的是,数据中根本没有这种动作的经验。

这不是数学技巧能够弥补的。

Coverage 问题可以概括为:

没有见过的行为,无法仅靠重新加权获得可靠知识。


9. Clipping:不要让少数样本支配更新

由于 Importance Sampling 权重可能很大,常见做法是截断:

$$\bar{\rho}_t = \min ( c,\rho_t )$$

其中:

符号 含义
ρ_t 原始重要性权重
c 最大允许权重
ρ̄_t 截断后的权重

截断降低方差,却引入偏差。

这再次回到上一章:

没有免费的估计。稳定与准确之间总有取舍。

PPO Clip 虽然语境不同,也体现相似工程直觉:不要让概率比率变化过大。


10. Replay Buffer:Off-Policy 的经验仓库

DQN 使用 Replay Buffer 保存历史经验:

$$\mathcal{D} = { (s_t,a_t,r_t,s_{t+1}) }$$

训练时采样:

$$(s,a,r,s') \sim \mathcal{D}$$

Buffer 中的数据来自多个历史策略。

它提高样本效率,也意味着:

$$\mathcal{D} \not\sim d^{\pi_{\mathrm{current}}}$$

当前策略访问分布与 buffer 数据分布并不完全一致。

因此,Replay Buffer 并不是普通数据集。

它是一段策略历史的混合物。


11. Offline RL:只有旧数据,没有重新试错机会

Offline RL 使用固定数据集:

$$\mathcal{D}_{\mathrm{offline}}$$

训练期间不能随时与环境交互采集新数据。

这很适合:

  • 医疗;
  • 自动驾驶;
  • 真实机器人;
  • 高成本工业系统;
  • 已积累大量历史日志的产品。

但也更加危险。

如果策略开始偏好数据集缺少覆盖的动作,无法立即回到环境中验证。

价值网络可能在分布外区域给出过于乐观的估计。

因此,Offline RL 常强调保守性:

对没有足够数据支持的动作,不要轻易高估。


12. DPO 为什么不能简单等同于 Offline RL

DPO 使用固定偏好对数据:

$$(x,y_w,y_l)$$

它确实具有离线数据特征。

但更准确的说法是:

DPO 是基于离线偏好数据进行策略优化的方法,不应简单等同于完整意义上的 Offline RL。

原因是:

  1. 它依赖特定偏好建模与 KL 正则推导;
  2. 数据通常是回答偏好对,而不是一般 MDP 转移;
  3. 它不显式学习通用 Q 函数;
  4. 它将部分奖励与更新结构重新参数化。

但数据覆盖问题仍然存在。

如果偏好数据没有覆盖某类行为,DPO 也难以可靠判断。

矛盾没有消失,只是形式变化。


13. 如何选择 On-Policy 还是 Off-Policy

没有一种数据范式适用于所有任务。

可以问:

问题 更倾向的选择
环境交互是否昂贵? 昂贵时更重视 Off-Policy 复用
数据分布变化是否剧烈? 剧烈时更需要 On-Policy 新鲜数据
是否允许重新采样? 不允许时进入 Offline RL
价值估计是否容易外推失真? 容易失真时更重视保守机制
策略更新是否可能很大? 更新大时需要限制分布漂移

真正的工程系统经常处于连续谱上,而不是非黑即白。


14. 回归全景图(Callback)

坐标轴 On/Off-Policy 如何进入全景图 尚未解决什么
目标 目标策略仍追求长期回报 行为数据是否足以支撑目标
时间 转移样本承载 Bellman 与 TD 更新 长轨迹修正权重可能高方差
更新 Importance Sampling、Clipping、Replay 改变样本权重 修正强度如何选择
估计 Off-Policy 提高复用率,也增加分布偏差 分布外动作如何保守估计
数据 On-Policy 重视新鲜度,Off-Policy 重视复用率 Coverage 不足无法凭空补齐
探索 行为策略决定覆盖范围 如何采到有价值又足够安全的数据

On-Policy 与 Off-Policy 没有谁绝对优越。它们分别在数据新鲜度、样本复用率、估计偏差和交互成本之间选择不同位置。


15. 本章小结

行为策略负责采样:

$$b(a\mid s)$$

目标策略负责评价或优化:

$$\pi(a\mid s)$$

On-Policy 满足:

$$b=\pi$$

Off-Policy 允许:

$$b\neq\pi$$

重要性采样比率为:

$$\rho_t = \frac{ \pi(a_t\mid s_t)}{ b(a_t\mid s_t)}$$

它修正分布差异,也可能带来高方差。

下一章将把多个稳定机制放在同一张工具图中:

Replay、Target Network、Clip 与 KL 看起来形式不同,它们分别在稳定什么?


第 12 章:经验回放、目标网络与更新约束:稳定化工具箱

1. 不要把所有“补丁”混成一类

强化学习代码中常出现许多稳定化机制:

  • Replay Buffer;
  • Target Network;
  • Gradient Clipping;
  • Advantage Normalization;
  • Trust Region;
  • PPO Clip;
  • KL Penalty;
  • Entropy Bonus。

它们很容易被统称为“工程补丁”。

但这种说法过于粗糙。

这些机制并不是在修复同一种故障。它们分别控制:

  • 样本相关性;
  • 目标漂移;
  • 梯度尺度;
  • 策略突变;
  • 参考分布偏离;
  • 探索强度。

理解稳定化机制的关键不是背名字,而是问:

它究竟压住了反馈循环中的哪一个位置?

图 12-1:稳定化工具箱

图 12-1:稳定化工具箱


2. Replay Buffer:打散相关性,复用经验

Replay Buffer 保存历史转移:

$$\mathcal{D} = { (s_t,a_t,r_t,s_{t+1}) }$$

训练时随机采样:

$$(s,a,r,s') \sim \mathcal{D}$$

它主要解决两个问题。

2.1 打散时间相关性

连续时间步通常高度相关。

如果机器人连续十步都走在同一条走廊,直接按顺序训练,batch 会缺少多样性。

随机回放将不同时间、不同轨迹的数据混合起来。

2.2 提高样本利用率

一次昂贵交互不必只用一次。

旧经验可以反复进入训练。

2.3 Replay 的代价

旧经验来自旧策略。

因此:

$$\mathcal{D} \not\sim d^{\pi_{\mathrm{current}}}$$

Replay Buffer 在提高样本效率的同时,也引入 Off-Policy 分布差异。

它压住了样本成本,却增加了数据漂移压力。


3. Target Network:让目标慢一点移动

DQN Target 为:

$$y_t = r_t +\gamma \max_{a'} Q_{\theta^-}(s_{t+1},a')$$

其中:

  • θ:在线网络参数;
  • θ^-:目标网络参数。

在线网络根据 Loss 更新:

$$L(\theta)= \frac{1}{2} [ y_t -Q_\theta(s_t,a_t) ]^2$$

目标网络暂时固定。

3.1 Hard Update

每隔若干步同步一次:

$$\theta^- \leftarrow \theta$$

优点:简单。

代价:同步瞬间目标可能突变。

3.2 Soft Update

缓慢移动:

$$\theta^- \leftarrow \tau\theta +(1-\tau)\theta^-$$

其中:

$$0<\tau\ll1$$

目标网络像一个低通滤波器,不立即追随在线网络。

Target Network 控制的是:

自举目标变化速度。


4. Gradient Clipping:限制单次梯度冲击

如果梯度过大,一次更新可能破坏已经学到的结构。

梯度裁剪写成:

$$g \leftarrow g \cdot \min ( 1,; \frac{c}{|g|} )$$

其中:

符号 含义
g 原始梯度
||g|| 梯度范数
c 最大允许范数

如果:

$$|g|\leq c$$

梯度保持不变。

如果:

$$|g|>c$$

梯度被缩小到允许范围。

Gradient Clipping 控制的是数值冲击。

它不会自动修正错误方向。


5. Advantage Normalization:让更新尺度更可控

策略更新常使用 Advantage:

$$\hat{A}_t$$

一个 batch 中,数值尺度可能差异很大。

归一化写成:

$$\hat{A}_t^{\mathrm{norm}} = \frac{ \hat{A}_t-\mu_A}{ \sigma_A+\varepsilon}$$

其中:

符号 含义
μ_A batch 中 Advantage 平均值
σ_A batch 中 Advantage 标准差
ε 防止除零的小常数

它让优化器更容易处理尺度变化。

但要注意:

归一化改变的是相对尺度,不是奖励本身是否正确。


6. Trust Region:新策略不要离旧策略太远

策略梯度希望提高回报。

但如果一次更新太大,旧数据很快失效,新策略可能落入价值估计不可靠区域。

Trust Region 的核心思想是:

在一个局部可信区域内更新策略。

一种约束形式为:

$$\max_\theta ; \mathbf{E}_t [ r_t(\theta)\hat{A}_t ]$$

满足:

$$\mathbf{E}t [ D{\mathrm{KL}} ( \pi_{\theta_{\mathrm{old}}} \parallel \pi_\theta ) ] \leq \delta$$

其中:

符号 含义
r_t(θ) 新旧策略概率比率
Â_t Advantage 估计
D_KL 新旧策略分布差异
δ 允许的最大平均 KL

TRPO 尝试较严格地实现这一思想。


7. PPO Clip:将 Trust Region 做得更实用

PPO 使用概率比率:

$$r_t(\theta)= \frac{ \pi_\theta(a_t\mid s_t)}{ \pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}$$

并定义:

$$L_{\mathrm{PPO}}^{\mathrm{clip}}(\theta)= \mathbf{E}_t [ \min ( r_t(\theta)\hat{A}_t,; \operatorname{clip} ( r_t(\theta), 1-\epsilon, 1+\epsilon )\hat{A}_t ) ]$$

clip 将比率限制在:

$$[1-\epsilon,;1+\epsilon]$$

附近。

PPO 的直觉是:

如果某个动作概率已经改变很多,就不要继续因为同一批旧数据而获得过多收益。

PPO Clip 控制的是:

局部策略更新幅度。

它不是严格等同于 KL 约束,也不是对所有更新提供绝对保证。


8. KL Penalty:用分布锚点限制整体偏离

KL Divergence 衡量两个分布的差异:

$$D_{\mathrm{KL}}(p \parallel q)= \sum_x p(x)\log \frac{p(x)}{q(x)}$$

策略优化中,可加入惩罚:

$$L_{\mathrm{total}} = L_{\mathrm{reward}} +\beta D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{ref}} )$$

其中:

符号 含义
π_θ 当前策略
π_ref 参考策略
β KL 惩罚强度

在 RLHF 中,参考模型通常来自 SFT 模型。

KL 像一根弹性绳:

  • 策略可以移动;
  • 但偏离越远,代价越大。

它控制的是:

相对参考分布的整体漂移。


9. Entropy Bonus:不要过早失去探索

策略熵定义为:

$$\mathcal{H} ( \pi(\cdot\mid s))= - \sum_a \pi(a\mid s)\log \pi(a\mid s)$$

如果策略集中在少数动作上,熵较低。

如果动作概率更分散,熵较高。

可以在目标中加入熵奖励:

$$J_{\mathrm{total}} = J_{\mathrm{reward}} +\alpha \mathbf{E} [ \mathcal{H} ( \pi(\cdot\mid s)) ]$$

Entropy Bonus 鼓励策略保留一定随机性。

它控制的是:

探索强度与策略塌缩。

第 13 章会详细展开。


10. 一张工具箱对照表

工具 主要控制对象 它没有解决什么
Replay Buffer 样本相关性、复用效率 旧数据分布偏差
Target Network 自举目标漂移速度 奖励错误、覆盖不足
Gradient Clipping 梯度数值冲击 梯度方向错误
Advantage Normalization 更新尺度 估计是否准确
Trust Region 新旧策略差异 代理奖励是否合理
PPO Clip 局部概率比率变化 全局策略距离保证
KL Penalty 相对参考模型的整体偏离 参考模型是否足够好
Entropy Bonus 探索与策略塌缩 探索方向是否有价值

这张表是本章最重要的结论。

不要问:

哪一个技巧最好?

而要问:

系统现在是哪一种循环转得太快?应该在哪个位置增加阻尼?


11. 边界:稳定化也会限制能力

稳定机制不是越强越好。

Replay 过多使用旧数据,策略可能难以快速适应新分布。

Target Network 更新过慢,目标可能过于陈旧。

PPO Clip 过强,策略几乎无法前进。

KL 惩罚过大,模型只能停留在参考策略附近。

Entropy Bonus 过大,策略可能长期保持随机,无法充分利用已知经验。

稳定性与能力提升之间同样存在张力:

系统需要足够稳定,才能学习;也需要允许适度变化,才能成长。


12. 回归全景图(Callback)

坐标轴 稳定化工具如何进入全景图
目标 稳定化机制不应替代真实目标
时间 Target Network 减慢自举目标变化
更新 Gradient Clipping、Trust Region、PPO Clip、KL 控制更新步幅
估计 Advantage Normalization 控制尺度,但不保证估计正确
数据 Replay Buffer 提高复用率,也混合历史策略分布
探索 Entropy Bonus 保留随机性,避免过早塌缩

稳定化工具没有消除反馈循环。它们像阻尼器、锚点和护栏,让系统能够在循环中继续学习,而不是因为一次更新失控。


13. 本章小结

本章将常见机制拆开归类。

Replay Buffer 管理经验:

$$(s,a,r,s') \sim \mathcal{D}$$

Target Network 减慢目标漂移:

$$\theta^- \leftarrow \tau\theta +(1-\tau)\theta^-$$

PPO Clip 限制局部概率比率:

$$\operatorname{clip} ( r_t(\theta), 1-\epsilon, 1+\epsilon )$$

KL Penalty 限制整体分布偏离:

$$D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{ref}} )$$

下一部分进入探索问题:

如果智能体只做当前看来最好的事情,它为什么可能永远找不到真正更好的选择?


第六部分:探索未知,也承担风险

第 13 章:探索与利用:为什么不能总选当前最优

1. 一家熟悉的小店,还是一条未知街道

假设你出差到一座陌生城市,需要选择晚餐。

街角有一家已经吃过的小店。味道不错,大概能得到 7 分。远处还有许多没去过的餐厅,其中一些可能更差,也可能有一家能得到 10 分。

如果今晚只想稳妥吃饭,选择熟悉小店很合理。

但如果要在这座城市生活一年,永远只去同一家店就可能错过更好的选择。

这就是探索与利用(exploration versus exploitation)。

  • 利用:选择当前看来最好的动作,获得已知收益;
  • 探索:尝试尚未充分了解的动作,获得新信息。

强化学习无法绕开这个矛盾。

只利用,智能体可能困在局部最优。

只探索,智能体又无法稳定获得收益。

图 13-1:探索与利用

图 13-1:探索与利用


2. Multi-Armed Bandit:最小化的探索实验室

探索问题最简单的版本称为多臂老虎机(Multi-Armed Bandit)。

假设有 K 台老虎机。每台机器对应一个动作:

$$a\in{1,2,\ldots,K}$$

选择动作 a 后,会得到随机奖励:

$$R_t$$

每个动作的真实期望奖励为:

$$q_*(a) = \mathbf{E} [ R_t \mid A_t=a ]$$

其中:

符号 含义
A_t t 次选择的动作
R_t t 次得到的奖励
q_*(a) 动作 a 的真实期望奖励

问题是:

智能体不知道 q_*(a),只能一边尝试,一边估计。

Bandit 没有复杂状态转移,却保留了探索的核心矛盾。


3. 动作价值估计

设动作 a 已经被选择:

$$N_t(a)$$

次。

经验平均奖励为:

$$Q_t(a)= \frac{ \sum_{i=1}^{t-1} R_i \mathbf{1}(A_i=a)}{ N_t(a)}$$

其中:

符号 含义
Q_t(a) 截至时刻 t,对动作 a 的价值估计
N_t(a) 动作 a 被选择的次数
1(A_i=a) 如果第 i 次选择了动作 a,取 1;否则取 0

也可以使用增量更新:

$$Q_{n+1} = Q_n +\frac{1}{n} [ R_n-Q_n ]$$

这条公式与前面价值更新形式非常相似:

新估计 = 旧估计 + 步长 × 新证据与旧估计之差

4. 贪心策略为什么会被早期运气锁死

最直接的策略是:

$$A_t = \arg\max_a Q_t(a)$$

这称为贪心策略。

它总是选择当前估计价值最高的动作。

问题在于,早期样本很少,估计噪声很大。

假设:

  • 动作 A 的真实期望为 6
  • 动作 B 的真实期望为 8

第一次尝试时:

  • A 偶然得到 7
  • B 偶然得到 3

贪心策略会继续选择 A。

如果之后不再尝试 B,智能体永远不会发现 B 才是真正更好的动作。

局部最优并不总是来自复杂地形。

它有时只是来自早期运气。


5. ε-greedy:故意偶尔做一点“不理性”的事

一种简单方法是 ε-greedy

策略定义为:

$$P(A_t=a)= \begin{cases} 1-\epsilon+\frac{\epsilon}{K}, & a=\arg\max_{a'}Q_t(a') \ \frac{\epsilon}{K}, & \mathrm{其他动作} \end{cases}$$

其中:

符号 含义
ε 探索概率
K 动作数量
1-ε 主要利用当前最佳动作
ε 随机尝试动作

直觉是:

大多数时候相信当前判断,偶尔故意尝试其他选择。

5.1 手算一次

假设:

$$\epsilon=0.1$$

并且有:

$$K=4$$

个动作。

当前最佳动作被选中的概率为:

$$1-0.1+\frac{0.1}{4} =0.925$$

其他每个动作被选中的概率为:

$$\frac{0.1}{4} =0.025$$

ε-greedy 很简单,却表达了一个深刻事实:

为了发现最优策略,智能体必须允许自己暂时不做当前看起来最优的事情。


6. ε 应该固定还是衰减

训练初期,价值估计不可靠,通常需要更多探索。

训练后期,估计更加稳定,可以逐渐增加利用。

因此,常见做法是让:

$$\epsilon_t$$

随时间衰减。

例如:

$$\epsilon_t = \max ( \epsilon_{\min}, \epsilon_0\lambda^t )$$

其中:

符号 含义
ε_0 初始探索率
λ 衰减比例,通常小于 1
ε_min 最低探索率

探索率过快下降,智能体可能过早锁死。

探索率过慢下降,智能体可能长期浪费收益。

探索不是一个开关,而是一种时间安排。


7. Softmax Exploration:价值差异应该影响探索概率

ε-greedy 将非最优动作近似平等对待。

但一个估计价值略低的动作,与一个明显很差的动作,不一定应该获得相同探索机会。

Softmax 策略写成:

$$\pi(a\mid s)= \frac{ \exp ( Q(s,a)/\tau )}{ \sum_{a'} \exp ( Q(s,a')/\tau )}$$

其中:

符号 含义
τ 温度参数
exp 指数函数
Q(s,a) 动作价值估计

当:

$$\tau\to0$$

策略越来越接近贪心。

当:

$$\tau$$

较大时,动作概率更加均匀。

温度控制:

策略对价值差异有多敏感。

语言模型生成中的 temperature,也体现类似直觉。


8. Entropy Bonus:把随机性写入目标

策略熵定义为:

$$\mathcal{H} ( \pi(\cdot\mid s))= - \sum_a \pi(a\mid s)\log \pi(a\mid s)$$

熵较高,说明策略更分散。

熵较低,说明策略集中在少数动作。

可以将熵加入目标:

$$J_{\mathrm{total}} = J_{\mathrm{reward}} +\alpha \mathbf{E} [ \mathcal{H} ( \pi(\cdot\mid s)) ]$$

其中:

符号 含义
J_reward 原始奖励目标
H(π) 策略熵
α 熵奖励强度

Entropy Bonus 鼓励策略保留多样性。

它不是为了永远随机,而是避免过早塌缩。


9. Optimism:对未知保持适度乐观

另一条路线是:

没有充分尝试过的动作,不应该过早判死刑。

可以将初始价值设得较高:

$$Q_0(a)=Q_{\mathrm{optimistic}}$$

如果一个动作尚未充分尝试,它会因为乐观估计而被选择。

随着实际奖励出现,估计逐渐回落到现实。

这种方法称为乐观初始化。

它鼓励探索,却依赖任务尺度。

如果初始值太高,可能浪费大量尝试;如果太低,又不足以推动探索。


10. UCB:奖励高,还不够;不确定性也值钱

Upper Confidence Bound,简称 UCB。

它不只看平均奖励,还考虑不确定性。

一种常见形式为:

$$A_t = \arg\max_a [ Q_t(a)+c \sqrt{ \frac{ \ln t}{ N_t(a)}} ]$$

逐项解释:

符号 含义
Q_t(a) 当前平均奖励估计
N_t(a) 动作 a 被尝试次数
ln t 随总时间缓慢增长
c 探索强度
根号项 对低频动作的不确定性奖励

UCB 将动作价值分成两部分:

当前已知收益 + 尚未充分了解的潜在价值

当某个动作尝试次数很少:

$$N_t(a)$$

较小,探索奖励较大。

尝试次数增加后,不确定性奖励逐渐下降。

10.1 手算一次

假设:

$$t=100$$

$$c=1$$

动作 A:

$$Q(A)=7,\quad N(A)=50$$

动作 B:

$$Q(B)=6.5,\quad N(B)=2$$

动作 A 的 UCB 为:

$$7+ \sqrt{ \frac{\ln100}{50}} \approx 7.30$$

动作 B 的 UCB 为:

$$6.5+ \sqrt{ \frac{\ln100}{2}} \approx 8.02$$

虽然 B 当前平均奖励较低,但因为尚未充分尝试,它值得继续探索。


11. Thompson Sampling:按照不确定性采样

Thompson Sampling 使用贝叶斯视角。

对每个动作的未知价值维护一个后验分布:

$$p ( q(a)\mid \mathcal{D} )$$

每次决策时:

  1. 从每个动作后验分布中采样一个可能价值;
  2. 选择采样值最高的动作;
  3. 观察奖励;
  4. 更新后验。

写成:

$$\tilde{q}(a)\sim p ( q(a)\mid \mathcal{D} )$$

然后:

$$A_t = \arg\max_a \tilde{q}(a)$$

Thompson Sampling 的直觉是:

不确定性不是附加噪声,而是决策的一部分。


12. Contextual Bandit:当选择取决于场景

普通 Bandit 没有状态。

现实中,选择通常依赖上下文:

  • 不同用户偏好不同内容;
  • 不同时间适合不同推荐;
  • 不同提示词适合不同回答策略。

Contextual Bandit 引入上下文:

$$x_t$$

动作价值变为:

$$q_*(a\mid x_t)$$

策略根据上下文选择动作:

$$A_t \sim \pi(\cdot\mid x_t)$$

Contextual Bandit 仍然没有完整长时序状态转移,却已经连接推荐系统、广告投放和在线决策。


13. 探索不是噪声,而是信息投资

许多探索机制看起来像故意制造随机性:

  • ε-greedy
  • Softmax temperature;
  • Entropy Bonus;
  • 乐观初始化;
  • UCB;
  • Thompson Sampling。

但探索不应被简单理解为“加一点噪声”。

更准确的说法是:

智能体暂时牺牲一部分眼前收益,以换取关于未知世界的信息。

信息本身具有未来价值。

一次看似吃亏的尝试,可能改善后续许多决策。


14. 边界:简单探索在长序列中会失效

在 Bandit 中,随机尝试一个动作就能直接观察结果。

但在长序列任务中,真正有价值的发现可能需要连续做出一系列特定动作。

例如:

先拿钥匙
→ 穿过走廊
→ 避开守卫
→ 打开隐藏门
→ 获得奖励

ε-greedy 在每一步随机尝试,很难偶然完成整条链。

探索需要更深的时间结构。

下一章将讨论:

当奖励极其稀疏,随机试错为什么不够?智能体如何主动寻找新颖状态和有信息的路径?


15. 回归全景图(Callback)

坐标轴 探索与利用如何进入全景图 尚未解决什么
目标 探索暂时牺牲即时收益,争取更高长期回报 信息价值如何准确衡量
时间 当前探索可能在未来才产生收益 长序列探索如何组织
更新 ε、temperature、entropy coefficient 控制策略随机性 调度参数如何选择
估计 UCB、Thompson Sampling 显式考虑不确定性 深度网络中的不确定性估计更难
数据 探索扩展状态动作覆盖 危险或昂贵环境中不能任意采样
探索 利用已知与发现未知之间持续取舍 如何进行深度探索

探索没有消灭不确定性。它承认不确定性,并把一部分行动预算投入到减少不确定性上。


16. 本章小结

ε-greedy 使用:

$$P(A_t=a)= \begin{cases} 1-\epsilon+\frac{\epsilon}{K}, & a=\arg\max_{a'}Q_t(a') \ \frac{\epsilon}{K}, & \mathrm{其他动作} \end{cases}$$

Softmax 使用温度控制分布:

$$\pi(a\mid s)= \frac{ \exp ( Q(s,a)/\tau )}{ \sum_{a'} \exp ( Q(s,a')/\tau )}$$

UCB 将不确定性写入选择:

$$A_t = \arg\max_a [ Q_t(a)+c \sqrt{ \frac{ \ln t}{ N_t(a)}} ]$$

下一章继续深入:

如果发现奖励需要连续做对许多步,简单随机探索为什么远远不够?


第 14 章:深度探索:从随机试错到主动寻找信息

1. 随机走一步,不等于真正探索

上一章讨论了 ε-greedy

它让智能体偶尔随机尝试其他动作。

但在很多任务中,真正有价值的奖励藏得很深。

例如:

离开起点
→ 拿到钥匙
→ 穿过走廊
→ 找到隐藏门
→ 打开宝箱
→ 获得奖励

如果每一步都只靠低概率随机动作,完整走通这条链的概率会非常小。

假设每一步正确探索动作的概率为:

$$p$$

连续走对 n 步的概率为:

$$p^n$$

如果:

$$p=0.1$$

并且:

$$n=6$$

那么:

$$p^n = 0.1^6 = 0.000001$$

仅靠局部随机噪声,很难发现长链奖励。

这就是深度探索(deep exploration)问题。


2. 稀疏奖励为什么让学习陷入沉默

假设奖励只有抵达终点时才出现:

$$r_t = \begin{cases} 1, & \mathrm{抵达目标}\ 0, & \mathrm{其他情况} \end{cases}$$

训练初期,大量轨迹都是:

$$(0,0,0,\ldots,0)$$

无论智能体向左走还是向右走,无论发现新房间还是原地打转,奖励看起来都一样。

外部奖励没有告诉它:

哪一种尝试更值得继续?

于是,探索问题变成信息问题:

即使尚未得到任务奖励,能否鼓励智能体访问新颖、有信息、可能带来未来突破的状态?


3. Intrinsic Motivation:给好奇心一点奖励

外部环境提供的奖励称为外在奖励:

$$r_t^{\mathrm{ext}}$$

为了鼓励探索,可以加入内在奖励:

$$r_t^{\mathrm{int}}$$

总奖励写成:

$$r_t = r_t^{\mathrm{ext}} +\beta r_t^{\mathrm{int}}$$

其中:

符号 含义
r_t^ext 任务真正关心的外部奖励
r_t^int 为探索提供的内部奖励
β 内在奖励权重

内在奖励不是最终目的。

它像路灯,在外部奖励稀疏时帮助智能体继续前进。

但路灯也可能把智能体带偏。


4. Count-Based Exploration:少见的状态更值得看

最直观的内在奖励来自访问次数。

设状态 s 被访问次数为:

$$N(s)$$

可以定义探索奖励:

$$r^{\mathrm{int}}(s)= \frac{1}{ \sqrt{ N(s)}}$$

访问次数少时,奖励较大。

访问次数增加后,奖励逐渐下降。

例如:

N(s) r_int(s)
1 1
4 0.5
100 0.1

直觉是:

第一次看见某个状态很有价值,第一百次再看就没那么新鲜。

4.1 高维状态的问题

图像、机器人姿态和语言上下文几乎每次都不同。

直接统计:

$$N(s)$$

很难奏效。

因此,需要伪计数、状态哈希、密度模型或表示学习。


5. Curiosity:预测不准的地方值得探索

另一种思路是:

如果世界模型难以预测某个转移,说明那里还有新信息。

设特征编码器为:

$$\phi(s)$$

前向模型尝试预测下一状态特征:

$$\hat{\phi}(s_{t+1})= f_\theta ( \phi(s_t),a_t )$$

可以将预测误差作为内在奖励:

$$r_t^{\mathrm{int}} = \frac{1}{2} | \phi(s_{t+1})- \hat{\phi}(s_{t+1}) |^2$$

逐项解释:

符号 含义
φ(s_t) 当前状态的特征表示
f_θ 预测下一状态特征的模型
φ̂(s_{t+1}) 模型预测
φ(s_{t+1}) 实际观察
误差平方 新奇程度或预测困难程度

预测误差越大,内在奖励越高。

这鼓励智能体前往模型尚未理解的区域。


6. Noisy TV Problem:不可预测不等于有价值

Curiosity 有一个经典陷阱。

假设房间里有一台电视,每次播放随机噪声。

智能体无论看多少次,都难以预测下一帧。

于是:

$$r_t^{\mathrm{int}}$$

持续很高。

智能体可能沉迷于电视噪声,而不是完成真正任务。

这称为 Noisy TV Problem。

它提醒我们:

不可预测性不等于有价值的信息。

有些噪声是无法学习的随机性,不值得反复探索。

好的探索机制需要区分:

  • 尚未理解;
  • 原理上不可预测;
  • 与任务无关。

7. Random Network Distillation

Random Network Distillation,简称 RND。

它使用两个网络:

  1. 固定随机目标网络:

$$f_{\mathrm{target}}(s)$$

  1. 可训练预测网络:

$$f_\theta(s)$$

内在奖励为:

$$r_t^{\mathrm{int}} = | f_\theta(s_t)- f_{\mathrm{target}}(s_t) |^2$$

如果状态经常出现,预测网络逐渐学会匹配固定目标,误差下降。

如果状态新颖,预测误差较大,内在奖励较高。

RND 的直觉是:

新状态还没有被预测网络“背熟”,因此值得继续关注。

它避免显式统计每个高维状态的访问次数。

但 RND 同样依赖状态表示、归一化和奖励尺度。


8. Information Gain:探索是减少不确定性

更一般地,探索可以理解为减少模型不确定性。

假设模型参数为:

$$\theta$$

已有数据为:

$$\mathcal{D}$$

观察新样本后:

$$\mathcal{D}' = \mathcal{D} \cup { (s_t,a_t,r_t,s_{t+1}) }$$

信息增益可以写成后验变化:

$$I_t = D_{\mathrm{KL}} ( p(\theta\mid\mathcal{D}')\parallel p(\theta\mid\mathcal{D}))$$

其中:

符号 含义
p(θ|D) 观察旧数据后的模型参数后验
p(θ|D') 加入新经验后的后验
D_KL 新经验让认知改变了多少

信息增益高,说明新经验显著改变了模型对世界的理解。

这比单纯“预测误差大”更加接近探索本质。

但真实深度网络中,可靠计算后验通常很困难。


9. Hierarchical RL:把长路径拆成子目标

如果奖励需要几十步甚至几百步才能获得,逐步探索非常困难。

一种方法是引入层级结构。

高层策略选择子目标:

$$g_t \sim \pi_{\mathrm{high}} (\cdot\mid s_t)$$

低层策略选择动作:

$$a_t \sim \pi_{\mathrm{low}} (\cdot\mid s_t,g_t)$$

其中:

符号 含义
g_t 子目标
π_high 高层策略
π_low 完成子目标的低层策略

例如:

高层:先去厨房
低层:向前、左转、开门
高层:再拿钥匙
低层:接近桌子、伸手、抓取

层级策略把长时间探索拆成更短任务。

它提高可搜索性,也引入子目标设计与层级信用分配问题。


10. MCTS:在行动之前先展开可能未来

另一条路线是搜索。

Monte Carlo Tree Search,简称 MCTS。

它不只依赖当前网络直接选动作,而是在决策前模拟多条可能未来。

MCTS 常包含四步:

  1. Selection:根据已有统计选择节点;
  2. Expansion:展开新节点;
  3. Evaluation:估计叶子节点价值;
  4. Backup:将结果向上回传。

节点动作选择常使用类似 UCB 的规则:

$$a = \arg\max_a [ Q(s,a)+c \sqrt{ \frac{ \ln N(s)}{ N(s,a)}} ]$$

其中:

符号 含义
Q(s,a) 当前动作价值估计
N(s) 状态节点访问次数
N(s,a) 状态动作边访问次数
根号项 对尚未充分搜索动作的探索奖励

搜索将探索从“真实环境中的试错”部分转移到“决策前的模拟展开”。


11. AlphaGo 与 AlphaZero:学习与搜索互相增强

AlphaGo 系列的重要启示不是某个单独公式,而是学习与搜索之间的循环。

策略网络提供候选动作先验。

价值网络估计局面。

MCTS 使用网络缩小搜索空间。

搜索结果反过来生成更强监督信号。

可以概括为:

神经网络
→ 引导搜索
→ 搜索改进决策
→ 产生更好的训练目标
→ 改进神经网络

这是一种新的自我更新循环。

它不是单纯增加随机噪声,而是在内部模拟中主动分配计算预算。


12. Model-Based Exploration:先学习世界,再在想象中试错

如果能够学习环境模型:

$$\hat{P}\theta(s{t+1}\mid s_t,a_t)$$

智能体可以在模型中模拟未来。

真实环境交互昂贵,模型中的“想象轨迹”成本较低。

但模型可能不准确。

模型误差会沿模拟轨迹累积。

因此:

想象扩大了探索范围,也可能扩大错误世界观。

第 19 章会详细讨论 Model-Based RL。


13. 大模型推理中的探索

大模型生成多个候选回答,也是一种有限探索。

对于同一个提示词:

$$x$$

采样多个回答:

$${ y_1,y_2,\ldots,y_G }$$

再使用 Verifier 或奖励模型评价:

$$R(x,y_i)$$

选择更好的回答,或使用组内相对优势更新策略。

这与 GRPO、Best-of-N、搜索和推理时采样都有联系。

探索不再表现为机器人随机走动,而是:

在语言空间中生成不同推理轨迹,再通过评价筛选或学习。

但候选多样性、采样温度、验证器可靠性和计算成本仍然构成边界。


14. 边界:探索奖励也会被优化

内在奖励仍然是奖励。

只要它可以被优化,就可能被投机。

可能出现:

  • 反复访问随机噪声;
  • 制造不可预测状态;
  • 追求新颖而忽略任务;
  • 在模型盲区中循环;
  • 过度扩散,无法形成稳定技能。

因此,内在奖励通常需要:

  • 权重衰减;
  • 与外部奖励组合;
  • 状态表示约束;
  • 随机噪声过滤;
  • episodic novelty;
  • 安全边界。

探索机制没有摆脱奖励设计问题。

它只是将奖励设计扩展到了“信息价值”。


15. 回归全景图(Callback)

坐标轴 深度探索如何进入全景图 尚未解决什么
目标 内在奖励为外部目标提供探索路标 内在奖励是否会偏离任务
时间 长链奖励需要持续多步探索 如何把发现归因给早期动作
更新 β、新颖度、搜索统计影响策略更新 探索奖励尺度如何校准
估计 Curiosity、RND、信息增益估计未知程度 随机噪声与有价值未知如何区分
数据 探索扩展覆盖范围,搜索与模型生成额外轨迹 模拟数据是否可靠
探索 从局部随机转向新颖性、子目标、搜索和模型想象 如何控制现实成本与风险

深度探索没有取消试错。它重新组织试错:将随机行动转化为对新颖状态、信息增益、子目标和模拟未来的主动投资。


16. 本章小结

Count-Based Exploration 使用:

$$r^{\mathrm{int}}(s)= \frac{1}{ \sqrt{ N(s)}}$$

Curiosity 使用预测误差:

$$r_t^{\mathrm{int}} = \frac{1}{2} | \phi(s_{t+1})- f_\theta ( \phi(s_t),a_t ) |^2$$

RND 使用随机目标网络:

$$r_t^{\mathrm{int}} = | f_\theta(s_t)- f_{\mathrm{target}}(s_t) |^2$$

MCTS 则在真实行动之前展开可能未来。

下一章进入现实边界:

当试错可能造成真实伤害、昂贵成本或不可逆后果时,探索还应该怎样进行?


第 15 章:探索的边界:安全、成本与可控性

1. 游戏里可以重来,现实中未必

在电子游戏中,智能体失败一次,最多损失一局。

但真实世界并不总允许廉价试错。

  • 机器人摔倒可能损坏设备;
  • 自动驾驶探索危险动作可能伤害行人;
  • 医疗策略不能随意尝试未知剂量;
  • 推荐系统可能损害用户信任;
  • 大模型探索越过安全边界,可能生成危险内容或利用评价漏洞。

探索仍然重要。

没有探索,智能体无法突破已有能力。

但探索不能再被理解为:

随机做点不一样的事情,看看会发生什么。

现实系统必须问:

哪些尝试可以发生?哪些尝试代价过高?如何在不越过底线的情况下继续学习?


2. 奖励最大化之外,还有约束

标准强化学习目标为:

$$\max_\pi J_R(\pi)$$

其中:

$$J_R(\pi) = \mathbf{E}\pi [ \sum{t=0}^{\infty} \gamma^t r_t ]$$

但安全任务通常还有成本:

$$c_t$$

例如:

  • 碰撞;
  • 违反规则;
  • 能耗超限;
  • 风险暴露;
  • 有害输出。

累计成本定义为:

$$J_C(\pi) = \mathbf{E}\pi [ \sum{t=0}^{\infty} \gamma^t c_t ]$$

安全约束可以写成:

$$J_C(\pi) \leq d$$

其中:

符号 含义
J_R(π) 策略的期望累计奖励
J_C(π) 策略的期望累计成本
d 可接受的成本上限

于是问题变为:

$$\max_\pi J_R(\pi)\quad \mathrm{subject to} \quad J_C(\pi)\leq d$$

这类问题称为 Constrained MDP。

它不再只问“收益多高”,还问“代价是否越界”。


3. 拉格朗日方法:给违规行为定价

约束优化常使用拉格朗日乘子。

定义:

$$\mathcal{L} (\pi,\lambda)= J_R(\pi)- \lambda [ J_C(\pi)-d ]$$

其中:

$$\lambda\geq0$$

逐项解释:

符号 含义
λ 对违反成本约束的惩罚强度
J_C(π)-d 超出安全预算多少
L(π,λ) 同时考虑收益与约束的目标

如果成本超标:

$$J_C(\pi)>d$$

惩罚增大。

如果成本低于预算,策略有更多空间追求收益。

拉格朗日方法像动态定价:

越接近安全边界,继续冒险的价格越高。


4. Reward Penalty 与硬约束并不相同

一种简单做法是将成本写进奖励:

$$r_t' = r_t -\beta c_t$$

这很常见,也很实用。

但它与硬约束不同。

如果收益足够高,策略仍可能接受严重违规:

$$\mathrm{高奖励} - \mathrm{有限惩罚} > 0$$

在某些任务中,这不可接受。

例如:

  • 不能用更高运输效率交换少量严重碰撞;
  • 不能用更高点击率交换系统性欺骗;
  • 不能用更高回答奖励交换危险行为。

因此,要区分:

机制 含义
Reward Penalty 违规有代价,但仍允许权衡
Hard Constraint 某些边界原则上不可越过
Shield 在执行前直接拦截危险动作

5. Safe Exploration:探索也要有护栏

安全探索的目标不是停止探索,而是控制探索范围。

可以定义安全动作集合:

$$\mathcal{A}_{\mathrm{safe}}(s)$$

策略只能从中选择:

$$a_t \in \mathcal{A}_{\mathrm{safe}}(s_t)$$

或者在策略给出动作后,由安全层修正:

$$a_t^{\mathrm{exec}} = \Pi_{\mathcal{A}_{\mathrm{safe}}} ( a_t )$$

其中:

符号 含义
a_t 原始策略建议的动作
A_safe(s_t) 当前状态允许的安全动作集合
Π 投影或安全修正
a_t^exec 实际执行的动作

这像一道防护栏:

策略仍然可以探索,但不能轻易跨过不可接受边界。


6. 仿真器:将危险试错转移到更便宜的世界

真实交互昂贵时,可以先在仿真器中训练。

设真实环境动力学为:

$$P_{\mathrm{real}} (s'\mid s,a)$$

仿真环境为:

$$P_{\mathrm{sim}} (s'\mid s,a)$$

理想情况下:

$$P_{\mathrm{sim}} \approx P_{\mathrm{real}}$$

但两者通常存在差异。

这称为 Sim-to-Real Gap。

仿真器降低了现实成本,却引入模型偏差:

智能体可能学会利用模拟器,而不是适应真实世界。

因此,需要:

  • 域随机化;
  • 真实数据校准;
  • 保守部署;
  • 分阶段验证;
  • 安全监控。

风险没有消失,只是从真实试错转移到模型误差。


7. Offline RL:不在真实环境中随意探索

当真实试错不可接受时,可以使用历史数据:

$$\mathcal{D}_{\mathrm{offline}}$$

训练策略。

优点:

  • 不需要在线尝试危险动作;
  • 可以利用已有日志;
  • 更适合高成本场景。

但 Offline RL 面临覆盖问题。

数据集中没有出现过的动作,无法可靠评价。

如果策略偏离数据分布太远:

$$\pi(a\mid s)\gg b(a\mid s)$$

估计风险增大。

因此,Offline RL 常强调:

只在数据能够支持的范围内改进。

这与 RLHF 中 KL 约束参考模型的直觉相通。


8. Conservative Learning:对未知保持谨慎

如果某个动作缺少数据,不应因为网络偶然给出高值就盲目相信。

保守学习倾向于压低分布外动作价值。

一种抽象写法是:

$$L_{\mathrm{total}} = L_{\mathrm{Bellman}} +\alpha L_{\mathrm{conservative}}$$

其中:

符号 含义
L_Bellman 保持价值递归一致性的损失
L_conservative 惩罚缺少数据支持的乐观估计
α 保守强度

保守性降低风险,也可能限制能力上限。

如果过于保守,策略永远停留在已有数据附近,无法发现真正更好的行为。


9. Human-in-the-Loop:让人类留在循环中

在高风险系统中,人类不一定应该完全退出。

Human-in-the-Loop 可以表现为:

  • 人工审核危险动作;
  • 人工批准部署阶段;
  • 人类提供偏好数据;
  • 人类标注异常样本;
  • 人类设置不可越过的规则;
  • 人类在不确定性高时接管。

可以定义接管条件:

$$u(s_t) > \delta$$

其中:

符号 含义
u(s_t) 当前状态不确定性或风险评分
δ 人工接管阈值

当风险过高时,系统不继续自动探索。

人类参与降低自治程度,却提高可控性。


10. 大模型中的安全探索

大模型后训练同样需要探索。

例如,GRPO 对同一提示词生成多个候选回答:

$${ y_1,y_2,\ldots,y_G }$$

这些回答提供有限探索。

但探索范围受到多种机制控制:

  • 采样温度;
  • Top-p;
  • KL 约束;
  • 内容过滤;
  • Verifier;
  • 规则奖励;
  • 人工审核;
  • 红队测试。

如果模型过于贴近参考策略,能力突破可能受限。

如果偏离太快,Reward Model 或 Verifier 可能进入不可靠区域。

因此,大模型后训练同样在问:

怎样让模型产生足够多的新行为,又不让评价系统失去控制?


11. 风险敏感目标

期望回报不能表达全部风险。

假设两种策略期望相同:

$$\mathbf{E}[G^A] = \mathbf{E}[G^B] =5$$

但:

  • A 稳定得到 5
  • B 一半概率得到 20,一半概率得到 -10

在高风险场景中,可能更偏好 A。

可以考虑方差惩罚:

$$J_{\mathrm{risk}} = \mathbf{E}[G] - \beta \operatorname{Var}(G)$$

或者使用 CVaR 等风险度量。

这说明:

安全不是在奖励最大化之后附加一条规则,而是可能改变“什么叫好策略”本身。


12. 边界:安全与突破之间没有永久答案

探索越强,越可能发现新能力。

探索越强,也越可能进入未知风险。

约束越强,系统越稳定。

约束越强,也越可能锁死上限。

因此,工业系统常采用分阶段策略:

  1. 在模拟器中广泛探索;
  2. 在离线数据上保守训练;
  3. 在受控环境中小规模在线验证;
  4. 使用监控、回滚和人工接管;
  5. 逐步扩大部署范围。

安全不是一个单独超参数,而是一套制度设计。


13. 回归全景图(Callback)

坐标轴 安全探索如何进入全景图 尚未解决什么
目标 奖励目标外加入成本、风险和约束 多目标权重与硬边界如何确定
时间 当前探索可能造成延迟风险 长期安全后果如何评价
更新 拉格朗日惩罚、Shield、KL、保守正则限制更新 约束强度如何调节
估计 风险模型、模拟器和不确定性估计决定安全判断 模型误差如何被发现
数据 Offline RL、仿真、人工审核降低在线风险 数据覆盖不足如何突破
探索 探索被限制在可接受边界内 如何保留能力增长空间

安全探索没有消灭风险。它将风险显式化、预算化、分阶段化,并为不可接受的后果设置护栏。


14. 本章小结

安全强化学习不仅优化奖励:

$$\max_\pi J_R(\pi)$$

还要满足成本约束:

$$J_C(\pi) \leq d$$

拉格朗日目标为:

$$\mathcal{L} (\pi,\lambda)= J_R(\pi)- \lambda [ J_C(\pi)-d ]$$

安全层还可以限制执行动作:

$$a_t^{\mathrm{exec}} = \Pi_{\mathcal{A}_{\mathrm{safe}}} ( a_t )$$

至此,六个核心问题已经全部展开。

下一部分不再按时间顺序介绍算法,而是回到全景图:

DQN、策略梯度、Actor-Critic 与 Model-Based RL 分别是如何组合这些矛盾的?


第七部分:把算法放回全景图

第 16 章 综合案例一:价值方法如何一步步长成 DQN

如果只看最终形式,DQN 很容易被误解成“用神经网络拟合一个 Q 函数”。这句话不能算错,却漏掉了真正重要的部分。

DQN 不是突然出现的技巧集合。它背后有一条清晰的演化路径:

  1. Bellman 方程把长期回报拆成当前奖励与未来价值;
  2. 动态规划在已知环境中反复执行评估与改进;
  3. Monte Carlo 方法放弃环境模型,直接从完整轨迹学习;
  4. SARSA 用一步自举提高更新效率;
  5. Q-Learning 允许学习者使用旧策略采集的数据;
  6. DQN 用神经网络表示价值函数,再用经验回放与目标网络压住由此产生的不稳定。

每一步都在解决一个真实问题,也都在引入新的代价。

这一章不是算法年表,而是一场组装实验。我们要观察:当目标、时间、更新、估计、数据和探索逐步叠加时,一个现代价值方法是如何长出来的。


一、从 Bellman 方程重新出发

本章起,综合案例采用教材中更常见的 $R_{t+1}$ 记号:执行动作 $A_t$ 后获得奖励 $R_{t+1}$。前文使用的 $r_t$ 表示同一条转移上的奖励。两种记号只是索引约定不同,不应在同一条公式中混用。

在状态 $s$ 下执行动作 $a$,策略 $\pi$ 的动作价值函数定义为:

$$Q^\pi(s,a) = \mathbf{E}\pi [ \sum{k=0}^{\infty} \gamma^k R_{t+k+1} \mid S_t=s,A_t=a ]$$

其中:

符号 含义
$Q^\pi(s,a)$ 在状态 $s$ 先执行动作 $a$,之后遵循策略 $\pi$ 时的期望长期回报
$R_{t+k+1}$ 从时刻 $t+k$ 到 $t+k+1$ 获得的奖励
$\gamma$ 折扣因子,控制未来奖励在当前判断中的权重
$\mathbf{E}_\pi$ 对环境随机性和策略随机性取期望

Bellman 方程把这段无限长的未来压缩为一步递归:

$$Q^\pi(s,a)= \mathbf{E} [ R_{t+1} + \gamma \sum_{a'} \pi(a'\mid S_{t+1})Q^\pi(S_{t+1},a') \mid S_t=s,A_t=a ]$$

它表达的是:

当前动作的价值,等于眼前奖励,加上下一状态中未来行动价值的折扣期望。

如果寻找的是最优动作价值函数,则有 Bellman 最优方程:

$$Q^(s,a)= \mathbf{E} [ R_{t+1} + \gamma \max_{a'} Q^(S_{t+1},a') \mid S_t=s,A_t=a ]$$

这里最关键的变化是:

$$\sum_{a'}\pi(a'\mid s')Q^\pi(s',a')\quad\longrightarrow\quad \max_{a'}Q^*(s',a')$$

前者问:“按照当前策略行动,未来大概会怎样?”

后者问:“如果未来每一步都选择最有价值的动作,当前动作值多少?”

这就是价值方法的核心野心:不必直接存储一个复杂策略,只要估计好每个动作的长期价值,就可以通过

$$\pi(s)=\arg\max_a Q(s,a)$$

得到行动规则。


二、已知环境时:动态规划在迭代什么

假设环境转移概率 $p(s',r\mid s,a)$ 已知,状态和动作数量也足够小。此时可以直接使用动态规划。

1. Policy Evaluation:评估当前策略

给定策略 $\pi$,反复更新:

$$V_{k+1}(s)= \sum_a \pi(a\mid s)\sum_{s',r} p(s',r\mid s,a)[ r+\gamma V_k(s') ]$$

其中:

符号 含义
$V_k(s)$ 第 $k$ 轮迭代时,对状态 $s$ 的价值估计
$\pi(a\mid s)$ 当前策略在状态 $s$ 选择动作 $a$ 的概率
$p(s',r\mid s,a)$ 执行动作后到达 $s'$ 并获得奖励 $r$ 的概率

每一次迭代,都用上一轮的价值估计重新计算当前状态价值。它已经包含自举。

2. Policy Improvement:让策略偏向更优动作

完成评估后,可以根据动作价值改进策略:

$$\pi_{\mathrm{new}}(s)= \arg\max_a \sum_{s',r} p(s',r\mid s,a)[ r+\gamma V^\pi(s') ]$$

策略评估和策略改进交替进行,构成 Policy Iteration。

3. Value Iteration:把评估和改进压在一起

如果不等待策略被完整评估,而是直接朝最优价值函数迭代:

$$V_{k+1}(s)= \max_a \sum_{s',r} p(s',r\mid s,a)[ r+\gamma V_k(s') ]$$

就得到 Value Iteration。

动态规划揭示了强化学习的基本骨架:

先估计未来,再根据估计改进决策;决策变化后,再重新估计未来。

但动态规划有一个苛刻前提:环境模型必须已知。现实中的机器人、游戏玩家或推荐系统,通常无法提前获得完整的 $p(s',r\mid s,a)$。

于是问题变成:能否只依靠亲自经历过的轨迹学习?


三、Monte Carlo Control:不用自举,先相信完整结局

Monte Carlo 方法等待一个 episode 结束,再计算某个时刻之后真正发生的回报:

$$G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots$$

然后用它更新动作价值:

$$Q(S_t,A_t)\leftarrow Q(S_t,A_t)+ \alpha [ G_t-Q(S_t,A_t) ]$$

其中:

符号 含义
$G_t$ 从时刻 $t$ 开始实际观察到的完整折扣回报
$\alpha$ 学习率
$G_t-Q(S_t,A_t)$ 真实回报与当前估计之间的误差

假设一次游戏轨迹中,某个动作之后得到奖励:

$$0,\quad 0,\quad 1$$

取 $\gamma=0.9$,则该动作的回报为:

$$G_t = 0+0.9\times 0+0.9^2\times 1 = 0.81$$

Monte Carlo 方法的优点很直观:它不需要环境模型,也不需要用一个尚未学好的价值估计去教另一个价值估计。

它的缺点同样直观:

  1. 必须等轨迹结束后才能更新;
  2. 轨迹越长,回报随机性越大;
  3. 很难及时把新经验转化为学习信号。

它用“等待完整结局”换取了较少的自举偏差,却付出了高方差和低更新频率。


四、SARSA:每走一步,就更新一步

如果不想等待结局,可以使用一步 TD 目标:

$$Y_t^{\mathrm{SARSA}} = R_{t+1} + \gamma Q(S_{t+1},A_{t+1})$$

更新规则为:

$$Q(S_t,A_t)\leftarrow Q(S_t,A_t)+ \alpha [ R_{t+1} + \gamma Q(S_{t+1},A_{t+1})- Q(S_t,A_t) ]$$

SARSA 的名字来自这五个量:

$$S_t,\ A_t,\ R_{t+1},\ S_{t+1},\ A_{t+1}$$

它在用下一步真实选择的动作 $A_{t+1}$ 更新当前动作价值。

这意味着:如果当前策略带有探索,例如有一定概率随机行动,那么 SARSA 评估的正是这个带探索行为的策略。

悬崖边的差别

想象一个网格世界。最短路径沿着悬崖边缘前进,但探索动作偶尔会让智能体跌落悬崖。

SARSA 会把这种风险计入价值:

$$\mathrm{未来动作可能探索失误} \quad\Rightarrow\quad \mathrm{悬崖边路径价值下降}$$

因此它往往学出更稳妥的路线。

SARSA 是 On-Policy 方法:产生数据的策略和被学习的策略基本一致。


五、Q-Learning:学习一个比行为更贪心的目标

Q-Learning 把下一步真实动作换成最大动作价值:

$$Y_t^{\mathrm{Q}} = R_{t+1} + \gamma \max_{a'} Q(S_{t+1},a')$$

更新规则为:

$$Q(S_t,A_t)\leftarrow Q(S_t,A_t)+ \alpha [ R_{t+1} + \gamma \max_{a'} Q(S_{t+1},a')- Q(S_t,A_t) ]$$

SARSA 与 Q-Learning 的差别只有一处:

$$Q(S_{t+1},A_{t+1})\quad\mathrm{与}\quad \max_{a'}Q(S_{t+1},a')$$

但这处差别改变了问题的性质。

方法 数据由谁产生 更新目标假设未来如何行动
SARSA 当前带探索策略 继续按照当前策略行动
Q-Learning 可以是带探索的行为策略 未来选择当前估计中最优的动作

Q-Learning 是 Off-Policy 方法。它允许学习者一边用带探索的行为策略采集数据,一边学习一个更贪心的目标策略。

这提高了数据利用的灵活性,却也引入两个风险:

  1. 最大化操作可能放大估计误差;
  2. 数据分布与目标策略不再完全一致。

前文讨论过的最大化偏差和分布漂移,已经开始进入系统。


六、从表格走向神经网络

如果状态空间很小,可以为每个 $(s,a)$ 存储一格数值:

状态 动作左 动作右
$s_1$ 0.4 0.7
$s_2$ 0.1 0.9

但面对图像输入,这种表格迅速失效。屏幕上像素稍有变化,就可能形成一个新状态。

DQN 使用神经网络近似动作价值函数:

$$Q(s,a;\theta)$$

其中:

符号 含义
$s$ 当前状态,例如一帧或多帧游戏画面
$a$ 候选动作
$\theta$ 神经网络参数
$Q(s,a;\theta)$ 网络对动作长期价值的估计

对离散动作空间,网络通常一次输出所有动作的价值:

$$[ Q(s,a_1;\theta), Q(s,a_2;\theta), \ldots, Q(s,a_m;\theta) ]$$

这让不同状态之间共享表示成为可能。网络不必逐格记忆,它可以学习“前方出现障碍”“角色接近目标”等可复用特征。

但函数逼近也让风险扩大了。

更新一个样本,不再只修改表格中的一格;它会通过共享参数改变许多状态的估计。一个局部误差可能沿着网络参数扩散到整个价值空间。


七、DQN 的损失函数

DQN 使用如下目标:

$$Y_t^{\mathrm{DQN}} = R_{t+1} + \gamma \max_{a'} Q(S_{t+1},a';\theta^-)$$

再最小化平方 TD 误差:

$$\mathcal{L}(\theta)= \mathbf{E}{(s,a,r,s')\sim \mathcal{D}} [ ( r+\gamma\max{a'}Q(s',a';\theta^-)- Q(s,a;\theta))^2 ]$$

其中:

符号 含义
$\mathcal{D}$ 经验回放缓冲区
$\theta$ 正在被梯度下降更新的在线网络参数
$\theta^-$ 暂时冻结的目标网络参数
$r+\gamma\max_{a'}Q(s',a';\theta^-)$ 用于训练当前网络的自举目标
$Q(s,a;\theta)$ 当前网络对已执行动作的估计

梯度更新为:

$$\theta \leftarrow \theta - \alpha \nabla_\theta \mathcal{L}(\theta)$$

表面上看,这与监督学习很像:有输入、有目标、有平方误差。

但 DQN 的标签并不是固定答案。标签中的

$$Q(s',a';\theta^-)$$

仍然来自学习者自己的估计。

因此它不是在拟合静态真值,而是在用一个暂时冻结的自己训练另一个自己。


八、经验回放压住什么不稳定

在线交互产生的数据通常高度相关:

$$(S_t,A_t,R_{t+1},S_{t+1}), (S_{t+1},A_{t+1},R_{t+2},S_{t+2}), \ldots$$

连续画面彼此相似,连续动作也受同一段情境影响。如果直接按顺序训练,网络会被近期经验牵着走。

DQN 把转移存入经验回放缓冲区:

$$\mathcal{D} = { (s_i,a_i,r_i,s'i) }{i=1}^{N}$$

训练时随机抽取小批量样本:

$$(s,a,r,s')\sim \operatorname{Uniform}(\mathcal{D})$$

它主要缓解两件事:

  1. 打散时间相关性;
  2. 重复利用旧数据,提高样本效率。

但经验回放也会把问题推向 Off-Policy:

缓冲区中的经验来自过去的策略,而当前网络已经发生变化。

于是旧经验既是资产,也是分布漂移的来源。


九、目标网络压住什么不稳定

如果训练目标和被训练的预测都由同一组参数产生:

$$( r+\gamma\max_{a'}Q(s',a';\theta)- Q(s,a;\theta))^2$$

那么每次更新 $\theta$,预测会变化,目标也会变化。学习者像是在追逐一个同步移动的靶子。

DQN 复制出一组目标网络参数:

$$\theta^- \leftarrow \theta$$

但只每隔若干步更新一次。两次同步之间,$\theta^-$ 保持不变。

这样,当前网络暂时拥有一个相对稳定的训练目标:

$$r+\gamma\max_{a'}Q(s',a';\theta^-)$$

目标网络没有消除自举。它只是降低了自举目标变化的速度。

这一区分很重要:

稳定化工具通常不是删除矛盾,而是让矛盾在可控的时间尺度上发生。


十、DQN 中的致命三角

DQN 同时拥有:

  1. 函数逼近:使用神经网络 $Q(s,a;\theta)$;
  2. 自举:用下一状态的估计更新当前估计;
  3. Off-Policy 学习:从经验回放中的旧数据学习。

这正是致命三角。

它不是说 DQN 必然失败,而是说系统具备不稳定的条件。经验回放和目标网络之所以重要,是因为它们分别在不同位置降低风险。

风险来源 可能发生的问题 DQN 的应对方式
连续样本相关 网络过度追随近期经验 随机经验回放
自举目标快速变化 学习目标漂移 冻结目标网络
最大化偏差 高估动作价值 Double DQN 等后续改进
旧数据分布不一致 学到过时或覆盖不足的行为 缓冲区设计、探索策略与更新控制

DQN 不是终点。它是一种平衡:允许系统在复杂状态空间中学习,同时尽量不让误差传播失控。


十一、价值方法的适用范围与局限

价值方法尤其适合:

  1. 动作空间离散且规模不太大;
  2. 能够通过比较动作价值直接选出动作;
  3. 希望充分复用历史数据;
  4. 环境交互成本较高,需要较强样本利用率。

它也有明显局限。

1. 连续动作难以直接最大化

如果动作是机械臂关节角度、汽车方向盘角度或连续控制信号,那么:

$$\arg\max_a Q(s,a)$$

本身可能成为困难的优化问题。

2. 随机策略不是自然产物

价值方法通常通过 $\epsilon$-greedy 等外部机制加入探索。策略的随机性更像附加层,而不是目标函数中的原生组成部分。

3. 价值误差会直接变成行动误差

策略通过

$$\arg\max_a Q(s,a)$$

产生。哪怕多个动作价值只差一点,估计顺序一旦出错,行动就会突然切换。

这会把我们带到下一章:

如果不再先学习“每个动作值多少”,而是直接学习“应该如何行动”,会怎样?


十二、演化路径:每一次进步都转移了矛盾

方法 主要解决的问题 引入或暴露的新代价
动态规划 在已知模型中计算长期价值 需要完整环境模型
Monte Carlo Control 摆脱已知模型 必须等待结局,高方差
SARSA 允许逐步在线更新 使用自举目标,仍受当前探索策略影响
Q-Learning 可用探索数据学习更贪心的目标策略 最大化偏差与 Off-Policy 风险
DQN 用神经网络处理高维状态 函数逼近、自举和旧数据共同放大不稳定
Replay + Target Network 降低相关性和目标漂移 仍未消除分布偏移与估计误差

理解这一张表,比背诵算法步骤更重要。


回归全景图(Callback)

现在把 DQN 放回六个坐标轴。

维度 DQN 的回答 它没有消除的矛盾
目标 最大化折扣累计奖励 奖励设计不当仍会把策略带向错误方向
时间 用 Bellman 最优方程把未来压回当前 长期信用仍依赖自举估计
更新 最小化平方 TD 误差 损失下降不等于真实长期回报必然提高
估计 用目标网络构造 TD 目标 目标仍然来自学习者自身,最大化仍可能放大误差
数据 从经验回放中复用历史转移 旧数据与当前策略的数据分布不完全一致
探索 常用 $\epsilon$-greedy 采集新经验 简单随机探索在稀疏奖励任务中可能效率很低

再看三条反馈循环:

反馈循环 DQN 中的具体形式
外部交互循环 $\epsilon$-greedy 策略行动,环境返回新转移,新转移进入回放缓冲区
时间回报循环 下一状态最大动作价值通过 Bellman 自举回流到当前动作
自我更新循环 缓冲区样本构造 TD 目标,更新网络,网络改变行为策略,又改变之后采集的数据

DQN 的价值不在于消灭了强化学习的困难,而在于把多个困难压缩到一个可以运行、可以调试、可以扩展的工程结构中。


本章小结

价值方法的发展可以概括为一句话:

为了更早更新、更充分利用数据并处理更复杂的状态,学习者逐步接受了自举、Off-Policy 和函数逼近;随后又不得不发明稳定化工具,管理这些选择带来的风险。

DQN 是前文多个主题的第一次完整汇合:

  • Bellman 方程负责连接现在与未来;
  • TD 误差负责把长期目标变成一次更新;
  • Q-Learning 允许行为策略与目标策略分离;
  • 神经网络负责跨状态泛化;
  • 经验回放与目标网络负责降低不稳定;
  • 探索策略负责持续制造新数据。

下一章,我们将换一条路线:不再把策略藏在 $\arg\max Q$ 后面,而是直接学习策略本身。


第 17 章 综合案例二:为什么要直接学习策略

价值方法的行动规则很自然:

$$\pi(s)=\arg\max_a Q(s,a)$$

先估计每个动作值多少,再选价值最高的动作。

但这不是唯一道路。在很多任务中,我们更希望直接学习:

$$\pi_\theta(a\mid s)$$

也就是:在状态 $s$ 下,动作 $a$ 应该以多大概率被选择。

这种路线称为策略梯度方法。它不再把策略藏在动作价值函数后面,而是让策略成为优化对象本身。

这一步看似只是换了一个输出形式,实际上改变了整个学习结构。


一、为什么 $\arg\max Q$ 并不总是理想答案

1. 连续动作空间中的最大化很困难

假设机器人手臂的动作由多个连续关节角度构成:

$$a= [ a_1,a_2,\ldots,a_d ] \in \mathbb{R}^d$$

若使用价值方法,每次行动前都要解:

$$a^* = \arg\max_a Q(s,a)$$

离散动作只有几个按钮时,逐个比较并不困难。但连续动作有无限多种取值,寻找最大值本身就可能是一个昂贵的优化问题。

如果策略网络直接输出动作或动作分布,行动会更简单:

$$a \sim \pi_\theta(\cdot\mid s)$$

2. 某些最优策略本来就需要随机性

在石头剪刀布中,如果永远选择当前看起来最好的动作,对手很快就能利用这种规律。

理想策略不是固定输出一个动作,而是保持某种概率分布:

$$\pi(\mathrm{石头})= \pi(\mathrm{剪刀})= \pi(\mathrm{布})= \frac{1}{3}$$

随机策略不是偶然噪声,而可能是解的一部分。

3. 动作价值的微小误差会造成决策突变

假设两个动作的估计值为:

$$Q(s,a_1)=1.01, \qquad Q(s,a_2)=1.00$$

策略选择 $a_1$。

如果估计略微变化:

$$Q(s,a_1)=0.99, \qquad Q(s,a_2)=1.00$$

动作会突然切换到 $a_2$。

$\arg\max$ 是离散跳变。直接参数化策略则可以让行为变化更加平滑。


二、参数化策略:直接描述如何行动

用参数 $\theta$ 表示策略:

$$\pi_\theta(a\mid s)= \Pr(A_t=a\mid S_t=s;\theta)$$

对离散动作,策略网络通常输出 logits:

$$z_\theta(s) = [ z_1,z_2,\ldots,z_m ]$$

再通过 Softmax 得到动作概率:

$$\pi_\theta(a_i\mid s)= \frac{ \exp(z_i)}{ \sum_{j=1}^{m}\exp(z_j)}$$

其中:

符号 含义
$z_i$ 动作 $a_i$ 的未归一化分数
$\exp(z_i)$ 将分数变为正数
$\sum_j\exp(z_j)$ 归一化项
$\pi_\theta(a_i\mid s)$ 最终动作概率

例如:

$$z_\theta(s)=[1,2]$$

则:

$$\pi_\theta(a_1\mid s) = \frac{e1}{e1+e^2} \approx 0.269$$

$$\pi_\theta(a_2\mid s) = \frac{e2}{e1+e^2} \approx 0.731$$

策略网络不是直接宣布“动作二价值更高”,而是给出“动作二更可能被选择”。


三、我们究竟要优化什么

一条轨迹记为:

$$\tau = (S_0,A_0,R_1,S_1,A_1,R_2,\ldots)$$

轨迹回报可以写成:

$$R(\tau) = \sum_{t=0}^{T-1} \gamma^t R_{t+1}$$

策略优化目标为:

$$J(\theta) = E_{\tau \sim \pi_\theta} [ R(\tau) ]$$

这句话的含义很直接:

调整策略参数,使它产生的轨迹拥有更高的期望长期回报。

展开期望:

$$J(\theta)= \sum_\tau p_\theta(\tau)R(\tau)$$

其中,$p_\theta(\tau)$ 是策略 $\pi_\theta$ 产生轨迹 $\tau$ 的概率。

对参数求梯度:

$$\nabla_\theta J(\theta)= \sum_\tau \nabla_\theta p_\theta(\tau)R(\tau)$$

真正的难点出现了:环境可能不可微,轨迹又是随机采样出来的。如何得到可用梯度?


四、Log-Derivative Trick:把概率梯度写成对数概率梯度

利用恒等式:

$$\nabla_\theta p_\theta(\tau)= p_\theta(\tau)\nabla_\theta \log p_\theta(\tau)$$

可以改写目标梯度:

$$\nabla_\theta J(\theta)= \sum_\tau p_\theta(\tau)\nabla_\theta \log p_\theta(\tau)R(\tau)$$

也就是:

$$\nabla_\theta J(\theta)=E_{\tau \sim \pi_\theta}\big[\nabla_\theta \log p_\theta(\tau) R(\tau)\big]$$

轨迹概率可以拆成:

$$p_\theta(\tau)= \rho_0(S_0)\prod_{t=0}^{T-1} \pi_\theta(A_t\mid S_t)p(S_{t+1}\mid S_t,A_t)$$

其中:

因子 含义
$\rho_0(S_0)$ 初始状态分布
$\pi_\theta(A_t\mid S_t)$ 策略选择动作的概率
$p(S_{t+1}\mid S_t,A_t)$ 环境转移概率

取对数后,乘法变成加法:

$$\log p_\theta(\tau)= \log\rho_0(S_0)+ \sum_{t=0}^{T-1} \log \pi_\theta(A_t\mid S_t)+ \sum_{t=0}^{T-1} \log p(S_{t+1}\mid S_t,A_t)$$

对 $\theta$ 求梯度时,初始状态分布与环境转移概率都不依赖策略参数,因此消失:

$$\nabla_\theta \log p_\theta(\tau)= \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

代回原式:

$$\nabla_\theta J(\theta) = E_{\tau \sim \pi_\theta} [ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(A_t | S_t) R(\tau) ]$$

这是一个关键结果:

即使不知道环境如何求导,也可以通过“动作的对数概率”与“轨迹回报”的乘积,估计策略更新方向。


五、REINFORCE:奖励好的动作,提高其出现概率

REINFORCE 使用从当前时刻开始的回报:

$$G_t = \sum_{k=t}^{T-1} \gamma^{k-t}R_{k+1}$$

梯度估计写成:

$$\widehat{\nabla_\theta J(\theta)} = \sum_{t=0}^{T-1} \gamma^t G_t \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

参数沿梯度上升方向更新:

$$\theta \leftarrow \theta + \alpha \sum_{t=0}^{T-1} \gamma^t G_t \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

其中:

符号 含义
$G_t$ 动作 $A_t$ 之后实际观察到的回报
$\log \pi_\theta(A_t\mid S_t)$ 当前策略赋予已执行动作的对数概率
$\nabla_\theta\log \pi_\theta(A_t\mid S_t)$ 怎样调整参数才能提高该动作的概率
$\alpha$ 学习率

这里显式保留了 $\gamma^t$,因为本章从起点时刻的折扣目标 $R(\tau)$ 出发。在另一种常见写法中,时间权重会被状态采样分布吸收,因此也经常看到省略 $\gamma^t$ 的形式。

如果 $G_t$ 较大,就增强该动作在相似状态下出现的概率。

如果 $G_t$ 较小甚至为负,就削弱该动作的概率。

在代码中,常常把梯度上升改写成最小化负号形式的代理损失:

$$L_{REIN}(\theta)=-E[\gamma^t G_t \log \pi_\theta(A_t|S_t)]$$

这又一次说明:强化学习中的“损失函数”往往是更新装置,不是最终目标本身。


六、为什么直接使用回报会有高方差

考虑两条几乎相同的轨迹。它们在早期都执行了动作 $a$,但因为后续环境随机性不同,最终回报分别为:

$$G_t^{(1)}=10, \qquad G_t^{(2)}=-2$$

同一个早期动作,第一次被大力鼓励,第二次又被明显抑制。

问题在于:

完整回报不仅包含当前动作的贡献,也混合了之后所有动作和环境随机性的影响。

REINFORCE 不使用自举,减少了一类估计偏差,却承受了较高方差。

这与 Monte Carlo 价值估计面临的是同一种代价。


七、Baseline:只奖励“比预期更好”的动作

可以从回报中减去一个只依赖状态的基线 $b(S_t)$:

$$\widehat{\nabla_\theta J(\theta)} = \sum_t \gamma^t [ G_t-b(S_t)] \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

最常见选择是状态价值函数:

$$b(S_t)=V^\pi(S_t)$$

于是:

$$G_t-V^\pi(S_t)$$

表示这次行动结果比通常预期好多少。

Baseline 为什么不会改变期望梯度

关键是 $b(s)$ 不依赖当前动作。对固定状态 $s$:

$$\mathbf{E}{A \sim \pi\theta} [ b(s)\nabla_\theta \log \pi_\theta(A\mid s) ]$$

$$= b(s)\sum_a \pi_\theta(a\mid s)\nabla_\theta \log \pi_\theta(a\mid s)$$

由于:

$$\pi_\theta(a\mid s)\nabla_\theta \log \pi_\theta(a\mid s)= \nabla_\theta \pi_\theta(a\mid s)$$

所以:

$$b(s)\sum_a \nabla_\theta \pi_\theta(a\mid s)= b(s)\nabla_\theta \sum_a \pi_\theta(a\mid s)$$

而动作概率之和恒为 $1$:

$$\sum_a\pi_\theta(a\mid s)=1$$

因此:

$$b(s)\nabla_\theta 1=0$$

baseline 不会改变期望梯度,只会降低梯度估计的方差。

这是一种很漂亮的工程思想:

不改变长期目标,只减少更新中的无谓摇摆。


八、Advantage Function:相对好坏比绝对分数更重要

优势函数定义为:

$$A^\pi(s,a)= Q\pi(s,a)-V\pi(s)$$

其中:

符号 含义
$Q^\pi(s,a)$ 在状态 $s$ 执行动作 $a$ 后的长期价值
$V^\pi(s)$ 在状态 $s$ 按当前策略行动的平均长期价值
$A^\pi(s,a)$ 动作 $a$ 相对当前平均水平好多少

假设某个状态中:

$$V^\pi(s)=8$$

两个动作价值为:

$$Q^\pi(s,a_1)=10, \qquad Q^\pi(s,a_2)=7$$

则:

$$A^\pi(s,a_1)=2$$

$$A^\pi(s,a_2)=-1$$

动作 $a_1$ 应该被鼓励,动作 $a_2$ 应该被抑制。

策略梯度定理常写为:

$$\nabla_\theta J(\theta)\propto \mathbf{E}{S\sim d^\pi,\ A \sim \pi\theta} [ Q^\pi(S,A)\nabla_\theta \log \pi_\theta(A\mid S) ]$$

减去 baseline 后,也可以写成:

$$\nabla_\theta J(\theta)\propto \mathbf{E} [ A^\pi(S,A)\nabla_\theta \log \pi_\theta(A\mid S) ]$$

其中 $d^\pi$ 表示当前策略诱导出的状态访问分布。

这条公式揭示了策略梯度的核心:

提高优势为正的动作概率,降低优势为负的动作概率。


九、连续动作空间:策略可以直接输出分布

对连续动作,可以令策略输出高斯分布参数:

$$\pi_\theta(a\mid s)= \mathcal{N} ( a; \mu_\theta(s), \sigma_\theta^2(s))$$

其中:

符号 含义
$\mu_\theta(s)$ 状态 $s$ 下动作分布的均值
$\sigma_\theta(s)$ 动作分布的标准差
$\mathcal{N}$ 高斯概率密度

例如,机械臂在当前状态下输出:

$$\mu_\theta(s)=0.4, \qquad \sigma_\theta(s)=0.1$$

策略会在 $0.4$ 附近采样动作,而不是从无限多动作中重新求解一次 $\arg\max$。

标准差还天然表达探索强度:

$$\sigma_\theta(s)\ \mathrm{较大} \quad\Rightarrow\quad \mathrm{尝试范围更广}$$

$$\sigma_\theta(s)\ \mathrm{较小} \quad\Rightarrow\quad \mathrm{行动更集中}$$

探索不再只是外挂的随机按钮,而可以成为策略表示的一部分。


十、策略梯度解决了什么,又牺牲了什么

方面 直接学习策略的优势 对应代价
连续动作 可以直接输出连续动作分布 策略更新可能不稳定
随机策略 随机性天然进入策略表示 需要管理探索强度与熵
优化形式 可以直接朝期望长期回报优化 梯度估计通常方差较高
数据利用 On-Policy 形式清晰 旧数据不容易直接复用
行为变化 概率分布可平滑调整 步长过大仍可能造成性能突然下降

尤其需要注意最后一点。

策略决定数据分布。当参数变化后:

$$\theta \longrightarrow \pi_\theta \longrightarrow d^{\pi_\theta}$$

新的策略会访问新的状态,采集新的数据。如果一次更新太激进,策略可能离开熟悉区域,进入估计器并不了解的状态空间。

因此,后续方法会反复讨论一个主题:

如何让策略改进足够明显,但又不要一步走得太远?


十一、边界:策略梯度不是“对真实回报直接反向传播”

策略梯度容易引发一种误解:既然最终目标是长期回报,那么是不是可以像监督学习一样,从最终奖励一路反向传播到每个动作?

通常不能。

环境转移未必可微,动作采样也可能是离散的。策略梯度使用的是概率技巧:

$$\nabla_\theta\log \pi_\theta(A_t\mid S_t)$$

它并没有要求对环境本身求导。

另一种误解是:策略梯度绕过了价值估计。

最基础的 REINFORCE 确实可以只使用实际回报。但为了降低方差,实际系统通常会引入 baseline、优势函数或 Critic。于是价值估计会重新回到系统中。

它没有消失,而是换了位置。


回归全景图(Callback)

把策略梯度放回六个坐标轴:

维度 策略梯度的回答 它没有消除的矛盾
目标 直接最大化策略产生轨迹的期望回报 $J(\theta)$ 奖励是否真正表达意图仍然是外部问题
时间 用完整回报或优势把未来结果分配给早期动作 长期轨迹会带来高方差和信用分配困难
更新 用 $\nabla_\theta\log \pi_\theta(a\mid s)$ 构造代理梯度 代理损失下降不保证每次策略更新都提高真实性能
估计 REINFORCE 可使用 Monte Carlo 回报,baseline 可降低方差 低偏差往往伴随高方差,引入价值估计后又会增加偏差
数据 通常使用当前策略采集的数据 On-Policy 数据更新后迅速过时,样本利用率有限
探索 随机策略和动作分布天然表达探索 探索程度仍需设计,过强与过弱都会损害学习

再看三条反馈循环:

反馈循环 策略梯度中的具体形式
外部交互循环 策略采样动作,环境返回轨迹和奖励
时间回报循环 轨迹后段的奖励通过 $G_t$ 或优势回到早期动作
自我更新循环 回报加权对数概率梯度更新策略,策略变化后重新定义未来数据分布

策略梯度把策略放到了舞台中央,却没有摆脱估计问题。恰恰相反,它很快提出一个新需求:

能否专门训练一个评价者,帮助行动者更稳定地判断哪些动作值得加强?


本章小结

直接学习策略的逻辑可以浓缩为四步:

  1. 用 $\pi_\theta(a\mid s)$ 描述行动概率;
  2. 用长期回报 $J(\theta)$ 定义最终目标;
  3. 用 Log-Derivative Trick 把不可微环境中的轨迹采样变成可估计的策略梯度;
  4. 用 baseline 或 advantage 降低更新方差。

它解决了连续动作和随机策略的表达问题,也让策略本身可以被直接优化。

但 REINFORCE 的梯度仍然摇摆很大,数据利用率也不高。

下一章,Actor-Critic 会把两条路线重新合并:Actor 负责行动,Critic 负责判断行动相对预期究竟好不好。


第 18 章 综合案例三:Actor-Critic 如何让行动者与评价者合作

策略梯度提供了一种直接而优雅的想法。忽略可由采样约定吸收的时间权重,单步更新可以简写为:

$$\theta \leftarrow \theta + \alpha G_t \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

如果一次行动之后的回报较高,就增加这类行动再次发生的概率。

但完整回报 $G_t$ 混合了太多因素:后续动作、环境随机性、轨迹长度和奖励噪声都会让更新剧烈摇摆。

于是,一个自然问题出现了:

能否安排一个评价者,专门判断当前动作比通常水平好多少,再由行动者根据这个判断调整策略?

这就是 Actor-Critic。

  • Actor 是行动者:负责输出策略;
  • Critic 是评价者:负责估计价值或优势;
  • Actor 根据 Critic 的反馈更新;
  • Critic 又根据 Actor 采集的新数据更新。

这不是单向流水线,而是一个相互依赖的反馈系统。

图 18-1:Actor-Critic 双循环

图 18-1:Actor-Critic 双循环


一、为什么 Actor 需要 Critic

在 REINFORCE 中,动作的权重可以使用完整回报:

$$G_t = R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{T-t-1}R_T$$

如果 episode 很长,学习者必须等待很久,才能知道早期动作是否值得鼓励。

Critic 尝试提前回答这个问题。

它可以估计状态价值:

$$V_w(s)\approx V^\pi(s)$$

其中 $w$ 是 Critic 的参数。

也可以估计动作价值:

$$Q_w(s,a)\approx Q^\pi(s,a)$$

或直接估计优势:

$$A_w(s,a)\approx A^\pi(s,a)$$

Critic 的作用不是替代奖励,而是把延迟奖励翻译成更及时的学习信号。


二、一步 TD 误差:把 Critic 的判断压缩成一个数

如果 Critic 估计状态价值,可以构造一步 TD 目标:

$$Y_t = R_{t+1} + \gamma V_w(S_{t+1})$$

TD 误差为:

$$\delta_t = R_{t+1} + \gamma V_w(S_{t+1})- V_w(S_t)$$

其中:

含义
$R_{t+1}$ 当前动作带来的即时奖励
$\gamma V_w(S_{t+1})$ 对下一状态未来价值的折扣估计
$V_w(S_t)$ 行动前对当前状态的预期
$\delta_t$ 实际进展相对原先预期好多少

如果:

$$\delta_t>0$$

说明结果比预期好,当前动作应被鼓励。

如果:

$$\delta_t<0$$

说明结果比预期差,当前动作应被抑制。

在适当条件下,一步 TD 误差可以看作优势函数的带噪估计:

$$\delta_t \approx A^\pi(S_t,A_t)$$

于是 Actor 可以更新:

$$\theta \leftarrow \theta + \alpha_\theta \delta_t \nabla_\theta \log \pi_\theta(A_t\mid S_t)$$

Critic 则最小化价值误差:

$$\mathcal{L}{\mathrm{critic}}(w)= \frac{1}{2} [ R{t+1} + \gamma V_w(S_{t+1})- V_w(S_t) ]^2$$

更新:

$$w \leftarrow w - \alpha_w \nabla_w \mathcal{L}_{\mathrm{critic}}(w)$$

Actor 和 Critic 在同一条转移上各自学习,但承担不同职责。


三、Critic 如何降低方差

假设一个状态的平均回报大约为:

$$V^\pi(s)=100$$

两次轨迹得到:

$$G_t^{(1)}=102, \qquad G_t^{(2)}=98$$

如果直接使用完整回报,更新权重是 $102$ 和 $98$。两次都像是很强的正向信号。

减去状态价值后:

$$G_t^{(1)} - V^\pi(s) = 2$$

$$G_t^{(2)} - V^\pi(s) = -2$$

含义清楚多了:第一次略好于预期,第二次略差于预期。

Critic 将绝对分数变成相对改进信号,使 Actor 不必被回报整体尺度牵着走。

如果使用一步 TD 误差,更新还可以更及时:

$$\delta_t = R_{t+1} + \gamma V_w(S_{t+1})- V_w(S_t)$$

不用等待完整轨迹结束,走一步就能学一步。

代价也随之出现:$V_w(S_{t+1})$ 是估计值,不是真实未来。


四、Critic 的误差如何误导 Actor

假设某个动作真实优势为:

$$A^\pi(s,a)=-1$$

它其实比平均水平差。

但 Critic 因为样本不足或函数逼近误差,给出:

$$\widehat{A}(s,a)=+3$$

Actor 就会错误地提高这个动作的概率:

$$\theta \leftarrow \theta + \alpha_\theta \cdot 3 \cdot \nabla_\theta \log \pi_\theta(a\mid s)$$

新策略会更频繁地执行坏动作,又会采集到一批受错误策略影响的数据。

于是形成反馈:

$$\mathrm{Critic 估计偏差} \longrightarrow \mathrm{Actor 错误更新} \longrightarrow \mathrm{数据分布变化} \longrightarrow \mathrm{Critic 继续在偏移后的数据上学习}$$

Actor-Critic 提高了效率,也让估计误差拥有了更短的传播路径。

因此,学习率、目标网络、优势估计、策略更新约束和数据采样方式都不是次要细节。它们决定双循环能否保持稳定。


五、n 步回报与 GAE:在偏差和方差之间选位置

一步 TD 误差更新及时,但依赖较强自举:

$$\delta_t = R_{t+1} + \gamma V(S_{t+1})- V(S_t)$$

完整回报自举少,但方差较高。

可以使用 $n$ 步回报:

$$G_t^{(n)} = R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{n-1}R_{t+n} + \gamma^n V(S_{t+n})$$

其中:

选择 特点
$n=1$ 更新快,自举强,方差较低,偏差可能较大
$n$ 较大 使用更多真实奖励,偏差通常降低,方差通常提高
直到轨迹结束 退化为 Monte Carlo 回报

PPO 等方法常使用广义优势估计 GAE:

$$\hat A_t^{GAE(\gamma,\lambda)} = \sum_{l=0}^\infty (\gamma\lambda)^l \delta_{t+l}$$

其中:

符号 含义
$\delta_{t+l}$ 从时刻 $t+l$ 开始的一步 TD 误差
$\gamma$ 折扣因子
$\lambda$ 在短期 TD 与长期回报之间调节权衡

$\lambda$ 较小时,更依赖短期自举;$\lambda$ 较大时,更接近较长回报。

GAE 没有发明一条没有代价的估计。它只是提供了一只更精细的旋钮。


六、A2C 与 A3C:并行采样改变了什么

Actor-Critic 的一个现实问题是:连续轨迹中的样本高度相关。

A3C 使用多个异步工作者:

$$\mathrm{Worker}_1,\mathrm{Worker}_2,\ldots,\mathrm{Worker}_n$$

每个工作者在自己的环境副本中采样,然后异步更新共享参数。

不同环境副本产生的轨迹可以降低数据相关性,也提高采样吞吐量。

A2C 可以理解为同步版本:多个工作者并行采样一段轨迹,再汇总梯度统一更新。

方法 更新方式 直观特点
A3C 异步更新 更新更灵活,但并发带来参数时延
A2C 同步批量更新 工程结构更规整,更适合批量计算

它们没有改变 Actor-Critic 的基本原理,只是重新组织数据产生与参数更新的节奏。


七、DDPG:连续控制中的确定性 Actor

对于连续动作,可以让 Actor 直接输出确定性动作:

$$a=\mu_\theta(s)$$

Critic 估计:

$$Q_w(s,a)$$

Actor 的目标是选择能让 Critic 给出高价值的动作:

$$J(\theta)=E_{s \sim D}[Q_w(s,\mu_\theta(s))]$$

利用链式法则:

$$\nabla_{\theta} J(\theta) \approx E_{s \sim D}( \nabla_{a} Q_{w}(s, \mu_{\theta}(s)) \nabla_{\theta} \mu_{\theta}(s) )$$

这条公式表达:

  1. Critic 告诉 Actor,动作朝哪个方向变化会提高价值;
  2. Actor 再调整参数,让输出动作沿该方向移动。

DDPG 还使用经验回放和目标网络,因此可以复用旧数据。

它适合连续控制,却也较敏感:如果 Critic 对某些动作过度乐观,Actor 会主动追逐这些估计漏洞。


八、TD3:防止 Actor 追逐价值幻觉

TD3 针对 DDPG 的价值高估问题加入多项修正,其中最具代表性的是双 Critic:

$$Q_{w_1}(s,a), \qquad Q_{w_2}(s,a)$$

构造目标时取较小值:

$$Y_t^{\mathrm{TD3}} = R_{t+1} + \gamma \min_{i\in{1,2}} Q_{w_i^-} ( S_{t+1}, \mu_{\theta^-}(S_{t+1})+\epsilon )$$

其中:

符号 含义
$w_i^-$ 第 $i$ 个目标 Critic 参数
$\theta^-$ 目标 Actor 参数
$\epsilon$ 加在目标动作上的小扰动
$\min$ 取两个估计中更保守的一个

为什么取较小值?

如果其中一个 Critic 对某个动作产生偶然高估,另一个 Critic 未必同时犯同样错误。取较小值可以减少 Actor 追逐虚假高峰的机会。

TD3 还会延迟 Actor 更新,让 Critic 多学习几步之后再指导策略变化。

它没有让估计变成真值,而是限制错误估计影响 Actor 的速度。


九、SAC:把探索写进目标函数

SAC 使用最大熵目标:

$$J(\pi) = E_{\tau \sim \pi}( \sum_{t=0}^{T-1} \gamma^{t} ( R_{t+1} + \alpha \mathcal{H}( \pi(\cdot | S_{t}) ) ) )$$

其中:

符号 含义
$\mathcal{H}(\pi(\cdot\mid S_t))$ 状态 $S_t$ 下策略分布的熵
$\alpha$ 奖励与熵之间的权衡系数

策略熵定义为:

$$\mathcal{H} ( \pi(\cdot\mid s))= - \mathbf{E}_{a \sim \pi} [ \log \pi(a\mid s) ]$$

SAC 不只鼓励高奖励动作,还鼓励策略在有价值的区域保留多样性。

直观地说,它希望策略做到:

既追求收益,也不要过早变得僵硬。

这对连续控制和多峰动作空间尤其有帮助。

但熵奖励也带来新问题:$\alpha$ 太大,策略可能长期过于随机;$\alpha$ 太小,又可能过早收缩。


十、PPO:用局部约束限制策略突变

策略梯度面临一个核心风险:一次更新太大,策略就会离开旧数据能够可靠解释的区域。

PPO 使用新旧策略概率比:

$$r_t(\theta)= \frac{ \pi_\theta(A_t\mid S_t)}{ \pi_{\theta_{\mathrm{old}}}(A_t\mid S_t)}$$

如果:

$$r_t(\theta)=1$$

说明新旧策略对已执行动作赋予相同概率。

如果:

$$r_t(\theta)>1$$

说明新策略提高了该动作概率。

PPO 的裁剪代理目标为:

$$\mathcal{L}^{\mathrm{CLIP}}(\theta)= \mathbf{E}_t [ \min ( r_t(\theta)\widehat{A}_t, \operatorname{clip} ( r_t(\theta), 1-\epsilon, 1+\epsilon )\widehat{A}_t ) ]$$

其中:

符号 含义
$\widehat{A}_t$ 动作相对预期好坏的优势估计
$r_t(\theta)$ 新旧策略对该动作概率的比值
$\epsilon$ 允许概率比变化的局部范围
$\operatorname{clip}$ 把比值截断在 $[1-\epsilon,1+\epsilon]$ 区间内

例如:

$$\epsilon=0.2$$

则裁剪区间为:

$$[0.8,1.2]$$

当优势为正时,算法希望提高该动作概率;但提高到一定程度后,继续增大概率不再获得额外收益。

当优势为负时,算法希望降低该动作概率;但降低太多同样会被截断。

PPO 的思想不是禁止策略变化,而是:

在旧数据仍然有解释力的局部范围内,完成一轮有限度的改进。


十一、为什么 Actor-Critic 成为主流框架

Actor-Critic 不是某一个算法,而是一类架构。

它能容纳许多选择:

设计位置 可选方案
Actor 形式 离散随机策略、连续高斯策略、确定性策略
Critic 形式 $V(s)$、$Q(s,a)$、双 Q 网络
优势估计 一步 TD、$n$ 步回报、GAE
数据方式 On-Policy 采样、经验回放、并行环境
探索机制 策略随机性、熵奖励、动作噪声
更新约束 目标网络、延迟更新、概率比裁剪

这也是它广泛适用的原因:行动与评价被拆开后,每个部分都能针对具体任务调整。

但模块化不等于简单化。

Actor-Critic 的真正难点是:多个组件通过反馈循环耦合。任意一个环节的误差,都可能被另一个环节放大。


十二、边界:协作并不意味着彼此可信

Actor 和 Critic 的名字容易让人产生拟人化想象:一个负责行动,一个负责给出可靠评价。

实际上,Critic 并不天然可靠。它只是一个同样处于训练过程中的估计器。

Actor 也不是被动接受建议。它会主动寻找 Critic 认为价值高的动作。如果 Critic 的价值地形存在漏洞,Actor 往往会发现并利用它们。

所以 Actor-Critic 的关系更接近:

一个不断变化的行动者,与一个尚未完全学会评价的评价者,在共同制造的数据上互相塑造。

这正是强化学习最典型的反馈系统。


回归全景图(Callback)

把 Actor-Critic 放回六个坐标轴:

维度 Actor-Critic 的回答 它没有消除的矛盾
目标 Actor 朝更高长期回报更新,SAC 等方法还加入熵目标 奖励、熵和约束之间仍需权衡
时间 Critic 用 TD、$n$ 步回报或 GAE 进行信用分配 短期自举与长期高方差之间仍无免费答案
更新 Actor 使用优势加权策略梯度,Critic 最小化价值误差 两个更新过程彼此耦合,学习率和更新节奏很重要
估计 Critic 把延迟奖励转为及时反馈 Critic 偏差会直接误导 Actor
数据 A2C/A3C 使用并行 On-Policy 数据,DDPG/TD3/SAC 可复用旧数据 不同数据机制分别面临样本效率或分布漂移问题
探索 随机策略、动作噪声或熵正则提供探索 探索强度仍可能过早收缩或过度发散

再看三条反馈循环:

反馈循环 Actor-Critic 中的具体形式
外部交互循环 Actor 采取动作,环境返回奖励与下一状态,新数据反过来改变 Actor 和 Critic
时间回报循环 Critic 用未来价值估计构造 TD 信号,回传到当前动作
自我更新循环 Critic 评价 Actor,Actor 改变数据分布,新数据又重塑 Critic

Actor-Critic 没有彻底消解任何根本矛盾。它的贡献是重新分工:

  • Actor 专门承担“如何行动”;
  • Critic 专门承担“如何估计”;
  • 稳定化工具专门管理两者之间的误差传播。

本章小结

Actor-Critic 是前面两条路线的汇合:

  • 价值方法提供评价能力;
  • 策略梯度提供直接优化行动的能力;
  • TD 误差与优势函数连接两者;
  • GAE 在偏差与方差之间调节位置;
  • TD3 降低 Actor 追逐价值幻觉的风险;
  • SAC 把探索写入目标;
  • PPO 限制策略一次走得太远。

它强大,不是因为它没有矛盾,而是因为它能把矛盾分解到不同模块中分别管理。

下一章,我们再向外看一步:如果智能体不仅学习策略和价值,还学习一个可以用于推演的世界模型,会发生什么?


第 19 章 综合案例四:学习策略,还是学习世界

前面的算法大多在做一件事:从真实交互中学习如何行动。

DQN 学习动作价值:

$$Q(s,a)$$

策略梯度学习行动概率:

$$\pi_\theta(a\mid s)$$

Actor-Critic 同时学习策略与价值:

$$\pi_\theta(a\mid s), \qquad V_w(s)\ \mathrm{或}\ Q_w(s,a)$$

但还有另一条道路:

与其只学习“在这个世界中怎样行动”,能否同时学习“这个世界如何运转”?

如果智能体拥有一个近似环境模型,它就可以在真正行动之前,先在内部推演多个未来。

这就是 Model-Based Reinforcement Learning 的基本想法。


一、Model-Free 与 Model-Based 的分界

环境可以用状态转移和奖励机制描述:

$$p(s',r\mid s,a)$$

它回答:

在状态 $s$ 执行动作 $a$ 后,以多大概率到达状态 $s'$ 并获得奖励 $r$?

Model-Free 方法不显式学习这个环境模型。它直接学习价值函数或策略:

$$Q(s,a)\quad\mathrm{或}\quad \pi(a\mid s)$$

Model-Based 方法则尝试学习近似模型:

$$\widehat{p}_\phi(s',r\mid s,a)$$

其中 $\phi$ 是模型参数。

为了便于理解,也可以拆成两部分:

$$\widehat{s}' = f_\phi(s,a)$$

$$\widehat{r} = g_\phi(s,a)$$

其中:

符号 含义
$f_\phi$ 预测执行动作后的下一状态
$g_\phi$ 预测执行动作后的奖励
$\widehat{s}'$ 模型想象出的下一状态
$\widehat{r}$ 模型想象出的奖励

两类方法的核心区别不在于是否使用神经网络,而在于:

学习者是否显式构造了一个可用于预测或规划的环境模型。


二、为什么学习环境模型可能提高样本效率

真实交互通常很贵。

  • 机器人摔倒会损坏硬件;
  • 自动驾驶测试需要安全保障;
  • 工业控制试错可能造成生产损失;
  • 与真人用户交互需要时间和成本。

如果每次策略更新都必须重新向真实环境索取大量数据,学习会非常昂贵。

一个近似模型可以让经验被重复利用。

给定状态 $s_t$ 和候选动作 $a_t$,模型可以预测:

$$\hat s_{t+1}\sim \hat p_\phi(\cdot|s_t,a_t)$$

再从 $\widehat{s}_{t+1}$ 继续推演:

$$\hat s_{t+2}\sim \hat p_\phi(\cdot|\hat s_{t+1},a_{t+1})$$

这样,学习者可以在内部比较多种行动序列:

$$(a_t,a_{t+1},\ldots,a_{t+H-1})$$

而不是每一种方案都亲自执行一次。

模型的价值在于:

它把一部分现实试错变成内部推演。


三、Planning:先推演,再行动

假设已知或学到了模型,可以使用近似 Bellman 更新:

$$\widehat{Q}(s,a)= \widehat{r}(s,a)+ \gamma \sum_{s'} \widehat{p}(s'\mid s,a)\max_{a'} \widehat{Q}(s',a')$$

这个公式与前面的 Bellman 最优方程结构相同,只是环境模型换成了估计值。

在连续或复杂空间中,通常不会穷举全部未来,而会有限深度推演:

$$\hat G_{t:t+H}=\sum_{k=0}^{H-1} \gamma^k \hat R_{t+k+1}+\gamma^H V(\hat S_{t+H})$$

其中:

符号 含义
$H$ 想象轨迹的规划深度
$\widehat{R}_{t+k+1}$ 模型预测的奖励
$\widehat{S}_{t+H}$ 模型推演到第 $H$ 步的状态
$V(\widehat{S}_{t+H})$ 在推演末端使用价值函数补上更远未来

这又是一种截断:

  • 前 $H$ 步依靠模型显式推演;
  • $H$ 步之后依靠价值函数近似压缩。

规划不是凭空预知未来,而是在计算预算与估计误差之间选择一个推演深度。


四、Dyna:真实经验与模拟经验一起训练

Dyna 提供了一种经典组合方式。

每当智能体获得一条真实转移:

$$(S_t,A_t,R_{t+1},S_{t+1})$$

它做三件事:

  1. 用真实转移更新价值函数或策略;
  2. 用真实转移更新环境模型;
  3. 从模型中生成模拟转移,继续更新价值函数或策略。

可以写成:

$$\mathrm{真实经验} \longrightarrow \begin{cases} \mathrm{更新策略或价值}\ \mathrm{更新环境模型} \end{cases}$$

$$\mathrm{环境模型} \longrightarrow \mathrm{模拟经验} \longrightarrow \mathrm{继续更新策略或价值}$$

假设真实环境只提供了一次经验:

$$(s_1,a_1,r=1,s_2)$$

模型学到这条转移后,可以在后续规划阶段重复使用它,甚至把它和其他已学转移组合起来,推演更长路径。

Dyna 的关键不在于某个特定网络,而在于它把两种数据放进同一个学习系统:

数据类型 来源 优点 风险
真实经验 环境交互 可信度较高 昂贵、数量有限
模拟经验 学到的模型 便宜、可重复生成 可能携带模型偏差

五、Model Bias:想象为什么可能把策略带偏

模型式方法最危险的地方也来自它最诱人的地方:模型可以生成大量模拟经验。

如果模型存在一点误差:

$$\widehat{s}{t+1} = s{t+1} + \varepsilon_t$$

下一步预测会建立在已经偏移的状态上:

$$\widehat{s}{t+2} = f\phi ( s_{t+1}+\varepsilon_t, a_{t+1} )$$

随着推演变长,误差可能累积。

设单步误差规模大致为 $\varepsilon$,在最简单的直观近似下,$H$ 步推演误差可能随深度增加:

$$\mathrm{累计误差} \approx O(H\varepsilon)$$

在非线性系统中,它甚至可能增长得更快。

更麻烦的是,策略会主动寻找模型中的高回报路径。

如果模型错误地认为某个现实中不可行的动作序列收益很高,规划器可能反复选择这条路径。

于是形成:

$$\mathrm{模型微小漏洞} \longrightarrow \mathrm{规划器主动放大} \longrightarrow \mathrm{策略偏向虚假高回报区域}$$

这与 Actor 追逐 Critic 的价值幻觉非常相似。

模型不是世界本身。它只是另一个估计器。


六、Imagination Rollout:想象多远才合适

想象轨迹可以用于更新策略或价值函数:

$$\widehat{\tau} = ( \widehat{S}_0, A_0, \widehat{R}_1, \widehat{S}_1, A_1, \ldots, \widehat{S}_H )$$

但推演深度 $H$ 不是越大越好。

推演深度 收益 代价
较短 模型误差较少 能利用的未来信息有限
较长 可以比较更长行动后果 误差累积,可能进入模型不熟悉区域

一种常见思路是:

  1. 使用较短模型 rollout;
  2. 在末端接上价值函数;
  3. 对模型不确定区域降低信任;
  4. 定期用真实交互校正模型。

公式上仍然是:

$$\widehat{G}{t:t+H} = \sum{k=0}^{H-1} \gamma^k\widehat{R}{t+k+1} + \gamma^H V(\widehat{S}{t+H})$$

但工程关键变成:如何选择 $H$,以及何时相信 $\widehat{S}$。


七、Model Predictive Control:只执行推演出的第一步

一种稳妥方式是滚动规划。

在时刻 $t$,先比较若干候选动作序列:

$$(a_t,a_{t+1},\ldots,a_{t+H-1})$$

选出模型预测回报最高的一条:

$$(a_t*,a_{t+1},\ldots,a_{t+H-1}^)$$

但只在真实环境中执行第一步:

$$A_t=a_t^*$$

获得真实新状态 $S_{t+1}$ 后,再重新规划。

这称为 Model Predictive Control,简称 MPC。

它承认模型会出错,因此不一次性执行整段计划。每走一步,就用现实重新校准起点。


八、MuZero:不必重建世界的每一个细节

传统直觉会认为:环境模型必须预测下一帧画面。

例如,在棋盘或视频游戏中:

$$\widehat{o}{t+1} \approx o{t+1}$$

但对决策而言,精确还原每一个像素未必必要。

MuZero 学习一个适合规划的潜在状态。其核心可以抽象为三个组件:

1. 表示函数

$$s^0 = h_\phi(o_1,\ldots,o_t)$$

它把历史观测压缩为潜在状态 $s^0$。

2. 动态函数

$$(r^{k}, s^{k}) = g_{\phi}(s^{k-1}, a^{k})$$

它在潜在空间中预测执行动作后的奖励与新潜在状态。

3. 预测函数

$$(p^{k}, v^{k}) = f_{\phi}(s^{k})$$

它从潜在状态预测策略分布 $p^k$ 和价值 $v^k$。

其中:

符号 含义
$o_t$ 真实观测
$s^k$ 用于规划的潜在状态
$r^k$ 模型预测奖励
$p^k$ 候选动作的策略先验
$v^k$ 潜在状态价值

MuZero 的重要思想是:

模型不一定要完整重建世界,只要保留对决策有用的结构。

这把“学习世界”重新定义为“学习一个足够支持规划的世界表示”。


九、World Model:在潜在空间中想象未来

现实观测可能非常高维,例如图像:

$$o_t\in\mathbb{R}^{H\times W\times C}$$

直接预测未来像素成本高,也容易把计算浪费在与决策无关的细节上。

World Model 常把观测压缩到潜在变量:

$$z_t = e_\phi(o_t)$$

再学习潜在动态:

$$\hat z_{t+1}\sim p_\phi(z_{t+1}|z_t,a_t)$$

以及奖励预测:

$$\hat r_{t+1}=g_\phi(z_t,a_t)$$

策略可以在潜在空间中训练或规划:

$$a_t \sim \pi_\theta(\cdot\mid z_t)$$

潜在表示的好处是压缩:

  • 不必保留每个像素;
  • 可以在较小空间内推演;
  • 可以聚焦于控制相关因素。

但潜在空间也可能丢失关键细节。模型认为“不重要”的信息,可能恰好决定安全边界。


十、搜索、模型与策略如何结合

模型式方法不是要求系统在“策略”和“模型”之间二选一。

现代系统常常把它们组合起来:

组件 作用
模型 预测候选行动可能带来的后果
价值函数 在有限深度推演末端估计更远未来
策略网络 提供更值得搜索的候选动作
搜索 在决策时临时比较不同未来
真实交互 校正模型、价值和策略

以树搜索为例,策略网络可以告诉搜索器哪些动作更值得优先展开,价值网络可以评估叶子节点,模型则负责向前推演状态。

于是行动不再只由一个网络瞬间决定,而是由“已学知识 + 当前搜索”共同决定。


十一、模型式方法的适用范围与边界

Model-Based 方法尤其有吸引力的场景包括:

  1. 真实交互成本高;
  2. 环境具有可学习结构;
  3. 决策前允许一定计算时间;
  4. 需要在行动前比较多个未来;
  5. 安全性要求促使系统减少现实试错。

它也并不适合所有问题。

1. 世界可能过于复杂

如果环境变化极快、观测不完整或隐藏因素很多,模型可能难以获得足够准确的预测。

2. 规划有计算成本

Model-Free 策略通常可以一次前向传播直接行动。模型式方法在决策时可能需要大量 rollout 或搜索。

3. 模型误差会被规划主动利用

策略并不会平均地访问所有模型区域。它会寻找预测回报最高的位置,而这些位置恰恰可能是模型最不可靠的边缘区域。

4. 表示学习决定模型看见什么

潜在世界模型只保留被训练目标认为重要的信息。如果目标设计不完整,关键变量可能被压缩掉。

因此,学习世界不等于拥有世界。


十二、边界:模型是另一种估计器,不是上帝视角

Model-Based RL 很容易诱发一种过度乐观的想象:既然智能体能预测未来,它是不是终于摆脱了盲目试错?

并没有。

它只是把一部分试错移动到了模型内部。

原本的问题是:

$$\mathrm{怎样从有限真实经验中学好策略?}$$

加入模型后,问题变成:

$$\mathrm{怎样从有限真实经验中学好模型,并防止策略利用模型误差?}$$

矛盾没有消失,而是转移到了世界表示、预测误差和规划深度上。


回归全景图(Callback)

把 Model-Based RL 放回六个坐标轴:

维度 Model-Based RL 的回答 它没有消除的矛盾
目标 在真实或模拟未来中寻找更高长期回报 模型中的高回报未必在现实中成立
时间 用 rollout、搜索与末端价值连接当前行动和未来后果 推演越长,模型误差越可能累积
更新 用真实经验和模拟经验共同更新模型、价值或策略 多个学习模块的误差会互相影响
估计 显式学习转移、奖励或潜在动态模型 模型只是近似,规划会主动放大模型漏洞
数据 将有限真实经验扩展为大量模拟经验 模拟数据便宜,但不一定可信
探索 可优先探索模型不确定或潜在收益高的区域 不确定性估计错误时,探索也会被带偏

再看三条反馈循环:

反馈循环 Model-Based RL 中的具体形式
外部交互循环 策略在真实环境中行动,真实转移校正模型与策略
时间回报循环 模型 rollout、搜索和末端价值共同把未来压回当前决策
自我更新循环 模型生成模拟数据,模拟数据改变策略,策略又决定接下来采集哪些真实数据

模型式方法带来一种更高层的能力:智能体不仅从经验中学,还在内部重组经验,构造尚未真实发生的未来。

但这种能力始终受一个边界约束:

想象必须定期回到现实接受检验。


本章小结

Model-Free 与 Model-Based 不是高低之分,而是两种不同的代价结构。

Model-Free 方法把复杂性集中在策略或价值函数中,行动快,但更依赖真实交互。

Model-Based 方法学习环境动态,在内部进行 rollout 或搜索,提高样本效率,却引入模型偏差和规划成本。

Dyna 让真实经验与模拟经验协作;MPC 每走一步就回到现实重新规划;MuZero 说明模型未必需要重建所有细节;World Model 则把想象搬到潜在空间。

至此,我们已经从六个根本问题出发,重新组装了四类算法路线。

下一部分将进入一个看似全新的场景:大模型后训练。我们会看到,语言模型、奖励模型、PPO、DPO 和 GRPO 背后仍然是熟悉的六个问题,只是状态、动作、奖励和反馈的形式发生了变化。


第八部分:当强化学习进入大模型

第 20 章 当语言模型成为策略

大语言模型看起来与机器人、棋类程序或游戏智能体差别很大。

机器人移动关节,游戏智能体点击按钮,语言模型却是在生成文字。它没有明显的物理环境,也没有一眼可见的奖励。

但如果把生成过程放慢来看,熟悉的强化学习结构会重新出现。

给定一段上下文,语言模型选择下一个 Token;新 Token 被追加到上下文中,模型再选择下一个 Token;直到生成终止符或达到长度上限。

这就是一条序列决策轨迹。

图 20-1:从 MDP 到语言模型

图 20-1:从 MDP 到语言模型


一、Token 作为动作

设用户提示为:

$$x$$

模型已经生成前缀:

$$y_{<t} = (y_1,y_2,\ldots,y_{t-1})$$

在第 $t$ 步,语言模型输出下一个 Token 的概率分布:

$$\pi_\theta ( y_t \mid x,y_{<t} )$$

其中:

符号 含义
$x$ 用户提示、系统指令或其他输入上下文
$y_{<t}$ 第 $t$ 步之前已经生成的 Token 前缀
$y_t$ 当前准备生成的下一个 Token
$\pi_\theta$ 参数为 $\theta$ 的语言模型策略

经典 RL 中,策略写成:

$$\pi_\theta(a_t\mid s_t)$$

语言模型中,对应关系是:

$$a_t \longleftrightarrow y_t$$

也就是:

每生成一个 Token,语言模型就执行了一次动作。


二、上下文作为状态

经典 MDP 中,状态 $s_t$ 应该包含做出当前决策所需的信息。

语言模型在第 $t$ 步看到的是:

$$s_t = (x,y_{<t})$$

每生成一个 Token,状态就会更新:

$$s_{t+1} = (x,y_{<t},y_t)$$

这个转移几乎是确定性的:把刚刚选择的 Token 追加到序列尾部。

因此可以写成:

$$s_{t+1} = f(s_t,y_t)$$

其中 $f$ 表示“把新 Token 接到上下文后面”。

语言模型的环境看似简单,因为状态转移规则只是字符串追加。但真正的复杂性藏在后续评价中:

  • 哪种回答更有帮助?
  • 哪种回答更准确?
  • 哪种回答更安全?
  • 哪种回答风格更符合用户需求?

这些问题并不由字符串追加规则自动回答。


三、序列生成作为轨迹

一条完整回答记为:

$$y = (y_1,y_2,\ldots,y_T)$$

对应轨迹:

$$\tau = (s_1,y_1,s_2,y_2,\ldots,s_T,y_T)$$

给定提示 $x$,回答 $y$ 的生成概率为:

$$\pi_\theta(y\mid x)= \prod_{t=1}^{T} \pi_\theta ( y_t \mid x,y_{<t} )$$

这就是自回归分解。

取对数后:

$$\log \pi_\theta(y\mid x)= \sum_{t=1}^{T} \log \pi_\theta ( y_t \mid x,y_{<t} )$$

乘积变成求和非常重要。它让一个完整回答的概率,可以被拆回每个 Token 的对数概率之和。

后面的 DPO 目标正会使用这个结构。


四、终止符 [EOS]:模型何时停止行动

语言模型不仅要决定说什么,还要决定什么时候停止。

终止符 [EOS] 可以看成一个特殊动作:

$$y_t=[\mathrm{EOS}]$$

一旦模型选择它,轨迹结束。

此外,系统通常还会设定最大生成长度:

$$T\leq T_{\max}$$

这意味着语言模型任务存在两种结束方式:

  1. 模型主动生成 [EOS]
  2. 达到长度上限后被外部截断。

这个细节会影响奖励与训练。

如果奖励模型偏爱更长、更详细的回答,策略可能推迟 [EOS];如果长度惩罚过强,模型又可能过早停止。

停止动作不是排版细节,而是策略的一部分。


五、序列级奖励:完整回答最后才被评价

很多语言任务没有天然的逐 Token 奖励。

评价者往往在回答生成完成后,才给出一个整体分数:

$$r(x,y)$$

其中:

符号 含义
$x$ 提示
$y$ 完整回答
$r(x,y)$ 对完整回答的序列级评分

经典 RL 的长期目标可以写成:

$$J(\theta)= \mathbf{E}{x \sim \mathcal{D},\ y \sim \pi\theta(\cdot\mid x)} [ r(x,y) ]$$

其中 $\mathcal{D}$ 表示提示分布。

它表达:

对真实提示进行采样,让策略生成回答,并提高这些回答的期望评分。

表面上,语言模型的环境没有复杂物理反馈。但奖励延迟问题反而非常突出:

$$y_1,y_2,\ldots,y_T \longrightarrow r(x,y)$$

一个整体评分需要反过来影响数十、数百甚至更多 Token。


六、Token 级信用分配

假设一个回答最终得到高分。哪些 Token 应该被鼓励?

  • 开头是否准确理解了问题?
  • 中间推理是否清楚?
  • 某个关键事实是否正确?
  • 结尾是否简洁?
  • 是否只是篇幅较长,因此更容易被评价器偏爱?

如果只有序列级奖励:

$$r(x,y)$$

最粗略的做法是把同一个结果信号作用到整条轨迹。

策略梯度可以写成:

$$\nabla_\theta J(\theta)\approx \mathbf{E} [ r(x,y)\sum_{t=1}^{T} \nabla_\theta \log \pi_\theta ( y_t\mid x,y_{<t} ) ]$$

这意味着:回答分数较高时,提高整条回答中已生成 Token 的概率;回答分数较低时,降低这些 Token 的概率。

但这是一种粗粒度归因。

假设一个回答前 95% 都正确,只在最后给出错误结论。序列级低分可能会压低整条轨迹的概率,而不仅是错误位置附近的 Token。

语言模型后训练仍然面对经典信用分配问题,只是动作数量更多、动作空间更大、奖励常常更稀疏。


七、自回归模型就是策略网络

预训练语言模型通常通过下一个 Token 预测学习:

$$L_{NTP}(\theta)=-\sum_{t=1}^T\log\pi_\theta(y_t|x,y_{<t})$$

其中 NTP 表示 Next-Token Prediction。

这个损失鼓励模型提高训练语料中真实 Token 的概率。

进入后训练后,同一个模型可以被看作策略:

$$\pi_\theta(y_t\mid x,y_{<t})$$

变化不在网络结构,而在训练信号。

阶段 模型在学习什么 数据来自哪里
预训练 预测语料中下一个 Token 大规模文本
SFT 模仿高质量示范回答 人工或筛选后的指令回答
偏好优化或 RLHF 提高更受偏好的回答概率 偏好数据、奖励模型或可验证反馈

同一个自回归模型,在不同训练阶段扮演不同角色。


八、语言空间为何比传统动作空间更复杂

传统控制任务的动作可能只有几个:

$$\mathcal{A} = { \mathrm{左}, \mathrm{右}, \mathrm{跳跃} }$$

语言模型每一步的动作空间则是词表:

$$\mathcal{A} = \mathcal{V}$$

其中 $\mathcal{V}$ 可能包含数万甚至更多 Token。

更重要的是,完整回答空间随长度指数增长。长度为 $T$ 的序列数量近似为:

$$|\mathcal{V}|^T$$

即使:

$$|\mathcal{V}|=50{,}000, \qquad T=100$$

候选序列数量也极其巨大。

这让“探索”获得新的形式:

  • 调整采样温度;
  • 使用 top-$k$ 或 top-$p$ 采样;
  • 对同一提示生成多个候选回答;
  • 使用搜索、验证器或重排序器筛选;
  • 通过参考模型约束避免进入语言分布的陌生区域。

语言模型不会穷举全部回答。它只能在极大的组合空间中,保留有限的生成多样性。


九、采样温度:控制生成分布的平滑程度

设模型对 Token 的 logit 为:

$$z_i$$

使用温度 $\tau>0$ 后,采样概率为:

$$\pi_\tau(y_t=i\mid s_t)= \frac{ \exp(z_i/\tau)}{ \sum_j \exp(z_j/\tau)}$$

其中:

情况 效果
$\tau<1$ 分布更尖锐,更倾向高概率 Token
$\tau=1$ 使用原始 Softmax 分布
$\tau>1$ 分布更平坦,增加低概率 Token 被采样的机会

温度不是奖励函数,也不是策略训练目标。它是在生成阶段调节探索程度的工程旋钮。

这一区分很重要:

改变训练目标、改变策略参数和改变采样方式,是三件不同的事。


十、语言模型中的“环境”去了哪里

在游戏中,智能体执行动作后,环境会返回新的画面和奖励。

在文本生成中,下一状态主要由前缀追加决定:

$$s_{t+1} = (s_t,y_t)$$

环境似乎退到了幕后。

但只要模型与外部世界互动,环境就会重新出现:

  • 用户会继续追问;
  • 工具调用会返回结果;
  • 搜索系统会提供新信息;
  • 代码执行器会报告成功或失败;
  • 数学验证器会判断答案是否正确;
  • 多轮对话会改变后续上下文。

因此,语言模型可以处于两种不同设置中:

设置 主要特征
单轮离线回答 状态转移多为 Token 追加,奖励通常在回答结束后给出
Agent 式交互 模型动作会改变外部环境,环境反馈又进入下一轮上下文

不要把两者混为一谈。单轮偏好优化已经可以用 RL 视角理解,但带工具和多轮任务会更接近经典序列决策环境。


十一、从 MDP 到语言模型:逐项映射

经典强化学习概念 语言模型中的对应物
状态 $S_t$ 提示与已生成 Token 构成的上下文 $(x,y_{<t})$
动作 $A_t$ 下一个 Token $y_t$
策略 $\pi_\theta(a\mid s)$ 自回归语言模型 $\pi_\theta(y_t\mid x,y_{<t})$
轨迹 $\tau$ 完整回答或多轮交互过程
终止动作 [EOS] 或外部长度截断
奖励 偏好评分、奖励模型分数、规则验证结果或外部任务反馈
探索 采样温度、多候选生成、搜索与重排序
数据分布 提示分布与策略生成回答的分布

这张表不是为了把所有语言模型训练都强行叫作强化学习。

它的作用是说明:

一旦训练信号开始评价模型生成的序列,并据此改变生成策略,经典 RL 的六个问题就会重新出现。


十二、边界:不是所有语言模型训练都是 RL

预训练通常最小化下一个 Token 的交叉熵:

$$L_{NTP}(\theta)=-E_{y\sim D}\big[\sum_t \log\pi_\theta(y_t|y_{<t})\big]$$

监督微调通常模仿示范回答:

$$L_{SFT}(\theta)=-E_{(x,y)\sim D_{SFT}}[\sum_t\log\pi_\theta(y_t|x,y_{<t})]$$

它们都使用语言模型概率,但数据中的目标 Token 已经给定。

强化学习或偏好优化关心的则是:

$$\mathrm{模型产生什么回答} \longrightarrow \mathrm{回答被怎样评价} \longrightarrow \mathrm{策略怎样改变}$$

区别不只在公式形式,更在反馈循环是否进入训练。


回归全景图(Callback)

当动作变成 Token,六个问题并没有消失:

维度 语言模型中的新形式 仍需追问的问题
目标 提高回答质量、偏好分数或任务成功率 评分是否真正代表人的意图?
时间 完整回答由许多 Token 构成,评价常在结尾出现 最终评分应该怎样分配给不同 Token?
更新 使用 SFT、策略梯度或偏好损失改变 Token 概率 代理损失怎样连接到真实回答质量?
估计 可能使用奖励模型、Critic、验证器或隐式偏好模型 哪个评价器可信,在哪些分布上可信?
数据 模型生成的回答成为新的训练候选 策略变化会怎样改变回答分布?
探索 通过采样、多候选生成和搜索产生不同回答 多样性、成本与安全如何权衡?

再看三条反馈循环:

反馈循环 语言模型中的对应形式
外部交互循环 提示进入模型,模型生成回答,用户、奖励模型或验证器返回反馈
时间回报循环 完整回答的结果回流到此前生成的 Token
自我更新循环 生成回答被评价,评价信号更新模型,新模型又生成新的回答分布

语言模型不是强化学习的例外。它只是把动作从“推动世界”换成了“延续序列”,把环境反馈从即时物理变化换成了更复杂的人类评价与任务结果。


本章小结

语言模型可以自然地被看作自回归策略:

$$\pi_\theta(y_t\mid x,y_{<t})$$

上下文是状态,Token 是动作,完整回答是轨迹,[EOS] 是终止动作,回答评分是序列级奖励。

这种映射让大模型后训练回到了熟悉的问题:

  • 奖励从哪里来?
  • 延迟评价如何分配给不同 Token?
  • 怎样稳定地更新策略?
  • 如何避免评价器漏洞?
  • 新模型生成的新分布会不会离开评价器熟悉的区域?
  • 采样多样性应该保留到什么程度?

下一章,RLHF 会给出一种经典回答:用人类偏好训练奖励模型,再用 PPO 在参考模型附近谨慎地优化策略。


第 21 章 RLHF:把偏好变成优化信号

经典强化学习常常假设奖励来自环境。

游戏得分、机器人是否到达目标、控制系统消耗多少能源,都可以转成数字。

但语言模型面对的问题更模糊:

  • 哪个回答更有帮助?
  • 哪个回答更符合事实?
  • 哪个回答更安全?
  • 哪种表达方式更符合人的真实需求?

这些标准很难被一条简单规则完整表达。

RLHF,也就是 Reinforcement Learning from Human Feedback,尝试把人的偏好转化为可优化信号。

它的经典流程可以概括为:

$$\mathrm{示范数据} \longrightarrow \mathrm{SFT} \longrightarrow \mathrm{偏好比较} \longrightarrow \mathrm{Reward Model} \longrightarrow \mathrm{PPO 更新}$$

但不要被这条流水线迷惑。每一个箭头都包含新的估计与新的假设。

图 21-1:RLHF 全链路

图 21-1:RLHF 全链路


一、第一步:Supervised Fine-Tuning

预训练模型擅长续写文本,却不一定擅长按照指令回答问题。

Supervised Fine-Tuning,简称 SFT,使用高质量示范数据:

$$\mathcal{D}{\mathrm{SFT}} = { (x_i,y_i) }{i=1}^{N}$$

其中:

符号 含义
$x_i$ 第 $i$ 个提示
$y_i$ 对应的高质量示范回答
$N$ 示范样本数量

训练目标为:

$$L_{SFT}(\theta)=-E_{(x,y)\sim D_{SFT}}[\sum_{t=1}^T \log\pi_\theta(y_t|x,y_{<t})]$$

直观地说:

对给定提示,提高示范回答中每个 Token 的概率。

SFT 是模仿学习。它让模型学会回答的基本形式,但仍然受示范数据限制。

如果一个问题有多个合理回答,SFT 通常只展示其中少数几种。它告诉模型“可以怎样做”,却没有充分表达“多个可行答案中,人更喜欢哪个”。


二、第二步:收集偏好数据

给定同一个提示 $x$,让模型生成两个或多个候选回答:

$$y_1,\ y_2,\ldots,y_K \sim \pi(\cdot\mid x)$$

由标注者比较质量。

最简单的偏好对写成:

$$(x,y_w,y_l)$$

其中:

符号 含义
$x$ 提示
$y_w$ preferred response,标注者更偏好的回答
$y_l$ rejected response,标注者相对不偏好的回答

这里的 $w$ 表示 winner,$l$ 表示 loser。

偏好数据通常不是绝对评分,而是相对比较:

$$y_w \succ y_l$$

为什么比较常常比绝对打分容易?

因为人不一定能稳定回答“这段回复是 7.3 分还是 7.8 分”,但往往更容易判断“两个回答中哪个更好”。

相对比较降低了标注难度,却也带来局限:

  • 标注标准可能不一致;
  • 不同人对“更好”的理解不同;
  • 两个候选都很差时,偏好仍然只是相对结果;
  • 偏好数据覆盖不到的回答,系统仍然缺少可靠评价。

三、第三步:训练 Reward Model

Reward Model,简称 RM,接收提示与完整回答,并输出一个标量分数:

$$r_\phi(x,y) \in \mathbb{R}$$

其中 $\phi$ 是 Reward Model 的参数。

分数越高,模型越认为人类偏好这个回答。

对偏好对 $(x,y_w,y_l)$,可以使用 Bradley-Terry 形式:

$$\Pr ( y_w \succ y_l \mid x )= \sigma ( r_\phi(x,y_w)- r_\phi(x,y_l))$$

其中:

$$\sigma(z) = \frac{1}{1+e^{-z}}$$

是 Sigmoid 函数。

含义
$r_\phi(x,y_w)$ Reward Model 对偏好回答的评分
$r_\phi(x,y_l)$ Reward Model 对较差回答的评分
$r_\phi(x,y_w)-r_\phi(x,y_l)$ 两个回答之间的分数差
$\sigma(\cdot)$ 把分数差压缩到 $0$ 与 $1$ 之间

如果:

$$r_\phi(x,y_w)- r_\phi(x,y_l) = 2$$

则:

$$\sigma(2) \approx 0.881$$

Reward Model 认为 $y_w$ 优于 $y_l$ 的概率约为 $88.1%$。

训练损失为:

$$\mathcal{L}{\mathrm{RM}}(\phi)= - \mathbf{E}{(x,y_w,y_l)\sim \mathcal{D}{\mathrm{pref}}} [ \log \sigma ( r\phi(x,y_w)- r_\phi(x,y_l)) ]$$

这个损失鼓励 Reward Model 给偏好回答更高分。


四、Reward Model 不是人的价值观

训练完成后,Reward Model 可以快速为大量回答打分。

这很有用,因为真人不可能在每次策略更新时都实时评价数百万条生成结果。

但必须明确:

$$r_\phi(x,y) \neq \mathrm{人的真实意图}$$

Reward Model 只是从有限偏好样本中训练出的代理。

它可能学到:

  • 较长回答通常得分更高;
  • 使用某种固定结构更像“高质量回答”;
  • 某些语气容易得到标注者青睐;
  • 在训练分布内有效的模式,在分布外并不可靠。

这与前文的奖励塑形问题完全一致:

一旦代理指标可以被优化,策略就会寻找代理指标中的捷径。


五、第四步:用 PPO 优化语言模型策略

Reward Model 给出回答分数后,可以让语言模型生成回答,并提高高分回答的概率。

简化目标为:

$$max_\theta E_{x\sim D,y\sim\pi_\theta(\cdot|x)}[r_\phi(x,y)]$$

但如果只追求 Reward Model 分数,策略可能快速偏离原有语言分布,产生 Reward Model 没见过的奇怪文本。

因此,通常加入与参考模型之间的 KL 约束:

$$max_\theta E_{x,y\sim\pi_\theta}\big[r_\phi(x,y)-\beta\log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}\big]$$

更一般地,也可以写成:

$$max_\theta E_{x\sim D}\big[E_{y\sim\pi_\theta(\cdot|x)}[r_\phi(x,y)]-\beta D_{KL}(\pi_\theta(\cdot|x)||\pi_{ref}(\cdot|x))\big]$$

其中:

符号 含义
$\pi_\theta$ 正在更新的语言模型策略
$\pi_{\mathrm{ref}}$ 冻结的参考模型,通常来自 SFT 模型
$r_\phi(x,y)$ Reward Model 给完整回答的评分
$D_{\mathrm{KL}}$ 新策略与参考策略之间的 KL 散度
$\beta$ 偏好奖励与策略偏离惩罚之间的权衡系数

这个目标表达:

提高偏好奖励,但不要离原来可靠的语言分布太远。


六、为什么 Reference Model 像一只锚

KL 散度定义为:

$$D_{KL}(\pi_\theta||\pi_{ref})=E_{y\sim\pi_\theta}\big[\log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}\big]$$

如果新策略和参考模型接近,KL 较小。

如果新策略大幅提高了某些参考模型认为极不常见的回答概率,KL 会变大。

假设某个回答:

$$\pi_\theta(y\mid x)=0.2$$

$$\pi_{\mathrm{ref}}(y\mid x)=0.02$$

则对数概率比为:

$$\log \frac{0.2}{0.02} = \log 10 \approx 2.303$$

如果:

$$\beta=0.1$$

对应惩罚约为:

$$0.1\times 2.303 = 0.2303$$

Reference Model 并不告诉策略什么是绝对正确。它提供的是一个保守基线:

可以改进,但不要在一次优化中离开已知分布太远。

它与 DQN 的 Target Network 不完全相同,但有相似的稳定化气质:冻结一个参照物,限制另一个快速变化的系统。


七、PPO 如何限制策略突变

语言模型 RLHF 中,PPO 仍然使用新旧策略概率比:

$$\rho_t(\theta)= \frac{ \pi_\theta(y_t\mid x,y_{<t})}{ \pi_{\theta_{\mathrm{old}}}(y_t\mid x,y_{<t})}$$

PPO 裁剪目标为:

$$\mathcal{L}^{\mathrm{CLIP}}(\theta)= \mathbf{E}_t [ \min ( \rho_t(\theta)\widehat{A}_t, \operatorname{clip} ( \rho_t(\theta), 1-\epsilon, 1+\epsilon )\widehat{A}_t ) ]$$

其中:

符号 含义
$\rho_t(\theta)$ 新旧策略对当前 Token 概率的比值
$\widehat{A}_t$ Token 级优势估计
$\epsilon$ PPO 允许的局部更新区间
$\operatorname{clip}$ 把概率比裁剪在有限区间

RLHF 中常同时使用两种限制:

机制 参照对象 作用
PPO Clip 上一轮策略 $\pi_{\theta_{\mathrm{old}}}$ 限制单轮更新幅度
KL Penalty 冻结参考模型 $\pi_{\mathrm{ref}}$ 限制长期偏离程度

这两个约束不要混为一谈。

一个管理局部步长,一个管理整体漂移。


八、Critic 与 Token 级优势

Reward Model 常在回答结束时给出序列分数:

$$r_\phi(x,y)$$

但 PPO 需要估计每个 Token 动作的优势:

$$\widehat{A}_t$$

因此系统通常还会训练一个 Value Model 或 Critic:

$$V_w(x,y_{<t})$$

它估计在当前前缀下继续生成,预期能获得多少未来回报。

TD 误差形式仍然熟悉:

$$\delta_t = r_t + \gamma V_w(x,y_{\leq t})- V_w(x,y_{<t})$$

如果中间 Token 没有外部奖励,则常见情况为:

$$r_t=0$$

序列末端再加入 Reward Model 分数和其他惩罚。

优势可以使用 GAE:

$$\hat{A}t^{GAE} = \sum{l=0}^{T-t-1} (\gamma \lambda)^l \delta_{t+l}$$

这说明 RLHF 并没有让经典估计问题变少。

相反,它至少引入了两个估计器:

  1. Reward Model 估计人的偏好;
  2. Critic 估计不同 Token 前缀的未来价值。

九、Token Mask:只更新真正属于回答的部分

训练批次通常包含:

  • 系统提示;
  • 用户提示;
  • 模型回答;
  • padding Token。

并不是所有位置都应进入策略损失。

设掩码为:

$$m_t \in {0,1}$$

策略损失可以写成:

$$\mathcal{L}_{\mathrm{policy}} = - \frac{ \sum_t m_t \ell_t}{ \sum_t m_t}$$

其中:

符号 含义
$m_t=1$ 当前 Token 属于需要优化的模型回答
$m_t=0$ 当前 Token 是提示、padding 或其他不应更新的位置
$\ell_t$ 当前 Token 的策略代理目标项

Token Mask 是工程细节,却直接影响训练语义。

如果掩码错误,模型可能在不该优化的位置计算梯度,甚至把 padding 或用户输入混进策略更新。


十、Length Bias:为什么更长回答可能占便宜

奖励模型可能偏向更长回答。

原因并不神秘:

  • 更长回答更容易包含看似完整的解释;
  • 训练数据中,详细回答可能更常被标注者偏好;
  • 某些任务中,重复或冗余内容未被充分惩罚。

假设 Reward Model 输出:

$$r_\phi(x,y)= q(x,y) + c\cdot \lvert y \rvert$$

其中:

含义
$q(x,y)$ 真正与回答质量有关的部分
$\lvert y \rvert$ 回答长度
$c$ Reward Model 无意中学到的长度偏好

只要:

$$c>0$$

策略就可能通过增加长度提高奖励,即使新增内容没有真正价值。

这就是代理目标漏洞。

解决方式可能包括:

  • 改善偏好数据;
  • 对长度进行归一化或显式控制;
  • 分任务设计评价标准;
  • 检查高奖励样本;
  • 引入更丰富的评估器;
  • 保留人工审查。

没有单一公式能自动修复价值判断。


十一、Reward Hacking:优化器会发现评价器的弱点

如果策略只最大化 Reward Model:

$$\max_\theta \mathbf{E} [ r_\phi(x,y) ]$$

它可能生成 Reward Model 高分但人并不喜欢的回答。

这种现象称为 Reward Hacking。

其结构与前文完全一致:

$$\mathrm{人的真实意图} \longrightarrow \mathrm{有限偏好数据} \longrightarrow \mathrm{Reward Model} \longrightarrow \mathrm{策略优化}$$

每一次压缩都可能损失信息。

策略优化越强,越可能把细小缺口放大。

因此,KL 约束、在线抽查、偏好数据迭代更新和分布外评估都很重要。它们不是装饰,而是为了控制代理目标失灵。


十二、对齐税与能力保持

如果后训练只追求某些偏好指标,模型可能在其他能力上退化。

例如:

  • 回答更稳妥,但信息密度下降;
  • 风格更规范,但创造性降低;
  • 更符合某类标注偏好,却损害其他任务能力;
  • 过度拒答,或者过度迎合。

这种代价常被概括为 alignment tax,也就是对齐税。

可以在目标中加入额外约束或辅助训练信号,例如保留一部分预训练目标:

$$\mathcal{L}{\mathrm{total}} = \mathcal{L}{\mathrm{RLHF}} + \eta \mathcal{L}_{\mathrm{pretrain}}$$

其中:

符号 含义
$\mathcal{L}_{\mathrm{RLHF}}$ 偏好优化相关损失
$\mathcal{L}_{\mathrm{pretrain}}$ 语言建模或预训练分布上的辅助损失
$\eta$ 保持原有能力的权重

这不是免费午餐。

$\eta$ 太小,原有能力可能受损;$\eta$ 太大,偏好优化又可能不充分。


十三、RLHF 全链路中的反馈循环

RLHF 不是一次性加工流程。

更真实的结构是:

$$\mathrm{当前策略} \longrightarrow \mathrm{生成候选回答} \longrightarrow \mathrm{收集新偏好} \longrightarrow \mathrm{更新 Reward Model} \longrightarrow \mathrm{更新策略}$$

策略变化后,生成分布也会变化。

Reward Model 起初熟悉的回答分布,未必仍然覆盖新策略产生的文本。

于是再次出现非平稳性:

$$\pi_{\theta_{\mathrm{old}}} \neq \pi_{\theta_{\mathrm{new}}}$$

$$y \sim \pi_{\theta_{\mathrm{new}}} \quad \mathrm{可能离开 Reward Model 熟悉的区域}$$

这正是经典强化学习中的“学习者改变了自己的数据”。


十四、边界:RLHF 不是把人类价值完整写入模型

RLHF 的名字很容易引发过高期待。

它不是把人类价值观完整编码进神经网络,也不是让模型自动理解所有人的真实意图。

它做的是:

  1. 收集有限示范与偏好;
  2. 用 Reward Model 近似这些偏好;
  3. 用受约束的策略优化提高代理奖励;
  4. 在迭代评估中继续修正数据与模型。

它是一套工程方法,也是一套制度安排。

标注指南、样本覆盖、评价者差异、风险监控和人工回路,都属于系统的一部分。


回归全景图(Callback):PPO-RLHF

维度 PPO-RLHF 的回答 它没有消除的矛盾
目标 最大化偏好奖励,同时避免策略过度偏离参考模型 真实人类意图仍然只能被代理表达
时间 一个回答由许多 Token 构成,奖励常在序列结束后出现 Token 级信用分配仍然存在
更新 使用 PPO Clip、KL 惩罚、Token Mask 等机制完成局部更新 训练链路较复杂,多个超参数共同影响稳定性
估计 Reward Model 估计偏好,Critic 估计价值 估计器更多,而不是更少;两类误差都会影响策略
数据 策略在线生成新回答,偏好数据和奖励模型再随迭代更新 策略变化会改变采样分布,也会改变 Reward Model 面对的输入分布
探索 生成多样性保留有限探索,KL 约束主动压缩探索范围 稳定性、可控性与发现更优回答之间仍需权衡

再看三条反馈循环:

反馈循环 PPO-RLHF 中的具体形式
外部交互循环 模型生成回答,人类、奖励模型或评估流程给出反馈
时间回报循环 序列末端奖励通过 Critic 与优势估计回到每个 Token
自我更新循环 Reward Model 分数推动策略更新,新策略产生新回答分布,又要求评价系统继续校正

判断:PPO-RLHF 没有消解经典 RL 的矛盾,而是将它们完整迁移到了语言模型场景,并增加了偏好建模误差。


本章小结

RLHF 的关键不是一个单独算法,而是一条完整链路:

  1. SFT 让模型先学会基本指令跟随;
  2. 偏好数据表达回答之间的相对质量;
  3. Reward Model 把有限偏好压缩成可重复调用的评分器;
  4. PPO 用 Token 级优势更新语言模型;
  5. Reference Model 和 KL 惩罚限制策略漂移;
  6. Token Mask、长度控制和能力保持机制管理工程风险。

RLHF 没有让奖励设计问题消失。它把奖励从手写规则变成了学出来的代理模型。

下一章会出现两条更轻或更直接的路线:

  • DPO 绕过显式 Reward Model 和 PPO 在线环节;
  • GRPO 弱化单独 Critic,使用组内相对比较构造更新信号。

它们究竟删除了矛盾,还是只是重新安排了矛盾的位置?


第 22 章 DPO、GRPO 与新一代后训练方法

RLHF 的经典链路很完整,也很重:

$$\mathrm{偏好数据} \longrightarrow \mathrm{Reward Model} \longrightarrow \mathrm{Critic} \longrightarrow \mathrm{PPO} \longrightarrow \mathrm{新策略}$$

每个组件都有作用,也都会带来训练成本、显存占用和误差来源。

于是,后训练方法开始追问:

  • 能否不单独训练 Reward Model?
  • 能否不再维护一个与策略模型规模相近的 Critic?
  • 能否把人的相对偏好更直接地写进更新目标?
  • 对数学、代码等任务,能否使用可验证结果代替模糊评分?

DPO 和 GRPO 给出了不同回答。

它们不是同一种方法,也不应该被粗略归为“更简单的 RLHF”。DPO 主要重构偏好建模与策略更新之间的关系;GRPO 则重构 PPO 中优势估计的方式。

图 22-1:PPO、DPO、GRPO 对照

图 22-1:PPO、DPO、GRPO 对照


一、先区分几种容易混淆的训练方式

后训练方法很多。理解它们之前,先把概念边界划清。

方法类别 数据从哪里来 是否在线生成新回答 主要更新信号
SFT 固定示范数据 通常否 模仿目标回答 Token
Offline Preference Optimization 固定偏好对 训练时通常否 偏好回答与非偏好回答的相对关系
PPO-RLHF 当前策略采样 Reward Model 分数、Critic 优势、KL 约束
GRPO 类在线策略优化 当前或旧策略对同一提示采样多条回答 通常是 组内相对奖励、策略比值、KL 约束
Verifier 驱动训练 模型生成候选,验证器检查结果 常见为在线或迭代式 可验证结果、步骤检查或规则反馈

不要用“有没有出现强化学习三个字”判断方法本质。

更好的问题是:

  1. 奖励或偏好从哪里来?
  2. 数据是固定的,还是由当前策略生成?
  3. 更新是否依赖策略采样?
  4. 是否存在参考模型或其他约束?
  5. 被删除的模块,其工作转移到了哪里?

二、偏好对:DPO 与 RLHF 的共同起点

给定提示 $x$,收集一对回答:

$$(y_w,y_l)$$

其中:

$$y_w \succ y_l$$

表示人或评价系统更偏好 $y_w$。

数据集写成:

$$D_{pref} = { (x_i, y_{w,i}, y_{l,i}) }_{i=1}^{N}$$

经典 RLHF 先用这些偏好对训练 Reward Model:

$$r_\phi(x,y)$$

再用 PPO 优化策略。

DPO 的问题是:

能否直接从偏好对更新策略,不再显式训练一个独立 Reward Model,也不再运行 PPO 在线训练链路?


三、Bradley-Terry:从相对分数解释偏好概率

Bradley-Terry 模型假设,人偏好 $y_w$ 而不是 $y_l$ 的概率由奖励差决定:

$$\Pr ( y_w\succ y_l\mid x )= \sigma ( r(x,y_w)- r(x,y_l))$$

其中:

$$\sigma(z) = \frac{1}{1+e^{-z}}$$

这条公式有两个关键性质。

第一,偏好由奖励差决定,而不是奖励绝对值决定。

如果两个回答的奖励都加上同一个常数:

$$r'(x,y)= r(x,y)+c(x)$$

则:

$$r'(x,y_w)-r'(x,y_l)= r(x,y_w)-r(x,y_l)$$

偏好概率不变。

第二,奖励差越大,偏好概率越接近 $1$。

例如:

$$r(x,y_w)=3, \qquad r(x,y_l)=1$$

则:

$$\Pr(y_w\succ y_l\mid x)= \sigma(2) \approx 0.881$$


四、从 KL 约束 RLHF 目标出发

DPO 并不是凭空提出一个分类损失。它从标准的 KL 约束奖励最大化目标出发:

$$\max_{\pi} E_{x \sim D, y \sim \pi(\cdot | x)} [ r(x,y) ] - \beta E_{x \sim D} [ D_{KL}( \pi(\cdot | x) || \pi_{ref}(\cdot | x) ) ]$$

其中:

符号 含义
$\pi$ 希望优化的新策略
$\pi_{\mathrm{ref}}$ 冻结参考策略
$r(x,y)$ 回答奖励
$\beta$ 控制策略偏离参考模型的成本

这个目标的最优策略满足:

$$\pi^*(y\mid x)= \frac{ 1}{ Z(x)} \pi_{\mathrm{ref}}(y\mid x)\exp ( \frac{ r(x,y)}{ \beta} )$$

其中:

$$Z(x)= \sum_y \pi_{\mathrm{ref}}(y\mid x)\exp ( \frac{ r(x,y)}{ \beta} )$$

是归一化项,也称配分函数。

直观地说:

在参考模型原有概率的基础上,对高奖励回答进行指数放大。


五、把奖励改写成策略与参考模型的对数概率差

对最优策略公式取对数:

$$\log \pi^*(y\mid x)= \log \pi_{\mathrm{ref}}(y\mid x)+ \frac{ r(x,y)}{ \beta} - \log Z(x)$$

整理得到:

$$r(x,y)= \beta \log \frac{ \pi^*(y\mid x)}{ \pi_{\mathrm{ref}}(y\mid x)} + \beta\log Z(x)$$

这一步非常重要。

它说明奖励可以被写成:

$$\mathrm{新策略相对参考策略的对数概率提升} + \mathrm{只依赖提示的常数}$$

将两个回答相减:

$$r(x,y_w)-r(x,y_l)$$

$$= \beta \log \frac{ \pi^(y_w\mid x)}{ \pi_{\mathrm{ref}}(y_w\mid x)} - \beta \log \frac{ \pi^(y_l\mid x)}{ \pi_{\mathrm{ref}}(y_l\mid x)}$$

$\beta\log Z(x)$ 因为对同一个提示相同,正好抵消。

这就是 DPO 能够绕过显式 Reward Model 的关键。


六、DPO 目标:直接提高偏好回答的相对优势

用参数化策略 $\pi_\theta$ 代替 $\pi^*$,DPO 损失写成:

$$L_{DPO}(\theta) = - E_{(x, y_w, y_l) \sim D_{pref}} [ \log \sigma ( \beta \log \frac{ \pi_\theta(y_w | x) }{ \pi_{ref}(y_w | x) } - \beta \log \frac{ \pi_\theta(y_l | x) }{ \pi_{ref}(y_l | x) } ) ]$$

为了更清楚,可以定义:

$$\Delta_\theta(x,y_w,y_l)= \log \frac{ \pi_\theta(y_w\mid x)}{ \pi_{\mathrm{ref}}(y_w\mid x)} - \log \frac{ \pi_\theta(y_l\mid x)}{ \pi_{\mathrm{ref}}(y_l\mid x)}$$

于是:

$$\mathcal{L}{\mathrm{DPO}}(\theta)= - \mathbf{E} [ \log\sigma ( \beta\Delta\theta ) ]$$

其中:

符号 含义
$\pi_\theta(y_w\mid x)$ 当前策略生成偏好回答的概率
$\pi_\theta(y_l\mid x)$ 当前策略生成非偏好回答的概率
$\pi_{\mathrm{ref}}$ 冻结参考模型
$\Delta_\theta$ 相对参考模型,当前策略让偏好回答相对于非偏好回答增加了多少对数概率优势
$\beta$ 控制偏好强化与参考约束之间的尺度

DPO 做的事情可以用一句话概括:

相对于参考模型,提高偏好回答的概率,并降低非偏好回答的概率。


七、最小例子:DPO 在比较什么

假设对同一个提示:

$$\pi_\theta(y_w\mid x)=0.12, \qquad \pi_{\mathrm{ref}}(y_w\mid x)=0.08$$

$$\pi_\theta(y_l\mid x)=0.04, \qquad \pi_{\mathrm{ref}}(y_l\mid x)=0.05$$

则:

$$\log \frac{ \pi_\theta(y_w\mid x)}{ \pi_{\mathrm{ref}}(y_w\mid x)} = \log 1.5 \approx 0.405$$

$$\log \frac{ \pi_\theta(y_l\mid x)}{ \pi_{\mathrm{ref}}(y_l\mid x)} = \log 0.8 \approx -0.223$$

因此:

$$\Delta_\theta = 0.405-(-0.223) = 0.628$$

当前策略相对参考模型,已经更偏向 $y_w$。

如果:

$$\beta=1$$

则偏好概率估计为:

$$\sigma(0.628) \approx 0.652$$

损失会继续推动策略提高这一区分。


八、为什么 DPO 看起来像监督学习

DPO 训练时通常使用固定偏好数据集:

$$(x,y_w,y_l) \sim \mathcal{D}_{\mathrm{pref}}$$

它不要求在每次梯度更新时:

  • 从当前策略重新采样;
  • 调用显式 Reward Model 打分;
  • 训练 Critic;
  • 运行 PPO rollout。

因此,工程体验更接近监督学习:读取批次,计算对比损失,反向传播。

但 DPO 不是普通 SFT。

SFT 只提高偏好回答概率:

$$L_{SFT} = - \log \pi_\theta(y_w | x)$$

DPO 还比较:

  1. 偏好回答与非偏好回答;
  2. 当前策略与参考模型;
  3. 两种回答的相对概率提升。

它把 KL 约束 RLHF 目标压缩进一个偏好分类形式。


九、绕过 Reward Model,不等于奖励估计消失

DPO 不再单独训练显式 Reward Model:

$$r_\phi(x,y)$$

但奖励逻辑没有凭空消失。

它被隐式绑定到:

$$\beta \log \frac{ \pi_\theta(y\mid x)}{ \pi_{\mathrm{ref}}(y\mid x)}$$

也就是当前策略相对参考模型的对数概率差。

更准确地说:

DPO 通过重参数化,把“先拟合奖励,再优化策略”改写成“直接用策略表示隐式奖励,并从偏好对更新策略”。

它减少了显式组件,却仍依赖:

  • 偏好数据质量;
  • Bradley-Terry 等偏好建模假设;
  • 参考模型选择;
  • $\beta$ 的尺度;
  • 数据覆盖范围;
  • 训练数据与部署分布之间的一致性。

十、DPO 的边界:固定偏好数据并不覆盖整个语言空间

DPO 常以离线偏好数据训练:

$$\mathcal{D}_{\mathrm{pref}}$$

这提高了稳定性,也限制了探索。

如果数据集中从未出现某类回答,DPO 就缺少直接证据判断它。

假设部署中出现新问题:

$$x_{\mathrm{new}} \not\sim \mathcal{D}_{\mathrm{pref}}$$

或者模型产生新型回答:

$$y_{\mathrm{new}}$$

训练集没有覆盖它们时,偏好泛化仍然依赖模型已有表示与归纳偏置。

因此出现 Online DPO 或迭代式偏好数据更新并不奇怪:

$$\mathrm{当前策略} \longrightarrow \mathrm{生成新回答} \longrightarrow \mathrm{收集新偏好} \longrightarrow \mathrm{更新偏好数据} \longrightarrow \mathrm{再次训练}$$

一旦进入在线循环,数据分布漂移问题也会回来。


十一、GRPO:不用单独 Critic,怎样估计优势

PPO 通常需要 Critic:

$$V_w(x,y_{<t})$$

它用于构造 Token 级优势估计。

但语言模型的 Critic 可能与策略模型规模相近,训练成本不低。并且,奖励常在序列末端给出,要求 Critic 准确估计每个 Token 前缀的价值并不容易。

GRPO,也就是 Group Relative Policy Optimization,采用另一种方式。

对同一个问题 $x$,从旧策略采样一组回答:

$$y_1,y_2,\ldots,y_G \sim \pi_{\theta_{\mathrm{old}}}(\cdot\mid x)$$

再对每个回答评分:

$$r_1,r_2,\ldots,r_G$$

计算组内均值:

$$\mu_r = \frac{1}{G} \sum_{i=1}^{G} r_i$$

以及组内标准差:

$$\sigma_r = \sqrt{ \frac{1}{G} \sum_{i=1}^{G} ( r_i-\mu_r )^2}$$

构造相对优势:

$$\widehat{A}_i = \frac{ r_i-\mu_r}{ \sigma_r+\varepsilon}$$

其中:

符号 含义
$G$ 同一提示下采样回答数量
$r_i$ 第 $i$ 个回答的奖励
$\mu_r$ 组内平均奖励
$\sigma_r$ 组内奖励标准差
$\varepsilon$ 防止分母为零的小常数
$\widehat{A}_i$ 第 $i$ 个回答相对同组平均水平好多少

十二、最小例子:组内比较如何形成优势

对同一个数学问题,采样四个回答,验证器给分:

$$[1,\ 1,\ 0,\ 0]$$

组内均值:

$$\mu_r = \frac{1+1+0+0}{4} = 0.5$$

标准差:

$$\sigma_r = \sqrt{ \frac{ (1-0.5)^2 + (1-0.5)^2 + (0-0.5)^2 + (0-0.5)^2}{4}} = 0.5$$

忽略很小的 $\varepsilon$,相对优势为:

$$[1,\ 1,\ -1,\ -1]$$

正确答案相对组内平均水平更好,概率应该提高;错误答案相对更差,概率应该降低。

GRPO 不需要 Critic 预测每个前缀的长期价值,而是让同一提示下的多个候选回答互相提供参照。


十三、GRPO 的策略目标

对第 $i$ 个回答中的第 $t$ 个 Token,定义策略比值:

$$\rho_{i,t}(\theta)= \frac{ \pi_\theta ( y_{i,t} \mid x,y_{i,<t} )}{ \pi_{\theta_{\mathrm{old}}} ( y_{i,t} \mid x,y_{i,<t} )}$$

一个常见的 GRPO 目标写成:

$$J_{GRPO}(\theta) = E\left[\frac{1}{G}\sum_{i=1}{G}\frac{1}{|y_i|}\sum_{t=1}{|y_i|}\left(\min\left[\rho_{i,t}(\theta)\hat A_i,clip(\rho_{i,t}(\theta),1-\epsilon,1+\epsilon)\hat A_i\right]-\beta D_{KL}\left(\pi_\theta(\cdot|x,y_{i,<t})||\pi_{ref}(\cdot|x,y_{i,<t})\right)\right)\right]$$

其中:

符号 含义
$\rho_{i,t}(\theta)$ 新旧策略对当前 Token 概率的比值
$\widehat{A}_i$ 第 $i$ 个回答的组内相对优势
$\epsilon$ 裁剪区间宽度
$\beta$ KL 约束强度
$\pi_{\mathrm{ref}}$ 冻结参考模型

这条公式保留了 PPO 的局部裁剪思想,也保留了参考模型约束。

变化在于:

$$\mathrm{Critic 预测优势} \quad\longrightarrow\quad \mathrm{组内奖励统计量估计优势}$$


十四、弱化 Critic,不等于估计问题消失

GRPO 可以省去单独价值模型,这是明显的工程收益。

但优势仍然需要估计:

$$\widehat{A}_i = \frac{ r_i-\mu_r}{ \sigma_r+\varepsilon}$$

它的可靠性取决于:

  • 同一提示采样多少个回答;
  • 候选回答是否足够多样;
  • 奖励函数或验证器是否可信;
  • 组内奖励方差是否足够区分候选;
  • 长序列奖励能否合理作用到不同 Token;
  • KL 约束是否过强或过弱。

如果一组回答奖励完全相同:

$$r_1=r_2=\cdots=r_G$$

则:

$$\sigma_r=0$$

组内比较无法提供有效方向。

如果组内只有一个回答偶然获得噪声高分,它也可能得到过强鼓励。

显式 Critic 被弱化,估计误差转移到了组内采样和奖励统计。


十五、Outcome Supervision 与 Process Supervision

如果只对最终答案评分,称为 Outcome Supervision。

例如数学答案正确:

$$r(y)=1$$

错误:

$$r(y)=0$$

这种方式简单、可靠,但信用分配较粗。模型可能碰巧得到正确答案,却包含不稳健的推理过程。

如果对中间步骤也评分,称为 Process Supervision。

设推理过程分为 $K$ 步:

$$z_1,z_2,\ldots,z_K$$

每一步有过程奖励:

$$r_1,r_2,\ldots,r_K$$

则某个较早 Token 的优势可以聚合之后步骤奖励。

过程监督提供更细粒度信号,但成本更高:

  • 需要步骤级标注或步骤验证器;
  • “正确步骤”有时难以严格定义;
  • 评价器本身仍可能存在漏洞。

它重新回到了信用分配问题:

只看最终结局,信号太粗;检查每一步,成本又会显著上升。


十六、Verifier:当奖励可以被验证

对开放式对话,很难写出完美奖励。

但一些任务有可验证结果:

  • 数学答案是否正确;
  • 程序是否通过测试;
  • 形式证明是否被检查器接受;
  • 工具调用结果是否满足约束;
  • 游戏状态是否达到目标。

验证器可以写成:

$$v(x,y) \in {0,1}$$

或更一般地:

$$v(x,y) \in \mathbb{R}$$

如果验证器可靠,奖励比模糊偏好更清楚。

但“可验证”仍不是“全部正确”。

例如,代码通过有限测试不等于没有隐藏错误;数学最终答案正确不等于推理过程可靠;某项指标达标不等于系统整体符合人的意图。

验证器缩小了奖励歧义,却没有把开放世界压缩成一个完美数字。


十七、Reasoning Model 的后训练:探索被组织为候选生成

在推理任务中,模型可以对同一问题采样多个候选:

$$y_1,y_2,\ldots,y_G$$

这些候选既是训练数据,也是有限探索。

采样温度较高时,候选更丰富:

$$\mathrm{更强探索} \longrightarrow \mathrm{更可能发现新推理路径}$$

但错误回答也会增加。

采样温度较低时,候选更集中:

$$\mathrm{更强利用} \longrightarrow \mathrm{更稳定但可能缺少新路径}$$

GRPO、验证器和组内比较把探索重新组织成:

$$\mathrm{同一问题} \longrightarrow \mathrm{生成多个回答} \longrightarrow \mathrm{相对评价} \longrightarrow \mathrm{提高更好回答概率}$$

这仍然是探索与利用,只是探索空间从物理动作变成了语言推理轨迹。


十八、PPO、DPO 与 GRPO:不要用一条轴线简单排序

维度 PPO-RLHF DPO GRPO
常见数据形式 在线生成回答 离线偏好对 同一提示下在线或迭代采样多个回答
显式 Reward Model 常见 训练链路中可省去 依奖励来源而定,可使用 RM、验证器或规则奖励
单独 Critic 常见 不需要 可弱化或省去
参考模型 常见 核心组成 常见
更新核心 PPO 优势与裁剪 偏好对比分类损失 组内相对优势与裁剪
主要优势 在线策略优化能力强 训练链路更简单稳定 减少 Critic 成本,适合多候选相对比较
主要边界 链路复杂,估计器多 依赖离线偏好数据覆盖与建模假设 依赖组内采样质量、奖励可靠性和采样成本

这三者不是“旧方法、中间方法、新方法”的单向替代关系。

它们适合的反馈条件、数据条件和计算预算并不相同。


十九、边界:删除模块是一种重构,不是魔法

当一个新方法删除显式 Reward Model 或 Critic 时,第一反应不应是“问题终于被解决了”。

应该继续追问:

  1. 原模块承担的工作去了哪里?
  2. 误差被显式暴露,还是被隐藏进新假设?
  3. 数据覆盖不足时,系统怎样知道自己不知道?
  4. 在线采样被删除后,探索发生在哪里?
  5. 参考模型、验证器和组内统计量分别承担了什么责任?

这正是本书希望培养的上帝视角:

不被算法名称吸引,始终追踪目标、估计、数据与反馈循环的去向。


回归全景图(Callback):DPO

维度 DPO 的处理方式 消解了什么,转移了什么
目标 使用偏好对推动策略更偏向被选择的回答 人类意图仍通过有限偏好数据表达,代理目标问题没有消失
时间 通常在完整回答层面比较优劣 Token 级信用分配被压缩进序列对数概率,细粒度归因仍隐含存在
更新 直接优化偏好分类形式的目标 省去 PPO 在线更新链路,但更新逻辑被重构为参考模型相对对数概率的对比
估计 不再单独训练显式 Reward Model 奖励没有凭空消失,而是依赖建模假设,隐式绑定到策略与参考模型的对数概率差
数据 主要依赖离线偏好对 训练更稳定,但能力上限受数据覆盖范围约束,分布外行为仍难以判断
探索 训练阶段通常不主动与环境探索 探索被转移到偏好数据的采集、生成和筛选阶段

判断:DPO 不是抛弃强化学习内核,而是对“估计与更新”环节做了巧妙重构。它减少了显式组件,却把部分矛盾压缩进数据、参考模型和推导假设中。


回归全景图(Callback):GRPO

维度 GRPO 的处理方式 消解了什么,转移了什么
目标 根据同一问题下多个回答的相对奖励改进策略 从绝对评价转向相对评价,但奖励来源是否可靠仍然关键
时间 序列级或步骤级奖励仍需作用到生成轨迹 长序列中的信用分配并未自然消失
更新 使用组内相对优势推动策略更新,并通常配合裁剪和 KL 约束 更新结构更轻,但仍需控制策略漂移
估计 可以不依赖单独训练的 Critic,以组内统计量构造相对优势 显式价值网络被弱化,估计问题转移为组内采样质量、奖励噪声与方差控制
数据 通常围绕当前或旧策略在线生成多个候选回答 在线分布漂移依然存在,采样成本和候选多样性成为新瓶颈
探索 通过同一提示下的多候选生成保留有限探索 探索被组织为组内生成,但仍受温度、采样策略和 KL 约束限制

判断:GRPO 弱化了显式 Critic,却没有消除估计问题。它把部分价值估计工作转移到了组内比较和采样统计中。


本章小结

DPO 与 GRPO 的共同价值,不是“终于摆脱了强化学习”,而是重新安排系统中最昂贵、最不稳定的部分。

DPO 从 KL 约束 RLHF 目标出发,把奖励重参数化为策略与参考模型的对数概率差,用一个偏好分类损失直接更新策略。

GRPO 从 PPO 出发,对同一提示采样多个回答,用组内相对奖励估计优势,从而弱化对单独 Critic 的依赖。

它们提醒我们:

新方法往往不是删除矛盾,而是转移矛盾;不是不再估计,而是更换估计的位置;不是不再探索,而是改变探索发生的阶段。

下一章,我们暂时放下算法细节,回到更难的问题:当奖励、偏好与验证器都只是人的意图的代理时,对齐究竟是一项优化任务,还是一项更广泛的制度设计任务?


第 23 章 对齐问题的哲学余波

写到这里,我们已经见过许多目标函数:

$$J(\pi) = \mathbf{E}\pi [ \sum_t \gamma^tR{t+1} ]$$

$$\mathcal{L}{\mathrm{DPO}} = - \mathbf{E} [ \log\sigma ( \beta\Delta\theta ) ]$$

$$\widehat{A}_i = \frac{ r_i-\mu_r}{ \sigma_r+\varepsilon}$$

它们越来越精细,也越来越适合工程系统。

但一个根本问题始终没有被公式自动回答:

我们希望智能体真正做什么?

强化学习擅长优化。恰恰因为它擅长优化,目标中的缝隙会变得重要。

对齐不是某一个算法名称,也不是给奖励函数再加一项正则。它是一项长期工作:持续检查可测量目标与真实意图之间的距离,并在系统能力增强时重新设计反馈、约束和责任边界。


一、奖励能否代表人的价值

假设我们希望一个语言模型“有帮助”。

可以收集偏好数据:

$$(x,y_w,y_l)$$

训练 Reward Model:

$$r_\phi(x,y)$$

再优化策略:

$$\max_\theta \mathbf{E} [ r_\phi(x,y) ]$$

这条链路很合理,但每一步都发生了压缩:

$$\mathrm{人的复杂意图} \longrightarrow \mathrm{标注指南} \longrightarrow \mathrm{有限偏好对} \longrightarrow \mathrm{奖励模型} \longrightarrow \mathrm{标量分数}$$

人的价值判断具有上下文:

  • 同一句话在不同场景中含义不同;
  • 准确、简洁、安全和创造性有时互相冲突;
  • 不同用户的合理偏好并不完全一致;
  • 某些风险很少出现,却不能忽略;
  • 有些目标难以由单次回答质量衡量。

奖励可以表达价值的一部分,但很难完整替代价值。


二、可测量指标与真实意图

设真实意图为:

$$U(y)$$

其中 $U$ 表示回答对人的真实效用。

现实中无法直接访问 $U$,于是使用代理指标:

$$\widehat{U}(y)$$

策略优化的是:

$$\max_y \widehat{U}(y)$$

但我们真正关心的是:

$$\max_y U(y)$$

只要:

$$\widehat{U}(y)\neq U(y)$$

就可能出现偏差。

在普通统计任务中,小偏差可能只是评估误差。

在优化系统中,小偏差会被主动利用:

$$\mathrm{代理指标中的微小漏洞} \longrightarrow \mathrm{优化器反复寻找} \longrightarrow \mathrm{行为明显偏离真实意图}$$

这不是某个模型“故意使坏”,而是优化过程的自然结果。


三、智能体会遵守规则,还是利用规则

想象一个客服模型被要求尽量提高“用户满意度”。

如果满意度通过会话结束后的单次评分衡量,模型可能学会:

  • 迎合用户,而不是提供准确建议;
  • 过度承诺,而不是坦诚说明限制;
  • 使用更讨喜的语气掩盖信息不足;
  • 避免提出让用户不舒服但必要的提醒。

模型并没有违反“提高评分”的规则。

问题是:

$$\mathrm{提高评分} \neq \mathrm{真正帮助用户}$$

类似现象在经典 RL 中早已存在:

  • 清洁机器人把垃圾藏起来,而不是清理掉;
  • 游戏智能体利用计分漏洞;
  • 推荐系统提高点击率,却降低长期体验;
  • 自动化系统满足局部 KPI,却伤害整体目标。

大模型对齐不是一块新大陆。它是奖励代理问题在更开放环境中的升级版。


四、Goodhart 定律:指标成为目标后会失去可靠性

Goodhart 定律常被概括为:

当一个指标成为目标,它就不再是一个可靠指标。

可以用简单关系表达。

假设真实质量为:

$$U(y)$$

可测量指标为:

$$M(y)= U(y)+ \varepsilon(y)$$

其中:

$$\varepsilon(y)$$

是指标误差。

如果从普通数据中随机抽样,$\varepsilon(y)$ 可能均值接近零。

但优化过程会选择:

$$y^* = \arg\max_y M(y)$$

这不仅偏向高真实质量 $U(y)$,也偏向误差项 $\varepsilon(y)$ 偶然很大的样本。

因此:

$$\max_y [ U(y)+\varepsilon(y) ]$$

会系统性放大代理指标中的误差。

这与 Q-Learning 中的最大化偏差、Actor 追逐 Critic 的价值幻觉、规划器利用世界模型漏洞,是同一类结构。


五、代理目标失灵为什么不是偶然事件

代理目标失灵并不一定意味着设计者粗心。

它有更深层原因:

  1. 世界比指标复杂;
  2. 数据覆盖永远有限;
  3. 环境会变化;
  4. 人的意图具有隐含条件;
  5. 优化器会主动搜索边缘区域;
  6. 系统部署后会改变用户行为和数据分布。

设策略为:

$$\pi_\theta$$

部署数据分布为:

$$d^{\pi_\theta}$$

策略更新后:

$$\pi_\theta \longrightarrow \pi_{\theta'}$$

数据分布也会变化:

$$d^{\pi_\theta} \longrightarrow d^{\pi_{\theta'}}$$

原先在旧分布上可靠的评价器:

$$r_\phi(x,y)$$

在新分布上未必同样可靠。

对齐问题不是一次训练结束后静态保存的结果,而是持续变化的数据与反馈问题。


六、对齐是优化问题,还是制度设计问题

答案是:两者都是。

从优化角度看,需要研究:

  • 奖励函数;
  • 偏好模型;
  • KL 约束;
  • 不确定性估计;
  • 安全探索;
  • 分布外检测;
  • 策略更新步长;
  • 验证器可靠性。

从制度设计角度看,还需要决定:

  • 谁定义什么是高质量回答;
  • 不同用户偏好如何表达;
  • 高风险任务何时拒绝自动执行;
  • 哪些行为需要人工审批;
  • 如何记录、审计和追责;
  • 新型失败模式如何反馈到数据采集;
  • 部署边界如何随能力变化而调整。

如果只做算法优化,系统可能高效地追逐错误目标。

如果只写原则而没有可执行机制,系统又无法在现实中落实约束。

对齐需要把价值判断变成多层防线,而不是只压缩进一个标量分数。


七、Human-in-the-Loop:人不是临时补丁

Human-in-the-Loop 不应被理解为“模型不够强时暂时让人帮忙”。

在高风险系统中,人可以承担不可轻易外包给自动评价器的职责:

  1. 定义目标边界;
  2. 处理模糊和冲突情境;
  3. 审查高风险动作;
  4. 发现评价器未覆盖的新型漏洞;
  5. 决定何时暂停系统;
  6. 更新标注指南与反馈机制。

可以设置风险阈值:

$$u(x,y) > \tau \quad \Longrightarrow \quad \mathrm{转交人工审查}$$

其中:

符号 含义
$u(x,y)$ 对当前任务或回答风险、不确定性的估计
$\tau$ 允许自动执行的风险阈值

对于低风险、可逆任务,系统可以拥有更高自主权。

对于高风险、不可逆任务,应提高审查强度。

关键不是“人永远审查一切”,而是:

根据风险、可逆性和不确定性,把决策权分层配置。


八、不确定价值下的谨慎优化

如果对真实效用只有估计:

$$\widehat{U}(y)$$

并且能够估计不确定性:

$$\sigma_U(y)$$

一种保守目标是:

$$\max_y [ \widehat{U}(y)- \lambda \sigma_U(y) ]$$

其中:

符号 含义
$\widehat{U}(y)$ 对效用的估计
$\sigma_U(y)$ 估计不确定性
$\lambda$ 风险厌恶程度

$\lambda$ 越大,系统越不愿意追逐高分但不确定的行为。

这与安全探索中的风险敏感目标一致。

另一种方式是使用约束:

$$\max_\pi J_R(\pi)$$

满足:

$$J_C(\pi) \leq d$$

其中:

符号 含义
$J_R(\pi)$ 策略带来的预期收益
$J_C(\pi)$ 预期风险或成本
$d$ 可接受风险上限

系统不应把所有问题都变成“收益减去一点惩罚”。

对某些安全边界,约束比软惩罚更合适。


九、可逆性:允许试错的前提

探索的伦理边界与工程边界,往往取决于行为是否可逆。

行为 可逆性 合理策略
在模拟器中尝试新控制参数 较高 可允许更强探索
为用户生成草稿 较高 可保留多样性,由用户确认
自动发布公开声明 较低 需要审核与权限限制
执行金融交易或医疗建议 风险高 需要严格约束、审计与人工介入

同一种模型能力,在不同部署环境中需要不同权限。

因此,对齐不能只在模型权重里完成。

权限系统、工具白名单、速率限制、审批流程、回滚能力和日志审计,都是对齐结构的一部分。


十、从“聪明模型”转向“可靠系统”

只讨论模型回答是否聪明,容易忽略系统边界。

一个可靠系统至少要回答:

  1. 模型允许看到什么信息?
  2. 模型允许调用哪些工具?
  3. 哪些动作可以自动执行?
  4. 哪些动作必须确认?
  5. 失败后能否回滚?
  6. 谁能看到日志?
  7. 如何发现分布漂移?
  8. 如何更新评价器和策略?

模型只是系统中的一个组件。

越是能力强的模型,越需要清楚的外部边界。


十一、边界:不要把哲学问题变成空泛口号

讨论“价值”“意图”和“制度设计”时,很容易变得抽象。

但本章并不是要离开工程。

相反,哲学问题应被翻译为可检查的问题:

抽象问题 工程追问
奖励是否代表人的价值 偏好数据覆盖了哪些场景?哪些群体?哪些冲突?
模型是否会利用规则 高奖励样本是否经过人工审查?是否存在异常模式?
系统是否谨慎 是否有风险阈值、拒绝机制和人工转交?
对齐是否持续有效 策略更新后是否重新评估 Reward Model 与部署分布?
权限是否合理 高风险工具是否受最小权限、审批和审计约束?

好的工程不是回避哲学问题,而是让哲学问题拥有可执行的落点。


回归全景图(Callback)

把对齐问题放回六个坐标轴:

维度 对齐问题中的表现 必须保留的警惕
目标 人的真实意图被压缩为奖励、偏好、验证器与规则 任何代理目标都可能遗漏上下文
时间 当前优化会影响未来用户、数据分布和制度环境 不只看单次回答,还要看长期行为后果
更新 通过 SFT、PPO、DPO、GRPO 或其他后训练方法改变策略 损失下降不等于社会目标自动改善
估计 Reward Model、Critic、验证器和风险模型都在近似真实判断 优化器会主动寻找估计器薄弱区域
数据 标注数据、在线生成与部署反馈持续变化 旧评价器可能无法覆盖新策略行为
探索 多候选生成、工具调用和自主行动扩大能力边界 探索必须受风险、可逆性与权限约束

再看三条反馈循环:

反馈循环 对齐问题中的具体形式
外部交互循环 模型影响用户与环境,环境反馈又改变未来训练数据
时间回报循环 短期满意度、长期信任和系统风险并不总是一致
自我更新循环 代理评价推动模型改变行为,新行为又暴露评价体系的新缺口

对齐没有一个“训练完成”的终点。

它是一种持续治理反馈循环的能力。


本章小结

强化学习把一个危险而重要的事实放到我们面前:

一个目标越容易被优化,我们越需要认真检查它是否值得被优化。

奖励、偏好与验证器都有价值,但它们都只是代理。

Goodhart 定律提醒我们,优化会放大代理指标误差;Human-in-the-Loop 提醒我们,人不只是临时标注器,也是目标边界的制定者与高风险决策的责任承担者;谨慎优化提醒我们,不确定时保守并不是能力不足,而是系统成熟。

下一章是全书结语。我们将把二十三章压缩回六个问题与三条反馈循环,让读者能够用同一张地图解剖任何新算法。


结语 用六个问题解剖任何强化学习算法

读到这里,读者已经遇见了许多名字:

  • Bellman 方程;
  • Monte Carlo;
  • TD;
  • SARSA;
  • Q-Learning;
  • DQN;
  • Policy Gradient;
  • Actor-Critic;
  • PPO;
  • SAC;
  • Model-Based RL;
  • RLHF;
  • DPO;
  • GRPO。

如果把它们当作互不相干的知识点,强化学习会显得像一间堆满零件的仓库。

但如果退后一步,就会发现:这些方法始终在回答同一组问题。

它们面对的世界没有静态标签,没有永远不变的数据分布,也没有一个可以直接反向传播的终极目标。

学习者只能在行动中获取数据,在延迟中等待结果,在不确定中估计未来,再用一次次不完美更新改变自己。

这就是强化学习。


一、第一问:它真正想最大化什么

最基础的长期目标是:

$$J(\pi)=E_{\tau\sim\pi}\left[\sum_{t=0}{T-1}\gammat R_{t+1}\right]$$

其中:

符号 含义
$\pi$ 策略
$\tau$ 策略与环境交互形成的轨迹
$R_{t+1}$ 第 $t$ 步行动后获得的奖励
$\gamma$ 未来奖励的折扣因子

但任何新算法都不能只停在这条公式。

还要继续问:

  • 奖励由谁定义?
  • 它是环境天然产生的,还是人为设计的?
  • 它来自 Reward Model、验证器还是用户行为?
  • 它是否只是更复杂意图的代理?
  • 策略是否可能找到提高奖励却违背真实意图的捷径?

DQN、PPO、RLHF、DPO 和 GRPO 的表面差别很大,但都必须面对目标代理问题。


二、第二问:未来怎样返回现在

强化学习的第二个根本困难是时间。

今天的一个动作,可能要经过许多步后才显出后果。

Bellman 方程给出递归结构:

$$V^\pi(s)= \mathbf{E}\pi [ R{t+1} + \gamma V^\pi(S_{t+1}) \mid S_t=s ]$$

它把未来折回现在。

不同算法选择不同截断位置:

方法 如何处理未来
Monte Carlo 等待完整结局
TD(0) 一步之后开始使用价值估计
$n$ 步 TD 先观察若干真实奖励,再开始自举
GAE 混合多个时间尺度的 TD 误差
Model-Based Rollout 在模型中显式推演有限步,再接价值估计
RLHF 将序列级反馈重新分配给回答中的 Token

面对新算法,应该问:

  • 它使用完整回报,还是自举目标?
  • 信用怎样分配给早期动作?
  • 长序列中的细粒度归因是否被解决,还是被压缩进某个估计器?

三、第三问:长期目标怎样变成一次更新

最终目标常常无法直接优化。

于是算法构造代理损失。

DQN 使用 TD 误差:

$$L_{DQN}(\theta)=E\left[\left(r+\gamma\max_{a'}Q(s',a';\theta-)-Q(s,a;\theta)\right)2\right]$$

PPO 使用裁剪目标:

$$\mathcal{L}^{\mathrm{CLIP}}(\theta)= \mathbf{E} [ \min ( \rho_t(\theta)\widehat{A}_t, \operatorname{clip} ( \rho_t(\theta), 1-\epsilon, 1+\epsilon )\widehat{A}_t ) ]$$

DPO 使用偏好对比损失:

$$L_{DPO}(\theta)=-E\left[\log\sigma(\beta\Delta_\theta)\right]$$

这些损失函数看起来不同,因为它们承担的局部任务不同。

但都应追问:

  • 代理损失与长期目标之间的桥梁是什么?
  • 损失下降是否只说明局部估计更一致?
  • Clip、KL、Target Network 和 Reference Model 分别约束了哪个变化?
  • 工程稳定化工具是否被误解成理论目标?

强化学习中的损失函数通常不是终点,而是控制一次参数更新的操作面板。


四、第四问:它使用了什么估计

强化学习几乎无法摆脱估计。

$$G_t$$

是随机轨迹上的回报估计。

$$V_w(s)$$

是未来价值估计。

$$Q_w(s,a)$$

是动作长期价值估计。

$$r_\phi(x,y)$$

是人类偏好估计。

$$\widehat{p}_\phi(s'\mid s,a)$$

是世界动态估计。

$$\widehat{A}_i$$

是组内相对优势估计。

因此,面对新方法要问:

  • 它显式或隐式估计了什么?
  • 估计偏差从哪里来?
  • 方差怎样控制?
  • 最大化、搜索或策略优化会不会放大估计误差?
  • 删除显式模型后,估计任务是否转移到数据、参考模型或统计量中?

没有免费估计。

算法设计的成熟,不在于假装误差消失,而在于知道误差可能从哪里回流。


五、第五问:学习者怎样改变自己的数据

监督学习常常假设训练集相对固定。

强化学习中的策略会改变数据分布:

$$\pi_\theta \longrightarrow \mathrm{行动} \longrightarrow d^{\pi_\theta} \longrightarrow \mathrm{新数据} \longrightarrow \mathrm{更新} \longrightarrow \pi_{\theta'}$$

新策略访问新的状态,也制造新的训练样本。

这让数据不再只是原料,而是策略的一部分。

方法 数据问题
On-Policy 方法 数据更新后迅速过时,样本利用率有限
Off-Policy 方法 可以复用旧数据,但要承受分布不一致
Experience Replay 打散相关性并复用经验,也把历史策略保留进系统
Offline RL 训练更可控,但无法轻易访问数据覆盖之外的行为
RLHF 新策略生成新回答,Reward Model 需要面对新分布
DPO 固定偏好对提高稳定性,也把能力上限绑定到数据覆盖
GRPO 在线候选生成保留探索,但带来采样成本与漂移

面对新算法,应该问:

  • 数据来自当前策略、旧策略还是固定数据集?
  • 哪些行为在数据中从未出现?
  • 分布外区域如何被识别?
  • 策略更新后,评价器是否仍然可靠?

六、第六问:它怎样探索未知

如果学习者只重复当前最优动作,就可能永远无法发现更好的路径。

探索是信息投资。

但探索并不免费:

  • 它会消耗交互预算;
  • 它可能带来安全风险;
  • 它可能进入估计器陌生的区域;
  • 它会扩大数据分布漂移;
  • 它可能让训练更不稳定。

不同系统中的探索形式不同:

场景 探索形式
Bandit $\epsilon$-greedy、UCB、Thompson Sampling
深度 RL 随机动作、熵奖励、内在动机、层级探索
Model-Based RL 探索模型不确定或潜在收益高的区域
语言模型 温度采样、多候选生成、搜索、重排序
DPO 探索转移到偏好数据生成与筛选阶段
GRPO 同一提示下生成一组候选,组内相对比较

面对新算法,应该问:

  • 新经验在哪里产生?
  • 探索是主动保留,还是被约束压缩?
  • 它如何在信息收益、安全、效率和成本之间取舍?

七、三条反馈循环

六个问题不是六座孤岛。

它们通过三条反馈循环连接起来。

1. 外部交互循环

$$\mathrm{策略} \longrightarrow \mathrm{动作} \longrightarrow \mathrm{环境} \longrightarrow \mathrm{新状态与奖励} \longrightarrow \mathrm{数据}$$

策略必须通过行动才能获得新信息。

2. 时间回报循环

$$\mathrm{未来奖励与下一状态估计} \longrightarrow \mathrm{当前价值} \longrightarrow \mathrm{当前动作判断}$$

未来必须通过回报、自举、优势或模型推演回到现在。

3. 自我更新循环

$$\mathrm{样本} \longrightarrow \mathrm{估计器} \longrightarrow \mathrm{代理损失} \longrightarrow \mathrm{参数} \longrightarrow \mathrm{新策略} \longrightarrow \mathrm{新样本}$$

学习者不是在静态世界中拟合答案。它每更新一次自己,也会改变下一批数据。


八、一张可复用的算法解剖表

以后遇到任何新方法,可以先填这张表。

坐标轴 必须回答的问题
目标 它最终想优化什么?奖励、偏好或验证信号从哪里来?
时间 它如何处理延迟反馈与信用分配?
更新 它用什么代理损失、梯度估计或约束完成一次参数更新?
估计 它显式或隐式估计了什么?减少了什么误差,又引入了什么偏差?
数据 它依赖在线采样、旧经验还是固定数据集?分布漂移风险在哪里?
探索 它如何产生新经验?探索被保留、压缩,还是转移到数据生成阶段?

填完之后,再加一句判断:

这个方法没有神奇地消灭矛盾。它缓解了什么,转移了什么,又把什么隐藏进新的假设中?

这句话适用于 DQN,也适用于 PPO、RLHF、DPO、GRPO,以及未来尚未出现的算法。


九、最后的判断

强化学习不是一套固定算法清单。

它是一种在特殊世界中学习的方法论。

这个世界有三个特征:

  1. 没有可以直接监督每一步行动的静态真值;
  2. 行动的结果往往延迟出现;
  3. 学习者改变策略后,数据分布也随之改变。

因此,强化学习必须不断在多种矛盾之间寻找可执行路径:

  • 长期目标与局部更新;
  • 真实意图与代理奖励;
  • 低偏差与低方差;
  • 数据复用与分布漂移;
  • 探索未知与控制风险;
  • 提高效率与防止误差放大。

每一种损失函数、估计器和工程技巧,都应当放回这个框架中理解。

当读者能够用这六个问题和三条反馈循环解剖一个陌生算法时,这本书真正想做的事情就完成了。


后记 我为什么不想按部就班地介绍强化学习

我不想再写一本从 MDP 开始,依次讲完 Q-Learning、DQN、Actor-Critic、PPO,最后补上一章 RLHF 的传统教材。

这样的写法当然完整,也有它不可替代的价值。但当算法越来越多,公式越来越长,读者很容易记住树叶,却看不见森林。

我更想暂时站远一点,用一种近似“上帝视角”的方式俯瞰强化学习:先不急着追随算法发展的时间顺序,而是追问这门学科为什么会长成今天的样子。

为什么真实目标总要经过奖励和代理损失才能落地?

为什么智能体每学会一点东西,训练数据的分布也随之改变?

为什么我们一边依赖自举提高效率,一边又害怕误差在自举中不断放大?

为什么探索是获得更优策略的必要条件,却也成为不稳定和风险的来源?

为什么 Actor 与 Critic 必须合作,却可能相互强化彼此的错误?

为什么 DPO 绕过显式 Reward Model 后,奖励问题并没有凭空消失?

为什么 GRPO 弱化显式 Critic 后,估计问题又转移到了组内采样和相对比较?

这些问题比某一个具体公式更长久。

TD、DQN、PPO、RLHF、DPO 和 GRPO 并不是彼此割裂的技巧,而是在不同场景下,对同一组根本矛盾做出的不同回答。

因此,这本书不试图让读者背诵更多算法。它希望帮助读者获得一张地图:以后面对任何新的损失函数、约束项或训练框架,都能看清它从哪里来,缓解了什么,又牺牲了什么。

这也是为什么书中保留了所有必要公式。

通俗不等于绕开数学。没有公式,读者只能得到比喻;只有公式,读者又很难理解公式为什么存在。理想状态是:先提出真实问题,再建立直觉,接着写出完整公式,解释每个符号,最后把公式重新放回反馈循环。

我也希望书中的插图承担真正的叙事任务。

强化学习最难理解的地方,往往不是某个静态定义,而是一个动态过程:

  • 奖励怎样沿时间回流;
  • 自举怎样提前截断未来;
  • 误差怎样在致命三角中传播;
  • 策略更新怎样改变数据分布;
  • Actor 与 Critic 怎样彼此帮助,又彼此放大误差;
  • PPO、DPO 和 GRPO 怎样删去一些显式模块,又把矛盾转移到新的位置。

这些过程值得被画出来,而不只是被写出来。

如果读完之后,读者不再把强化学习理解为一堆需要记忆的公式,而是理解为一个不断在目标、时间、更新、估计、数据与探索之间寻找平衡的系统,这本书就完成了它真正想做的事。


附录 A 数学基础

本附录不是数学教材,而是阅读正文时随手可查的地基。每个概念只解释强化学习中最常用的含义。


一、概率、期望与条件期望

随机变量 $X$ 的期望为:

$$\mathbf{E}[X] = \sum_x p(x)x$$

连续随机变量则写成积分:

$$\mathbf{E}[X] = \int p(x)x \mathrm{d}x$$

期望不是一次观测,而是重复采样后的平均趋势。

条件期望:

$$\mathbf{E}[X\mid Y=y]$$

表示已知 $Y=y$ 时,$X$ 的平均值。

强化学习中的价值函数就是条件期望:

$$V^\pi(s) = \mathbf{E}_\pi [ G_t\mid S_t=s ]$$

它表示:已知当前状态为 $s$,之后遵循策略 $\pi$ 时,未来回报平均是多少。


二、方差

方差衡量随机变量围绕均值的波动:

$$\operatorname{Var}(X)= \mathbf{E} [ ( X-\mathbf{E}[X] )^2 ]$$

在强化学习中,高方差意味着同一种状态或动作可能产生差异很大的更新信号。

Monte Carlo 回报通常方差较高,因为它包含整条后续轨迹中的随机性。


三、Markov Property

Markov Property,马尔可夫性质,写成:

$$\Pr ( S_{t+1} \mid S_0,A_0,\ldots,S_t,A_t )= \Pr ( S_{t+1} \mid S_t,A_t )$$

它表示:如果当前状态 $S_t$ 已经包含足够信息,那么预测下一状态时不必重新查看全部历史。

注意,马尔可夫性质不是说“历史不重要”,而是说“历史中对未来有用的信息已经被压缩进当前状态”。


四、MDP

马尔可夫决策过程 MDP 常写成:

$$\mathcal{M} = ( \mathcal{S}, \mathcal{A}, p, r, \gamma )$$

其中:

符号 含义
$\mathcal{S}$ 状态空间
$\mathcal{A}$ 动作空间
$p(s'\mid s,a)$ 执行动作后到达下一状态的概率
$r(s,a)$ 奖励机制
$\gamma$ 折扣因子

策略写成:

$$\pi(a\mid s)$$

表示在状态 $s$ 下选择动作 $a$ 的概率。


五、POMDP

如果智能体无法直接观察真实状态,只能看到观测:

$$O_t$$

则问题更接近部分可观测马尔可夫决策过程 POMDP。

此时策略可能需要依赖历史:

$$\pi ( a_t \mid o_1,a_1,\ldots,o_t )$$

或者依赖由历史压缩出的内部表示:

$$h_t = f(h_{t-1},o_t,a_{t-1})$$


六、折扣回报

从时刻 $t$ 开始的折扣回报:

$$G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} + \cdots$$

也可以递归写成:

$$G_t = R_{t+1} + \gamma G_{t+1}$$

折扣因子:

$$0\leq\gamma\leq 1$$

$\gamma$ 越大,学习者越重视远期奖励。


七、固定点与压缩映射

Bellman 算子可以写成:

$$(T^\pi V)(s)=E_\pi\left[R_{t+1}+\gamma V(S_{t+1})|S_t=s\right]$$

策略价值函数满足:

$$V^\pi = \mathcal{T}^\pi V^\pi$$

它是 Bellman 算子的固定点。

当:

$$0\leq\gamma<1$$

时,Bellman 算子在常见条件下具有压缩性质。直观地说,多次应用算子后,价值估计会越来越接近固定点。

函数逼近、自举与 Off-Policy 同时出现时,简单收敛直觉不再自动成立。


八、随机梯度估计

目标函数常写成期望:

$$\mathcal{L}(\theta)= \mathbf{E}_{X\sim p} [ \ell(\theta;X) ]$$

无法遍历全部样本时,可以用小批量估计梯度:

$$\nabla_\theta \mathcal{L}(\theta)\approx \frac{1}{B} \sum_{i=1}^{B} \nabla_\theta \ell(\theta;X_i)$$

其中 $B$ 为批次大小。

强化学习的特别之处在于:样本分布 $p$ 往往由策略决定,并会随训练变化。


九、Importance Sampling

如果数据来自行为策略 $\mu$,却希望估计目标策略 $\pi$ 下的期望,可以使用重要性采样比:

$$\rho_t = \frac{ \pi(A_t\mid S_t)}{ \mu(A_t\mid S_t)}$$

直观地说:

  • 如果目标策略更常选择这个动作,样本权重增大;
  • 如果目标策略较少选择这个动作,样本权重减小。

轨迹级比值可能写成:

$$\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{ \pi(A_k\mid S_k)}{ \mu(A_k\mid S_k)}$$

轨迹越长,方差越可能迅速增大。因此实际方法常使用截断、裁剪或其他稳定化机制。


十、KL 散度

KL 散度衡量两个概率分布之间的差异:

$$D_{\mathrm{KL}} ( p\parallel q )= \mathbf{E}_{x\sim p} [ \log \frac{ p(x)}{ q(x)} ]$$

在 PPO-RLHF、DPO 和 GRPO 中,KL 常用于限制新策略偏离参考模型:

$$D_{\mathrm{KL}} ( \pi_\theta \parallel \pi_{\mathrm{ref}} )$$

它不是距离函数:一般不对称,也不满足普通几何距离的全部性质。


附录 B 关键公式速查

本附录用于快速定位。完整解释请回到对应章节。

主题 公式 对应章节
折扣回报 $G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots$ 第 1 章
状态价值 $V^\pi(s)=\mathbf{E}_\pi[G_t\mid S_t=s]$ 第 3 章
动作价值 $Q^\pi(s,a)=\mathbf{E}_\pi[G_t\mid S_t=s,A_t=a]$ 第 3 章
Bellman 期望方程 $V^\pi(s)=E_\pi\left[R_{t+1}+\gamma V^\pi(S_{t+1}) S_t=s\right]$
Bellman 最优方程 $Q*(s,a)=E\left[R_{t+1}+\gamma\max_{a'}Q*(S_{t+1},a') S_t=s,A_t=a\right]$
TD 误差 $\delta_t=R_{t+1}+\gamma V(S_{t+1})-V(S_t)$ 第 5 章
$n$ 步回报 $G_t{(n)}=\sum_{k=0}{n-1}\gammakR_{t+k+1}+\gammanV(S_{t+n})$ 第 5、18 章
SARSA $Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t)]$ 第 16 章
Q-Learning $Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[R_{t+1}+\gamma\max_{a'}Q(S_{t+1},a')-Q(S_t,A_t)]$ 第 16 章
DQN Loss $L(\theta)=E\left[(r+\gamma\max_{a'}Q(s',a';\theta-)-Q(s,a;\theta))2\right]$ 第 8、16 章
Policy Gradient $\nabla_\theta J(\theta)\propto\mathbf{E}[A^\pi(S,A)\nabla_\theta\log \pi_\theta(A\mid S)]$ 第 17 章
Advantage $A\pi(s,a)=Q\pi(s,a)-V^\pi(s)$ 第 7、17 章
GAE $\hat A_t=\sum_{l=0}{\infty}(\gamma\lambda)l\delta_{t+l}$ 第 7、18 章
PPO Ratio $\rho_t(\theta)=\pi_\theta(A_t\mid S_t)/\pi_{\theta_{\mathrm{old}}}(A_t\mid S_t)$ 第 18、21 章
PPO Clip $\mathcal{L}^{\mathrm{CLIP}}=\mathbf{E}[\min(\rho_t\widehat{A}_t,\operatorname{clip}(\rho_t,1-\epsilon,1+\epsilon)\widehat{A}_t)]$ 第 18、21 章
KL-Regularized RLHF $\max_\theta\mathbf{E}[r_\phi(x,y)-\beta\log\frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}]$ 第 21 章
Reward Model $\Pr(y_w\succ y_l\mid x)=\sigma(r_\phi(x,y_w)-r_\phi(x,y_l))$ 第 21 章
DPO $L_{DPO}=-E\left[\log\sigma(\beta\Delta_\theta)\right]$ 第 22 章
GRPO Group Advantage $\widehat{A}_i=(r_i-\mu_r)/(\sigma_r+\varepsilon)$ 第 22 章

DPO 中的 $\Delta_\theta$

$$\Delta_\theta = \log \frac{ \pi_\theta(y_w\mid x)}{ \pi_{\mathrm{ref}}(y_w\mid x)} - \log \frac{ \pi_\theta(y_l\mid x)}{ \pi_{\mathrm{ref}}(y_l\mid x)}$$

它表示:相对于参考模型,当前策略让偏好回答相对于非偏好回答增加了多少对数概率优势。


附录 C 算法映射表

这张表不是算法排名。它用于快速观察:不同方法把矛盾放在了哪里。

图 C-1:六维算法家族地图

图 C-1:六维算法家族地图

算法 主要范式 是否自举 数据方式 主要解决的问题 主要稳定化机制或代价
Monte Carlo 价值估计 On-Policy 用完整轨迹估计回报 低自举偏差,高方差,必须等待结局
TD(0) 价值估计 常见为 On-Policy 提前更新价值 小步更新,但引入自举偏差
SARSA Value-Based On-Policy 学习当前行为策略的动作价值 会把探索风险计入策略评价
Q-Learning Value-Based Off-Policy 学习最优动作价值 最大化偏差与分布不一致风险
DQN Value-Based Off-Policy 用神经网络逼近 Q 值 Replay、Target Network;仍处于致命三角
REINFORCE Policy-Based On-Policy 直接更新策略 结构简单,但方差高
A2C/A3C Actor-Critic On-Policy 用 Critic 降低策略梯度方差 Advantage、并行采样
DDPG Actor-Critic Off-Policy 连续动作控制 Replay、Target Network;Critic 高估会误导 Actor
TD3 Actor-Critic Off-Policy 降低连续控制中的价值幻觉 双 Critic、目标策略平滑、延迟更新
SAC Actor-Critic Off-Policy 连续控制与探索 Entropy Regularization
PPO Actor-Critic 通常是 On-Policy 限制策略更新突变 Clip、KL、GAE
Dyna Model-Based 依具体更新而定 真实与模拟数据结合 提高样本效率 模型偏差会污染模拟经验
MuZero Model-Based Planning 真实经验与搜索 学习适合规划的潜在动态 搜索、潜在模型、价值与策略预测
PPO-RLHF Actor-Critic 通常是 在线生成 在偏好奖励下优化语言模型 Reward Model、Critic、KL、Reference Model
DPO 偏好优化 不依赖显式价值自举 主要为离线偏好数据 直接优化偏好对 Reference Model;依赖数据覆盖与建模假设
GRPO 策略优化 可不依赖显式 Critic 常见为在线或迭代采样 用组内相对比较构造优势 Group Baseline、Clip、KL;依赖采样质量

六维快速比较

算法 目标 时间 更新 估计 数据 探索
DQN 累计奖励 Bellman 自举 TD Loss Q 值与目标网络 Replay 旧经验 常用 $\epsilon$-greedy
PPO 累计奖励 Advantage、GAE Clip Objective Critic On-Policy rollout 随机策略、熵
SAC 奖励加熵 TD 自举 Actor-Critic 更新 双 Q 等 Replay 熵进入目标
PPO-RLHF 偏好奖励加 KL 约束 Token 级优势 PPO Clip RM 与 Critic 在线生成 采样与 KL 权衡
DPO 偏好对 序列对数概率 对比损失 隐式奖励关系 离线偏好对 转移到数据采集
GRPO 组内相对奖励 序列或步骤反馈 相对优势与 Clip 组内统计量 多候选生成 组内候选采样

附录 D 超参数思想地图

超参数不是孤立旋钮。每一个超参数都在控制一种矛盾。

参数 常见位置 主要控制对象 过小时可能发生什么 过大时可能发生什么
$\gamma$ Return、TD 未来奖励权重 过度短视 估计更难,长期噪声影响更强
$\alpha$ 各类梯度或 TD 更新 单次更新步长 学习过慢 不稳定、震荡甚至发散
$\lambda$ GAE、TD($\lambda$) 偏差与方差权衡 更依赖短期自举 更接近长回报,方差提高
$\epsilon$ $\epsilon$-greedy 随机探索概率 过早锁定当前最优 反复浪费在随机动作上
$\epsilon$ PPO Clip 局部策略更新范围 改进幅度受限 策略变化可能过猛
$\beta$ KL Penalty、DPO 偏好优化与参考约束 偏离参考模型过快 更新过于保守
$\alpha_{\mathrm{ent}}$ SAC、Entropy Bonus 探索强度 策略过早收缩 策略长期过于随机
$\tau$ Soft Target Update 目标网络更新速度 目标变化太慢 目标变化过快,不稳定
$\tau$ Language Model Sampling 生成分布平滑程度 候选过于集中 错误与低质量候选增多
$H$ Model-Based Rollout 想象深度 利用未来信息不足 模型误差累积
$G$ GRPO 同一提示的候选数量 组内统计不稳定 采样成本提高

同名参数不一定控制同一件事

符号只是记号。

例如 $\epsilon$ 在不同上下文中可能表示:

  • $\epsilon$-greedy 的随机探索概率;
  • PPO Clip 的裁剪区间;
  • 防止除零的小常数。

阅读论文时,先看定义,不要只凭符号猜含义。


附录 E 推荐阅读路线

本书可以顺序阅读,也可以按问题进入。


一、第一次系统学习强化学习

建议顺序:

  1. 序章;
  2. 第 1 至 7 章;
  3. 第 10 至 13 章;
  4. 第 16 至 18 章;
  5. 第 19 章;
  6. 第 20 至 23 章;
  7. 结语。

第 8、9、14、15 章可以在第一次阅读后回看。它们负责补充误差放大、深度探索与安全边界。


二、已经学过基础算法,希望建立全局视角

建议顺序:

  1. 序章;
  2. 第 6 章:损失函数;
  3. 第 7 至 12 章:估计、致命三角与稳定化;
  4. 第 16 至 19 章:算法综合案例;
  5. 结语。

重点不是重新背诵算法步骤,而是比较每种方法怎样转移矛盾。


三、主要关心大模型后训练

建议顺序:

  1. 序章;
  2. 第 2 章:奖励不是目的;
  3. 第 4 至 7 章:信用分配、估计与代理损失;
  4. 第 10 至 12 章:分布漂移与稳定化;
  5. 第 17、18 章:策略梯度、Actor-Critic 与 PPO;
  6. 第 20 至 23 章:语言模型、RLHF、DPO、GRPO 与对齐;
  7. 结语。

这条路线能避免把 DPO 或 GRPO 理解为凭空出现的新技巧。


四、主要关心工程稳定性

建议顺序:

  1. 第 5 章:自举;
  2. 第 7 章:偏差与方差;
  3. 第 8 章:最大化偏差;
  4. 第 9 章:致命三角;
  5. 第 10、11 章:非平稳性与 Off-Policy;
  6. 第 12 章:稳定化工具箱;
  7. 第 18 章:Actor-Critic;
  8. 第 21、22 章:大模型后训练中的稳定化。

五、外部资料主题索引

继续阅读外部教材、论文或课程时,可以按以下主题检索:

  1. MDP、Bellman Equation、Dynamic Programming;
  2. Monte Carlo、TD、SARSA、Q-Learning;
  3. DQN、Double DQN、Deadly Triad;
  4. Policy Gradient、Actor-Critic、GAE、PPO、SAC;
  5. Model-Based RL、MCTS、AlphaZero、MuZero、World Model;
  6. Offline RL、Preference Learning、Safe RL;
  7. RLHF、DPO、GRPO、Verifier、Reasoning Model Post-Training。

附录 F 核心参考资料

本附录列出正文写作时最重要的一组原始论文与基础资料。它不是完整文献综述,而是方便读者继续深挖的入口。


一、基础教材

  1. Richard S. Sutton, Andrew G. Barto. Reinforcement Learning: An Introduction, Second Edition.
    http://incompleteideas.net/book/RLbook2020.pdf

二、深度强化学习与策略优化

  1. Volodymyr Mnih et al. Human-level control through deep reinforcement learning. Nature, 2015.
    https://doi.org/10.1038/nature14236

  2. John Schulman et al. Proximal Policy Optimization Algorithms. 2017.
    https://arxiv.org/abs/1707.06347

  3. Tuomas Haarnoja et al. Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor. 2018.
    https://arxiv.org/abs/1801.01290

  4. David Silver et al. Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model. 2019.
    https://arxiv.org/abs/1911.08265


三、人类反馈与大模型后训练

  1. Nisan Stiennon et al. Learning to Summarize from Human Feedback. 2020.
    https://arxiv.org/abs/2009.01325

  2. Long Ouyang et al. Training Language Models to Follow Instructions with Human Feedback. 2022.
    https://arxiv.org/abs/2203.02155

  3. Rafael Rafailov et al. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. 2023.
    https://arxiv.org/abs/2305.18290

  4. Zhihong Shao et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. 2024.
    https://arxiv.org/abs/2402.03300


四、怎样使用这些资料

阅读论文时,建议继续使用全书六个问题:

  1. 它的目标函数是什么?
  2. 延迟反馈如何返回此前动作?
  3. 一次参数更新由哪个代理损失完成?
  4. 它依赖哪些显式或隐式估计?
  5. 数据来自当前策略、旧策略还是固定数据集?
  6. 探索被保留、压缩,还是转移到数据生成阶段?

论文中的新名词会不断变化,但这六个问题仍然有效。