【强化学习笔记】5.无模型的强化学习方法-时间差分算法

【深入浅出强化学习原理入门学习笔记】5.无模型的强化学习方法-时间差分算法

无模型的强化学习方法-蒙特卡罗算法中介绍了蒙特卡罗算法是利用经验平均估计状态值函数,存在一个问题是经验平均要到一次实验结束后才出现,学习速度慢,学习效率不高。重新看一下在蒙特卡罗算法中状态值函数的更新方式
v k ( s ) = v k 1 ( s ) + 1 k ( G k ( s ) v k 1 ) ,其中的 G k ( s ) 要到一次实验结束后才出现。

问题来了,能否借鉴动态规划中的自举算法,在实验未结束时就估计当前的值函数呢?这就是时间差分法(TD),状态值函数的更新方式为:
v k ( s ) = v k 1 ( s ) + α ( R k + γ G k ( s ) v k 1 )

蒙特卡罗算法的期望估计无偏,但是方差较大;时间差分法的期望估计有偏,但是方差较小,估计偏大。 R_k}+\gamma G_k(s) 视为真实值,而 v k 1 ( s ) 视为预测值,需要不断更新预测值;

与蒙特卡罗算法算法一样,时间差分法也存在异策略算法(Q_learning算法)和同策略(Sarsa算法)。

Q_learning算法(摘自书本《深入浅出强化学习原理入门》)

这里写图片描述

Sarsa算法(摘自书本《深入浅出强化学习原理入门》)

这里写图片描述

Q_learning算法和Sarsa算法在更新当前值函数时,仅仅用到下一个状态的值函数,而蒙特卡罗算法算法用到一次实验下后续所有状态的值函数。因此,对Q_learning算法和Sarsa算法的改进,可以用后续某个状态,也可以用后续状态的加权,将这个算法称之为 T D ( λ ) 算法。

S a r s a ( λ ) 算法,算法过程过程如下:
1,计算当前状态的TD偏差: δ t = R t + 1 + γ V ( S t + 1 ) V ( S t )
2, 更新适合度轨迹:
E t ( s ) = { γ λ E t 1 ( s ) ,   i f s s t γ λ E t 1 ( s ) + 1 ,   i f s = s t
3,更新值函数: V ( s ) V ( s ) + α δ t E t ( s )
这里写图片描述

时间差分算法的gym实现(待更)

猜你喜欢

转载自blog.csdn.net/bigheadyushan/article/details/79473672
今日推荐