强化学习读书笔记 -- 第十一章基于函数近似的离线策略方法
离线策略方法可以帮助解决探索与挖掘之间的矛盾,这是强化学习中不可避免的问题。将相比于在线策略方法,将函数近似扩展到离线策略方法会变得更加困难,例如半梯度法在离线策略学习过程中会出现无法收敛的情况。本章会针对线性函数拟合进行更为深入的理论分析,并引入可学习的概念。回顾一下离线学习算法,学习目标策略\(\pi\)的价值函数,但交互策略采用的是另一个策略\(b\)。一般来说,在控制问题中,目标策略为贪婪策略,而动作策略则为\(\epsilon\)-greedy策略。
离线策略方法的主要面临两大挑战,一个是与列表法共同面临的问题,价值函数的更新问题;另一个是函数近似所带来的价值函数的分布更新问题。重要性采样是针对第一个挑战而提出的,但会增大方差。第二个挑战,因为在离线策略方法中目标价值函数的分布与交互策略下的价值函数分布不一致,这使得半梯度法无法保证收敛。有两种方法可用于解决该问题,一是采用重要性采样,二是使用与分布无关的真正的梯度法。
1.半梯度法
考虑单步重要性采样率:
将其扩展到针对状态价值函数的半梯度离线TD(0)算法,其参数的更新公式为
其中,\(\delta_t\)为价值误差,其形式取决于问题本身的性质,例如是否存在折扣系数、是否采用平均奖励等,可得
或者
针对动作价值函数,可以给出半梯度的期望Sarsa(0)算法:
其中,\(\delta_t\)的形式可以是
或者
值得注意的是,期望更新方法并不需要引入重要性采样,因为期望方法将所有可能的动作都已经按照其重要性(被选择概率)纳入了考量。
在多步算法中,将重要性采样扩展到半梯度Sarsa(n)算法,其更新公式为
其中,\(G_{t:t+n}\)为\(n\)步截断回报,其表达形式为
或者
需要注意的是,当\(t+n\geq T\)时,\(G_{t:t+n}=G_t\)。
同样,我们可以引入第七章所提到的\(n\)步树备份算法,将其扩展至函数近似方法,可得
其中,
除了递推式,也可以写成累加的形式
其中,\(\delta_k\)表示期望误差,参考式(7.1)。
博主也疑惑式(7.2)是如何转化成式(7.3)的,自己进行了逆向推理,总算搞明白了。在证明之前,需要额外定义\(\delta_{t:t+n}=G_{t:t+n}-\hat{q}(S_t,A_t,w)\),\(\delta_{t:t}=0\),期望状态价值\(\bar{V}(S_t)=\sum_a\pi(a|S_t)\hat{q}(S_t,a,w)\)。这里参数\(w\)之所以不写下标,一来是简化表达,二来\(w\)采用最新参数即可。
改写式(7.2)
从而可得
证明完毕。
2. 离线策略算法不收敛的例子
本章讨论基于函数近似的离线策略算法的第二个挑战,由于分布的更新与交互策略的分布不一致导致半梯度法发散的问题。考虑一个简单的情况,假设在一个很大的蒙特卡洛动态规划(MDP)问题中有两个状态,它们的状态价值估计分别为\(w\)和\(2w\),如下图所示。
对状态1来说只有一个动作并且是确定性的。假设现在w为10,那么状态2的值函数为20,从状态1到状态2看起来就是一个比较好的选择,根据参数更新式可得\(w\)会增大,但\(w\)增大使得TD误差变得更大了,最终发散。引入折扣系数,可得误差为
带入离线策略下的半梯度TD(0)更新式,可得
这里需要注意,重要性采样率\(\rho_t=1\)。只要当\(\gamma>0.5\),参数\(w\)就会发散。这个例子的核心问题在于,只有状态1到状态2的转换,并被不断重复,这是离线策略经常会遇到的情况。在交互过程中,只有选择目标策略中的动作,重要性采样率才不等于0,参数才会得到更新。与之相对的,在线策略算法可以得到更多的状态转移的可能,有的会增加\(w\),但有的会减少\(w\),最终平衡。
下面再讨论一个完整系统采用离线算法发散的例子(Baird's counterexample)。考虑一个包含七个状态和两个动作的MDP问题,如下图所示。
虚线动作可以使得状态等概率的转移到上面6个状态,实线动作使得状态转移到下面第7个状态。交互策略选择虚线或实线的概率分别式\(\frac{6}{7}\)和\(\frac{1}{7}\)。而目标策略只选择实线动作。状态转移的奖励都为0,因此真实状态价值函数为0,真实的权值\(w_i=0\)。具体实验参考实验1。给定随机初始值,采用离线策略的半梯度算法和动态规划算法,可以发现目标策略下的整个系统都是发散的。其原因在于,函数近似和自举方法相结合,权值的更新不是按照交互策略的分布进行会使得算法变不稳定。
还有一些反例可以说明Q-learning算法同样存在发散的情况。当然,Q-learning可以尽可能的和交互策略相似,例如采用\(\epsilon\)-greedy方式,这样可以避免算法发散。下面给出一个反例,相比于TD算法不断向期望值靠近,采用最小二乘近似在每次迭代过程中都计算最优解,同样会存在发散的可能。将第一个反例进行扩展,第一个状态和第二个状态的价值估计分别为\(w\)和\(2w\),第二个状态有\(\epsilon\)的概率进入终止状态,有\(1-\epsilon\)的概率回到第二状态。
构建准则函数\(\overline{VE}\),并极小化可得
可以看出当\(w_0\neq 0\)和\(\gamma>\frac{5}{6-4\epsilon}\)时,权值\(w\)会发散。
3. 死亡三要素
当应用强化学习算法时,应用环境存在函数近似、自举和离线策略训练三个要素就会有不稳定和发散的风险。首先是函数拟合,它是最难舍弃的,因为对于大空间问题它必不可少。对于自举,这个在部分情况下可以舍弃,可以采用蒙特卡洛(MC)方法来进行,但需要付出更大的计算量并减少数据效率的代价。在一般情况下,采用在线策略学习是足够的,但是在一些特殊情况时离线策略训练是很重要的。
在实际应用中,智能体不只是学习单个价值函数和单个策略,而是并行地学习多个价值函数和策略。有大量的心理学证据表明,人和动物会学习预测许多不同的感官事件,而不仅仅是奖励。人们可以对不寻常的事件感到惊讶,并纠正对它们的预测,即使它们不具有价值的好坏。这种预测大概是世界预测模型的基础,比如在规划中使用的预测模型。我们预测眼球转动后会看到什么,步行回家需要多长时间,在篮球中跳投的概率,以及从一个新项目中获得的满足感。在所有这些情况下,我们会根据我们的行为模式去预测事件。要同时学习所有这些,需要从一个经验流中学习。需要有许多的目标策略,因此一个行为策略不可能等于所有目标策略。在理论上,并行学习是可能的,因为交互策略可能与许多目标策略部分重叠。要充分利用这一点,需要进行离线策略学习。
4. 线性价值函数几何特征
不同于列表法,利用函数近似方法估计状态价值函数,其参数的维数空间必然远远小于实际的状态空间。线性函数拟合可以作为了解函数近似方法的几何性质的较好的切入点。考虑一个三维状态空间,其状态价值函数用两个参数\(w=(w_1,w_2)^\Tau\)表示。当采用线性函数近似方法,相当于将三维空间线性投影到二维平面上,如下图所示。三维空间中的一个点表示实际的状态空间,投影到二维的参数空间中。
考虑一个固定的策略\(\pi\),真实的状态价值函数是\(v_\pi\)。假设真实的价值函数较为复杂只能用线性函数去近似,因此点\(v_\pi\)并不位于由参数\(w\)所表征的子空间(平面)\(v_w\)上。
价值误差函数\(\overline{VE}(w)\)
定义价值误差函数为
线性函数近似的情况下,极小化\(\overline{VE}(w)\),即在子空间找到最接近价值函数的方法是投影操作(projection)。定义投影算子\(\Pi\),可得
一般而言,\(v_\pi(s)\)是不可知的。但也并非无法估计,前面所学的MC方法可以渐进的逼近真实的状态价值。当然,这样绕一圈再去求解\(w\)显然意义不大。投影算子\(\Pi\)的具体形式为\(\Pi=X(X^\Tau DX)^{-1}X^\Tau\)。其中\(D\)为\(\mu(s)\)构成的对角矩阵,即\(\|v\|^2_\mu=v^\Tau Dv\)。\(X\)为堆积特征矩阵,即\(v_w=Xw\)。代入\(\overline{VE}(w)\),并极小化,即可得投影算子。
贝尔曼误差函数\(\overline{BE}(w)\)
利用时序差分方法可以加速价值函数的估计。但基于自举的TD方法得到的最优解,往往并非均方误差下最优解,而是极大似然下的最优(这个参考第六章关于MC和TD最优解的讨论)。回顾一下贝尔曼公式:
当使用函数近似时,贝尔曼误差\(\bar{\delta}_w(s)\)为
贝尔曼误差的本质是TD误差的期望,由此可得贝尔曼误差函数\(\overline{BE}(w)\),
通常而言,贝尔曼误差函数是无法等于0的,即使当\(v_w=v_\pi\),但是在线性函数近似下极小化贝尔曼误差函数是存在唯一解的。
均方投影贝尔曼误差函数\(\overline{PBE}(w)\)
在图中定义贝尔曼算子\(B_\pi\),即通过贝尔曼公式得到的\(v(s)\)(此处注意贝尔曼算子与\(\overline{BE}(w)\)无关),
由此贝尔曼误差可以表示为\(\bar\delta_w(s)=B_\pi v_w-v_w\)。根据第四章动态规划所讨论的结果,通过贝尔曼算子,无论初始值如何设定,最终它会最终收敛到真实价值函数\(v_\pi\),如图灰色箭头序列构成的路径。但可惜,这只在列表法中成立,因为在函数近似中,无法表示参数\(w\)所构成的子空间外的价值函数。因此,贝尔曼算子下的价值函数必须投影到子空间中表示,定义均方投影贝尔曼误差函数为
对线性函数近似来说,\(\overline{PBE}(w)\)是存在零点的,即TD定点\(w_{\text{TD}}\),可以参考第九章线性近似方法的讨论。但TD定点在半梯度和离线策略学习下并不稳定。
时序差分误差函数\(\overline{TDE}(w)\)
贝尔曼误差需要知道整个系统的动态信息,而TD算法是基于采样的。严格来说,基于TD的随机梯度算法只能称之为半梯度算法。根据前面所讨论的,在离线策略训练中,半梯度算法存在发散的风险,而真正意义上的随机梯度算法不会发散。要寻找TD算法下的随机梯度算法,最先的入手点将从TD误差和准则函数的设计开始。
考虑单步TD误差:
一个可行的准则函数,带期望的均方TD误差函数:
带期望的TD误差函数是真正意义上的随机梯度算法,不同于半梯度算法,它将目标价值一样纳入了梯度算法(参考第九章的半梯度算法推导)。根据随机采样,采用梯度算法极小化TD误差函数可得
对比半梯度TD(0)更新式\(w_{t+1}=w_t+\alpha\rho_t\delta_t\nabla\hat{v}(S_t,w_t)\),\(\gamma\nabla\hat{v}(S_{t+1},w_t)\)补全了随机梯度算法,称为朴素残差梯度算法。但是,需要注意的是虽然朴素残差梯度算法能够保证收敛,但不能保证收敛到正确的点。例如,下图给出的MRP案例。易得三个状态的真实价值分别为\(v(A)=1/2\)、\(v(B)=1\)和\(v(C)=0\)。
将真实状态价值函数代入TDE误差函数中可得
但朴素残差梯度算法找到的最优点并非真实价值函数,例如\(v(A)=1/2\)、\(v(B)=3/4\)和\(v(C)=1/4\)。代入TDE误差函数中可得
由此可见,朴素残差梯度算法并不能保证得到正确的价值函数,但可能不影响找到最优策略。
5. 贝尔曼误差的随机梯度下降
极小化贝尔曼误差应该可得到完全正确的价值函数,但正如上文所述,我们无法求解得到表示范围外的价值函数。考虑到贝尔曼误差其实是TD误差的期望,那一个更好的方法可以直接最小化贝尔曼误差,而非采取采样的方式。极小化带均方期望TD误差函数(注意与\(\overline{TDE}(w)\)有所不同,不是均方误差的期望\(\mathbb{E}[\delta_t^2]\),而是均方期望误差\(\mathbb{E}[\delta_t]^2\))可得
如果利用采样样本替代期望内的变量,则退化为朴素残差梯度算法。若采用期望,那么需要对下一状态\(S_{t+1}\)进行采样。对于确定性环境,状态转移的路径是固定的,或是在仿真环境中不断从\(S_t\)状态出发对状态\(S_{t+1}\)进行采样,则上述算法可以实现。
但是这个算法还是有一些缺点,首先是它的收敛速度很慢,其次是它仍然存在与朴素残差梯度算法一样的缺点无法收敛到正确的点。第三点来源于贝尔曼误差函数本身,在某些场景下,贝尔曼误差是不可学习的。
6. 贝尔曼误差是不可学习的
有事实表明,许多强化学习问题是不可学习的,即使拥有无尽的数据。这些问题可以通过提供其内部激励结构加以解决,但是却难以通过观测数据例如特征向量、动作序列和奖励序列等等。下图展示了两个不同的MRP,它们产生的观测序列是一样的。利用贝尔曼误差是无法区分观测序列来自于哪个MRP。因此,这个目标是不可学习的。当然,\(\overline{VE}(w)\)同样也无法区分。这说明这几个准则函数对于数据分布并不只有唯一解。
那么下一个问题是,最优参数的学习是否具有唯一解呢?对于上述两个MRP采用蒙特卡洛方法会得到相同的最优参数\(w=1\),这是否说明\(\overline{VE}(w)\)针对相同的观测数据,即使数据分布不同,也能得到相同的最优参数。引入另一个准则函数均方回报误差\(\overline{RE}(w)\):
上式第三项因为\(G_t=\mathbb{E}[v_\pi(S_t)]\),所以等于0。第二项与参数\(w\)无关。由此可以看出对于上面两个MRP来说具有相同的回报误差,因此有相同的最优参数,如下图所示。
\(\overline{BE}(w)\)不同于\(\overline{VE}(w)\),它采用自举的方式进行采样,针对不同的MRP得到的最优解也是不同的。从侧面说明贝尔曼误差的最优参数是不可学习的,如下图所示。但对于\(\overline{PBE}\)和\(\overline{TDE}\),相同的数据分布得到的解是唯一的,因此\(\overline{PBE}\)和\(\overline{TDE}\)是可学习的。
贝尔曼误差是不可学习的,数据分布相同但是环境动态结构不同,得到的贝尔曼误差也是不同的,即它不能根据特征向量和其他可观测数据来估计参数。这使得贝尔曼误差难以应用于基于模型的强化学习训练中。只能获取特征向量,而无法得到环境结构的情况下,不可能存在最小化贝尔曼误差的算法。残差梯度算法只能最小化贝尔曼误差,因为它从相同的状态下进行两次采样,需要注意的是它的采样不是针对具有相同特征向量的状态,而是完全相同的状态。
贝尔曼误差不可学习的一个案例如下图所示。
7. Gradient-TD方法
\(\overline{PBE}(w)\)的最优点是\(w_{\text{TD}}\),在第九章采用LSTD算法去解决\(w_{\text{TD}}\)计算量大的问题。现考虑用随机梯度算法极小化\(\overline{PBE}(w)\),Gradient-TD方法是真正意义上的SGD算法,可以保证收敛性。重写改写均方投影贝尔曼误差函数\(\overline{PBE}(w)\):
其梯度为
这里需要一些数学技巧,将堆积矩阵的乘积看作是样本运算的期望,
综合得到
式(7.4)无法简单的对每一个期望项进行求解然后组合起来,第一项和第二项会带来存储和计算量的增加。尤其是第一项和第三项的期望并非独立的,它们都与下一状态特征有关(第三项中\(\delta_t\)包含\(x_{t+1}\))。若采用采样的方式将其简单组合,只能得到有偏估计,与朴素残差梯度算法类似。另一种改进思路是,将第二项和第三项结合起来计算,因为它们组合起来是一次完成最小二乘的形式,第一项采用采样的方式,最后将其组合起来。这就是Gradient-TD算法的核心思路。定义
根据一次完成最小二乘,\(v\)可以看作是
需要注意,上式优化的是\(v\)而非实际需要的\(w\),\(\delta_w(s)\)的值用当前\(w\)的估计值计算得到。利用SGD算法,将其转换到负梯度优化的形式可得
完成\(v_t\)的更新后,将其代入式(7.4)得到
因为该算法需要两次梯度优化,所以称为GTD2算法。
还有一种表达形式能够让我们更直观的了解TD算法和GTD算法之间的关系:
可以看出前两项构成了TD算法的更新式,而第三项可以看作是梯度的修正项,算法被称为TDC(TD(0) with gradient correction)算法或GTD(0)算法。梯度TD方法是目前机理最明确的稳定的离线策略学习方法。
8. 重要性TD法
在离线策略学习中,我们通过引入重要性采样率来改变状态转移的权重,从而学习目标策略,但是状态分布仍然是按照交互策略生成的。这样与目标策略下的状态分布存在不匹配。一个改进的想法是,人为的关注某些状态并忽视某些状态,从而反馈给交互策略的状态分布。另一个是引入折扣系数,相当于人为给每个状态增加了转移到终止状态的可能。例如\(\gamma=0.9\),那么每个状态都有\(0.1\)的概率转移到终止状态,\(\mathbb{E}[v(S_t)]=\mathbb{E}[R_{t+1}]+(\gamma\mathbb{E}[S_{t+1}]+(1-\gamma)\mathbb{E}[S_T])\)。这样的伪终止有利于截断交互策略生成的状态分布,使得离线策略学习更加稳定。前面所举的反例也能佐证这一点,\(\gamma\)越小则可以避免参数估计发散。
参照第九章所提到的兴趣和重要性,下面给出单步重要性TD算法:
需要注意的是,重要性的更新\(\rho_{t-1}\)不能缺失。兴趣\(I_t\)的作用在于偏重某个状态转移的更新,将其作用到重要性\(M_t\)上,从而影响在某个状态转移中的参数更新。\(\rho_{t-1}\)可以避免\(M_t\)的过度增长(假设\(I_t>0\))。当连续多次状态转移都与目标策略的状态转移重合时,\(M_t\)应该得到加强。但当出现\(\rho_t=0\)时,\(M_t\)应该被抑制。
9. 减小方差
离线策略学习方法的方差一般都会比在线策略学习大。从交互经验中学习目标策略本身就是一件比较困难的事情。这也符合日常生活中的认知,例如你无法从烧饭的过程中学习得到开车的策略。离线学习过程中降低梯度的方差非常重要,过大的方差使得寻优轨迹偏离过大而不无法正确收敛。本书给了四种方式来减小方差。
-
改进SGD,如采用动量的方法\(w_{t+1}=mt*w_t+(1-mt)*gradient\);
-
加权重要性采样比;
-
树备份算法;
-
让目标策略与交互策略接近。
10.实验
实验1:Baird's counterexample -- 离线策略下的半梯度算法
考虑Baird's 反例如下图所示。该反例的具体设置在第2节中已经进行了详细说明,这里就不再赘述。
真实的状态价值应该\(v(s)=0\)。参数\(w\in\R^8\)的解不是唯一的。分别采用三种算法估计模型参数。
首先是离线策略下的半梯度算法。因为采用线性函数拟合,TD算法的核心更新公式为
因为所有状态转移的奖励都为0,所以平均奖励的方式并没有什么区别。若将目标状态价值用期望替代,即
于此同时,参数的更新将不在引入重要性采样,因为求期望的方式已经将所有可能纳入了考虑。虽然本案例的MRP是动态的,即状态转移是随机的,但在目标策略下却是静态的,因此,状态期望等于第7状态价值估计。值得思考的是,采用期望的方式在函数拟合的情况下可能是不合适的,因为对参数\(w\)的更新会影响所有的状态价值估计,同样也会作用于期望的估计。本实验也测试了一下离线策略下的带期望的半梯度算法。
最后是半梯度动态规划算法。因为该MRP的状态较少,可以扫描所有状态更新参数,即极小化贝尔曼误差:
这里需要注意的是半梯度动态规划算法估计的是目标策略下的参数。在目标策略下,模型是静态的。
在实验过程中,初始参数为\(w=[1,1,1,1,1,1,10,1]\),\(\gamma=0.99\),\(\alpha=0.01\)。离线策略下的半梯度算法的结果如下图所示。
离线策略下的带期望的半梯度算法如下图所示。
半梯度动态规划算法的实验结果如下图所示。
从实验结果可以看出来,三个算法都发散了。这也佐证了死亡三要素函数拟合、自举和离线策略学习下,算法是有发散风险的。至于原因,我们在上文中也已经进行了详细的分析。在本实验中,目标策略与交互策略的数据分布存在较大差异,交互策略下MRP是动态的,但在目标策略下却是静态的。其次,在目标策略下会不断重复固定轨迹,使得状态价值估计不断高估,从而参数发散。最后,半梯度法下如果无法做到随机采样,那么其估计必然是有偏的。
实验2:Baird's counterexample -- TDC算法和带期望的TDC算法
实验2的MRP与实验1的环境完全相同。相比于半梯度算法,TDC算法是随机梯度算法,它能够保证其收敛性。它是对均方投影贝尔曼误差函数\(\overline{PBE}(w)\)进行极小化,其核心更新公式为
正如上文所阐述的\(\overline{PBE}\)准则函数是可学习的,TDC算法可以让\(\overline{PBE}\)误差逐渐减小至0。但是,TDC算法并不能保证收敛到真值点,即\(\overline{VE}\)误差无法收敛到0。对于本实验\(\overline{PBE}(w)\)的计算比较简单,因为目标策略下的MRP是确定性的,下一个状态必然是第7状态,可得
在实验过程中,超参数选择与实验1基本相同,\(\alpha=0.005\),\(\beta=0.05\)。实验结果如下图所示。
其次采用带期望的TDC算法,每次迭代需要扫描所有状态,即
实验结果如下图所示。
从实验结果可以看出,\(\overline{PBE}\)误差可以逐渐收敛到0,但是\(\overline{VE}\)误差始终存在。带期望的更新方式并不会加速算法的收敛,只是更加平滑,其原因在于期望本身受到估计参数\(w\)的影响,并不会更加准确。相反的,带期望的更新方式所需的计算量大大增加了。
实验3:Baird's counterexample -- 重要性TD算法
实验3的环境与实验1的MRP是一样的。实验2中TDC算法虽然能够收敛,但却无法保证收敛到真值,其中一个重要原因在于,目标策略与交互策略的数据分布是不一致的。显然,在Baird's counterexample中目标策略更偏重于第7状态(所有状态都会向第7状态转换),但交互策略则是随机转移到每一个状态。重要性TD算法可以人为给定每个状态的重要性,这里我们将所有状态的重要性都设置为1,即所有状态一样重要,从而使得目标策略于交互策略的数据分布尽可能接近。重要性TD算法的更新式为
实验结果如下图所示。
算法是发散的,原因在于方差过大。这时带期望的算法的好处就体现了,其更新式为
在求期望的过程中,要注意的是\(M_t\)的取值,当\(S_t=s_1\sim s_6\)时,\(M_t=I_t\),因为在目标策略下没有可以转移到前6个状态的路径,因此\(M_{t-1}=0\)。实验结果如下图所示。
带期望的ETD算法可以收敛,且收敛到一个固定点,这时\(\overline{VE}\)误差趋近于0。
11. 小结
本章首先讨论了离线策略学习算法发散的原因,特别指出了死亡三要素。然后对函数近似方法下的准则函数进行了深入分析。为了解决发散的问题,提出改进方法实现真正意义下的随机梯度算法。最后,利用重要性方法来改变人为改变目标策略下的数据分布,使其与交互策略下的数据分布尽可能一致,从而使得算法收敛。

浙公网安备 33010602011771号