1、绪论
论文《Playing Atari with Deep Reinforcement Learning》 链接
早些时候,从视觉和语言等高维感官输入来控制主体的一些RL应用都依赖于与线性值函数或策略表示相结合的手动设计的特征。现在,在深度学习方面的进展使得从原始的感官数据中提取高级特征成为可能。这些方法利用了一系列的神经网络结构,包括卷积网络、多层感知器、受限玻尔兹曼机和递归神经网络,并利用了监督和非监督学习。
1)DQN是Q-Learning与深度学习相结合:
- 使用了 CNN 来构建值函数逼近器
- 使用了经验回放机制 —— experience replay mechanism
2)从深度学习的角度来看,强化学习存在一些挑战:
- DL需要大量带标签的样本进行监督学习;RL算法必须能够从稀疏的、有噪声的和延迟的标量奖励信号中学习。
- 大多数深度学习算法假设数据样本是独立的,而在强化学习中,通常会遇到高度相关的状态序列。
- DL目标分布固定;RL的分布一直变化。
- 使用非线性网络表示值函数时出现不稳定等问题。(2015)
3)如何解决:
- 通过Q-Learning使用reward来构造标签(对应问题1)
- 通过experience replay的方法来解决相关性及非静态分布问题(对应问题2、3)
- 使用一个CNN(MainNet)产生当前Q值,使用另外一个CNN(Target)产生Target Q值(对应问题4)(2015)
2、公式定义
我们以动作、观察和奖励为序列来考虑 agent 与环境交互的任务。在每个时间步,代理从动作集 A = { 1 , . . . , K } A = \{1,...,K\} A={1,...,K}中选择一个动作 a t a_t at 。执行这个动作之后,环境修改其状态,并且获得一个奖励。
论文中使用的环境是 Atari emulator,也就是一些简单的 Atari 游戏,状态是模拟器当前的图片, x t ∈ R d x_t \in \R^d xt∈Rd,表示当前屏幕的原始像素值的向量。奖励 r t r_t rt 表示游戏分数的变化。
由于代理只观察当前屏幕的图像,因此任务是部分观察的,即仅从当前的 x t x_t xt 是不可能完全了解当前情况的。因此,考虑一组动作和观察的序列: s t = x 1 , a 1 , x 2 , . . . , a t − 1 , x t s_t = x_1,a_1,x_2,...,a_{t-1},x_t st=x1,a1,x2,...,at−1,xt 。使用这些序列来学习游戏策略。
注:假设仿真器中的所有序列都在有限的时间步长内终止。这种形式产生了一个大型但有限的马尔可夫决策过程(MDP),其中每个序列都是一个不同的状态。最终,使用这些序列作为状态,然后就能使用标准的强化学习了。
代理的目标是通过以最大化未来回报的方式选择动作来与仿真器交互。同时,设置了一个折扣因子:
γ
\gamma
γ 。定义时间 t 的未来折扣回报:
定义最优动作值函数:
Q
∗
(
s
,
a
)
Q^*(s,a)
Q∗(s,a)
最优动作值函数遵循 Bellman 方程:
对于简单的RL应用,可以通过使用 Bellman 方程作为迭代更新来估计动作值函数。这里使用函数逼近器来估计动作值函数: Q ( s , a ; θ ) = Q ∗ ( s , a ) Q(s,a;\theta) = Q^*(s,a) Q(s,a;θ)=Q∗(s,a)
在强化学习中,通常可以是一个线性函数逼近器,但有时也使用非线性函数逼近器,如神经网络。我们把具有权重 θ \theta θ 的神经网络函数逼近器称为 Q-network 。
Q-network 可以通过最小化损失函数
L
i
(
θ
i
)
L_i(\theta_i)
Li(θi) 来训练:
其中:
ρ(s,a) 是一个的概率分布,我们称之为行为分布。
损失函数的梯度:
可以利用随机梯度下降法优化损失函数。
3、深度强化学习
目标是将强化学习算法与直接作用于RGB图像并利用随机梯度更新有效处理训练数据的深度神经网络连接起来。
1)重要技术:
experience replay:把每个时间步的 agent 经验 e t = ( s t , a t , r t , s t + 1 ) e_t = (s_t,a_t,r_t,s_{t+1}) et=(st,at,rt,st+1) 存入 replay memory 中。用于解决相关性及非静态分布问题。
2)Deep Q-learning优点:
- 经验的每一步都可能用于许多权重更新,从而提高了数据效率。
- 直接从连续样本学习是低效的,因为样本之间的相关性很强;随机化样本打破了这些相关性,因此减少了更新的方差。
- 当学习on-policy时,当前的参数决定了下一个数据样本,可能会偏离,并且陷入局部最小。通过使用经验回放,对行为分布的许多先前的状态进行平均,学习更加平滑,避免参数的振荡或发散。
- End-to-End 训练方式.
4、DQN算法伪代码
5、预处理和模型架构
1)预处理
直接使用 Atari 原始帧,即 210x160 像素、128调色板的图像,会有很高的计算要求,因此应用了一个基本的预处理步骤,目的是降低输入的维数。
对原始帧进行预处理,首先将其RGB表示转换为灰度,然后将其降采样为 110x84 图像。最终的输入表示是通过裁剪大致捕捉到游戏区域的图像的 84x84 区域得到的。最后的裁剪阶段是必需的,因为使用了2D卷积的GPU实现,它需要正方形的输入。算法1中的函数 ϕ \phi ϕ 将这种预处理应用到历史记录的最后4帧,并将它们堆叠起来,产生 Q-function 的输入。
2)模型架构
以前 Q 将历史动作对映射为其Q值的标量估计,历史和动作被用作神经网络的输入。这种架构的主要缺点是需要一个单独的前向传递来计算每个动作的q值,从而导致成本与动作的数量成线性比例。
现在使用新的模型架构,每个可能的动作都有一个单独的输出单元,只有状态表示是神经网络的输入。输出对应于输入状态单个动作的预测q值。这种类型架构的主要优点是计算给定状态下所有可能动作的q值,只需通过网络进行一次前向传递。
6、实验
对7款流行的 ATARI 游戏进行了实验:Beam Rider,Breakout,Enduro,Pong,Q*bert,Seaquest,Space Invaders。在所有7款游戏中使用了相同的网络架构、学习算法和超参数设置,这表明我们的方法足够健壮,可以在不包含特定游戏信息的情况下处理各种游戏。
当在真实和未修改的游戏中评估代理时,只在训练期间对游戏的奖励结构做了一个改变。由于每个游戏的分数都有很大的不同,所以将所有正奖励设置为1,所有负奖励设置为-1,保持0奖励不变。
- 使用的 RMSProp 算法的小批量大小为32。
- 训练期间的行为策略使用 ϵ \epsilon ϵ-greedy ,且 ϵ \epsilon ϵ 从1线性递减到固定值0.1。
- 总共训练了1000万帧,并使用了具有100万最新帧的 replay memory。
在监督学习中,通过在训练集和验证集上对模型进行评估,可以很容易地跟踪模型在训练中的表现。然而,在强化学习中,在训练过程中准确地评估agent的进展是具有挑战性的。
这里的评估标准是agent在一集或一场游戏中所收集到的总奖励除以若干游戏的平均值。图2中最左边的两个图形显示了在游戏Seaquest和Breakout中训练期间平均总奖励的变化。
另一个更稳定的度量是策略的估计行动-值函数Q,它提供了agent在任何给定状态下通过遵循策略可以获得多少折扣奖励的估计值。在训练开始之前,通过运行一个随机策略来收集一组固定的状态,并跟踪这些状态的最大预测值Q的平均值。图2中最右边的两个图形表明,平均预测Q的增长比agent获得的平均总奖励曲线要平滑的多。