序言
在序列建模的广阔领域中,循环神经网络( RNN \text{RNN} RNN)及其变体,如长短期记忆网络( LSTM \text{LSTM} LSTM)和门控循环单元( GRU \text{GRU} GRU),扮演着至关重要的角色。然而,这些网络虽然在处理序列数据方面展现出强大的能力,却常面临长期依赖问题的挑战,如梯度消失与梯度爆炸。此外,传统 RNN \text{RNN} RNN及其变体在记忆具体事实方面存在局限性,难以像人类一样明确保存和操作相关信息片段。因此,外显记忆的概念应运而生,旨在通过引入额外的记忆组件来增强神经网络对序列信息的处理能力。
外显记忆
-
智能需要知识并且可以通过学习获取知识,这已促使大型深度架构的发展。然而,存在不同种类的知识。
- 有些知识是隐含的、潜意识的并且难以用语言表达——比如怎么行走或狗与猫的样子有什么不同。
- 其他知识可以是明确的、可陈述的以及可以相对简单地使用词语表达——每天常识性的知识,如 ‘‘猫是一种动物’’,或者为实现自己当前目标所需知道的非常具体的事实,如 ‘‘与销售团队会议在 141 室于下午 3:00 开始 ‘‘。
-
神经网络擅长存储隐性知识,但是他们很难记住事实。
- 被存储在神经网络参数中之前,随机梯度下降需要多次提供相同的输入,即使如此,该输入也不会被特别精确地存储。
- Graves et al. (2014) \text{Graves et al. (2014)} Graves et al. (2014) 推测这是因为神经网络缺乏工作存储 ( working memory \text{working memory} working memory) 系统,即类似人类为实现一些目标而明确保存和操作相关信息片段的系统。
- 这种外显记忆组件将使我们的系统不仅能够快速 ‘‘故意’’ 地存储和检索具体的事实,也能利用他们循序推论。
- 神经网络处理序列信息的需要,改变了每个步骤向网络注入输入的方式,长期以来推理能力被认为是重要的,而不是对输入做出自动的、直观的反应 ( Hinton, 1990 \text{Hinton, 1990} Hinton, 1990) 。
-
为了解决这一难题, ( Weston et al., 2014 \text{Weston et al., 2014} Weston et al., 2014) 引入了记忆网络 ( memory network \text{memory network} memory network),其中包括一组可以通过寻址机制来访问的记忆单元。
- 记忆网络原本需要监督信号指示他们如何使用自己的记忆单元。
- (
Graves et al., 2014
\text{Graves et al., 2014}
Graves et al., 2014) 引入的神经网络图灵机 (
neural Turing machine
\text{neural Turing machine}
neural Turing machine),不需要明确的监督指示采取哪些行动而能学习从记忆单元读写任意内容,并通过使用基于内容的软注意机制(见 (
Bahdanau et al., 2015
\text{Bahdanau et al., 2015}
Bahdanau et al., 2015)和后续篇章:
深度学习应用 - 自然语言处理篇 - 使用注意机制并对齐数据片段
),允许端到端的训练。 - 这种软寻址机制已成为其他允许基于梯度优化的模拟算法机制的相关架构的标准:
- Sukhbaatar et al., 2015 \textbf{Sukhbaatar et al., 2015} Sukhbaatar et al., 2015;
- Joulin and Mikolov, 2015 \textbf{Joulin and Mikolov, 2015} Joulin and Mikolov, 2015;
- Kumar et al., 2015a \textbf{Kumar et al., 2015a} Kumar et al., 2015a;
- Vinyals et al., 2015a \textbf{Vinyals et al., 2015a} Vinyals et al., 2015a;
- Grefenstette et al., 2015 \textbf{Grefenstette et al., 2015} Grefenstette et al., 2015。
-
每个记忆单元可以被认为是 LSTM \text{LSTM} LSTM和 GRU \text{GRU} GRU 中记忆单元的扩展。不同的是,网络输出一个内部状态来选择从哪个单元读取或写入,正如数字计算机读取或写入到特定地址的内存访问。
-
产生确切整数地址的函数很难优化。
- 为了缓解这一问题, NTM \text{NTM} NTM实际同时从多个记忆单元写入或读取。
- 读取时,它们采取许多单元的加权平均值。
- 写入时,他们对多个单元修改不同的数值。
- 用于这些操作的系数被选择为集中在一个小数目的单元,如通过 softmax \text{softmax} softmax函数产生它们。
- 使用这些具有非零导数的权重允许函数控制访问存储器,从而能使用梯度下降法优化。
- 关于这些系数的梯度指示着其中每个参数是应该增加还是减少,但梯度通常只在接收大系数的存储器地址上变大。
-
这些记忆单元通常扩充为包含向量,而不是由 LSTM \text{LSTM} LSTM或 GRU \text{GRU} GRU 存储单元所存储的单个标量。增加记忆单元大小的原因有两个。
- 原因之一是,我们已经增加了访问记忆单元的成本。我们为产生用于许多单元的系数付出计算成本,但我们预期这些系数聚集在周围小数目的单元。通过读取向量值,而不是一个标量,我们可以抵消部分成本。
- 使用向量值的记忆单元的另一个原因是,它们允许基于内容的寻址( content-based addressing \text{content-based addressing} content-based addressing),其中从一个单元读或写的权重是该单元的函数。如果我们能够生产符合某些但并非所有元素的模式,向量值单元允许我们检索一个完整向量值的记忆。这类似于人们能够通过几个歌词回忆起一首歌曲的方式。我们可以认为基于内容的读取指令是说, ‘‘检索一首副歌歌词中带有’ 我们都住在黄色潜水艇’ 的歌’’。当我们要检索的对象很大时,基于内容的寻址更为有用——如果歌曲的每一个字母被存储在单独的记忆单元中,我们将无法通过这种方式找到他们。通过比较,基于位置的寻址 ( location-based addressing \text{location-based addressing} location-based addressing) 不允许引用存储器的内容。我们可以认为基于位置的读取指令是说 ‘‘检索 347 档的歌的歌词’’。即使当存储单元很小时,基于位置的寻址通常也是完全合理的机制。
-
如果一个存储单元的内容在大多数时间步上会被复制(不被忘记),则它包含的信息可以在时间上向前传播,随时间向后传播的梯度也不会消失或爆炸。
-
外显记忆的方法在
图例1
说明,其中我们可以看到与存储器耦接的 ‘‘任务神经网络’’。- 虽然这一任务神经网络可以是前馈或循环的,但整个系统是一个循环网络。
- 任务网络可以选择读取或写入的特定内存地址。
- 外显记忆似乎允许模型学习普通 RNN \text{RNN} RNN或 LSTM RNN \text{LSTM RNN} LSTM RNN不能学习的任务。
- 这种优点的一个原因可能是因为信息和梯度可以在非常长的持续时间内传播(分别在时间上向前或向后)。
-
作为存储器单元的加权平均值反向传播的替代,我们可以将存储器寻址系数解释为概率,并随机从一个单元读取 ( Zaremba and Sutskever, 2015 \text{Zaremba and Sutskever, 2015} Zaremba and Sutskever, 2015)。优化离散决策的模型需要专门的优化算法,将在后续篇章:
深度生成模型 - 通过随机操作的反向传播篇 - 通过离散随机操作的反向传播
中描述。目前为止,训练这些做离散决策的随机架构,仍比训练进行软判决的确定性算法更难。 -
无论是软(允许反向传播)或随机硬性的,用于选择一个地址的机制与先前在机器翻译的背景下引入的注意机制形式相同 ( Bahdanau et al., 2015 \text{Bahdanau et al., 2015} Bahdanau et al., 2015),这在后续篇章:
深度学习应用 - 自然语言处理篇 - 使用注意机制并对齐数据片段
中也有讨论。甚至更早之前, 注意机制的想法就被引入了神经网络,在手写生成的情况下 ( Graves, 2013 \text{Graves, 2013} Graves, 2013),有一个被约束为通过序列只向前移动的注意机制。在机器翻译和记忆网络的情况下,每个步骤中关注的焦点可以移动到一个完全不同的地方 (相比之前的步骤)。 -
循环神经网络提供了将深度学习扩展到序列数据的一种方法。他们是我们的深度学习工具箱中最后一个主要的工具。现在我们的讨论将转移到如何选择和使用这些工具,以及如何在真实世界的任务中应用。
-
具有外显记忆网络的示意图,具备神经网络图灵机的一些关键设计元素。
-
说明:
- 在此图中,我们将模型( ‘‘任务网络’’,这里是底部的循环网络)的 “表示’’ 部分与存储事实的模型(单元格集合)的 ‘‘存储器’’ 部分区分开。
- 任务网络学习 ‘‘控制’’ 存储器,决定从哪读取以及在哪写入(通过读取和写入机制,由指向读取和写入地址的粗箭头指示)。
总结
- 外显记忆是序列建模领域的一项重要进展,它通过为神经网络添加类似于人类工作记忆的系统,使模型能够更好地存储和检索具体事实,并据此进行推理。这种记忆组件不仅提升了模型在处理复杂序列任务时的性能,还促进了更高效的梯度传播,有助于解决长期依赖问题。记忆网络的提出为外显记忆的实现提供了初步框架,而神经网络图灵机等更高级的模型则进一步推动了该领域的发展。
- 未来,随着外显记忆技术的不断成熟,我们有理由相信,序列建模的能力将得到显著提升,为自然语言处理、语音识别、机器翻译等领域带来更加智能和高效的解决方案。