强化学习系列(九):On-policy Prediction with Approximation

一、前言

针对 on-policy prediction 问题,用function approximate 估计 state-value function的创新在于:value function 不再是表格形式,而是权重参数为w的数学表达式,即 v ^ ( s , w ) v π ( s ) 。其中 v ^ 可以是state的线性函数,也可以是一个多层人工神经网络(ANN),也可以是一个决策树。值得注意的是,权重 w 的维度小于states 的数目,也就是说,一个权重可以改变多个state 的估计值(estimated value)。

将function approximate 用于强化学习可以解决部分可观测问题(即有部分state 是agent 无法获得的),function approximate 不可以用于基于过去观测来扩展state的问题,在第17章重点讨论。

二、value function Approximation

所有的prediction方法都采用back-up value(或update target)来更新value:


对MC(蒙特卡罗)有 S t G t
对TD(0)有 S t R t + 1 + γ v ^ ( S t + 1 , w t )
对n-step TD 有 S t G t t + n
对 DP(动态规划)有 s E π [ R t + 1 + γ v ^ ( S t + 1 , w t ) | S t = s ]


其中 s u 表示,在状态 s 下对应的update target 为 u。这种更新方式可以看做对value function的一个 desired input-output behavior,即希望state s的估计值(estimated value)接近update target u。其中,value 表中 s的估计值很容易趋近于 u,而其他states的估计值不会发生变化。现在允许采用一种更复杂的更新方式,即在s 上的估计值更新会牵扯到其他states 的估计值更新。这种update target可以类比与机器学习中的标签,这种数据有标签的机器学习方法称为监督学习(supervised learning),使得输入数据像期望输出数据接近。因此监督学习的方法可以用于强化学习中的value prediction 问题

但大部分监督学习方法都是假设用于训练的数据集(training set)是静态的,即大小是固定的,但对于强化学习问题,其涉及到与环境不断交互,产生新的state,这需要function approximate 的方法可以有效的从递增的训练集中在线学习。另外,强化学习的target function有时候会不断改变,如在control问题中,GPI 过程需要学习当Policy π 改变时的 q π 。即使Policy保持不变,由bootstrapping(步步为营)方法(如TD或DP)生成的target values也是非静态的。如果某些方法不能很轻松的处理非静态问题,就不太适合用于强化学习问题。

三、The Prediction Objective ( V E ¯ )

迄今为止,我们没有一个用于明确表示Prediction 问题的指标。在tabular(表格化) 问题中,因为学习得到的value function就直接等于真实的value function,因此不需要明确prediction 的质量。另外,表格化问题中的一个state的value更新不会影响其他state的value更新。

但在运用function approximation 后,一个state的value 更新会影响其他很多states 的value值,这样我们不可能获得每个state 的values的真实值。假设有足够多的state ,数目多余 权重数目,对一个state的准确估计意味着牺牲其他 state 的value估计精度。

我们有责任确定这些state的重要程度,使用一个分布 μ ( s ) 0 , s μ ( s ) = 1 来表示对每个state value估计误差的重视程度,其中,误差为估计值 v ^ ( s , w ) 和真实值 v π ( s ) 的平方差。此时,prediction的目标为最小化均方根误差 V E ¯ :
这里写图片描述

对episode task 的on-policy而言, μ ( s ) 通常如下面框图所示:
这里写图片描述

prediction的目标为最小化均方根误差 V E ¯ ,即找到一个全局最优,使得存在 w 对所有 w V E ¯ w ) V E ¯ ( w ) 。线性函数通常可以找到这个全局最优解,但人工神经网络或决策树通常很难找到全局最优解,这些复杂的function approximation 方法通常会陷入局部最优,但对强化学习问题而言,有局部最优比无解强,这也是可以接受的。

接下来,我们将分别介绍一些简单的泛化方法,在介绍这些函数逼近之前,我们先介绍一下无论使用何种函数逼近都会涉及的求解方法:随机梯度下降(stochastic-gradient descent,SGD)和Semi-gradient方法。

四、Stochastic-gradient and Semi-gradient Methods

本节首先介绍随机梯度下降法(SGD),该方法常用于 function approximation中,对RL问题也十分适用。

4.1 随机梯度下降法

我们先来看一下什么是梯度下降(gradient decent)

梯度下降算法背后的原理:目标函数 J ( θ ) 关于参数 θ 的梯度 θ J ( θ ) 是目标函数上升最快的方向。对于最小化优化问题,只需要将参数 θ 沿着梯度相反的方向前进一个步长,就可以实现目标函数的下降。这个步长又称为学习速率 α 。参数更新公式如下:
θ θ Δ θ

其中 Δ θ 表达如下图所示:
这里写图片描述

对于function approximation问题,在gradient decent中,权重向量为一个列向量 w = ( w 1 , w 2 , w 3 , . . . , w d ) T ,需要估计的value function v ^ ( s , w ) w 的 可微函数,我们需要在时间序列 t = 0 , 1 , 2 , 3 , . . . 上更新 w ,将 w t 记作t时刻的权重向量。 假设我们观测到一个样例,包括一个state和他的真实 value, S t v π ( S t )

假设在我们所观测到的样例中出现的states都具有同样的分布, μ , 我们的目标是最小化 V E ¯ ,可以通过最小化各个样例中的误差来实现,随机梯度下降通过沿着梯度相反的方向不断前进一个步长来调整每个样例的权重向量:
这里写图片描述

其中, α 是一个小的正数, Δ 表示 f ( w ) w 的偏导数:
这里写图片描述

SGD是一种梯度下降方法,因为他沿着函数下降最快的方向移动,为什么叫随机梯度下降呢?因为在更新时,不对所有样例一起更新,而是随机选择其中一个样例。采用足够多样例,和足够小的更新步长,就可以在整体上最小化平均性能,如 V E ¯

4.2 Semi-gradient Methods

当我们没有真实的value 时,可以用target value U t 代替,SGD的权重更新公式如下:
这里写图片描述

如果 U t 是一个无偏估计,即 E [ U t | S t = s ] = v π ( S t ) ,那么在 α 递减情况下, w t 最终会收敛到一个局部最优。
假设这些样例中的states都是agent与环境交互产生,和 Monte Carlo算法中的采样数据一样。那么true value则为这些states value的期望值,因此Monte Carlo算法的target value U t = G t v π ( S t ) 的无偏估计,SGD算法用于 Monte carlo的算法伪代码如下图所示:
这里写图片描述

当target value由步步为营算法,如TD算法提供时,是true value 的有偏估计,这种取代方式,遵循了SGD的形式,但是不能保证权重系数会收敛到一个局部最小值,因此称之为 semi-gradient decent算法,当function approximation为线性函数(linear function)时,可以保证收敛到局部最优,但其他情况不确定。

虽然 semi-gradient (bootstrapping)方法的鲁棒性不如 Gradient 方法,但是他们有如下优点:

  • 快速收敛性
  • 不需要等到一个episode结束,就可以进行target value更新,可以有效的进行在线连续学习。

semi-gradient TD (0)算法伪代码如下:
这里写图片描述

五、Linear Methods

线性方法是最重要的function approximation 方法之一,即将 v ^ ( . , w ) 表征为权重向量 w 的线性函数,对每个state s 而言,有 和 w 等维的特征向量 x ( s ) = ( x 1 ( s ) , x 2 ( s ) , . . . , x d ( s ) ) T ,线性逼近的state-value函数表达如下:
这里写图片描述
对线性方法而言,特征量是有偏函数,因为他们用一系列估计值来组成了线性偏差。用d维的特征向量来表示state就相当于选择了d个有偏函数,特征如何选取,我们在第六节中重点讨论。

很自然可以将上一小节中SGD 方法用于线性函数逼近中,梯度如下:
这里写图片描述
权重系数更新方式如下:
这里写图片描述

在linear方法中仅有一个最值,因此可以至少保证有一个局部最优解,之前提到的蒙特卡洛算法在学习率 α 递减时,用线性函数逼近方法,可以获得均方根误差 V E ¯ 有全局最优解。

semi-gradient TD(0)算法在采用线性函数逼近时也会收敛,但需要另一套理论支撑,且权重向量最终收敛的点并非全局最优,而是局部最优。下面详细进行分析,semi-gradient TD(0)结合线性函数逼近的SGD权重更新如下:
这里写图片描述
其中, x t = x ( S t ) , 一旦达到平衡点,对任意 w t 的下一时刻期望权重可以表达如下:
这里写图片描述

此处,这里写图片描述

如果系统收敛,则假设收敛到一个权重 w T D 满足:
这里写图片描述

这个点叫做TD fixed point,有理论证明这个点linear semi-gradient TD(0)确实收敛在这个点上,此不详述,感兴趣的可以参考《Reinforcement Learning : An introduction》第166页阴影框中。

在TD fixed point 上,证明 o v e r l i n e V E 有一个上限:
这里写图片描述
TD 方法生成的 V E ¯ 小于 1 1 γ 倍其他方法产生的 o v e r l i n e V E 的最小值。在on-policy分布下,MC、semi-gradient DP、semi-gradient Sarsa(0)均收敛于TD fixed point,但如果采用其他更新分布,则采用函数逼近的bootstrapping方法可能趋于无穷大,在第11章中重点讨论。

六、Feature Construction for Linear Methods(线性方法的特征构造)

线性方法不仅收敛性好,且十分计算高效。这一切都取决于如何选择states的特征,本节将讨论特征构造方法。好的特征会告诉强化学习一些先验知识,如在处理几何问题时,所构造的特征可能是几何体的形状、颜色、大小或函数。假如研究一个移动机器人,则需要的特征可能是位置、角度、电池剩余等。

线性方法的局限在于,我们所考虑到的特征之间是彼此独立的,即没有考虑到两个特征间的联系。但对一些特征,我们需要考虑他们之间的联系,如开车转弯时,车辆速度和方向盘转角之间的关系,不能独立的说方向盘转角越大越好或者越小越好,当速度较低方向盘转角可以大一些,但车辆速度较高时大转角会很危险。接下来我们讨论几种解决特征间耦合的方案。

6.1 多项式

很多问题的states都是用数字来表示,如打高尔夫球时的states 为位置和速度,汽车租赁问题中每个停车场的汽车数目。这类问题中,将函数逼近用于强化学习问题的思想与插值或回归问题类似。因此,很多用于插值或回归的方法也可以用于强化学习。这里我们将讨论多项式方法在强化学习中的运用,虽然效果不佳,但便于我们理解。

举个例子,假设有一个强化学习问题,他的state 是一个二维的,即 s = ( s 1 , s 2 ) , 可以选择特征为 x ( s ) = ( s 1 , s 2 ) T ,但这种特征表达无法体现两个特征值 s 1 , s 2 间的交互关系。可以通过构造一个高维的多项式特征向量来解决该问题:
这里写图片描述

6.2 Fourier Basis (傅里叶原理)

另一种线性函数逼近方法基于古老的傅里叶级数,用sin和cos基函数(特征量)的加权和来表示周期函数( f ( x ) = f ( x + τ ) )。当一个需要估计的函数已知时,傅里叶级数和傅里叶变换应用十分广泛,基函数的权重很容易给出,只要有足够多的基函数,任何函数都能被逼近。在强化学习中,需要被估计的函数通常是未知的,但傅里叶基函数仍然可以很好的应用。

首先考虑一维问题,通常傅里叶级数用周期为 τ 的sin和cos函数的线性组合来表示周期为 τ 的一维度周期函数。如果要研究如何在有界区间上逼近非周期函数,可以通过改变傅里叶原理中的 τ 来设置区间长度,将非周期函数转化为sin和cos函数线性组合的周期函数在该有限区间的一个周期。

另外,如果将 τ 设为兴趣区间的两倍,那么只需要在 [ 0 , τ 2 ] 区间上进行函数逼近,可以只使用cos函数或只使用sin函数。如果只使用cos函数,表示任意偶函数,当有足够多的cos基函数时,可以表示 [ 0 , τ 2 ] 区间内的任意函数。sin作为奇函数,其线性组合往往是奇函数,在原点处通常不连续,所以一般在 [ 0 , τ 2 ] 区间下考虑仅使用cos函数的线性组合,但也不是绝对的,在某些情况下,用sin和cos的组合更好。

对于多维问题,使用傅里叶原理如下:
这里写图片描述

将傅里叶cos特征用于学习算法,如 semi-gradient TD(0)或 semi-gradient Sarsa时,每个特征的学习率最好不同,可以定义第i个特征的学习率为
这里写图片描述

虽然将傅里叶cos特征值用于Sarsa问题比其他基函数性能好(如多项式,径向基函数),但傅里叶特征因为无法避免非连续点间的跳变存在不连续问题,采用高频函数可以缓解该问题。

低维度时( k 5 ),使用傅里叶原理比较简单,当维度增加时,特征数量爆炸式增加,此时需要先用主成分分析等方法对state space进行降维。

傅里叶特征的优点在于:

  • 易于构建特征向量:通过设置 c i 向量来描述state变量间的交互,通过限制 c j 向量的值来过滤掉高频部分的噪声。
  • 傅里叶特征在整个state空间里是非零的,可以很好的表示state的全局性能,但无法很好的描述state 空间的局部特性。

这里写图片描述
在1000步随机行走例子中,傅里叶特征表现明显比多项式好,通常我们不推荐在在线学习中使用多项式。

6.3 Coarse Coding

假设一个任务中的state是一个连续二维空间,一种表达方式是在state space中由特征组成相应的圆圈。当state 在某个圆圈内,则相应的特征对应值为1,称之为present,此外,特征值为0,称为 absent,这种1-0-valued 特征称为二值特征。
这里写图片描述

当给定一个state,二值特征的取值在于该state在圆圈中的位置,用这种重叠特征来表示state的方式称为 coarse coding。

假设有一个线性梯度下降函数逼近,考虑圆圈的大小和密度对他的影响。每一个圆圈对应一个权重(总体组成了权重向量 w )。如果我们在一个state上进行训练,那么所有与这个state相关的圆圈对应的权重将受到影响。也就是说所有包含该state的圆圈都将受到影响。如果圆圈很小,那么泛化作用在短距离内,如下左图所示,当圆圈很大,则作用距离大,如中间图所示。另外,圆圈形状也会影响泛化程度,如果圆圈不是标准圆形,而是椭圆,则泛化在一个方向上作用大于另一个方向,如右图所示。
这里写图片描述

6.4 Tile Coding

Tile Coding是多维连续空间内的一种 coarse coding,可能是现在有序数学计算中最有效的特征表示,有很多开源软件。

在tile coding中,特征感受野将states space 分割开来,每个分割块叫做 tiling,一个tiling里由很多元素组成,这些元素称为 tile。最简单的分割方式就是正方形分割,如图所示,如果只有这一层分割,那么包含白点的state可以用一个特征(白点所在特征感受野的特征)表示,那么泛化只会影响所有包含这个tile的state,但对不包含此tile的state毫无作用。只有一层 tiling,我们无法进行 coarse coding,只能进行数据聚合。

这里写图片描述
为了拥有coarse coding能力,需要重叠的感受野,但tile在分割中的定义使之无法重叠,为了在coarse coding中有效使用 tile coding,需要采用多层tiling,即按照一定规律平移 tiling层。如上图右侧所示,每个包含白点的state,都有四层tiling,这四个tile表示四个不同特征,图示共有 4 X 4 X 4 = 64 个特征。

tile coding的优点在于:无论更新任何一个state,由于采用分割的方式,所以一次会激活全部的特征值。如果每个tiling都包含某一特征,通常该特征数目和tiling层数相等。这就允许学习率 α 可以以一种简单方式设置,如可以选择 α = 1 n ,n为tiling层数。当不想更新太快时可以设置 α = 1 10 n

泛化发生在很多落在相同tile上的state上,而不仅仅局限与训练样例,与tiles的数目成正比,tile平移会对泛化造成影响。由下图可以看出不同的均匀平移对泛化影响不同,trained state(黑点)周围重叠的点明显不对称性比较明显,而以 trained state为中心的不对称平移,可以消除均匀平移带来的明显不对称性影响。
这里写图片描述

6.5 Radial Basis Functions

径向基函数是 coarse coding对连续价值特征的一种泛化。特征不再只是除了0就是1的量,可以是[0,1]区间内的任意值,表示拥有每一种特征的可能性。典型的径向基函数(RBF)特征如高斯,表示 x i ( s ) 的值只取决于 state s与中心state(或特征原型)的距离和特征宽度 σ i :
这里写图片描述
RBF 特征相对于二值特征的优点在于生成的逼近函数是平滑多样的。这听起来很吸引人,但实用价值不高,事实上,在非线性逼近上RBF表现更好。

七、Selecting Step-Size Parameters Manually

前两节主要介绍了一种基于线性函数的函数逼近方法,以及特征选取问题,本节将主要探讨如何手动选取学习率的问题。

很多SGD方法需要选择合适的学习率 α ,其中一些方法可以自动选择,但大部分还是人工选取。通常选取的 t 时刻的学习率为 α t = 1 t ,在MC中适用,但在TD等非静态问题或函数逼近问题中均不适用。对与线性方法,循环最小二乘(recursive least-squares)可以用于选择最优学习率,可以扩展到TD中,在第八小节中会介绍,但需要 O ( d 2 ) 的计算复杂度,对高维问题不太适用。

为了直观的了解如何人工选择学习率,我们回到表格化问题(tabular case) 中,当 α = 1 时,会彻底消除采样误差,但我们通常希望学习过程缓慢一些。当 α = 1 10 时,会将10次经验的value的平均值作为target value来优化,当希望运用100次经验数据时, α = 1 100

但对函数逼近而言,没有一个对某个state经验数目的明确概念。但有一个相似性准则,假设学习需要 τ 次包含相同的特征向量的经验,可以构造学习率如下:
这里写图片描述

其中, x 的用同一个分布随机生成的特征向量,作为SGD的输入。如果 x 长度上变化不大,则 x T x 为一个常量。

八、非线性函数逼近:人工神经网络

前几节重点介绍了线性函数逼近方法,本节主要介绍一种非线性函数逼近方法。人工神经网络(artificial neural network,ANN)在非线性函数逼近中应用十分广泛,由一些神经元组成,在16章中我们会着重介绍其在强化学习中的应用。

下图是一个前馈人工神经网络,网络中没有回路,输入到输出是单向的。该网络有一个输入层(包含四个输入节点)、一个输出层(包含两个输出节点)、和两个隐藏层(在输入层和输出层之间的层)组成。每层对应一个权重向量和一个激活函数,输出层激活函数通常是线性函数。
这里写图片描述

通过训练ANN中的隐藏层,改变其权重向量,可以自动选择特征。将SGD用于训练ANN,每个权重都以优化网络整体参数为目标进行更新。在监督学习中,目标函数是期望误差,或损失函数。在强化学习中,ANN可以用TD error来学习value function,或者像PG(Policy Gradients,在第13章中重点介绍),将最大化期望reward作为目标。这些都是为了建立权重向量和网络整体性能间的联系。

其中,最为成功的求解带隐藏层ANN的方法是反向传播算法(BP),由前向传播和反向传播两部分组成(此处不详细介绍该方法,建议网上查资料),在第15章中会讨论用RL原理来训练ANN的方法,比BP的效率低,但更能揭示真正的神经网络学习过程。

BP 可以用于求解浅层ANN,但对深层ANN不适用。原因如下:

  • 过多的网络函数使得他很难避免过拟合
  • 反向传播产生的局部衍生物传递到input时会层层递减,导致深层ANN的学习效率十分低下,或者有一些值到input层时,增长过快,让学习不稳定。

过拟合是所有用有限训练集来进行函数逼近方法的通病,但强化学习没有这种问题,因为他不依赖于有限训练集,但泛化有效性也是一个重要问题,过拟合是ANN的一个普遍问题,尤其是深层ANN,因为权重参数太多。有很多用于减轻过拟合的方法:

  • stopping training when performance begins to decrease on validation data different from the training data (cross validation),
  • modifying the objective function to discourage complexity of the approximation (regularization),
  • and introducing dependencies among the weights to reduce the number of degrees of freedom (e.g., weight sharing)

dropped out是使用最为广泛的方法,在训练过程中随机移除网络中一些节点和他们的连接,以获得多个“thinned” 网络,将这些变薄的网络的输出结果联系起来可以提高泛化性能。dropout方法通过将每个节点的权重乘以该节点被重新训练的概率来有效逼近这个关联值。dropout方法使得个别隐藏层节点去学习那些在随机收集特征中的表现好的特征。这加强了隐藏层节点的特征,使得神经网络不会过度的在意不经常发生的情况。

Batch normalization是另一种使得深度ANN训练简化的有效方法。众所周知,神经网络输入归一化后会使神经网络学习过程变得容易,Batch normalization就是在神经网络每层输入之前进行的归一化操作。

另一种用于提高深度神经网络学习效率的方法是deep residual learning。有些时候,学习到一个函数与某个恒等式的不同比让这个函数自己学习要容易的多。可以将网络输出值与输入值之差作为网络输入。Batch normalization和 deep residual learning都在第16章中提到的Go中有所应用。

有一种神经网络结构比全连接的前馈神经网络更适用于深度神经网络的训练,那就是卷积神经网络(deep convolutional network, CNN)。尤其适用于高维度输入,如图像处理问题。由于其特殊结构,在用反向传播法训练网络时不需要上述算法的加持。此处不对卷积神经网络进行详细介绍,感兴趣的去查阅相关资料。

本节对ANN和训练深度ANN的方法进行了简单介绍,这只是一小部分。虽然目前强化学习方法大部分局限于表格化或线性函数逼近,但很多卓有成效的强化学习方法都来自ANN函数逼近,在第16章中,我们将重点介绍他们。

九、Least-Squares TD

我们在本章中讨论过的所有方法每个time step(学习率)都需要与参数成比例的计算。越计算表现越好。但本节,我们提出一种更好的线性函数逼近方法。
第五节中,我们将线性函数逼近用于TD(0)得到TD fixed point的权重向量:

w T D = A 1 b

这里写图片描述

这时,你可能会问,我们一定要反复计算这个等式吗?这不是浪费数据嘛!为什么不直接计算 A b 的估计,然后直接计算 TD fixed point呢,会不会更好些?这就是Least-Squares TD算法(LSTD),估计:

这里写图片描述
其中, I 是单位矩阵, ϵ I 中, ϵ > 0 ,保证了 A ^ t 是可逆矩阵。此时:
这里写图片描述

在该算法中,更多的数据被用上啦,但算法复杂度也增加了,semi-gradient TD(0)单次更新的计算复杂度为 O ( d ) .

LSTD有多复杂?复杂性随着t不断增长。但可以通过增程式方法减少计算复杂度。使得计算复杂度变为 O ( d 2 )

这里写图片描述

LSTD 算法伪代码如下:
这里写图片描述

当然, O ( d 2 ) 相对 O ( d ) 挺大,但是否采用LSTD取决于d的大小,学习效率的重要程度和系统其他部分的复杂程度。LSTD不需要设置学习率意味着他永远不会遗忘,但对于target policy 改变的强化学习问题或GPI 过程而言是有问题的。在研究control 问题中,LSTD通常和一些算法结合来帮助遗忘。

十、Memory-based Function Approximation

迄今我们讨论了参数化(parametric) 的逼近value function的方法,在该方法中,学习算法通过调整参数来估计整个 state spaces上的value function,每次更新,学习算法以减小逼近误差为目的,使用一组训练样例 s g 来改变参数。更新后,抛弃该训练样例,当需要估计一个state value时(该state 被称为 query state),采用上一时刻学习算法提供的参数来求解该state下的函数。

Memory-based 函数逼近与参数化函数逼近完全不同,他将所经过的训练样例存储在记忆库中,但不进行参数更新。当需要估计query state的value时,从记忆库中提取一系列训练样例,然后进行估计。这种方式也称作lazy learning,因为只到系统要求提供输出结果时才进行计算。

Memory-based function是一种典型的非参数化方法(nonparametric)。逼近函数不局限于事先规定参数类型的函数形式(如线性或多项式),而是取决于训练样例本身。

有很多 memory-based 方法可以按照如何选择需要存储的训练样例,这些记忆如何被用于回应query state进行分类。这里,我们重点关注 local-learning方法,用于估计当前query state周围局部的value function。这类方法从记忆库中提取与当前quary state相关性最强的一些state,相关性常常用距离表征。当计算出query state value时,丢弃这个局部逼近结果。

最简单的memory-based 方法是最近邻算法,可以很快从记忆库中找到query state中的最近state,并返回最近state的value作为query state 的估计value。略加变化,通过返回最近几个训练样例的value 的加权平均作为query state 的估计value(weighted average),权重随距离递减。Locally weighted regression是一个类似的方法,结合了参数化函数逼近方法,以最小化误差为目标。

Memory-based方法相对于参数化方法的优点在于:

  • 不局限于事先定义的函数形态,在数据多的时候可以提高精确度
  • Memory-based local逼近方法,对强化学习十分适用,第8章中说明了trajectory sampling 对强化学习十分重要,memory-based local 方法关注于real 或 simulated trajectories经历过的states(或state-action pairs)的局部邻近区域。不需要考虑全局,因为有些state space中的区域不可能到达。
  • Memory-based 方法需要agent的经验对current state邻近区域内的value估计立即回应。但参数化方法则需要通过增程式调整参数以进行全局逼近。

十一、Kernel-based Function Approximation

Memory-based 方法,如weighted average和 locally weighted regression,需要分配权重。用于分配权重的函数被叫做核函数(kernel function)。在weighted average和 locally weighted regression方法中,核函数为state间的距离。一般来说,核函数不仅仅局限于距离函数,只要可以通过某种方式表示两个state间的相似性即可。在本节中,核函数 k ( s , s ) 表示 s 对query state s 的影响程度。

kernel regression 是一种memory-based方法,计算所有记忆库中训练样例target value的核加权平均,D是存储的训练样例集, g ( s ) 是s’的target value,则state s的value估计值为
这里写图片描述
最常用的核函数是之前提到的高斯径向基函数(RBF),上式形式上就好像一个线性方法和RBF的结合,但不同的是:

  • 这是一个基于记忆库的方法,也就是说RBF的中心,由记忆库中的states决定
  • 该方法是非参数化方法

实际应用中,常常采用这样的核函数:
这里写图片描述
其中,这里写图片描述是特征向量。

十二、Looking Deeper at On-policy Learning: Interest and Emphasis

本章中所讨论的方法对每个state的侧重都一样,但有些时候,需要有所侧重。如在离散episode 问题中,我们可能对episode早期的states的精度要求更高;当学习一个action-value函数时,greedy action比别的action更重要。函数逼近的资源是有限的,如果更有目的性的去关注一些量可以获得更好的性能提升。

对所有state一视同仁的原因在于我们根据on-policy分布来进行更新,该分布对semi-gradient 方法有很强的理论支持。如果不采用on-policy分布来生成数据,我们需要介绍一些新的概念。

首先,我们介绍一个非负标量方法,假设有一个叫做interest的随机变量 I t ,表示我们对当前state的感兴趣程度,如果我们完全没兴趣,则取值为0 ,如果我们充满兴趣则取值为1,一般取值都在0和1之间。兴趣值可以按照任意因果关系设置;例如可以取决于时间或者t时刻学到的参数。 V E ¯ 中的分布 μ 定义为跟着target policy 出现 state 的分布,乘以inerest。另外,我们介绍一个非负随机标量变量 ,emphasis M t ,该标量乘以学习率,用于加强或减弱t时刻的学习,n-step 学习方法的权重更新表达式修改为:

这里写图片描述

其中,emphasis M t ,由interest I t 计算得到
这里写图片描述
当t< 0时, M t = 0

十三、总结

要在人工智能或大部分工程问题中使用强化学习,就必须考虑泛化的问题。为了解决该问题,所有监督学习的函数逼近方法均可以用于强化学习的value估计。

也许最合适的监督学习方法是参数化函数逼近方法,这些方法中policy被权重参数 w 参数化。我们定义均方根误差 V E ¯ 来表示on-policy分布 μ 下的估计value v π w ( s ) 误差。 V E ¯ 给我们指明了value-function approximation的优化方向。

为了找到一个好的权重向量,最常用的方法是随机梯度下降法(SGD)。本章中我们关注与 on-policy下的fixed policy,即Policy evaluation 或 prediction问题。针对,boostrapping方法(DP,TD(0),n-step TD等),结合SGD,衍生出了semi-gradient方法。在这些boostrapping方法中,权重向量在更新目标中出现,所以不能用于计算梯度,也就是说SGD的结果不完全适用于这些方法。

另外,采用线性函数逼近时,semi-gradient 方法会得到很好的结果。线性函数逼近是函数逼近方法中一种易于理解的简单方法,其重点在于特征选择。可以通过多项式方法构建特征,但在在线学习中通常不考虑这种方式。根据傅里叶原理或有重叠区域的coarse coding来选择特征更加有效。Tile coding是一种计算高效的coarse coding方法。径向基函数(RBF)在一维或二维问题中可以提供一个平滑的输出。LSTD是一种高效利用数据的线性TD预测方法。非线性函数逼近主要介绍了人工神经网络,主要采用反向传播加SGD对参数进行更新,这就是有名的deep reinforcement learning(深度强化学习)。

Reinforcement Learning: an introduction

猜你喜欢

转载自blog.csdn.net/LagrangeSK/article/details/81743844