Reinforcement Learning - An Introduction强化学习读书笔记 Ch9.5-Ch9.6

9.5 线性方法的特征构造

在构造特征时,线性方法有收敛保证,且在实践中,在数据和计算方面可以非常高效。选择适合于任务的特征是将先验知识加入强化学习系统的一个重要方式,这些特征应该提取状态空间中最通用的信息,比如要对集合对象进行评估的时候可以选择形状、颜色、大小等,要评估一个移动机器人的状态的时候可以选择位置、电量、声呐读数等。
但是线性方法的一个局限性在于它无法表示特征之间的相互作用,比如特征 i i i仅在特征 j j j不存在的情况下才是最好的,这样的特征间的相互作用需要把多个状态维度结合起来加入特征中。
接下来讨论多种通用的方法。

9.5.1 多项式基

很多问题的状态是通过数字来表达的,在这类问题的强化学习中,函数逼近和回归任务有很多相似之处。
假设一个强化学习问题的状态空间是二维的,单个状态s对应的两个数字分别是 s 1 , s 2 s_1,s_2 s1,s2,可以简单的直接使用s的两个维度来作为特征即 x ( s ) = ( s 1 , s 2 ) T x(s)=(s_1,s_2)^T x(s)=(s1,s2)T,但这样就无法表示两个维度之间的相互关系,并且当 s 1 , s 2 s_1,s_2 s1,s2为0时估计价值也一定为0。解决这两个局限性的很直观的方法是将s表征为思维的特征向量 x ( s ) = ( 1 , s 1 , s 2 , s 1 s 2 ) T x(s)=(1,s_1,s_2,s_1s_2)^T x(s)=(1,s1,s2,s1s2)T,构造出常数项和两个维度之间的相互作用。当然也可以选择更高维度的特征来表征更为复杂的相互作用。
假设每一个状态s对应k个数字分量 s 1 , s 2 , . . . , s k s_1,s_2,...,s_k s1,s2,...,sk,对这个k维的状态空间,每一个n阶多项式基特征 x i x_i xi可以写作:
在这里插入图片描述
高阶多项式基可以更精确地近似更复杂的函数,但是其特征数量随着状态空间维数k呈指数增长,通常需要一个子集来进行函数逼近。可以采用待近似函数的先验知识来进行特征选择,也可以使用一些多项式回归中常用的特征自动选择方法,但需要做一些调整来适应强化学习的增量特性和非平稳特性。

9.5.2 傅里叶基

傅里叶基将周期函数表示为正弦和余弦函数的加权和,当需要近似的函数是已知的时候,基函数的权值可以由简单的公式得出,也就是当有足够的基函数的时候,就能足够精确地近似任意函数。
首先考虑一维情况,周期为 γ \gamma γ的一维函数的傅里叶级数通常表达为正弦函数和余弦函数的线性组合,这些正余弦函数的周期都可以被 γ \gamma γ整除,也就是其频率是基频的整数倍。
并且如果将 γ \gamma γ设置为感兴趣区间长度的两倍,并将注意力集中在半区间 [ 0 , γ / 2 ] [0,\gamma/2] [0,γ/2]上的近似值,则可以只用余弦特征。因为仅仅用余弦基函数可以表示任何偶函数,因此 [ 0 , γ / 2 ] [0,\gamma/2] [0,γ/2]上的任何函数都可以用足够多的余弦基函数来尽可能近似。或者也可以仅使用正弦函数,其线性组合总是奇函数,但是只保留余弦函数更好,因为正弦函数在原点处通常是不连续的。
根据思路可以另 γ = 2 \gamma=2 γ=2以便将函数定义在半 γ \gamma γ区间[0,1],一维n阶傅里叶余弦基由n+1个特征构成:
在这里插入图片描述
而在多维情况中,考虑状态s对应一个k维向量 s 1 , s 2 , . . . , s k s_1,s_2,...,s_k s1,s2,...,sk,n阶傅里叶余弦基的第i个特征可以写成:
在这里插入图片描述
注意每一个维度上面的表示都要一个整数做内积,在一维情况下该内积就决定了特征在这一维度上出现的频率,进而也可以通过平移和缩放特征来对应特征应用的有界状态空间。
比如当考虑二维情况的时候, s = ( s 1 , s 2 ) T s=(s_1,s_2)^T s=(s1,s2)T, c i = ( c 1 i , c 2 i ) T c^i=(c_1^i,c_2^i)^T ci=(c1i,c2i)T,而在下图中选取了6个傅里叶余弦特征来进行展示:
在这里插入图片描述
每个余弦特征都由定义它的向量 c i c^i ci标记( s 1 s_1 s1是水平轴,且省略掉角标i)。如果 c = ( 0 , 0 ) T c=(0,0)^T c=(0,0)T,那么这个函数在两个维度上都是常数;如果 c = ( c 1 , 0 ) T c=(c_1,0)^T c=(c1,0)T则特征在第二维上是常数且根据第一位的频率的变化而变化;当两者都不为0的时候,特征沿两个维度变化,表征出两个状态变量之间的相互作用, c 1 , c 2 c_1,c_2 c1,c2的值决定了每个维度上的频率,它们之间的比例决定了相互作用的方向。
在半梯度TD(0)、半梯度Sarsa等学习算法中使用傅里叶余弦特征时,对于不同的特征最好使用的不同的步长参数:
在这里插入图片描述
傅里叶特征在不连续性问题方面存在问题,除非包含非常高频的基函数,否则很难避免不连续点周围的“波动”问题。
对于高纬度状态空间,n阶傅里叶基的特征个数是呈指数级增长的,因此选取一个特征的子集就是必要的,可以通过引入待近似函数的先验知识来完成,或者使用一些自动选择方法来处理强化学习本质上的增量特性和非平稳特性。在选取子集方面,傅里叶基的优点是可以通过设置 c i c^i ci向量来描述状态变量之间的相互作用,以及通过限制向量 c j c^j cj的值来近似去除那些被认为是噪音的高频部分,并且傅里叶特征在整个状态空间上几乎是非零的,所以它们可以表征状态的全局特性,然而这却使得表征局部特性变得比较困难。
在这里插入图片描述
在1000状态随机游走问题上,多项式基和傅里叶基的结果如上图所示,一般不建议使用多项式基进行在线学习。

9.5.3 粗编码

考虑一个任务,其状态集中在一个连续二维空间上,这种情况下,可以使用如下图所示的圆:
在这里插入图片描述
使用二值特征,如果状态在圆内,那么对应的特征为1并称为“present”,否则为0且称为“absent”。给定一个状态,其中二值特征表示该状态位于哪个圆内,因此就可以粗编码地对其位置进行编码,这种表示状态重叠性质的特征被称为粗编码。
假设使用线性梯度下降进行函数逼近,并考虑圆的大小和密度的影响,每个圆受学习影响的是对应的单一权重(w的一个分量),如果训练一个状态,即空间中的一个点,那么所有与这个状态相交的圆的权值都将受影响,这就产生了泛化。
在这里插入图片描述
如图所示,一个状态点重叠的圆越多,其影响就越大,并且特征的形状决定泛化的性质,如果不是严格的原形而是沿一个方向拉长,那么泛化能力也会同样受到影响。
初始时,从一个点推广到其他点的泛化能力是由感受野的大小与形状控制的,但最终可达到的精细判别能力(敏锐度)则更多的是由特征的数量控制的。
在这里插入图片描述
该图显示了粗编码中感受野的大小对学习的影响,学习的是一维方波函数,感受野是个圆而不是区间,使用三种不同大小的窄、中、宽的区间反复进行学习,三种方法的特征密度是相同的,训练样本是在这个区间范围内均匀随机生成的。
可以观察到,特征的宽度对于早期的学习有着巨大的影响,选用较宽的特征泛化能力就可以更强;而使用较窄的特征就只有每个训练点的邻域被改变而导致学到的函数更为起伏。但是感受野的形状对于泛化有着巨大影响,而对于渐进解的质量影响却很小。

9.5.4 瓦片编码

瓦片编码是一种用于多维连续空间的粗编码,具有灵活性并且计算高效。
在瓦片编码中,特征的感受野组成了状态空间中的一系列划分,每个划分称为一个覆盖,划分中的每一个元素称为一个瓦片
在这里插入图片描述
一个覆盖内的各个瓦片是不重叠的,为了得到真正的粗编码,需要使用多个覆盖,并且每一个对相对于瓦片宽度进行一定比例的偏移,瓦片编码中的感受野是正方形的,例如右图中四个瓦片覆盖了一个点,用来表示这一个点,这四个瓦片代表了这个状态发生时会激活的四个特征。
瓦片编码的一个直接的优点是,由于是整体空间的划分,所以任何状态在每一个时刻激活的特征总数是相同的,每一个覆盖中,瓦片都是不重叠的,所以一次只能激活一个特征(以上面右图为例,每个点会对应四个瓦片,每个瓦片是4*4的,所以每个状态都对应4个特征和64个分量)。这使得步长参数的取值更加简单并且符合直觉。
并且瓦片编码也使用了二值特征向量,可以在计算上更加高效。
如果某个状态与被训练的那个状态处于相同的瓦片内,就会受到训练状态的泛化影响,这种影响与该状态与被训练状态共同隶属的瓦片数量成正比。
而如何选择覆盖之间的偏移是会影响泛化能力的。
在这里插入图片描述
上半部分展示的是在各个维度有着均匀的偏移,不同的状态可以在不同的方向上有性质上不同的泛化,在这个例子中有8个覆盖,共有8种泛化的模式,都会在对角线上产生更大的泛化影响。
而下半部分展示的是非对称偏移,能够使得泛化更集中的在被训练状态周围而没有明显的不对称性。
在偏移时建议使用较小的奇数组成的偏移向量,在选择覆盖策略时需要挑选覆盖的个数以及瓦片的数量,覆盖的个数和瓦片的形状一起决定了这个渐进近似的分辨率或细度。并且在实际应用中最好在不同的覆盖中使用不同形状的瓦片,比如可能会使用一些竖条形状和一些横条形状的,来促进在两个方向上的泛化,通过使用多种覆盖就能是的优先沿着每个维度泛化并且拥有学习特定组合值的能力。
并且可以通过使用哈希来减小内存,可以将大覆盖分解成一组小得多的瓦片的集合。哈希产生的瓦片由随机散布于整个状态空间中的不连续且互斥的区域所组成,通过哈希可以大幅降低内存需求,同时几乎没有性能损失。

9.5.5 径向基函数

径向基函数(RBF)是粗编码在连续特征中的自然推广。每个特征不再只是二值特征,而是位于[0,1]之间的任何值,这个值反应了“present”的程度,一个典型的高斯径向基:
在这里插入图片描述
RBF相对于二值特征的主要优点就是在于可以生成光滑且可微的近似函数。
RBF网络,尤其是非线性RBF网络的缺点是其巨大的计算复杂度,以及经常需要更多地手动调参来使得学习变得既鲁棒又高效。

9.6 手动选择步长参数

在表格型MC方法中,产生随机样本的经典选择 α t \alpha_t αt=1/t,但是这不适合于TD方法,不适合于非平稳问题,也不适合于任何函数逼近。对于线性方法,存在通过递归最小二乘法设定的最优矩阵步长,且这种方法可以被推广到TD方法中,但是它需要的步长参数个数是 O ( d 2 ) O(d^2) O(d2)级别的,在大规模问题上不适用。
考虑表格型问题,这种情况下设置步长 α = 1 \alpha=1 α=1会导致更新后的样本误差完全被消除,而通常希望学习比这要满一些,就可以设置 α = 1 / 10 \alpha=1/10 α=1/10,大概需要10次经验来使得大致收敛到它们的目标均值,一般情况下如果 α = 1 / γ \alpha=1/\gamma α=1/γ的时候那么一个状态的表格型估计将在大约 γ \gamma γ次经验之后接近它的目标均值。
对于一般的函数逼近,则没有一个清晰的“状态的经验数量”的概念,因为每个状态都可能与其他状态存在某种程度上的相似性或不相似性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值