3. 同策略学习

上一篇动态规划讲的是在马尔科夫模型$<S, A, P, R, \gamma>$完全已知的情况下,利用概率全展开求解最优策略。这一篇讲马尔科夫模型不完全已知,即转移概率未知,不能全概率展开的情况下,利用蒙特卡洛(Monte-Carlo)时序差分(Temporal-Difference)来通过采样的方式估计价值函数,求解最优策略。

本篇的策略对应上一篇动态规划中的策略估计和策略迭代部分,是先估计策略再改进策略的蒙特卡洛同策略学习方式,下一篇对应值迭代,是边评估边改进的时序差分异策略学习方式。

蒙特卡洛和时序差分的区别在于,蒙特卡洛是从完整的从初始状态到终止状态,的序列(episode)中学习,利用平均值估计价值值函数。时序差分是从不完整的序列中学习,利用自举(bootstrapping )来更新价值值函数。下面具体展开来讲。

蒙特卡洛学习

策略估计

从根据策略$\pi$得到的完整序列$<S_1, A_1, R_1, ..., S_{terminal}>$

对完整序列中的某一状态$s$,计算累积奖励:

$G_t = R_{t+1} + \gamma R_{t+2} +... + \gamma^{T-1} R_T$

对每一个完整序列,有两种方式累积$G_t$,针对每一个状态只计算第一次出现(First-Visit)时的$G_t$,或者是累积每一次出现(Every-Visit)时的$G_t$。

然后利用累积的$G_t$除以次数,也就是经验平均值来更新$v_{\pi}({s_t})$,是$G_t$的无偏估计,

$v_{\pi}({s_t})=E[G_t]$

为了加快计算,利用递增来更新,

$v_{\pi}({s_t}) \leftarrow v_{\pi}({s_t}) + \alpha ({G_t} - v_{\pi}({s_t}))$

策略迭代

像动态规划里解释的一样,迭代收敛得到了新的$v_\pi$后,就可以依据新的$v_\pi$改进我们的策略$\pi$。改进的策略$\pi$又可以继续迭代收敛到新的$v_\pi$,如此循环,最终收敛至$\pi^*$,称之为蒙特卡洛学习

时序差分学习

像动态规划里解释的一样,为了加快收敛速度,我们可以在$v_\pi$还没有收敛的迭代过程中,就立马改进策略$\pi$,再循环这个过程,称之为时序差分学习。

蒙特卡洛朝着实际能到的累计奖励$G_t$的方向更新$v_{\pi}({s_t})$,

$v_{\pi}({s_t}) \leftarrow v_{\pi}({s_t}) + \alpha ({G_t} - v_{\pi}({s_t}))$

时序差分朝着估计得到的累计奖励$R_t+\gamma v(s_{t+1})$的方向更新$v_{\pi}({s_t})$,$R_t+\gamma v(s_{t+1})$是TD目标,${R_{t + 1}} + \gamma v(s_{t+1}) - v({s_t})$是TD误差,

$v({s_t}) \leftarrow v({s_t}) + \alpha ({R_{t + 1}} + \gamma v(s_{t+1}) - v({s_t}))$

蒙特卡洛和时序差分的区别

时序差分利用了马尔科夫特性,可每一步在线学习,不必等到序列结束,可以从不完整的序列中学习,更有效率,但收敛性一般,对初始值较敏感,低方差,有一些偏差。

蒙特卡洛没有利用马尔科夫特性,必须等到序列结束,从完成的序列中学习,有很好的收敛性,对初始值不那么敏感,高方差,零偏差。

 

参考:

1. David Silver 课程

2. Reinforcement learning: An Introduction. Richard S. Sutton

猜你喜欢

转载自www.cnblogs.com/yijuncheng/p/9888019.html