几句话总结一个算法之DQN

  • DQN利用深度学习对Q-learning的一个扩展,回顾上篇文章,Q-learning的核心在于Q(s,a)的建模。如果状态s非常复杂,很难通过一张表来存储所有的状态。

  • 深度学习正好可以自动提取s的特征,所以我们只需要对Q(s,a)建立一个深度学习网络

  • 但是s可能是一个极高维度的向量,a可能只低维度向量(如上下左右),建模起来可能有点困难

  • 解决的办法是,对每个动作a都建一个网络。因为对于每个网络的a输入的是个固定值,没有任何信息量可以忽略掉,问题就可以简化为对每个动作建立一个网络来表示Q(s)

  • 更进一步简化,这些网络在特征提取层可以参数共享一起训练,在输出层则输出各自动作的期望奖励,做法类似于现在的多任务学习

  • 与Q-learning原理相同,Q(s, a)表示了模型根据历史数据的预测奖励,而Q'(s,a)表示对当前行动的预测奖励。一个好的模型,Q(s,a) 和 Q'(s,a)应该尽量接*,用*方损失函数正好可以表示

  • 其他一些trick:experience replay 和 异步更新(Double DQN),做法都很直白,有需要可以去了解下

posted on 2019-06-11 17:30  daniel-D  阅读(722)  评论(0编辑  收藏  举报

导航