__2017-12-11 如一模式识别研究

如一模式识别研究

deeplearning>>Q-learning 和 DQN

https://zhuanlan.zhihu.com/p/21996219

作者:赵明明
链接:https://zhuanlan.zhihu.com/p/21996219
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

前段时间了解到DQN网络,噱头是打2d游戏机的性能,可以和人类相媲美,有的游戏已经超越了人类,就想看看它是如何运行的。看了论文中,DQN网络的模型,以及其loss构成,原来这个网络是这么回事。

网络就是平常的卷积模块+全联接模块。或者是rnn/lstn。最后输出了n个动作的质量值。比如,如果是打小蜜蜂那个游戏,就只控制小蜜蜂 向左,向右,不动,即可,就是3个动作,如果是玩魂斗罗,那么动作就有点多了,主要是组合动作,方向键和跳跃,攻击的动作的组合。不过,网络输出节点直接就是包含的是基本动作,所以网络输出节点也不多。

loss是什么呢?Q-learning中,t 为时刻,每一对状态s_t和动作a_t,对应一个Q_t值。这里的s_t就对应网络中的输入中的一张游戏截图,a_t就对应网络中的输出节点,就是网络看到这个游戏截图后,给出的动作。Q-learning学习凑效的原因是对Q矩阵的更新。这个更新遵循一个原则:若当前状态下执行某动作后的下一个状态的动作能带来更多价值,则当前动作的价值就应该往高方向更新,这里说的动作的价值就是Q值。所以,取loss的思路就是把当前动作计算出的Q值和Q-learning中的要对这个Q进行更新的值进行简单的比较。这个比较,体现在公式上是两者的二范数。这里对这个Q的更新值,就完全按照Q-learning的写法来写:由两部分组成,一是当前动作的游戏反馈,二是当前动作造成的下一状态的所有动作下的最大Q值的加权。按照这种思路,我们最终能得到一个合理的Q值矩阵,或者Q值函数,它可以表征处于某个状态时,执行某个动作的价值。我们只要沿着价值最大化来做动作,就能得到高回报。Q值函数就是网络,输入图片(状态),输出Q值。

因为需要下一状态的所有动作的最大Q,这个loss的也有个特点:网络要多前向计算一次,才能得到下一状态的所有动作的Q.

其实也是因为这个loss的原因,等于说是把cnn用作生成Q的一个函数了。原来的质量表达Q是个矩阵,参数少,现在的用深度网络了,就叫深度质量网络(DQN)了,其实感觉它全称叫做DQ-learning更合适。可能因为网络体量比较大,比较显眼,就忽略了loss的构造,直接只叫DQN了。

总之,叫什么名字不是那么重要,理解了DQN原理就好。理解了,然后才能细扣,扣出优点和缺点,扣出改进方法。把我们玩的游戏玩的更好


评论留言区

:
  

作者: 游客 ; *
评论内容: *
带*号为必填项目

如一模式识别更新提示

matlab在图像处理方面的应用有更新

如一模式识别 友情链接

关于本站作者     chinaw3c     mozilla