1.前言
在开始学习DQN之前,这里推荐一个OpenAI关于DeepRL的一个学习资源网站:Welcome to Spinning Up in Deep RL!。个人认为这是一个很不错的网站,不管你以后是想搞强化学习的科研方向还是应用方向。这里再推荐一下bilibili的北大王树森的深度强化学习教程,对DQN的讲解可以说是十分的通俗易懂。
图片上的算法,虽然不详尽,但对于我们对强化学习算法的分类与学习路径选着是很有帮助的。基于模型和不基于模型的两大类。在不基于模型中又主要有两条线,策略梯度和Q-learning,这里便没有分的如此清楚,除了DQN,我后续还会分享其他算法。
2.DQN算法
DQN算法全名为Deep Q-learning Network 算法,出自Playing Atari with Deep Reinforcement Learning这篇论文,从全名我们就可以看出,DQN和Q-learning关系密切,从(六)强化学习——Sarsa,Saras(λ),Q-Learning算法我们知道,不管是Q-learning算法还是sarsa算法,他们的状态动作价值函数Q(s,a)都是用一张大表(Q-table)来存储的,这样当状态的数量和动作变多时,这将是一张巨大的表,对内存和查询都是一个挑战。而且当遇到强化学习任务所面临的状态空间是连续的,存在无穷多个状态,这种情况就不能再使用表格的方式存储价值函数。DQN其实就是用一个深度神经网络来近似最优动作-价值函数Q*(s,a),把这个网络叫做Q网络(deep Q-network),写为Q(s,a;θ),θ是神经网络的参数。Q网络的输入是状态s,输出是所有可能动作所