ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《强化学习》中的第10章:基于函数逼近的同轨策略控制

2021-06-22 16:04:11  阅读:229  来源: 互联网

标签:Rt 10 bar vert 逼近 lim 同轨 mathbb gamma


前言: 本次笔记对《强化学习(第二版)》第十章进行概括性描述。

以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com。

正文

很短的一章,是对于第九章的延续。

第九章中,我们用函数逼近的方法为 V ( S ) V(S) V(S)估值,而第十章中,我们用同样的思想为 q π ( s , a ) q_\pi(s,a) qπ​(s,a)估值。但是具体内容上,又是大不同的。

10.1 - 10.2

这两节内容为:

  • 10.1 分幕式半梯度控制
  • 10.2 半梯度 n 步 Sarsa

这两节是第9章内容延续,没有什么好说的。在程序实现中,值得强调的有两点:

  • 从第9章开始,我们假设了 w w w与目标向量 v v v或 q q q间是线性关系,因此可以把 w w w理解成“权重”,寻找最优动作时,找权重最大的就可以了;
  • 瓦片编码,在第9章中,我们对状态 s s s瓦片编码,而第10章中,我们对 [ s , q ] [s,q] [s,q]进行瓦片编码。如此,就与表格有所不同。换句话说,如果不进行瓦片编码,那么将面临这个大问题:单纯对(s,a)进行聚合,与表格型求解无差别,(s,a)间是解耦。因此,使用瓦片编码,使(s,a)间耦合。

以上,是我看了很久 Shantong Zhang (Sutton 学生,官方认可的代码)的代码后得出的结论。

瓦片编码采用了哈希方法,由 Sutton 本人制作 python3 文件:http://incompleteideas.net/tiles/tiles3.py-remove

我对代码进行了一点标注,见:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/Mountain-Car-Acess-Control.ipynb

10.3 - 10.5

这三节内容为:

  • 10.3 平均收益:持续性任务中的新的问题设定
  • 10.4 弃用折扣
  • 10.5 差分半梯度 n 步 Sarsa

为了解决持续性问题的控制问题,10.3与10.4 引出了平均收益差分回报差分价值函数的概念,并且在数学上证明了:持续性问题中折扣的无用性。 这个证明是基于MDP的便利性假设的。

与权重 w w w同,平均收益虽然客观存在,但是不可知。因此平均收益也是需要更新的,这个过程也需要定义步长。

对练习题解的补充

练习10.6很有趣。解答参见:https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/tree/master/resources中的RL-An Introdction exercises Solution.pdf

tip: 我知道了什么叫同余方程

这里解释一下,为什么 V ( A ) = − R ‾ + V ( B ) V(A) = -\overline{R} + V(B) V(A)=−R+V(B)。

我的理解是这样的:

lim ⁡ t → 0 δ t = 0 \lim_{t \to 0} \delta_t = 0 t→0lim​δt​=0

δ t = R t + 1 − R ‾ t + 1 + v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) \delta_t = R_{t+1} - \overline{R}_{t+1} + \hat{v}(S_{t+1}, w_t) - \hat{v}(S_t,w_t) δt​=Rt+1​−Rt+1​+v^(St+1​,wt​)−v^(St​,wt​)

结合例题中的情况则是:

0 = 0 − 1 3 + V ( B ) − V ( A ) 0 = 0 - \frac{1}{3} + V(B) - V(A) 0=0−31​+V(B)−V(A)

有关 V ( C ) V(C) V(C)的式子同理。


练习10.7同样很有趣。但是 Bryn Elesedy 提供的答案中,有处笔误

原文如下:

Now to compute the differential state values we write

V ( S ; γ ) = lim ⁡ h → ∞ ∑ t = 0 h γ t ( E [ R t + 1 ∣ S 0 = s ] − R ˉ ) V(S; \gamma) = \lim_{h\to \infty} \sum_{t=0}^h \gamma^t \left( \mathbb{E}[R_{t+1} \vert{} S_0 = s] - \bar{R} \right) V(S;γ)=h→∞lim​t=0∑h​γt(E[Rt+1​∣S0​=s]−Rˉ)
then

V ( A ; γ ) = 1 − R ˉ + γ V ( A ; γ ) V ( A ; γ ) = − R ˉ + γ V ( B ; γ ) \begin{aligned} V(A; \gamma) &= 1 - \bar{R} + \gamma V(A; \gamma) \\ V(A; \gamma) &= - \bar{R} + \gamma V(B; \gamma) \end{aligned} V(A;γ)V(A;γ)​=1−Rˉ+γV(A;γ)=−Rˉ+γV(B;γ)​

so

V ( A ; γ ) = 1 2 ( 1 − γ ) − γ 2 V ( A ; γ ) V(A; \gamma) = \frac12 ( 1 - \gamma ) - \gamma^2 V(A; \gamma) V(A;γ)=21​(1−γ)−γ2V(A;γ)

我对其的修改与解释如下:

在例题的情况中,因为原差分回报公式 G t ( f o r m u l a    10.9 ) G_t(formula \; 10.9) Gt​(formula10.9)的定义不使用,因此对于状态的价值,本题中采用:

V ( S ; γ ) = lim ⁡ h → ∞ ∑ t = 0 h γ t ( E [ R t + 1 ∣ S 0 = S ] − R ˉ ) V(S; \gamma) = \lim_{h\to \infty} \sum_{t=0}^h \gamma^t \left( \mathbb{E}[R_{t+1} \vert{} S_0 = S] - \bar{R} \right) V(S;γ)=h→∞lim​t=0∑h​γt(E[Rt+1​∣S0​=S]−Rˉ)

那么,由上式,可得:

V ( B ; γ ) = lim ⁡ h → ∞ ∑ t = 0 h γ t ( E [ R t + 1 ∣ S 0 = B ] − R ˉ ) = lim ⁡ h → ∞ γ 0 ( E [ R 1 ∣ S 0 = B ] − R ˉ ) + lim ⁡ h → ∞ ∑ t = 1 h γ t ( E [ R t + 1 ∣ S 0 = B ] − R ˉ ) = 1 − R ˉ + γ V ( A ; γ ) V ( A ; γ ) = − R ˉ + γ V ( B ; γ ) \begin{aligned} V(B; \gamma) &= \lim_{h\to \infty} \sum_{t=0}^h \gamma^t \left( \mathbb{E}[R_{t+1} \vert{} S_0 = B] - \bar{R} \right) \\ & = \lim_{h\to \infty} \gamma^0 (\mathbb{E}[R_{1} \vert{} S_0 = B] - \bar{R}) + \lim_{h\to \infty} \sum_{t=1}^h \gamma^t \left( \mathbb{E}[R_{t+1} \vert{} S_0 = B] - \bar{R} \right)\\ & = 1 - \bar{R} + \gamma V(A; \gamma) \\ V(A; \gamma) &= - \bar{R} + \gamma V(B; \gamma) \end{aligned} V(B;γ)V(A;γ)​=h→∞lim​t=0∑h​γt(E[Rt+1​∣S0​=B]−Rˉ)=h→∞lim​γ0(E[R1​∣S0​=B]−Rˉ)+h→∞lim​t=1∑h​γt(E[Rt+1​∣S0​=B]−Rˉ)=1−Rˉ+γV(A;γ)=−Rˉ+γV(B;γ)​

解二元一次方程组:

V ( A ; γ ) = 1 2 ( 1 − γ ) − γ 2 V ( A ; γ ) V(A; \gamma) = \frac12 ( 1 - \gamma ) - \gamma^2 V(A; \gamma) V(A;γ)=21​(1−γ)−γ2V(A;γ)


练习10.8很生动、巧妙地告诉我们,使用书上式子10.10对 R ˉ \bar{R} Rˉ进行更新,“Once R ˉ \bar{R} Rˉ
gets to the correct value it never leaves”。

标签:Rt,10,bar,vert,逼近,lim,同轨,mathbb,gamma
来源: https://blog.51cto.com/u_15279775/2937874

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有