在前两篇文章强化学习基础:基本概念和动态规划和强化学习基础:蒙特卡罗和时序差分中介绍的强化学习的三种经典方法(动态规划、蒙特卡罗以及时序差分)适用于有限的状态集合$\mathcal{S}$,以时序差分中的Q-Learning算法为例,通常来讲使用n行(n = number of states)和m列(m= number of actions)的矩阵(Q table)来储存action-value function的值,以下图所示:html

对于连续的状态集合$\mathcal{S}$,上述方法就不能适用了,这时能够引入神经网络来估计Q的值,即Deep Q-Learning,以下图所示:算法

接下来介绍Deep Q-Learning中经常使用的几种技巧,用于提高学习效果:网络
- Stack States:对于连续的状态集合,单个状态不能很好地描述总体的情况。例以下图所示,要判断黑色方块的移动方向,仅凭一副图像是没法判断的,须要连续的多幅图像才能判断出黑色方块在向右移动

- Experience Replay:以下图所示,防止算法在训练过程当中忘记了以前场景得到的经验,建立一个Replay Buffer,不断回放以前的场景对算法进行训练;另外一方面,相邻的场景之间(例如$[S_{t},A_{t},R_{t+1},S_{t+1}]$与$[S_{t+1},A_{t+1},R_{t+2},S_{t+2}]$)有着必定的相关性,为了防止算法被固定在某些特定的状态空间,从Replay Buffer中随机抽样选取场景进行训练(打乱场景之间的顺序,减小相邻场景的相关性)

- Fixed Q-targets:针对Deep Q-Learning中计算Q值的神经网络的权重系数的更新,有公式如左图所示,此时将TD target近似为了$q_{\pi}(S,A)$的真值,可是当不断更新权重系数时TD target也是不断变化的,这就会使得在训练过程当中$q_{\pi}(S,A)$的估计值要接近一个不断变化的值,加大了训练难度,减少了训练效率。解决方案如右图所示,使用相对固定的参数来估计TD target

- Double DQNs:解决TD target对$q_{\pi}(S,A)$的真值可能高估的问题,方案是在计算TD target时使用两个不一样的神经网络,将动做$a$的选择过程与TD target的计算过程进行分割。若是和Fixed Q-targets结合起来,能够直接使用$w$和$w^{-}$这两组参数(以下图所示)

- Dueling DQN:以下图所示,相对于直接计算action-value function $Q(s,a)$,将$Q(s,a)$分解为state-value function $V(s)$与advantage-value function $A(s,a)$之和,这样作的缘由是多数状态下采起何种行动对$Q(s,a)$的值影响不大,适合直接对状态函数$V(s)$进行估计,再叠加上不一样行动对其的影响。在实际计算中,为了使得从$Q(s,a)$可以惟一肯定$V(s)$与$A(s,a)$,能够令$A(s,a)$的均值(即$\frac{1}{|\mathcal{A}|}\sum_{a^{\prime}} A(s,a^{\prime})$)为0

