六、强化学习第六篇--DQN算法
1、DQN简介
DQN 是指基于深度学习的 Q-learning 算法,主要结合了值函数近似 (Value Function Approximation)与神经网络技术,并采用了目标网络和经历回放的方法进行网络的训练。
2、值函数近似
DQN 为基于深度学习的 Q-learning 算法,而在 Q-learning 中,我们使用表格来存储每一个state 下 action 的 reward,即状态-动作值函数 Q(s, a) 。但是在我们的实际任务中,状态量通常数量巨大并且在连续的任务中,会遇到维度灾难的问题,所以使用真正的 Value Function通常是不切实际的,所以使用了价值函数近似(Value Function Approximation)的表示方法。
3、策略评估
假设有一个演员 (actor)π ,评论家就是来评价这个演员的策略 π 好还是不好,即 Policy Evaluation(策略评估)。 主要分为两种策略;
3.1 State Value Function Estimation
3.2 State-action Value Function Estimation
4、目标网络
Target Network:为了解决在基于 TD 的 Network 的问题时,优化目标 Qπ (st, at) = rt+Qπ (st+1, π (st+1))左右两侧会同时变化使得训练过程不稳定,从而增大 regression 的难度。 target network 选择将上式的右部分即 rt + Qπ (st+1, π (st+1)) 固定,通过改变上式左部分的 network 的参数,进行 regression,这也是一个 DQN 中比较重要的 tip。
通常是会把右边这个 Q 网络固定住。也就是说你在训练的时候,你只更新左边的 Q 网络的参数,而右边的 Q 网络的参数会被固定住。因为右边的 Q 网络负责产生目标,所以叫目标网络。因为目标网络是固定的,所以你现在得到的目标 rt + Qπ (st+1, π (st+1)) 的值也是固定的。因为目标网络是固定的,我们只调左边网络的参数,它就变成是一个回归问题。我们希望模型的输出的值跟目标越接近越好,你会最小化它的均方误差 (mean square error)。
在实现的时候,你会把左边的 Q 网络更新好几次以后,再去用更新过的 Q 网络替换这个目标网络。但它们两个不要一起动,它们两个一起动的话,结果会很容易坏掉。
5、经验回收
Experience Replay 会构建一个 Replay Buffer, Replay Buffer 又被称为 Replay Memory。 Replay Buffer 是说现在会有某一个策略 π 去跟环境做互动,然后它会去收集数据。我们会把所有的数据放到一个 buffer 里面, buffer 里面就存了很多数据。
6、DQN算法