概述
上一篇文章大致介绍了policy gradient的学习,这次大致说下q-learning. 主要材料还是来自于李宏毅的slides[1].
1 Q-learning的介绍
q-learning是通过value function来去决定后续的动作的。这个也是和pg的很大程度上的不同.因为它后边要选择的actor是根据当前最大的一个actor选取,但是最终也未必是选择这个actor,所以它本身是off-policy的。
关于证明选取的
我们后续先以离散形式的state和action去介绍,然后再去讨论连续的情况.
Q-learning的一些优化
不像前边说的pg, pg中action的选取是有进行采样的。但是在q-learning中,情况有很大的不同。我们还是以离散化的action举例子。比如一个贪吃蛇游戏,每次开始时候,往上走就可以吃到一个东西。那么,最后学出来的开始就往上走了,而不是去探索其他的可能,这样就会带来exploration的问题。解决这些问题的方法是我们对action随机增加一些噪声,加大exploration。
为了加速这个过程,有个优化的地方是采取了reply buffer. 这个reply buffer的意思是,我们把历史上的value function的结果存放到一个buffer里边,比如说一个队列里边,当来了一个新的状态(s, a), 我们把这个
q-learning的过程,红框里边是说明了它的更新的过程,说明它选择的action并不一定是当前步骤最大的action,这个是跟sarsa的最大的区别
2 Q-learning的一些技巧
比较喜欢的就是这些技巧的介绍。
2.1 Double DQN
在实际估计q的时候, 因为我们是选择的max, 常常倾向于过高的估计q-value.
double dqn的做法是采用的两个函数,q和q'. q函数是和普通的dqn一样,但是最外层q‘是针对里边的q函数结果的选取。这种方法,举个例子,就好比是议会。议员可以提各种方案,但是未必能够通过。能够通过的一些方案,也未必是议员认为是最好的。有一篇paper是介绍这个的,可以参考[2].
2.2 noisy net
前边说过,为了增加EE的效果, 对action随机增加一个干扰。但是这个只是比较简单的对action的干扰。noisy net这种方式,是对网络中的参数加上一个gaussian noise, 这样就变成了一个有系统性的尝试。但是比较关键的是,同一个batch中,噪音的
最后有个图片,介绍这几个trick的效果。其中,rainbow是把这几种方式合并起来。
参考文献
[1] http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS18.html
[2] Hado V. Hasselt, “Double Q-learning”, NIPS 2010
Hado van Hasselt, Arthur Guez, David Silver, “Deep Reinforcement Learning with Double Q-learning”, AAAI 2016
最后
以上就是内向钢笔为你收集整理的q learning 参数_强化学习 - q-learning的全部内容,希望文章能够帮你解决q learning 参数_强化学习 - q-learning所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复