📜  情景记忆和深度 Q 网络

📅  最后修改于: 2022-05-13 01:58:08.118000             🧑  作者: Mango

情景记忆和深度 Q 网络

情景记忆:

情景记忆是一类长期记忆,涉及最近对特定事件、情况和经历的回忆。例如你在大学的第一天。情景记忆的两个重要方面是模式分离和模式完成。

语义记忆在机器学习中以多种方式使用,例如迁移学习、LSTM 等序列、灾难性遗忘等。但是如果您设计智能代理,我们可以将情景记忆的各个方面用于我们的目的。

机器学习中的情景记忆:

情景记忆在深度强化学习中的价值正在增加,因为许多新的强化学习论文在其代理架构中使用情景记忆。在基于 DRL 的代理中,这通常采用添加外部内存的形式,类似于添加外部内存系统的形式,类似于将差分神经计算机添加到代理的策略网络中,以决定采取或不采取哪些行动。

回答这些问题的一个步骤可能是检查哺乳动物的情节记忆。许多人认为海马体的形成与一般记忆,特别是情节记忆有关。

情节记忆的组织:

我们已经说过情景记忆系统会跟踪代理信念的变化,但我们还没有阐明这种记忆是如何组织的,以及信息是如何存储和检索的。



为了使记忆系统有效,我们必须满足三个属性:

  • 从单次暴露于环境中存储准确的记忆。
  • 从部分提示中检索记忆。
  • 能够存储和回忆大量经验。

建筑学:

有许多架构被提议用于在强化学习中使用情景记忆,我们在这里讨论的是由微软研究院的研究人员提出的“情景记忆深度 Q 网络”论文。

  • 深Q-网络(DQN):一个成熟的技术来执行上述任务Q学习,我们决定在一个名为Q-功能函数,它是对算法的成功非常重要。 DQN 使用神经网络作为 Q 函数来逼近动作值 Q(s, a, \theta) 其中\theta       网络的参数和(s,a)表示状态-动作对 DQN 的两个重要组成部分是目标网络和经验中继。使用随机梯度下降优化神经网络的参数以最小化损失函数:

(r_t +\gamma max_{a^{'}} Q_{\bar{\theta}}(s_{t+1},a^{'}) -Q_{\bar{\theta}}(s_{t},a^{'}))^{2}

其中 r t表示t 处的奖励,\gamma 是折扣因子,\bar{\theta} 是目标网络的参数。

  • 情景记忆深度 Q 网络 (EMDQN):通常情景记忆通过引入接近确定性的环境来直接控制,以提高 RL 中的数据效率。在本文中,作者使用Episodic Control来加速DQN的训练。智能体能够快速锁定高奖励策略,即使它保持对状态泛化执行缓慢优化的 NN 训练。该算法利用了两个系统的优势,一个模拟提供推理目标的纹状体,用 S 表示,另一个模拟提供记忆目标的海马体,由 H 生成。 因此,我们新的损失函数是:
  • L = \alpha(Q_{theta} -S)^{2} +\beta(Q_{theta} -H)^{2}       .
  • 其中 Q θ被称为由 θ 参数化的价值函数。
  • S(s_t, a_t) = r_t + \gamma\underset{a^{'}}{max}\left ( Q_{\theta} s_{t+1}, a^{'} \right )
  • 记忆目标 H 定义为最佳记忆回报,如下所示:
  • H(s_t, a_t) = \underset{i}{max} R_{i} \left ( s_t, a_t \right ), i \epsilon \left \{ 1,2, ... E \right \}
  • 其中,E 表示智能体面临的情节数,R i (s, a) 表示在i 个情节中在状态s下采取行动a时的未来回报。使用这个模型的好处是:
    • 更快的奖励传播: EMDQN利用情景记忆的最大回报来传播奖励,弥补了单步奖励更新导致学习慢的缺点。对于接近确定性的环境,情景记忆中包含的每个奖励都是迄今为止最佳的。因此,使用内存目标H ,最佳轨迹中的奖励可以传播到 Q θ (s, a) 的参数。
    • 两种学习模型的结合通过情景记忆和深度Q网络的结合,网络将更好地模拟人脑, 目标函数是这样的:

\underset{\theta}{min}\sum_{(s_i ,a_i, r_i, s_{i+1}\epsilon D) } \left [ (Q_{theta}(s_i, a_i) - S(s_i,a_i))^{2} + \lambda(Q_{theta}(s_i, a_i) - H(s_i,a_i))^{2}\right ]

其中,D 是小批量剧集。添加参数如\lambda       提供在情景记忆和深度 Q 网络之间切换的额外灵活性。

  • 高采样效率: EMDQN 引入了一种捕获更多样本信息的方法。在训练过程中,它过滤出情景记忆的最佳回报,并将知识整合到神经网络中,从而更有效地利用样本。在之前的 RL 算法中,无论奖励如何,所有样本都是统一采样的,这导致由于零奖励的频繁出现而导致训练性能不佳。

下面是这个 EMDQN 方法的架构:

EMDQN架构

由 4 个历史帧表示的状态s由卷积神经网络处理,并由两个全连接层前向传播以计算 Q θ (s, a)。状态s乘以从高斯分布中抽取的随机矩阵并投影到向量h 中,传入内存表查找对应值H(s, a) ,然后使用H(s, a)Q θ进行正则化(s, a)。为了有效地查找表,我们使用 kd-Tree 来构造内存表。所有经验元组以及每个情节跟踪都被缓存。 .与 DQN 中的目标网络类似,它维护一个目标内存表以提供稳定的内存值,该值使用先前缓存的转换进行更新。

执行

  • 在这个实现中,我们将在 Pong 游戏上训练 EMDQN。为此,我们将使用 Collaboratory。
Python3
# clone the original EMDQN repository
! git clone https://github.com/LinZichuan/emdqn
 
# switch to TensorFlow v1.0 to run this.
%tensorflow_version 1.x
 
# Install required modules
! cd emdqn && pip install -e .
 
# run train.py file in atari folder
# Due to resource constraint we will take (2 * 10^6) steps.
# The original paper runs on 4e7 epoch.
! cd emdqn/baselines/deepq/experiments/atari && python train.py --emdqn --steps 2e6
 
# Plot Reward with steps
import matplotlib.pyplot as plt
import pandas as pd
df =pd.read_csv('/content/emdqn/baselines/deepq/experiments/atari/result_Pong_True',
                header=None)
plt.plot(df[0],df[1])


qec_mean: -1.5634830438441465
qec_fount: 0.93
------------------------------------
| % completion          | 1        |
| steps                 | 1.97e+06 |
| iters                 | 4.91e+05 |
| episodes              | 470      |
| reward (100 epi mean) | -19.1    |
| exploration           | 0.01     |
------------------------------------

ETA: 1 minute

------------------------------------
| % completion          | 1        |
| steps                 | 1.98e+06 |
| iters                 | 4.93e+05 |
| episodes              | 471      |
| reward (100 epi mean) | -19      |
| exploration           | 0.01     |
------------------------------------

ETA: less than a minute

------------------------------------
| % completion          | 1        |
| steps                 | 1.99e+06 |
| iters                 | 4.95e+05 |
| episodes              | 472      |
| reward (100 epi mean) | -18.9    |
| exploration           | 0.01     |
------------------------------------

ETA: less than a minute

步骤与奖励

  • 从上图可以得出结论,随着步数的增加,模型在 Pong 游戏任务上表现更好,在获得 150 万次奖励后,奖励提升更大。原始模型是在 4700 万个 epoch 上训练的,由于时间和资源限制以及 colab 的内存有限,我们无法训练那么多。

参考:

  • 情景记忆和深度 Q 网络