论文研读1(DQN)Playing Atari with Deep Reinforcement Learning

1,951 阅读7分钟

1摘要:

本文讲的是运用了卷积神经网络和Q-learning变体算法的深度强化学习方法来玩arita游戏,简单地说就是输入一个原始的游戏画面到卷积神经网络中,输出值函数,然后进行动作选择

2介绍:

对于一般的对高纬度视频、语音数据进行控制的RL方法中,手动构建特征函数是非常费力的,所以本文采用深度学习技术来自己学习如何构建特征函数

不过强化学习与深度学习结合会有一些问题出现:

1. 大多数深度学习的数据需要标签,而强化学习不从数据和标签中学习,而是从reward中学习

2. 大多数深度学习的数据都是独立不相干的,而强化学习往往会遇到高度相关的状态

3. 深度学习的数据往往是固定不变的,而强化学习的数据分布会因为算法的更新而发生改变

所以本文使用卷积神经网络可以解决上述所有问题,神经网络由Q-learning algorithm来训练,使用stochastic gradient descent来更新权重,同时我们使用了experience replay 机制来减轻数据相关性和非平稳分布的影响

注:平稳,即与时间无关,意味着系统达到稳定状态;假设一个MDP,他的初始分布是pi,一个轨迹的转移概率矩阵为p,则无论什么时候无论如何转移pi*p=pi;直观意思上讲,如果Pi是该链的初始分布并且是平稳分布,那么在任何一个时间点上面,该链的分布都是该平稳分布,或者说,从长期来看,Pi向量中的任何一个元素值都是该链会实现在相应状态的概率值

3背景:

环境由arita emulator充当;

x_t:当前游戏屏幕的原始像素的向量

r_t:reward

s_t:state,在本文指的是一个序列:s_t=x_1,a_1,x_2,a_2,...,a_{t-1},x_t

return:

R_{t}=\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} r_{t^{\prime}}

optimal action-value function:

Q^{*}(s, a)=\max _{\pi} \mathbb{E}\left[R_{t} | s_{t}=s, a_{t}=a, \pi\right]

bellman equation: Q^{*}(s, a)=\mathbb{E}_{s^{\prime} \sim \mathcal{E}}\left[r+\gamma \max _{a^{\prime}} Q^{*}\left(s^{\prime}, a^{\prime}\right) | s, a\right]

这是一个value iteration的迭代算法

由收敛定理知:Q_{i} \rightarrow Q^{*} as i \rightarrow \infty

上面这个算法是基于Q-table的方法,对于arita游戏不适用

因为Q-table是基于表格的方法,是一种离散的方法,需要把每一个时间步的s_ta_tQ(s,a)都记录下来,对于视频游戏arita这种连续变化的任务很难用表格记下来。

故提出一下函数逼近的算法:

Q(s, a ; \theta) \approx Q^{*}(s, a)

我们使用Q-network来更新权重 \theta,更新的loss function:

L_{i}\left(\theta_{i}\right)=\mathbb{E}_{s, a \sim \rho(\cdot)}\left[\left(y_{i}-Q\left(s, a ; \theta_{i}\right)\right)^{2}\right]

y_{i}=\mathbb{E}_{s^{\prime} \sim \mathcal{E}}\left[r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta_{i-1}\right) | s, a\right]

朝着梯度下降的方向更新\color{red}{\theta朝着loss\,function梯度下降的方向更新}

\nabla_{\theta_{i}} L_{i}\left(\theta_{i}\right)=\mathbb{E}_{s, a \sim \rho(\cdot) ; s^{\prime} \sim \mathcal{E}}\left[\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta_{i-1}\right)-Q\left(s, a ; \theta_{i}\right)\right) \nabla_{\theta_{i}} Q\left(s, a ; \theta_{i}\right)\right]

这是一个,的深度强化学习方法\color{red}{这是一个off-policy,model-free;non-linear\,function\,approximation的深度强化学习方法}

4相关工作:

致命三因素: td、off-policy、function approximation

在《reinforcement learning-an introduction》这本书的第11章第三节就有详细说到这个问题。

最后得出的结论是:?『当三者同时出现,会导致系统不稳定;只出现两个时则可避免不稳定性。』\color{red}{『当三者同时出现,会导致系统不稳定;只出现两个时则可避免不稳定性。』}?

所以会发散!\color{red}{所以\,Q-learning\,with\,non-linear\,function\,approximators会发散!}

可以用算法来解决\color{red}{true\,gradiant\,TD算法来解决}

具体的本文没有详细说明,可以参考《reinforcement learning-an introduction》这本书。

5deep reinforcement learning:

一个trick:experience replay

experience:

e_{t}=\left(s_{t}, a_{t}, r_{t}, s_{t+1}\right)

记忆库:

\mathcal{D}=e_{1}, \ldots, e_{N}

如何使用experience replay机制: During the inner loop of the algorithm, we apply Q-learning updates, or minibatch updates, to samples of experience,e ∼ D, drawn at random from the pool of stored samples. After performing experience replay,the agent selects and executes an action according to an \epsilon-greedy policy.

即在更新式子中,我们的是从记忆库中随机抽取的一段中得到的。\color{red}{即在Q-learning更新式子中,我们的TD-target是从记忆库D中随机抽取的一段experience中得到的。}

experience replay 的优点

  1. data efficiency

  2. vs on-policy :on-policy 下直接从连续的样本学习是低效的,因为样本之间有很强的相关性->样本几乎没有变化->学不到新的东西,experience replay机制打破了这种相关性,使得样本之间相对独立

  3. vs on-policy:on-policy很难平衡探索和开发,很容易陷入局部最优点,experience replay的 bahavior distribution(即off-policy)就能够减轻这种问题

experience replay 的缺点:

  1. 记忆库需要内存处理,难以解决状态繁多的复杂问题

  2. 随机抽取记忆库的experience,不区分他们的重要性,这样会很低效,可以考虑prioritized sweeping 的解决方法 ( 有一篇论文就有专门提到这个小trck ,效果提升很棒)

5.1预处理

  1. pixel 降维 -> 84×84 整个过程用预处理函数\phi表示 \color{red}{state\_t=\phi(s_t)}

  2. 卷积神经网络输入state\phi,然后输出各种action的概率

注:参数初始化的时候,使用 autoencoder (自编码器)来对参数进行一个合理的初始化。

autoencoder 是一种无监督的学习算法,主要用于数据的降维或者特征的抽取,在深度学习中,autoencoder可用于在训练阶段开始前,确定权重矩阵的初始值。详见:blog.csdn.net/qq_39521554…

6实验:

实验中用到的几个小trick:

  1. 统一了不同游戏的reward设置,正奖励为+1,负奖励为-1,没有奖励0,这样子统一化,好处是限制误差的比例并且可以使用统一的训练速度来训练不同的游戏(??这个好处是怎么来的,摸不着头脑)

  2. 梯度更新算法使用了RMSProp algorithm(root mean square prop算法),能够提高梯度下降的速度 详见:www.jianshu.com/p/e3458bf97…

  3. ϵ-greedy 的 ϵ (随即搜索的比重)前1百万次从1 下降到0.1,然后保持不变。这样一开始的时候就更多的是随机搜索,之后慢慢使用最优的方法。

  4. simple frame-skipping technique,每k frame才执行一次动作,而不是每帧都执行。在实际的研究中,如果每帧都输出一个动作,那么频率就太高,基本上会导致失败。在这里,中间跳过的帧使用的动作为之前最后的动作。这和人类的行为是一致的,人类的反应时间只有0.1,也是采用同样的做法。并且这样做可以提速明显的。那么这里Deepmind大部分是选择k=4,也就是每4帧输出一个动作。

6.1 Training and Stability

如何在训练的过程中估计训练的效果在RL上是个Challenge。毕竟不像监督学习,可以有training 和validation set。那么只能使用reward,或者说平均的reward来判定。也就是玩的好就是训练的好。

但是存在问题就是reward的噪声很大,因为很小的权值改变都将导致策略输出的巨大变化

以此同时,平均Q值的变化却是稳定的,这是必然的,因为每次的Target计算都是使用Q的最大值。:

关键的是所有的实验都收敛了!

虽然没有理论支持为什么保证收敛,但是就是实现了,Deepmind的方法可以在一个稳定的状态下使用大规模的深度神经网络结合增强学习。

游戏智能通关的基本流程如下图

各种算法效果比较:

HNeat 算法即H... Evolving Neural Networks through Augmenting Topologies

Sarar 用的是人工提取特征的方法

7总结

本文介绍了一种新的用于强化学习的深度学习模型,并展示了它对雅达利2600电脑游戏的复杂控制策略的掌握能力。

只使用原始像素作为输入。我们还提出了一种variant of online Q-learning,它将stochastic minibatch updatesexperience replay memory相结合,以简化针对RL的深度网络训练。

这是深度强化学习真正应用的有效果的第一篇论文,之后几乎所有深度强化学习算法都是以DQN为基础的,通过本文我也基本清楚了DQN算法或者说是一般的深度强化学习算法的整个流程,为之后学习基于分层强化学习的多机器人路径规划算法打好基础。