目录

强化学习(8):值函数近似——从表格方法到函数表示

从表格价值到函数表示

前面几篇文章已经讨论了强化学习中一组基础方法:动态规划(Dynamic Programming)、蒙特卡洛方法(Monte Carlo Method)、时序差分方法(Temporal Difference Method)、多步时序差分方法、TD($\lambda$),以及把真实经验学习与模型规划结合起来的 Dyna-Q。虽然这些方法在信息来源和更新目标上各不相同,但它们背后默认采用了同一种价值表示方式:表格型表示(Tabular Representation)

所谓表格型表示,指的是直接为每个状态或状态—动作对维护一个独立的价值。对于状态价值函数(State-value Function),可以把 $V_\pi(s)$ 看成一张表:每个状态 $s$ 对应表中的一个位置,表项中存放当前对该状态长期价值的估计。对于动作价值函数(Action-value Function),可以把 $Q_\pi(s,a)$ 或 $Q_*(s,a)$ 看成一张更大的表:每个状态—动作对 $(s,a)$ 对应一个表项,表项中存放当前对该动作价值的估计。

例如,在一个有限网格世界中,如果一共有 $100$ 个状态,那么状态价值函数可以用长度为 $100$ 的数组保存;如果每个状态下有 $4$ 个动作,那么动作价值函数可以用 $100 \times 4$ 的表保存。TD(0) 更新 $V_\pi(s_t)$ 时,本质上是在修改状态 $s_t$ 对应的那一个表项;Sarsa 和 Q-learning 更新 $Q(s_t,a_t)$ 时,本质上是在修改状态—动作对 $(s_t,a_t)$ 对应的那一个表项。

从这个角度看,前面很多更新公式都可以统一理解为:找到当前经验对应的表项,然后根据目标值对它做一次增量修正。例如,Q-learning 的更新写作

$$ Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\Big[r_t+\gamma \max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\Big] $$

这个式子中真正被更新的对象,是表中 $(s_t,a_t)$ 这一格的数值。其他状态—动作对的数值不会在这一步中直接改变。也就是说,表格方法的学习具有很强的局部性:经历了哪个状态或状态—动作对,就主要更新哪个对应表项。

这种方式非常清晰,也很适合用来理解强化学习的基本思想。因为在表格型表示下,价值函数没有额外的模型结构,更新对象也非常明确。只要状态数量和动作数量有限,并且规模不大,就可以直接把所有价值存下来,然后通过反复交互或迭代逐步修正这些数值。前面讨论贝尔曼方程、动态规划、TD 更新和 Dyna-Q 时,正是依托这种表示方式,很多算法的核心逻辑才显得比较直接。

但这里也埋下了下一步必须面对的限制。表格方法能够成立,依赖一个很强的前提:状态或状态—动作对必须能够被逐一枚举,并且每一项都能够被单独存储和充分更新。在小规模离散环境中,这个前提通常可以满足;但一旦进入更复杂的任务,这个前提就会迅速变得不现实。

如果状态空间很大,表格会变得难以存储;如果状态是连续的,例如机器人的关节角、速度、姿态和传感器读数,那么状态数量在理论上可以无限多,根本无法为每个状态单独开一个表项;如果状态是高维的,例如图像输入、激光雷达点云或复杂的历史观测序列,那么即使把它们离散化,也会得到极其庞大的组合空间。此时,仍然试图为每个状态或状态—动作对单独维护价值,就会遇到存储、采样和泛化上的困难。

更关键的是,表格方法没有自动泛化能力。假设智能体已经多次访问过某个状态 $s$,并把 $V_\pi(s)$ 或 $Q_\pi(s,a)$ 学得比较准确。如果后来遇到一个和 $s$ 很相似的新状态 $s'$,表格方法通常不会自动把关于 $s$ 的经验迁移到 $s'$ 上。除非 $s'$ 自己也被访问并更新过,否则它对应的表项仍然可能保持初始值。这种“每一格独立学习”的方式,在小环境中可以接受,在大规模环境中会带来很低的样本利用率。

因此,强化学习如果想从小规模离散问题走向连续控制、高维感知和真实机器人任务,就需要改变价值函数的表示方式。我们希望价值估计不再完全依赖逐项存储,而能够从已经见过的状态中提取规律,并对未充分访问过的相似状态给出合理估计。

这就引出了这一篇文章的核心主题:函数逼近(Function Approximation)

它的基本想法是:用一个带参数的函数来表示价值函数。也就是说,不再把 $V_\pi(s)$ 或 $Q_\pi(s,a)$ 看成一张需要逐格填写的表,而是把它们写成类似

$$ V(s;\mathbf{w}),\qquad Q(s,a;\mathbf{w}) $$

这样的函数形式。其中,$\mathbf{w}$ 表示需要学习的参数。这样一来,学习的对象就从“某一个表项的数值”转向了“整个函数的参数”。当参数发生变化时,受影响的也不再只是单个状态或状态—动作对,而是这个函数在许多输入上的输出。

这一变化是从表格强化学习走向深度强化学习的重要一步。因为一旦价值函数可以由参数化函数表示,线性函数、特征工程和神经网络都可以进入强化学习框架。后面的 DQN 以及更多深度强化学习方法,本质上都建立在这个转变之上:用可训练的函数近似价值或策略,再通过样本构造目标,对函数参数进行更新。

transfer
表格表示到函数表示