当前位置:   article > 正文

深度强化学习-DQN_深度强化学习 f.one_hot(obs.long(), num_classes=observati

深度强化学习 f.one_hot(obs.long(), num_classes=observation_space.n).float()

论文阅读

尽管强化学习智能体已经在许多领域取得了一些成功,其适用性先前被限制在有用的特征可以手工提取,或者完全观测、低维状态空间的领域。这里我们使用最近在训练深度神经网络取得的进展来研发一个新型的人工智能体,叫作深度 Q-网络,其可以直接从高维感知输入中使用端到端强化学习来学到成功的策略。

我们开始于创建一个单一的算法,其可以在许多具有挑战性的任务中发展出广泛的能力。为了达到这个目标,我们研发了一个新型智能体,一个深度 Q-网络(DQN),其能够结合强化学习和一类被称为深度神经网络的人工神经网络。具体地,我们使用一个非常成功的架构,深度卷积网络,其使用分层的平铺卷积过滤器来模拟接受域的效果,因此可以利用图像中呈现的局部空间相关性,并且建立对于像是视角变化或比例缩放等的自然转换的鲁棒性。

我们考虑这样的任务:其中智能体通过观测、动作和奖励的序列和环境交互。智能体的目标是选择动作以最大化累积未来奖励。更正式的,我们使用一个深度卷积神经网络来近似最优动作-价值函数:
Q ∗ ( s , a ) = max ⁡ π E [ r t + γ r t + 1 + γ r t + 2 + … ∣ s t = s , a t = a , π ] \mathcal{Q}^*(s, a) = \max_\pi \mathbb{E}[r_t + \gamma r_{t+1} + \gamma r_{t+2} + \dots | s_t = s, a_t = a, \pi] Q(s,a)=πmaxE[rt+γrt+1+γrt+2+st=s,at=a,π]
这是奖励 r t r_t rt 在每一个时刻 t t t γ \gamma γ 折扣后总和的最大,其中奖励通过行为策略 π = P ( a ∣ s ) \pi = P(a|s) π=P(as),在做出一个观测 ( s ) (s) (s) 并采取一个动作 ( a ) (a) (a) 后得到。

当一个非线性函数近似器,比如神经网络,被用来表示动作-价值(也叫作 Q \mathcal{Q} Q)函数时,强化学习被认为是不稳定的或者甚至是发散的。这份不稳定有几个起因:在观测序列中呈现的相关性,对 Q \mathcal{Q} Q 的小的更新可能会大幅改变策略并因此改变数据分布,以及在动作-价值( Q \mathcal{Q} Q)和目标价值 r + γ max ⁡ a ′ Q ( s ′ , a ′ ) r + \gamma \max_{a'} \mathcal{Q}(s', a') r+γmaxaQ(s,a) 之间的相关性。我们通过一个新型的 Q-learning 变体来解决这些不稳定性,其使用了两个关键思想。第一,我们使用一个受生物学启发的机制,叫作经验回放( experience replay \text{experience replay} experience replay),它会随机化数据,因此移除在观测序列中的相关性并且平滑数据分布上的变化。第二,我们使用一个迭代的更新,其将动作-价值( Q \mathcal{Q} Q)调整为仅周期性更新的目标价值,因此减小和目标的相关性。

然而,也存在其他对于训练在强化学习设置中的神经网络的稳定方法,比如神经拟合 Q-迭代,这些方法涉及网络在几百次迭代上周而复始地重复训练。因此,这些方法,不像我们的算法,不能高效地用在大型神经网络上。我们使用如下图所示的深度卷积神经网络来参数化一个近似价值函数 Q ( s , a ; θ i ) \mathcal{Q}(s, a; \theta_i) Q(s,a;θi),其中 θ i \theta_i θi 是 Q-网络在第 i i i 次迭代的参数(权重)。
在这里插入图片描述

为了使用经验回放,我们存储智能体在每一个时刻 t t t 在数据集 D t = { e 1 , … , e t } D_t = \{ e_1, \dots, e_t \} Dt={ e1,,et} 上的经验 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) 。在学习过程中,我们在经验的样本(或者小批量) ( s , a , r , s ′ ) ∼ U ( D ) (s, a, r, s') \sim U(D) (s,a,r,s)U(D) 上应用 Q-learning 更新,其中样本从存储的样本池中均匀随机抽取。在第 i i i 次迭代的 Q-learning 使用中如下的损失函数:
L i ( θ i ) = E ( s , a , r , s ′ ) ∼ U ( D ) [ ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ; θ i − ) − Q ( s , a ; θ i ) ) 2 ] L_i(\theta_i) = \mathbb{E}_{(s, a, r, s') \sim U(D)} \left[\left(r + \gamma \max_{a'} \mathcal{Q}(s', a'; \theta_i^-) - \mathcal{Q}(s, a; \theta_i) \right)^2 \right] Li(θi)=E(s,a,r,s)U(D)[(r+γamaxQ(s,a;θi)Q(s,a;θi))2]
其中 γ \gamma γ 是决定智能体视界的折扣因子, θ i \theta_i θi 是 Q-网络在第 i i i 次迭代的参数, θ i − \theta_i^- θi 是被用来计算在第 i i i 迭代的目标的网络参数。目标网络参数 θ i − \theta_i^- θi 仅使用 Q-网络参数( θ i \theta_i θi)每 C C C 步一更新,并且在两次更新中保持不变。

在本文中,我们展示了一个单一的架构就可以成功地在许多不同的环境中学到控制策略,其中仅仅使用非常少的先验知识,接收像素和游戏得分作为输入,并且使用相同的算法,每个游戏的网络架构和超参数只关乎人类玩家会有的输入。

方法

模型架构

有多种可能的方式使用一个神经网络来参数化 Q \mathcal{Q} Q,因为 Q \mathcal{Q} Q 将历史-动作对映射到它们的 Q-值的标量预测,先前已有一些方法来将历史和动作作为输入传递给神经网络。这类架构的主要缺点是需要一个分离的前向传播来计算每一个动作的 Q-值,导致代价对于动作数量线性相关。相反,我们使用的架构中对于每一个可能的动作都有一个分离的输出单元,并且仅用状态表示作为神经网络的输入。输出是对应于输入状态的单个动作的预测 Q-值。这种架构的主要好处是仅仅使用一个单个的前向传播过程就可以计算出在给定状态下所有可能动作的 Q-值。

具体的架构,之前的图片所示。神经网络的输入包含了一个经由预处理映射 ϕ \phi ϕ 产生的 84 × \times × 84 × \times × 4 的图像。第一层隐藏层将输入图像卷积成 32 个 8 × \times × 8 且步长为 4 的滤波器,并应用一个 rectifier \text{rectifier} rectifier 非线性特征。第二层隐藏层卷积为 64 个 4 × \times × 4 且步长是 2 的滤波器,后面同样跟着一个 rectifier \text{rectifier} rectifier 非线性特征。第三个卷积为 64 个 3 × \times × 3 且步长是 1 的滤波器,后面跟着一个 rectifier \text{rectifier} rectifier 非线性特征。最后的隐藏层是全连接层,包含有 512 个 rectifier \text{rectifier} rectifier 单元。输出层是一个对每个有效动作有一个输出的全连接线性层。

算法

在每一个时刻智能体从合法游戏动作集 A = { 1 , … , K } \mathcal{A} = \{ 1, \dots, K \} A={ 1,,K} 中选择一个动作 a t a_t at,该动作传给模拟器并修改内部状态和游戏得分。一般来说,环境可能是随机的。模拟器的内部状态无法被智能体观测;相反,智能体从模拟器观测到一幅图像 x t ∈ R d x_t \in \mathcal{R}_d xt

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/295998
推荐阅读
相关标签
  

闽ICP备14008679号