监督学习回答不了的问题

监督学习本质上是一个有老师在场的曲线拟合问题。你拿到的是一份固定的输入-输出对数据集,对每一个输入都有一个 ground-truth 标签,明确告诉你正确的输出应该是什么。学习信号,即预测与标签之间的损失,对每一个样本都是立即可得的,并且不依赖于模型对其他样本的预测结果。

强化学习把这个”老师”拿走了。对于某个情境下”正确的动作”,并不存在 ground-truth 标签。取而代之的是:一个智能体与世界交互,采取动作,然后得到一个标量奖励,这个奖励只说明结果有多好,不说明本应采取哪个动作,也不说明本该如何改变做法,只是一个数字。更糟的是,这个数字甚至可能要等到很久之后、在造成它的那个动作发生很久以后才会出现。学习问题从”匹配这个标签”变成了”仅凭结果,反推出过去哪些选择其实是好主意”。

这不是一个表面上的差异。它改变了你能够写下来作为训练信号的数学对象本身。

维度监督学习强化学习
训练信号Ground-truth 标签奖励信号
数据来源通常是固定数据集智能体与环境的交互
数据假设通常视为独立同分布序列化、依赖策略
反馈时机通常是即时的标签/损失可能是延迟的
目标尽量准确地预测标签最大化期望累积奖励

这张表的最后一行做的工作比看上去要多。“尽量准确地预测标签”,一旦固定了数据集,就是一个良定义的统计估计问题。“最大化期望累积奖励”则完全还没有良定义:需要先定义清楚什么是智能体、什么是环境、什么是动作、什么是回报。

这就是本章诚实的出发点。强化学习不是从一个算法开始的,甚至不是从一个目标函数开始的。它是从”让自己的目标陈述变得有意义”这件苦力活开始的。本章接下来要装配的,正是把那句口号变成一份规格说明所需的四块东西:产生数据的循环、动作可取自的集合、世界如何响应动作的动态,以及让这一切变难的两个障碍。

每一个 RL 问题运行所依赖的循环

既然没有现成的数据集可拿,就必须有东西来产生数据。这个东西,就是两个角色之间一种特定的往复交互。在展开其他一切之前,先把这套交流用的词汇讲精确是值得的。

定义智能体、环境与交互循环

智能体是强化学习问题中做决策的那个系统。它可以是一张查找表、一个基于规则的控制器、一个神经网络策略、一个机器人控制器、一个博弈策略,或者任何其他能够根据状态或观测选择动作的系统。

环境是智能体与之交互的外部系统。它接收动作,更新自身的内部状态,并返回观测和奖励。

一步交互的流程如下:

  1. 智能体接收一个状态或观测。
  2. 智能体从动作空间中选择一个动作。
  3. 环境接收该动作。
  4. 环境转移到下一个状态或观测。
  5. 环境返回一个标量奖励信号。

紧凑地写成:

statrt,st+1s_t \rightarrow a_t \rightarrow r_t, s_{t+1}
这里的「智能体」是什么意思

不要把”agent”窄化成今天 AI agent / LLM agent 的那个含义。在强化学习里,这个术语的使用比那个含义要早几十年,智能体就是行为的来源,不管这个行为具体是由什么机制产生的。

状态转移不等于奖励

不要把状态转移和奖励混为一谈。转移描述的是世界发生了什么变化;奖励是一个独立的、标量化的判断,评价这个变化(或者引起变化的那个动作)有多好。一个系统完全可以只有状态转移而没有任何”好坏”的概念;强化学习则同时需要这两者。

值得注意的是这个循环悄悄回避了什么。第 2 步说智能体”从动作空间中”选择一个动作,却没说这个集合里装着什么。第 3 到 5 步说环境做出响应,却没说响应遵循什么规律。这两处留白就是接下来的两节,而且都不是细枝末节:前者决定了哪些算法根本不适用,后者划出的那条线,整个”基于模型 / 无模型”的分野都落在它上面。

动作空间

循环的每一步都要经过一次选择:智能体能够合法选择的动作有哪些?这个合法动作集合的形状(是有限、可枚举的,还是一个无穷的连续统)会直接约束哪些算法是可行的。

定义动作空间

动作空间记作 A\mathcal{A},是智能体可以选择的所有合法动作的集合。当合法动作依赖于当前状态时,记作 A(s)\mathcal{A}(s)

离散动作空间包含有限个或可数个动作:

A={a1,a2,,an}\mathcal{A} = \{a_1, a_2, \dots, a_n\}

例如 A={,,,}\mathcal{A} = \{\text{上}, \text{下}, \text{左}, \text{右}\}

连续动作空间通常是一个实向量空间的子集:

ARd\mathcal{A} \subseteq \mathbb{R}^d

例如 a=(θ,v)a = (\theta, v)A=[0,2π)×[0,vmax]\mathcal{A} = [0, 2\pi) \times [0, v_{\max}],即一个机器人的转向角和速度,或者一组关节力矩构成的向量。

在一个较小的离散动作空间里,基于价值的方法可以通过暴力枚举选出最优动作:

a(s)=argmaxaAQ(s,a)a^*(s) = \arg\max_{a \in \mathcal{A}} Q(s,a)

一旦 A\mathcal{A} 变成一个连续统,这个技巧就立刻失效了:候选动作有无穷多个,在每一个上都求值 Q(s,a)Q(s,a) 根本不是一个有限的计算过程。正是这一个约束,使得策略梯度、actor-critic 这类让策略直接输出一个连续动作或连续动作分布(而不是在动作集合上搜索)的方法,成为连续控制问题的自然选择。动作空间的形状不是一个无关紧要的注脚,而是接下来整个方法必须与之兼容的第一批设计决策之一。

这个定义的两个分支之后都会再次出现:离散动作空间对应类别分布策略,连续动作空间对应对角高斯策略,参见作为概率分布的策略

强化学习中的模型

智能体负责选择动作;而决定这个动作会带来什么后果的,是别的东西,即环境的动态,通常称为模型。这里值得说清楚的是:模型回答的问题,和策略回答的问题完全不同。

定义转移模型与奖励模型

转移模型给出在当前状态和动作下,下一个状态的分布:

P(ss,a)P(s' \mid s,a)

奖励模型给出一个状态-动作对(或状态-动作-下一状态三元组)产生的奖励:

R(s,a)orR(s,a,s)R(s,a) \qquad \text{or} \qquad R(s,a,s')
概念回答的问题
策略在这个状态下,智能体应该采取哪个动作?
模型如果智能体采取这个动作,环境可能会怎样变化,可能会产生什么奖励?

策略 π(as)\pi(a \mid s) 存在于智能体内部;模型 P(ss,a)P(s' \mid s,a) 存在于环境内部。把两者混淆是记号和代码中一个常见的错误来源:策略是你能够控制、能够优化的决策规则;模型则是关于世界的一个事实,你顶多只能观察它或者去近似它。

定义基于模型与无模型的强化学习

**基于模型(model-based)**的方法已知或显式地学习一个对环境转移与奖励动态的近似,并利用这个近似来做规划或决策。

**无模型(model-free)**的方法不显式表示转移动态。它们直接从交互中学习策略、价值函数,或者两者都学,从不写下 P(ss,a)P(s' \mid s,a) 的任何近似。

这个区分关心的是:动态本身是否在学习器的某个地方被显式表示出来。它和是否使用了神经网络毫无关系,因为基于模型和无模型的方法都经常会用到神经网络。

这条分界线也决定了本系列后面的排布。当 P(ss,a)P(s'\mid s,a)R(s,a)R(s,a) 事先已知时,它们正是让已知模型下的规划那套精确回溯不需要采样就能算得动的原料。而一旦它们未知,那一整个方法族会在同一瞬间全部失效,策略梯度则改为从 rollout 中估计同样的底层量。一个问题落在这条线的哪一侧,基本决定了后面能用什么。

两个在监督学习里没有对应物的障碍

循环定好了,动作集合定好了,动态也定好了。这时候很容易以为,剩下的困难就只是”挑出好动作”。但有两个结构性障碍,让这件事比听起来难得多,而且它们在普通监督学习里都没有对应物。在任何算法试图绕开它们之前,都值得先把这两点讲清楚。

延迟奖励与信用分配

定义延迟奖励与信用分配

当一个动作的价值要等到很多步之后、或者要等到一个回合结束才能被观察到时,我们说奖励是延迟的。信用分配问题就是由此产生的:应该把一个较晚出现的奖励,归功或归咎于哪些较早的动作?

考虑这样一段交互序列

s0,a0,s1,a1,,sT,rTs_0,a_0,s_1,a_1,\dots,s_T,r_T

其中唯一有信息量的奖励出现在最后一步,即 rTr_T。面对这样一个序列,一个监督学习器对其中 99%99\% 的决策根本没有任何信号可用。而强化学习方法必须仅从这一个终止时刻的数字出发,推断出动作 a0,,aT1a_0, \dots, a_{T-1} 中究竟哪些真正为这个结果做出了贡献,这与拟合一个标签是完全不同性质的推断问题。

最终解决这个问题的工具是回报:把奖励在时间上聚合起来,而不是孤立地看某一步。回报、价值与 Bellman 方程会把这个聚合精确地定义出来。再往后,策略梯度里的 “reward-to-go” 改进会把它进一步收紧,把一个动作的功劳限定在因果上晚于它才出现的奖励上。

探索与利用

定义探索与利用

**利用(exploitation)**是指选择那些已经被认为能带来高奖励的动作。**探索(exploration)**是指尝试那些后果仍不确定的动作,以弄清楚它们是否更好。

这两者的方向是相反的,而且一旦失衡,会以两种不同的方式失败:探索太少,智能体会被困在一个局部还不错、但再也学不会改进的行为里;探索太多,则会浪费奖励,并且因为始终不肯坚持已经证明有效的做法而破坏学习的稳定性。随机性策略(也就是给不止一个动作赋予非零概率的策略,aπ(s)a \sim \pi(\cdot \mid s))是探索的一种自然机制,因为它天然就会不断尝试其他选择。但它不是唯一的机制:显式的动作噪声、乐观的价值初始化、以及考虑不确定性的动作选择,都能以不同的方式服务于同一个目的。

这是策略之所以值得做成随机性的两个真正独立的理由之一。另一个理由纯粹是数学层面的,是作为概率分布的策略的主题。

目标陈述现在到了哪一步

到本章结束,“最大化期望累积奖励”仍然不是一个良定义的问题。与其含糊过去,不如把还缺什么讲清楚。交互循环说明了数据如何产生;动作空间说明了可以选什么;模型说明了世界如何响应。三者都没有提供的,是被最大化的那个东西的精确定义:“累积奖励”在一个可能无限长的未来上还不是一个收敛的量,“期望”也还不是对任何已指定对象取的期望。

要补上这个缺口,需要先对状态做一个结构性假设,这由马尔可夫阶梯提供,然后才是建立在它之上的回报与价值这套机器。

参考资料