5. 值函数近似——Deep Q-learning
前4篇,我们都是假设动作值函数Q是一张大表,状态-动作对都是一一对应的。这对于现实应用状态动作空间很大的情况来说,计算量就非常的大,甚至根本无法求解这样一张大表。因此,我们引入状态值函数v,由参数$\bf{w}$描述,我们希望,
\[\hat v(s,{\bf{w}}) \approx {v_\pi }(s)\]
1. 经验回放:为了打破数据相关性,文献[1]提出了Deep Q-leaning。该工作在Q-learning的基础上引入了经验回放机制,Agent将与环境交互得到的每一步经验都存储在一个样本集中。算法内部更新时,从存储的样本池中随机抽取数据,从而消除了观测序列中的相关性,并平滑了数据分布中的变化。具体来说,第一在很多次权重更新中,每一步经验都有可能被用到,这就加大了数据的使用效率;第二,直接从强关联的连续样本中学习是无效的,随机抽取样本打破了相关性,从而降低了更新的偏差;第三,On-policy学习时,当前的参数决定了下一步的训练参数的数据样本。比如当前的最大动作是朝左,那么训练样本大部分就是朝左的样本。这样一来参数可能被卡在一个很差的局部极小值,甚至分散。通过使用经验回放综合许多之前的状态,样本分布被平均化了,克服了数据样本不断变化的问题,平滑了学习和避免参数的振荡或发散。另外,我们都是从样本集中均匀采样,但是由于存储样本缓存是有限的,所以总是用最近的记忆覆盖,所以有一定的局限性,我们在实际中采用更复杂的抽样策略从而更有效的学习。
2. 设置离线和在线两层神经网络:为了进一步消除相关性和提高训练效率,在文献[1]的基础上,文献[2]提出了Deep Q-network。该工作在Deep Q-learning的基础上,创建一个双层神经网络,一个离线的训练网络$Q$的参数$\theta$和一个在线的目标网络$Q'$的参数$\theta^-$。算法每一步更新训练网络$Q$的参数$\theta$,每C步,令$\theta^- = \theta$把训练网络$Q$的参数$\theta$直接赋给目标网络$Q'$的参数$\theta^-$。
算法流程如下,
[1] Mnih V , Kavukcuoglu K , Silver D , et al. Playing Atari with Deep Reinforcement Learning[J]. Computer Science, 2013.
[2] Mnih V, Kavukcuoglu K, Silver D, et al. Human-level control through deep reinforcement learning[J]. Nature, 2015, 518(7540): 529-533.