01
引言
强化学习是机器学习中的一个领域,它引入了智能体在复杂环境中学习最优策略的概念。智能体根据环境的状态,通过行动进行学习,这些行动会带来奖励。强化学习是一个具有挑战性的课题,并且与机器学习的其他领域显著不同。
强化学习的非凡之处在于,相同的算法可以使智能体适应完全不同、未知且复杂的情况。
注:为了完全理解本文所涵盖的概念,强烈建议您熟悉之前文章中讨论过的概念。
02
截至目前,我们讨论的仅限于表格型强化学习方法。这里的"表格型"意味着所有可能的动作和状态都能被穷举列出。因此,价值函数V或Q以表格形式呈现,而我们算法的终极目标就是找出这个价值函数,并据此推导出最优策略。
然而,表格型方法存在两个亟待解决的核心问题。我们将首先剖析这些问题,随后引入突破这些限制的创新方法。
本文基于 Richard S. Sutton 和 Andrew G. Barto 撰写的《强化学习》一书的第九章。
运算量
首先必须明确的是,表格型方法仅适用于状态和动作空间有限的问题。回想我们在第三部分应用蒙特卡洛方法的二十一点案例:即便仅有200种状态和2个动作,也需要执行数百万次对局才能获得令人满意的近似解!
试想若面对更复杂的问题,计算量将呈爆炸式增长。以128×128像素的RGB图像为例,可能状态总数将达到3×256×256×128×128≈2740亿种。即便以当今最先进的计算技术,要完成价值函数求解所需的运算也绝无可能!
实际上,强化学习问题中的大多数环境都具有海量的状态和可能的行动。因此,使用表格型方法估计价值函数已不再适用。
泛化能力
即便假设计算资源无限充裕,智能体仍可能面临某些从未访问过的状态。传统表格型方法如何评估这些状态的V值或Q值?
本文将提出一种基于监督学习的创新方法,可高效近似价值函数——无论状态与动作空间规模如何。
价值函数近似的思想在于使用一个参数化的向量 w 来近似价值函数。因此,从现在开始,我们将把价值函数 v̂ 写成两个参数的函数:状态 s 和向量 w:
我们的目标是找到 v̂ 和 w。函数 v̂ 可以采用各种形式,但最常见的方法是使用监督学习算法。事实证明,v̂ 可以是线性回归、决策树,甚至是神经网络。同时,任何状态 s 都可以表示为描述该状态的一组特征。这些特征作为 v̂ 算法的输入。
为什么选择监督学习算法构建 v̂?
关键在于监督学习算法具有卓越的泛化能力。当模型在训练集 (X₁, y₁) 上完成训练后,对于未见过的样本 X₂ 仍能保持良好性能。
这正是强化学习泛化问题的解决方案:通过引入监督学习算法,即使遇到未探索过的状态,模型也能基于状态特征生成合理的价值估计,从而彻底解决泛化难题。
举例
让我们回到迷宫示例,直观展示价值函数的具体形式。我们将智能体的当前状态表示为二元特征向量:
x₁(s):智能体与终点的曼哈顿距离
x₂(s):智能体周围陷阱的数量
采用线性加权模型时,价值函数 v̂ 可表示为特征向量与参数向量 w 的点积。假设智能体当前位于 B1 单元格,其价值函数 v̂ 计算过程如下图所示:
难点
在介绍监督学习的思路时,我们需要解决两个主要难题:
学习到的状态值不再独立。在我们之前讨论的所有算法中,单个状态的更新不会影响其他状态。然而,现在的状态值依赖于向量 w。如果在学习过程中更新向量 w,它将改变所有其他状态的值。因此,如果调整 w 以改进当前状态的估计,那么其他状态的估计很可能会变得更差。
-
监督学习需要明确的真值标签作为训练目标,而强化学习场景中根本不存在"真实"的状态价值函数。更本质的困境在于:由于缺乏基准真值,传统损失函数甚至无法明确定义。
04
状态分布
我们无法完全消除第一个问题,但我们可以做的是指定每个状态对我们有多重要。这可以通过创建一个状态分布来完成,该分布将每个状态映射到其重要性权重。
然后可以将这些信息纳入损失函数中。
大多数情况下,μ(s) 的选择与智能体访问状态 s 的频率成正比。
损失函数
当 v̂(s, w) 可微时,可以自由选择损失函数形式。本文主要采用均方误差(MSE)作为示例,并通过状态分布权重 μ(s) 对每个误差项进行加权调整:
在所示的公式中,我们并不知道真实的状态值 v(s)。不过,我们将在下一节中解决这个问题。
目标
在定义了损失函数之后,我们的最终目标是找到能够最小化目标 VE(w) 的最佳向量 w。理想情况下,我们希望收敛到全局最优解,然而在现实中,最复杂的算法也只能保证收敛到局部最优解。换句话说,它们只能在 w 的某个邻域内找到最佳向量 w*。
尽管如此,在许多实际情况下,收敛到局部最优解通常已经足够。
05
随机梯度下降法是强化学习中进行函数逼近最常用的方法之一。
假设在第 t 次迭代时,我们处理单个状态样本。记当前权重向量为 wₜ,基于前文定义的MSE损失函数,可推导出权重更新规则:
我们虽然掌握了权重向量 w 的更新方法,但关键问题在于:如何在更新公式中确定目标值?这里需要引入新的表示方法——由于无法获取真实状态价值 v(S),我们将改用 U 作为近似目标值的替代,以表明这些"真实值"实际上是近似估计值。
关于状态值近似方法的具体实现,将在后续章节展开讨论。
06
为什么我们关心无偏估计?根据理论,如果目标值是无偏的,那么随机梯度下降(SGD)就能保证收敛到一个局部最优(在适当的学习率条件下)。
一旦完整序列生成完毕,就会为该序列中的每个状态计算所有的期望回报。相应的期望回报将在w向量的更新中被使用。对于下一个回合,将重新计算新的期望回报并用于更新。
如同原始蒙特卡洛方法一样,要执行更新,我们必须等到回合结束,这在某些情况下可能会带来问题。为了克服这个缺点,我们必须探索其他方法。
07
然而,仍然存在几个需要解决的难题:
估计值存在偏差: 在一个回合(episode)的开始,状态值 v̂ 和权重 w 都是随机初始化的。因此显而易见,平均而言,Uₜ 的期望值将无法近似真实的状态值。结果是,我们失去了收敛到局部最优解的保证。
目标值依赖于权重向量: 这一特性在监督学习算法中并不常见,会给随机梯度下降(SGD)更新带来复杂性。根据经典SGD理论,我们无法再计算出能使损失函数最小化的梯度值。
好消息是,这两个问题都可以通过半梯度方法(semi-gradient methods)来克服。
半梯度算法
尽管失去了重要的收敛性保证,但事实证明,在对价值函数施加特定约束的条件下(下一节将讨论),采用自举法仍能取得良好效果。
正如我们在第5节所见,与蒙特卡洛方法相比,自举法具有学习速度更快的优势,能够实现在线学习,因此在实际应用中通常更受青睐。从逻辑上讲,这些优势同样适用于梯度下降方法。
08
这是价值函数最简单的形式。此外,标量积的梯度就是特征向量本身:
因此,这种情况下的更新规则极其简单:
选择线性函数特别具有吸引力,因为从数学角度来看,价值近似问题的分析会变得容易得多。此外除了 SGD(随机梯度下降)算法,我们还可以使用最小二乘法。
09
在这种情况下,关于梯度蒙特卡洛(如果其学习率 α 调整得当),可以得出一个重要结论:
由于梯度蒙特卡洛方法保证收敛到局部最优解,因此在使用线性价值近似函数时,自动保证找到的局部最优解将是全局最优解。
半梯度算法中的线性函数
理论上,在采用线性价值函数时,单步时序差分(TD)梯度算法同样能够收敛。唯一的微妙之处在于,其收敛点(称为TD不动点)通常位于全局最优解附近。尽管如此,在大多数任务中,TD不动点提供的近似质量往往已经足够。
10
之前关于蒙特卡洛和自举法的知识帮助我们阐述了它们各自的梯度版本。尽管梯度蒙特卡洛提供了更强的理论保证,但自举法(尤其是单步时序差分(TD)算法)由于其更快的收敛速度,在实践中仍然是首选方法。
点击上方小卡片关注我
添加个人微信,进专属粉丝群!
参考资源:
【1】 RLBook: http://incompleteideas.net/book/RLbook2020.pdf

