DPG那篇论文读起来很困难,全部是数学公式(话说简书什么时候支持公式编辑啊,只能贴图片,痛苦),今天读的是后续的一篇论文CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING,也是deepmind后续提出的算法deep DPG(DDPG)。可以从两个方面来看DDPG的改进
1、DQN
DQN算法是第一次把deeplearning引入了reinforcement
learning,在Atari模拟游戏中展现了巨大的威力,在很多游戏中表现出了humanlever的水准,论文也上了nature的首页。但是DQN也有它的不足之处,最大的局限就是对连续的action space的情况基本上没有什么好办法。
2、DPG
在DPG那篇论文中推导了确定性策略的梯度公式:
同时也提出了为了近似的价值函数的梯度和真正的价值函数的梯度保持一致的2个原则,在此基础上给了Q函数的线性近似函数模拟。但是线性函数的表达力有限。如何解决非线性函数近似的收敛性是一个巨大的挑战。
DDPG就是把DQN和DPG相结合,把deep
learning引入DPG算法中,具体来讲就是把价值函数和策略函数都用神经网络来做表达。算法的基本思路就是这样,论文提到了好多技巧还是比较有意思:
1、样本独立性问题,用DQN的replaybuffer解决
2、Q网络迭代更新不稳定的问题,也用DQN的固定旧网络延迟使用新网络参数的办法解决,用下面的公式更新网络参数,虽然学的比较慢,但是解决了网络稳定问题
3、除了原始高维数据,还有一些低维的S输入,比如速度、角度等等,需要做batchnormalization。机器学习中最常用的技巧之一。
4、连续动作空间如何exploration问题,不能像离散空间按照概率随机取一个动作,而是在策略的输出上加上一个随机噪声
论文中没有提到DDPG的网络,DavidSilver在ICML大会的演讲中提到了Q和策略函数的网络
特别注意的是,这个地方的Q函数网络和DQN的不一样,DQN的是直接输出离散的a的价值,在连续动作空间中是先把状态S通过CNN网络输出feature,然后在把a输进来结合feature输出价值,这种技巧在deepreinforcement learning中也是非常常见的。
整个算法过程:
在结果比较中,论文只比较了DDPG和DPG的效果,在比较复杂的场景下,DDPG表现要好的多,从算法上也应该很容易理解这一点。
论文的相关工作中提到了当时这个方向的一些进展,包括dpg、trpo、gps、pilco等算法,因为后面还会陆续读这几篇论文,略过不谈。
有意思的是Benchmarking Deep Reinforcement Learning for Continuous Control
这篇论文测试过这些算法,认为TRPO的效果要好于DDPG。后来deepmind出的A3C的算法号称更好,后面有机会希望自己能读论文并且搭环境测试一下。