DQN,Deep Q-Network 是Q-Learning和深度网络结合的一种算法,在很多强化学习问题中表现优异。在看DQN之前建议先了解一下Q-Learning的基本原理:https://blog.csdn.net/qq_33302004/article/details/114871232
也可以看一下value-based 和 policy-based 方法的基本介绍:https://blog.csdn.net/qq_33302004/article/details/115189857
文章目录
1. 简单介绍
DQN 是一种 value-based 方法,与 policy Gradient 不同,网络学习的不是策略,而是要学习成为一个Critic,其策略就是选择当前状态 s s s下,评分最高的 a a a。
这里面有两个关键的符号表示:
- V π ( s ) V^\pi(s) Vπ(s) 和 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a);
- 其中 π \pi π是指某一种策略,我们的Critic是针对特定的策略而言的,同样的 s s s, a a a,如果是不同的 π \pi π,Critic也会给出不同的值。例如棋魂中:
V 以 前 的 阿 光 ( 大 马 步 飞 ) = b a d V 现 在 的 阿 光 ( 大 马 步 飞 ) = g o o d \begin{aligned} &V^{以前的阿光}(大马步飞) = bad \\ &V^{现在的阿光}(大马步飞) = good \end{aligned} V以前的阿光(大马步飞)=badV现在的阿光(大马步飞)=good - 其中 V π ( s ) V^\pi(s) Vπ(s) 表示的是actor在状态 s s s下的累计回报期望(cumulated reward expects );
- Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)表示的是actor在状态 s s s下选择状态 a a a的累计回报期望。
传统Q-Learning中会建立一个表格,存储下所有 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)的值,在决策的时候通过查表的方式决定选择那种action,但是在实际中, s s s和 a a a的取值空间可能很大,无法将所有state都打成表格,所以就有了结合深度网络的方法,也就是我们本文所讲的DQN。其 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)不使用表格存储,而是训练一个神经网络,输入 s s s和 a a a,输出 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)的值。
2. MC 和 TD 方法
那么如何计算 V π ( s ) V^\pi(s) Vπ(s) 的值呢?
通常有两种方法:MC-based方法(蒙特卡罗)和TD-based方法(时间差分)。
Monte-Carlo(MC)-based的方法,就是让actor与环境一直互动,我们就可以统计出接下来的累计回报会有多大,通过多个episode的采样,就可以计算出累计回报期望 G G G。
所以如果想要使用神经网络+MC方法实现的话会很直观,这就是一个回归问题(regression),只要有监督学习就可以啦。
网络的输出就是一个值,你希望在输入 s a s_a sa的时候,输出的值跟 G a G_a <