强化学习之DQN流程详解

本文的主要流程按照:

  1. Q learning的基本流程
  2. 神经网络的引入
  3. deepmind 2015年nature论文的两种改进策略
  4. 完整的DQN流程(参考上述论文)

来进行讲解。

1. Q learning 的基本流程

强化学习之DQN流程详解_第1张图片

几个基础概念:

Q(s,a)--存储在状态s下动作a的Q value的矩阵,矩阵规模为num(s)*num(a);

s--状态,a--动作,r--回报值;

整个Q学习的过程是利用bellman公式的等式关系,来更新存储估计Q值的矩阵Q(s,a),使它为智能体的动作选择提供最优的引导。

过程:

首先,当前的状态为s,要根据动作选择策略π(s)选择一个动作a,而这个π(s)所基于的参数与Q(s,a)有关。最常用的方法是ε-贪心算法,也就是每个状态有ε的概率进行探索(即随机选取),而剩下的1-ε的概率则进行利用(选取当前状态下Q值较大的那个动作)。ε一般取值较小,0.01即可。当然除了ε-greedy方法还有一些效果更好的方法。而选择的该动作a在当前状态s下的Q值,是Q(s,a),这个Q值被认为是该状态-动作对的估计Q值。

得到动作a后,通过与环境的交互信息,使智能体1.到达s_状态2.获得回报值r。

关于回报值r的设定,最经典的办法:当s_不是最终状态时,r = 0;当s_是好的终止状态,r = 1;当s_是坏的终止状态,r = -1。

然后我们通过bellman公式计算得到(s,a)状态-动作对的真实Q值:Q*(s,a)=r+maxQ(s_,a_)。

r是到达s_状态得到的回报值,后面一项表达的是在s_时可以得到的最大Q值,(注意,这个Q值所代表的动作a_不一定是下一步的动作,只是使s_达到最大Q值的动作,而Sarsa算法这个动作就是下一个动作。)

更新Q矩阵的delta = Q*-Q,学习率α小于1大于0。

这样就完成了一个迭代。


2. 神经网络的引入

单纯用Q值矩阵存储占空间、搜索起来耗时,因此结合神经网路原理,用神经网路拟合Q值。

输入是状态s,输出为各个可选动作的Q值。


3. deepmind 2015年nature论文的两种改进策略

这两个改进策略可以明显提升DQN算法的实用性(论文:Human-level control through deep reinforcement learning)

一个是Experience replay,一个是fixed target q-network。

为什么采取这两种策略:增强学习面临的普遍困难在于在使用nonlinear function approximator非线性函数拟合时很容易不稳定unstable甚至发散diverge。不稳定有很多原因,主要是数据的相关性太强导致小的权值更新会导致policy策略大的变化。

Experience replay(经验回放)

描述:将q学习的样本按照(s,a,r,s_)存储起来,进行打乱,采样(batch),而不是直接按照前后的顺序进行学习的。

Experience Replay 的动机是:1)深度神经网络作为有监督学习模型,要求数据满足独立同分布,2)但 Q Learning 算法得到的样本前后是有关系的。为了打破数据之间的关联性,Experience Replay 方法通过存储-采样的方法将这个关联性打破了。摘自点击打开链接

fixed target q-network

描述:通过Q学习第一部分的讲解,我们知道对Q值需要Q估计和Q现实两个估计值,那么这个策略就是在只有一个Q估计网络的情况下,复制一个结构完全一样的Q现实网络--而这个Q现实网络是每几个step才更新一次,更新的时候把Q估计当前的参数权值直接复制过来。


4. 完整的DQN流程(参考上述论文)

强化学习之DQN流程详解_第2张图片

你可能感兴趣的:(深度学习)