(《机器学习》完整版系列)第16章 强化学习——16.7 同策略蒙特卡罗强化学习

提示:自由地执行一次长度为TT蒙特卡罗试验(并不限定起点),就可以依迭代式对该试验轨线上所有点作一次更新,依结果,对策略进行一次优化。
将ϵ-贪心算法修改为同策略蒙特卡罗强化学习算法

免模型学习

在有模型时,依赖模型进行“计算”即可以进行策略优化,现实中大多情况是模型没有显式化,如,你不知道转移概率的表达式,也就是说,这时没有显式的模型可依赖了,因此,需要借助蒙特卡罗试验揭示背后隐藏的规律。

若要借助“有模型”的成果,可以采取两步法:1、先学习出一个模型:使用随机策略进行采样,得到样本集,估计出转移函数和奖赏函数,即训练一个初始的模型;2、使用有模型的强化学习方法继续训练。 但这两步法的两步是割裂的,因此,进一步发展出免模型强化学习。

同策略蒙特卡罗强化学习

设“从 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)出发,由于这里是讨论 Q Q Q值,故我们以 ( x i , a i ) (x_i,a_i) (xi,ai)为点,而不是以 ( x i ) (x_i) (xi)为点,且起点为 ( x 0 , a 0 ) (x_0,a_0) (x0,a0),依策略执行 T T T步,第 T T T步强制完成任务(参见式(16.9))”为一次蒙特卡罗试验,共进行了 m m m次,第 s s s次产生的轨线(后续称为轨线 s s s)为
( x 0 , a 0 ) ⟶ r 1 s ( x 1 s , a 1 s ) ⟶ r 2 s ( x 2 s , a 2 s ) ⟶ r 3 s ⋯ ⟶ r T s ( x T s , a T s ) \begin{align} (x_0,a_0)\mathop{\longrightarrow }\limits^{r_1^s}(x_1^s,a_1^s)\mathop{\longrightarrow }\limits^{r_2^s}(x_2^s,a_2^s)\mathop{\longrightarrow }\limits^{r_3^s}\cdots\mathop{\longrightarrow }\limits^{r_T^s}(x_T^s,a_T^s) \tag{16.47} \end{align} (x0,a0)r1s(x1s,a1s)r2s(x2s,a2s)r3srTs(xTs,aTs)(16.47)
其中, r t s r_t^s rts为第 t t t步的奖赏,由策略的随机性知它是个随机变量。

m m m次轨线的平均作为期望的近似,即
Q m ( x 0 , a 0 ) = 1 m ∑ s = 1 m ( 1 T ∑ i = 1 T r i s ) (由【西瓜书式(16.6)第一式】) = 1 m ∑ s = 1 m R s \begin{align} Q_m(x_0,a_0) %&\doteq \frac{1}{m}\sum_{s=1}^mQ^{\pi }_{s,T}(x_0,a_0)\notag\\ & =\frac{1}{m}\sum_{s=1}^m\left(\frac{1}{T}\sum_{i=1}^Tr_i^s\right)\text{(由【西瓜书式(16.6)第一式】)}\notag \\ & =\frac{1}{m}\sum_{s=1}^mR_s \tag{16.48} \end{align} Qm(x0,a0)=m1s=1m(T1i=1Tris)(由【西瓜书式(16.6)第一式】)=m1s=1mRs(16.48)
其中
R s = 1 T ∑ i = 1 T r i s \begin{align} R_s=\frac{1}{T}\sum_{i=1}^Tr_i^s \tag{16.49} \end{align} Rs=T1i=1Tris(16.49)
即为轨线 s s s的每步平均奖赏。

对比式(16.48)与【西瓜书式(16.1)】,故有与【西瓜书式(16.2)】对应的递推式
{ Q s ( x 0 , a 0 ) = ( s − 1 ) Q s − 1 ( x 0 , a 0 ) + R s s R s = 1 T ∑ i = 1 T r i s \begin{align} \begin{cases} Q_s(x_0,a_0)=\frac{(s-1)Q_{s-1}(x_0,a_0)+R_s}{s} \\ R_s=\frac{1}{T}\sum_{i=1}^Tr_i^s \\ \end{cases} \tag{16.50} \end{align} {Qs(x0,a0)=s(s1)Qs1(x0,a0)+RsRs=T1i=1Tris(16.50)

即增加第 s s s条轨线(如式(16.47)所示,它的起点为 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)),这时依式(16.50)更新 Q s ( x 0 , a 0 ) Q_s(x_0,a_0) Qs(x0,a0),在此之前,起点为 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)已有 s − 1 s-1 s1条轨线(即已计算出式(16.50)右侧的 Q s − 1 ( x 0 , a 0 ) Q_{s-1}(x_0,a_0) Qs1(x0,a0)),逐步增加轨线数,迭代式(16.50)逼近最优值 Q ( x 0 , a 0 ) Q(x_0,a_0) Q(x0,a0)

Q ( x 0 , a 0 ) Q(x_0,a_0) Q(x0,a0):开始有初始值0,随后若有轨线经过(可能是轨线的起点,也可能是轨线中途经过的点),则轨线经过一次更新一次,由此得到当前值。
现在将“起点 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)已有 s − 1 s-1 s1条轨线及 Q s − 1 ( x 0 , a 0 ) Q_{s-1}(x_0,a_0) Qs1(x0,a0)”改为“将点 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)处的当前值 Q ( x 0 , a 0 ) Q(x_0,a_0) Q(x0,a0)视为 Q s − 1 ( x 0 , a 0 ) Q_{s-1}(x_0,a_0) Qs1(x0,a0)”,仍用式(16.50)迭代,得到该点的新 Q ( x 0 , a 0 ) Q(x_0,a_0) Q(x0,a0)
如何计算轨线式(16.47)上的 Q ( x 1 , a 1 ) Q(x_1,a_1) Q(x1,a1)呢?

轨线式(16.47)中从 ( x 1 , a 1 ) (x_1,a_1) (x1,a1)开始的之后部分可视为“从 ( x 1 , a 1 ) (x_1,a_1) (x1,a1)出发,执行策略 T − 1 T-1 T1步”的一次蒙特卡罗试验,仿上述方法(只需调整起始点和步数),即得 Q ( x 1 , a 1 ) Q(x_1,a_1) Q(x1,a1)的递推式
{ Q s ( x 1 , a 1 ) = ( s − 1 ) Q s − 1 ( x 1 , a 1 ) + R T − 1 s s R T − 1 s = 1 T − 1 ∑ i = 2 T r i s \begin{align} \begin{cases} Q_s(x_1,a_1)=\frac{(s-1)Q_{s-1}(x_1,a_1)+R^s_{T-1}}{s} \\ R^s_{T-1}=\frac{1}{T-1}\sum_{i=2}^Tr_i^s \\ \end{cases} \tag{16.51} \end{align} {Qs(x1,a1)=s(s1)Qs1(x1,a1)+RT1sRT1s=T11i=2Tris(16.51)

同样可得 Q ( x 2 , a 2 ) ⋯ Q(x_2,a_2)\cdots Q(x2,a2)的递推式,归纳到一般,轨线式(16.47)上 Q ( x t , a t ) Q(x_t,a_t) Q(xt,at)的递推式为
{ Q s ( x t , a t ) = ( s − 1 ) Q s − 1 ( x t , a t ) + R T − t s s R T − t s = 1 T − t ∑ i = 1 + t T r i s \begin{align} \begin{cases} Q_s(x_t,a_t)=\frac{(s-1)Q_{s-1}(x_t,a_t)+R^s_{T-t}}{s} \\ R^s_{T-t}=\frac{1}{T-t}\sum_{i=1+t}^Tr_i^s \\ \end{cases} \tag{16.52} \end{align} {Qs(xt,at)=s(s1)Qs1(xt,at)+RTtsRTts=Tt1i=1+tTris(16.52)
其中, t = 0 , 1 , 2 , ⋯   , T − 1 t=0,1,2,\cdots,{T-1} t=0,1,2,,T1,而 Q s − 1 ( x t , a t ) Q_{s-1}(x_t,a_t) Qs1(xt,at)指轨线 s s s ( x t , a t ) (x_t,a_t) (xt,at)处当前的值,更新后为 Q s ( x t , a t ) Q_{s}(x_t,a_t) Qs(xt,at)

综上,自由地执行一次长度为 T T T蒙特卡罗试验(并不限定起点),就可以依迭代式(16.52)对该试验轨线 s s s式(16.47)上所有点作一次更新,用程序语言表达即为【西瓜书图16.10】的第4-8句。

设每执行一次蒙特卡罗试验并更新该轨线上的 Q ( x t , a t ) Q(x_t,a_t) Q(xt,at)后,对策略进行一次优化(【西瓜书图16.10】的第9句),优化方法为 ϵ \epsilon ϵ-贪心算法【西瓜书图16.4】,即对已探索部分采取策略 π ϵ ( x ) \pi ^\epsilon(x) πϵ(x)(【西瓜书式(16.20)】所定义)。

ϵ \epsilon ϵ-贪心算法可以这样简单地实现【西瓜书图16.4】:
A A A中的 a a a进行编号: a 1 , a 2 , ⋯   , a ∣ A ∣ a_1,a_2,\cdots,a_{|A|} a1,a2,,aA,将[0,1]区间进行 ∣ A ∣ |A| A等分,在[0,1]区间中任取两随机数 r a n d 1 ( ) ,   r a n d 2 ( ) \mathrm{rand} 1(),\ \mathrm{rand} 2() rand1(), rand2()(均匀分布),令
π ϵ ( x ) = { arg ⁡ max ⁡ a ∈ A Q ( x , a ) (当 r a n d 1 ( ) > 1 − ϵ ) a i (否则,当 r a n d 2 ( ) 落入第 i 个小区间时) \begin{align} \pi ^\epsilon(x)= \begin{cases} \mathop{\arg\max}\limits_{a\in A}Q(x,a) & \quad \text{(当$\mathrm{rand} 1()>1-\epsilon$)} \\ a_i & \quad \text{(否则,当$\mathrm{rand} 2()$落入第$i$个小区间时)} \\ \end{cases} \tag{16.53} \end{align} πϵ(x)= aAargmaxQ(x,a)ai(当rand1()>1ϵ(否则,当rand2()落入第i个小区间时)(16.53)
其中,第二种情况对各 a i a_i ai按仍均匀分布选取,也有可能取到最优 a a a,综合两种情况,即取 arg ⁡ max ⁡ a ∈ A Q ( x , a ) \mathop{\arg\max}\limits_{a\in A}Q(x,a) aAargmaxQ(x,a)的概率为 1 − ϵ + ϵ ∣ A ∣ 1-\epsilon+\frac{\epsilon}{|A|} 1ϵ+Aϵ(若取 arg ⁡ max ⁡ a ∈ A Q ( x , a ) \mathop{\arg\max}\limits_{a\in A}Q(x,a) aAargmaxQ(x,a)的概率为 1 − ϵ 1-\epsilon 1ϵ,则程序设计稍复杂),转换一个写法,即
π ϵ ( x , a ) = { 1 − ϵ + ϵ ∣ A ∣ (当 a = arg ⁡ max ⁡ a ∈ A Q ( x , a ) ) ϵ ∣ A ∣ (当 a ≠ arg ⁡ max ⁡ a ∈ A Q ( x , a ) ) \begin{align} \pi ^\epsilon(x,a)= \begin{cases} 1-\epsilon+\frac{\epsilon}{|A|} \quad \text{(当$a=\mathop{\arg\max}\limits_{a\in A}Q(x,a)$)} \\ \frac{\epsilon}{|A|}\quad \text{(当$a\neq \mathop{\arg\max}\limits_{a\in A}Q(x,a)$)} \\ \end{cases} \tag{16.54} \end{align} πϵ(x,a)= 1ϵ+Aϵ(当a=aAargmaxQ(x,a)Aϵ(当a=aAargmaxQ(x,a)(16.54)

ϵ \epsilon ϵ-贪心算法【西瓜书图16.4】修改为同策略蒙特卡罗强化学习算法【西瓜书图16.10】:

(i) 初始化,第1句;

(ii) 循环体中优化,第2-10句;

\quad (ii.1) 依蒙特卡罗方法新增一条长度为 T T T的轨线,第3句;

\quad (ii.2) 更新该新轨线上点的 Q ( x t , a t ) Q(x_t,a_t) Q(xt,at),即进行策略评估(依策略计算值 V V V Q Q Q,常称为策略评估,例如【西瓜书图16.7】的策略评估算法),第4-8句;

\quad (ii.3) 对新轨线经过的点 x x x,依 π ϵ \pi ^\epsilon πϵ更新其策略 π ( x ) \pi (x) π(x),第9句;

(iii) 输出策略 π ( x ) \pi (x) π(x)

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:16.6 策略迭代与值迭代算法
下一篇:16.8 异策略蒙特卡罗强化学习算法(换分布)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值