可读写的外部记忆模块可以在事实的记忆和基于记忆的推理上扩充神经网络的能力。神经图灵机利用注意力机制设计了一种对内存模块的读写机制,并以循环神经网络作为控制器,实现了排序、复制等算法。为了在更广泛的应用(例如自然语言处理)中缩短训练时间或加快收敛速度,我们在神经图灵机的基础上设计
人类所获取的知识种类繁多,有些是能够清晰表达的,例如人类是一种哺乳动物,有些信息是隐含的、难以用语言表达的,例如描述人类的心理状态。神经网络依靠其多层的网络结构能够从简单到复杂表示不同的概念,擅长存储隐性知识,所以神经网络在模式识别任务中可以取得很好的效果[1] [2]。然而神经网络却难以记住非常明确具体的事实[3],例如在输入序列中陈述了“开会时间是三点半”,而输出结果依赖于这一事实时,神经网络通常无法给出满意的结果。尽管可以对输入做出直观的反应,但对于现代人工智能来说,推理能力是至关重要的[4]。
很多人工智能问题可以归纳为序列问题,循环神经网络(Recurrent Neural Network, RNN)过去在机器翻译、文本生成等序列任务上取得了非凡的成就,得益于其能够在时间序列中学习到如何转换和表示输入数据。但是标准的RNN 会遇到梯度消失的长期依赖问题,长短期记忆网络(Long Short-term Memory, LSTM)通过学习控制输入和隐藏状态,使反向传播的梯度可以在更长时间序列中进行,从而避免了这一问题[5]。另外,由于RNN 使用网络结构本身存储过去时刻的内容,仍会遇到无法精确地存储具体事实的问题,对于某些需要记录和推理的任务,改进过的LSTM 网络依然无法取得好的结果,主要原因是被编码在隐藏状态和权值参数中的事实记忆过于微弱。
解决这一问题的方法是为神经网络添加额外的内存模块,类似人类为实现一些目标而明确保存和操作相关信息片段的行为,将神经网络作为控制器控制内存模块中的写入位置,在需要的时候取出对应位置的信息, 从而在少量训练样本中提取更关键的推理信息[6]。
Weston 等人因此提出了记忆神经网络[7] [8], 描述了拥有内存模块的神经网络的基本结构, Graves 等人[9]利用RNN 的图灵完备性[10]提出了神经图灵机(Neural Turing Machine, NTM),仿照冯诺依曼的计算机结构,使用外部内存模块扩展了RNN,使其能够完成对输入数据的复制和排序等功能。
与神经图灵机的注意力机制不同, 神经随机读取机[11]采用强化学习的训练方法,在离散的内存模块上进行训练,实现了一些简易的算法。可微分神经计算机(Differentiable Neural Computer, DNC) [12]通过学习相互关联的信息,实现了伦敦地铁路径搜寻、族谱推断等包含复杂推理功能的任务。
由于这些工作将所有的输入数据均视为有效的重要信息,但是并非所有信息都是重要的,例如在自然语言处理中一些名词和动词比介词和副词更加重要。
在这种情况下, 神经图灵机会遇到收敛速度过慢、训练时间过长的问题。我们在神经图灵机的基础上提出了基于全局内存的读写机制,使控制器网络在任意时刻可以提取过去多个时刻的信息,这对于大部分序列任务来说能够在有限的训练时间内快速收敛。
由于网络结构适用于较长的序列,将其命名为长期记忆神经图灵机(Long-term Memory Neural Turing Machine, L-NTM)。