神经网络图灵机(Neural Turing Machines, NTM)论文完整翻译

神经网络图灵机

Alex Graves gravesa@google.com Greg Wayne gregwayne@google.com Ivo Danihelka danihelka@google.com

Google DeepMind, London, UK

摘要

本文通过引入一个使用注意力程序进行交互的外部存储器(external memory)来增强神经网络的能力。新系统可以与图灵机或者冯·诺依曼体系相类比,但每个组成部分都是可微的,可以使用梯度下降进行高效训练。初步的结果显示神经网络图灵机能够从输入和输出样本中推理出(infer)简单的算法,如复制、排序和回忆。

1. 简介

计算机程序在执行计算任务的过程中(Von Neumann, 1945)使用了三个基本机制:初等运算(如算术操作),逻辑控制流(分支循环)和可读写的存储器。虽然在建模复杂数据方面取得了广泛的成功,现代机器学习理论却普遍忽略了对控制流和存储器的使用。

由于其对带有时间属性的数据的进行学习和复杂转换的能力,递归神经网络脱颖而出。进一步,RNN又被证明是图灵完全等价的 (Siegelmann and Sontag, 1995),因而只要合理建模,它就可以模拟任何计算过程。但是理论上可行不代表实践中容易实现。为此,我们增强了标准递归网络的能力从而使算法型机器学习任务的解决方案得到简化。这个增强方案主要是依赖一个较大的、可寻址的存储器,而相似地,图灵机使用一个无穷存储带增强了有穷状态机,因而,我们称这种新设备为”神经网络图灵机”。不同于图灵机的是,NTM是一个可微的计算机,能够使用梯度下降进行训练,对于学习程序来说是一个很实用的机制。

在人类认知能力中, the process that shares the most similarity to algorithmic operation is known as “working memory.”。在神经生理学中,工作记忆的运行机制尚不清楚,根据字面意思,可以理解为是信息的短期存储和基于规则的操作集合(Baddeley et al., 2009)。在计算机术语中,这些规则就是程序,存储的信息构成了这些程序的参数。既然NTM被设计用来对“快速创建的变量”应用近似的规则,所以它模仿了一个工作记忆系统。快速创建的变量(Rapidly-created variables) (Hadley, 2009) 是可以快速绑定到存储槽的数据,就像传统计算机中数字3和4被放在寄存器然后相加得到7(Minsky, 1967)。由于NTM架构使用了注意过程来对存储器进行选择性读写,所以NTM使用了另一个相似的工作记忆模型。与大多数工作记忆模型相比,我们的架构能够学习使用他的工作记忆,而不需要为符号数据引入一系列固定的程序。

本文首先对在心理学、语言学和神经科学以及人工智能和神经网络等领域与工作记忆相关的研究做一简单回顾。然后描述我们的主要工作,一个存储架构和注意力控制器,并且我们相信这个控制器可以满足简单程序的归纳(induction)和执行(execution)这类任务的性能要求。为了测试这个结构,我们设计了一些问题,并给出了详细的测试结果。最后总结这个架构的有点。

2. 基础研究

2.1 心理学和神经科学

工作记忆的概念在心理学中得到比较深入的研究,并用来解释短期信息处理时的性能问题。其大致的构成是一个”中央执行器“聚焦注意力和对记忆缓存中的数据进行各种操作(Baddeley等, 2009)。心理学家已经充分研究了工作记忆的容量限制,通常使用信息组块的数量来衡量,这种信息组块可以被轻松地回忆起来(Miller,1956)。因为容量限制的存在,使得我们能够理解人类大脑记忆系统中的结构性约束。

神经科学中,工作记忆过程被认为是前额叶皮层和基底神经节整合系统的功能(Goldman-Rakic, 1995)。

典型的实验如,让猴子观察一个短暂的提示,然后经过一个延迟时间,再根据这个提示以一种方式进行响应,同时,观察其前额叶皮层的一个或一组神经元的状态。特定的任务可以使神经元在延迟期间持续激活或者呈现更复杂的神经动力学特征。最近的一个研究量化了在执行某个任务的延迟期间的额叶皮层活动,这是一个基于众码(population code)维度来度量的复杂且上下文无关的任务,可以用来预测记忆的性能(Rigotti et al., 2013)。

还有一些工作记忆的建模研究,有的在研究生物回路是如何实现持续神经元激活的(Wang, 1999),有的研究如何实现具体的任务(Hazy等,2006)(Dayan, 2008)(Eliasmith, 2013)。当然Hazy等人的模型我们的工作比较相关,因为它也类似于LSTM架构,我们也是基于其进行的改造。像我们的架构一样,Hazy等人设计了一些机制将信息放入到内存槽中,这个内存槽,被用来处理基于内部规则构建的内存任务。与我们的工作相对比,这些作者并没有引入内存寻址的先进理念,从而限制了这些系统只能进行简单数据的存储和回忆。尽管Gallistel和King (Gallistel and King, 2009)和Marcus (Marcus, 2003) 强调大脑的操作一定包含寻址,却经常被神经科学的计算模型所遗忘,而这正是我们工作的基础。

2.2 认知科学和语言学

历史上,认知科学和语言学与人工智能学科几乎是同时出现的,他们都深深地受到计算机的影响(Chomsky, 1956) (Miller, 2003)。他们的目的都是基于信息或符号处理机制解释人的精神活动。早在20世纪80年代,这两个领域就都认为递归式和过程式(基于规则的)符号处理是认知的最高级形式(highest mark)。The Parallel Distributed Processing (PDP) or connectionist revolution cast aside the symbol-processing metaphor in favour of a so-called “sub-symbolic” description of thought processes (Rumelhart et al., 1986).

Fodor和Pylyshyn (Fodor and Pylyshyn, 1988) 发表了两个关于认知模型神经网络的局限性的重要证明。他们首先指出联结理论不能解决变量绑定(variable-binding)问题,即不能对数据结构中特定槽位(slot)赋值特定的数据。语言中,变量绑定无处不在,例如,当人对“Mary spoke to John”这种形式的句子进行理解的时候,首先会将Mary赋值为主语,John赋值为宾语,而“spoke to”则赋值为谓语。Fodor和Pylyshyn也讨论到带有定长输入域的神经网络无法产生像人类这样的变长结构处理能力。针对这个论断,包括Hinton (Hinton, 1986), Smolensky (Smolensky, 1990), Touretzky (Touretzky, 1990), Pollack (Pollack, 1990), Plate (Plate, 2003), and Kanerva (Kanerva, 2009)在内的神经网络研究者们研究了特定的机制以在联接框架内支持变量绑定和变量结构。我们的架构借鉴并增强了这项工作。

变长结构的递归处理是人类认知的重要特点。在过去的十年中,a firefight in the linguistics community staked several leaders of the field against one another。目前的问题是递归处理是否是“独特人类”产生语言的进化创新,为语言所独有,Fitch, Hauser, and Chomsky (Fitch等, 2005)支持这种观点,还是多种其他的变化来负责人类语言的进化,而递归处理早于语言出现(Jackendoff and Pinker, 2005)。当然无论递归处理的进化源头是什么,所有人都同意它是人类认知灵活度的核心要素。

2.3 递归神经网络

递归神经网络(RNN)是一类带有动态状态的机器;它的状态可以根据当前的内部状态和输入进行迁移。对比也包含动态状态的隐式马尔可夫链,RNN的状态是分布式的,因而有更大的存储能力和计算能力。动态状态十分重要,因为它使得基于上下文的计算称为可能;在某一时刻的信号能够改变后面时刻的网络行为。

递归网络的一个重要创新是LSTM(Hochreiter and Schmidhuber, 1997),是一种为解决“vanishing and exploding gradient”问题而开发的一个通用架构。它在网络中嵌入了一些完美的集成器用作内部存储 (Seung, 1998) 。集成器最简单的一个例子是x(t + 1) = x(t) + i(t),i(t)是系统的输入。内部表示矩阵Ix(t)意味着信号不会动态地消失或爆炸。

如果给集成器配置一个基于上下文的内部网络(称为门gate电路),得到等式x(t + 1) = x(t) + g(context)i(t),我们就可以在无限长的时间内选择性地存储信息。

递归网络不需要任何修改就可以很容易地处理变长结构(variable-length structures)。在序列问题中,网络的输入在不同时间到达,允许跨多个时间步处理变长或组合结构。由于递归网络可以本地(natively)处理变长结构,所以最近被应用于语音识别(Graves等, 2013; Graves and Jaitly, 2014),文本生成(Sutskever等, 2011),手写字生成 (Graves, 2013) 和机器翻译 (Sutskever et al., 2014)等各种认知问题。考虑到这个特性,我们认为通过显示地建立分析树来聚合组合结构(Pollack, 1990) (Socher等, 2012) (Frasconi等, 1998)并不是最迫切或者有价值的。我们的工作的一些其他重要前提还包括通过递归网络构建的注意力可微模型(Graves, 2013) (Bahdanau等, 2014)和程序搜索(Hochreiter等, 2001b)(Das等, 1992)。

3. 神经网络图灵机

神经网络图灵机(NTM)架构包含两个基本组件:神经网络控制器和内存池。图1展示了NTM的一个高层面流程图。像大多数神经网络一样,控制器通过输入输出向量与外界交互,但不同于标准网络的是,它还与一个带有选择性读写操作的内存矩阵进行交互。类比图灵机,我们将执行读写操作的网络输出称为“头”heads(译者注:后面有时会翻译成指针)。

特别重要地,架构中的每个组件都是可微分的,这使得梯度下降训练更为直接,为此,我们定义了“模糊”读写的概念,即可以通过不同的权重与内存中的全部元素进行交互(与此相应的则是图灵机和数字计算机中的单一元素寻址操作)。通过限制读写操作的值针对内存中的一小部分进行操作的同时忽略其他部分,我们引入了一种可以确定“模糊度”的“注意力聚焦”机制。由于与内存的交互高度离散,NTM网络更擅长存储数据而很少收到干扰。读写头上的特定输出决定了代表注意力焦点的内存地址。这些输出其实就是一个代表在内存矩阵上的各行归一化权重的表示(称为内存“地址集合”)。每个读写头都有一个权重列表,这个权重列表代表了它的读写头在各个地址的读写比重(degree),也就是说,一个读写头,既可以全部精力访问一个单一地址,也可以分散精力在不同的地址上。(译者注:这个精力就是总比重,weighting就是定义了整个内存空间,每个位置的读写比重,至于读写比重的意义,在后面就可以体会到)。

3.1 读

令M_t代表时刻t的N×M内存矩阵。(N代表地址数或行数,M代表每个地址的向量大小)。令W_t在时刻t读写头在N个地址的读写比重,由于所有的权重都进行了归一化,所以W_t向量的内部元素W_t(i)满足:

那么,时刻t读取到的值R_t,可以定义为每个地址的向量Mt(i)加权和:sum

这个公式清晰地将内存和权重分离了出来。

3.2 写

受LSTM中的forget gate和输入的启发,我们将写操作拆分成两个部分:先擦除(erase)在添加(add)。

给定t时刻的写头权重w_t,以及一个擦出向量e_t,其中M个元素均在0~1范围内,则t-1时刻的内存向量在t时刻将按下式进行调整:

其中1是一个全部是1的行向量。当e_t为全零向量时,整个内存就会被重置为零。若权重为零或者擦除向量为零,则内存保持不变。当多个写头同时存在时,多个操作可以以任意顺序相互叠加。

而加向量a_t,是在擦除动作之后执行下面动作:

同样,多个写头的添加动作的先后顺序也是无关的,经过这些擦除动作和添加动作之后,可以得到t时刻的最终内存结果。既然擦除和添加两种动作是可微的,组合写的动作也是各自独立微分的。注意,擦除和添加动作都有M个独立部分,使得对每个内存地址的修改可以在更细的粒度上进行。

3.3 寻址机制

前面我们给出了读写的公式,但我们没有说明权重是如何产生的。权重是通过两种寻址机制以及一些其他补充机制的共同作用产生的。第一种机制,“基于内容的寻址”,基于依据控制器提供的值与当前值的相似度来决定对内存地址的聚焦程度。这个机制与Hopfield网络(Hopfield, 1982)的地址寻址是相关的。地址寻址的优点是提取非常简单,仅仅需要控制器产生一个与存储数据的一部分相似的数据即可,这个数据被用来与内存比较,然后获取到精确的存储值。

但并不是所有的问题都适合内存寻址。在特定任务中,变量的内容就非常随机的,但变量仍然需要一个可识别的名字或者地址。算术问题就属于这一类:变量x和变量y可以代表任意两个值,而 f (x, y) = x × y是一个明确的定义的程序过程。针对这种任务的控制处接收变量x和y的值,将他们存储在不同的地址中,然后获取他们再执行乘法操作 。这个例子中,变量是通过指定地址寻址的,而不是内容。我们称之为“指定地址寻址”。内容寻址比地址寻址严格来说更为通用,因为内容寻址本身可能包含地址信息。但在我们的实验证明提供地址寻址功能,对某些形式的通用化很有必要,所以我们同时引入了两种寻址机制。

图2是整个寻址系统的流程图,展示了在读写时,生成权重向量的操作序列。

图2. 寻址机制的流程图。向量key,k_t,和key的强度β_t,用作内容寻址。内容寻址的权重被key作用后会基于上一时刻的权重和gate值g_t进行插值调整。 随后位移向量s_t会决定是否或者进行多少的旋转操作。最后,依赖于γ_t, 权重会被sharpen以用于内存访问。

3.3.1 按内容聚焦

对于内容寻址,每个读写头都首先产生一个M长度的key向量k_t,并通过一个相似度度量函数K[.,.]分别与每个行向量M_t(i)逐一比较。基于内容的系统会基于相似度和key的强度产生一个归一化的权重列表w_{t}^{c},β_t可以放大或减弱聚焦的精度。

在我们当前的实现中,相似度度量函数用的是余弦相似:

3.3.2 按地址聚焦

基于指定地址的寻址机制既可以用做简单的内存空间遍历,也可以用于随机访问。这是通过对weighting的一个旋转位移操作来实现的。举例,如果当前权重定义为全力聚焦在一个单一地址上,那么一个为1的旋转可以位移到下一个地址,一个负的位移则相反。

先于旋转操作,每个读写头还具有一个标量代表插值门g_t,取值0~1,g值被用作混合前一时刻中读写头产生的w_{t-1}和当前时刻中有内容系统产生的权重列表w_{t}^{c},进而推导出门控制后(gated)权重列表w_{t}^{g}:

如果gate是0,那么整个内容权重就被完全忽略,而来自前一个时刻的权重列表就被直接使用。相反,如果gate值是1,那么就完全采用内容寻址的结果。

在插值(interpolation)之后,每个读写头都会给出一个位移权重S_t,用于定义一个在允许的整数值位移上的归一化分布。例如,如果-1和1被用作位移,则s_t有三个元素分别代表-1,0,1执行后的位移程度。The simplest way to define the shift weightings is to use a softmax layer of the appropriate size attached to the controller。我们也尝试了另一个方法,让控制器给出一个单一标量,用来表示一个在前一种统一分布的下界。例如,如果位移标量为6.7,那么s_t(6) = 0.3,s_t(7) = 0.7,剩下的s_t(i)均为0。

如果内存地址为0到N-1,使用s_t来旋转w_{t}^{g},可以使用下面的循环卷积来表示:

其中,all index arithmetic is computed modulo N,如果位移权重不是sharp的,那么公式8中的卷积操作能够导致权重随时间发散。例如,如果给-1,0,1的对应的权重0.1,0.8和0.1,则旋转就会将一个聚焦在一个点上的权重变成轻微模糊在三个点上。为了解决这个问题,每个读写头最后会给出一个标量γ_t ≥ 1用来sharpen最终的权重:

结合权重插值、内容寻址和地址寻址的寻址系统可以在三种补充(complementary)模式下工作。第一,权重列表可以由内容系统来自主选择而不被地址系统所修改。第二,有内容系统产生的权重可以再选择和位移。这使得焦点能够跳跃到通过内容寻址产生的地址附近而不是只能在其上。在计算方面,这使得读写头可以访问一个连续的数据块,并访问这个块中特定数据。第三,来自上一个时刻的权重可以在没有任何内容系统输入的情况下被旋转,以便权重可以以相同的时间间隔连续地访问一个地址序列。

3.4 控制网络

上面描述的NTM架构有三个自由参数,内存的大小,读写头的数量,允许的地址位移范围。但或许最重要的架构选择是用作控制器的网络模型。尤其是,我们可以决定使用前馈网络(FN)还是递归网络(RN)。诸如LSTM这样的递归控制器拥有自己的内部存储器,这个存储器可以对矩阵中更大的存储器起到补充作用。如果将控制器比作数字计算机的中央处理器单元(albeit with adaptive rather than predefined instructions) ,将内存矩阵比作RAM,那么递归网络的隐藏激活神经元们(hidden activations)就像是处理器的寄存器。他们允许控制器跨时间操作时能够共享信息。另一方面,一个前馈网络控制器可以通过每一时刻都读写同一地址来模拟递归网络。进一步,前馈控制器通常给予网络操作更大的透明度,因为对内存矩阵的读写模式通常比RNN的内部状态更容易解释。然而,前馈网络的一个局限性是并行读写头的数量,在执行计算任务时会成为瓶颈。一个单一读出头在每个时刻只能对每个内存向量执行一元变换,而两个读出头就可以二元向量变换,以此类推。递归控制器则能够存储上一时刻的读出的向量,不会受到这个限制。

4. 实验

4.1 复制

复制任务用来测试NTM能否存储并回忆起一个任意信息的长序列。首先想网络输入一个任意二进制向量组成的序列,并跟随一个分隔符。跨域长时间周期对信息进行存储和访问对RNN和其他动态架构来说一个难题。我们很想知道NTM比LSTM是否能胜任更长的时间。

图3. Copy Learning Curves.

网络使用任意8字节向量组成的序列来训练,序列的长度在1到20之间随机。目标序列是输入的副本,只是不带分隔符。注意,在接受(从哪里接受?)目标序列时不对网络进行任何输入,这样确保在网络回忆整个序列时没有借助任何中间过程。如图3所示,NTM(无论使用前馈还是LSTM的控制器)比LSTM本身都学习的更快,消耗更小。NTM和LSTM学习曲线的差距足以说明这已经是质的不同,而不仅仅是量的不同。

图4. NTM Generalisation on the Copy Task. The four pairs of plots in the top row depict network outputs and corresponding copy targets for test sequences of length 10, 20, 30, and 50, respectively. The plots in the bottom row are for a length 120 sequence. The network was only trained on sequences of up to length 20. The first four sequences are reproduced with high confidence and very few mistakes. The longest one has a few more local errors and one global error: at the point indicated by the red arrow at the bottom, a single vector is duplicated, pushing all subsequent vectors one step back. Despite being subjectively close to a correct copy, this leads to a high loss.

图5. LSTM Generalisation on the Copy Task. The plots show inputs and outputs for the same sequence lengths as Figure 4. Like NTM, LSTM learns to reproduce sequences of up to length 20 almost perfectly. However it clearly fails to generalise to longer sequences. Also note that the length of the accurate prefix decreases as the sequence length increases, suggesting that the network has trouble retaining information for long periods.

我们研究了网络在训练过程不只是看到而是能否归纳更长的序列的能力(很显然他能否从训练错误中学习到在面对新的向量时要更加通用。)图4和图5说明这个过程中LSTM和NTM的行为是完全不同的。NTM能够随着长度的增加持续进行复制工作,而LSTM在超过20后迅速失效。

图6. NTM Memory Use During the Copy Task. The plots in the left column depict the inputs to the network (top), the vectors added to memory (middle) and the corresponding write weightings (bottom) during a single test sequence for the copy task. The plots on the right show the outputs from the network (top), the vectors read from memory (middle) and the read weightings (bottom). Only a subset of memory locations are shown. Notice the sharp focus of all the weightings on a single location in memory (black is weight zero, white is weight one). Also note the translation of the focal point over time, reflects the network’s use of iterative shifts for location-based addressing, as described in Section 3.3.2. Lastly, observe that the read locations exactly match the write locations, and the read vectors match the add vectors. This suggests that the network writes each input vector in turn to a specific memory location during the input phase, then reads from the same location sequence during the output phase.

后续的分析表明,NTM不像LSTM能够学习到复制算法的某种形式。为了确定这是一种什么算法,我们查看了控制器与内存之间的交互信息(图6),最后确认网络所进行的操作序列可以总结成一下伪代码:

initialise: move head to start location while input delimiter not seen do receive input vector write input to head location increment head location by 1 end while return head to start location while true do read output vector from head location emit output increment head location by 1 end while

这实际就是人类程序员在执行相同任务时的低级语言代码。从数据结构方面来说,NTM已经学会了如何创建和迭代数组。注意,该算法结合了内容寻址(跳到开始位置)和地址寻址(沿着序列移动)。还要注意到如果没有基于前一个时刻的读写权重进行位移(公式7)的能力的话,迭代也无法具有处理更长序列的能力,另外如果如果没有焦点锐化(focus-sharpening)能力(公式9)的话,权重就是随着时间的推移开始失真。

4.2 循环复制

循环复制任务时复制任务的一个扩展,它要求网络能够输出复制的序列一个指定的次数,并在最后打一个标记。这个主要用来查看NTM能否学会简单的嵌套函数。理想情况下,我们希望它能循环执行一个它学习过的子程序。

网络接收一个随机长度的序列,之后在一个独立的输入通道输入一个标量值代表希望复制的次数。为了在恰当的时间输出结束标记,网络不但要能够理解外部输入,还要记住已经执行了几次。和复制任务一样,在初始化序列和循环次数输入给网络之后,不再进行任何输入。训练网络重现随机二进制8位向量序列,其中序列长度和重复次数都从1-10中随机选取。代表重复次数的输入被标准化,期望为0,方差为1.

图7. Repeat Copy Learning Curves.

图7显示NTM学习这个任务比LSTM快得多,但两者都能很好的执行这个任务。在被问及针对训练数据的泛化时,两个架构的不同才变得清晰。这个案例中,我们对两个维度的泛化感兴趣:序列长度和重复次数。图8说明了两次复制的效果,其中LSTM两个测试都失败了,儿NTM在更长的序列上都成功了,并且能否成功执行超过十次;但是它不能记录他已经完成了多少次,所以无法正确地输出结束标记。这也许是因为使用小数表示循环次数的原因,因为在固定的范围它很难被泛化。

图8. NTM and LSTM Generalisation for the Repeat Copy Task. NTM generalises almost perfectly to longer sequences than seen during training. When the number of repeats is increased it is able to continue duplicating the input sequence fairly accurately; but it is unable to predict when the sequence will end, emitting the end marker after the end of every repetition beyond the eleventh. LSTM struggles with both increased length and number, rapidly diverging from the input sequence in both cases.

图8说明NTM学习了一种复制算法的扩展算法,能够尽量多地重复读取。

4.3 4.4 4.5 4.6为Neil翻译 http://www.jianshu.com/p/94dabe29a43b

4.3 关联回忆

前面的任务展示了 NTM可以应用算法到相对简单、线性数据结构上。下一个复杂性就出现在带有指针的数据结构上——其中的项指向另一个。我们测试了 NTM 学习这类更加有趣的结构的实例上,通过构造一个项目的列表是的查询其中一个项目需要网络返回后续的项目。更加细节地说,我们定义一个项目作为二元向量的序列,通过左右终止符来进行限制。在几个项目已经被传递给网络后,我们通过展示一个随机的项目进行查询,我们让网络产生这个项目后面的一个。在我们的实验中,每个项目包含三个 6 bit 的二元向量(总共就是 18 bit 每项目)。在训练的时候,我们使用最小 2 项目和最大 6 个项目在每个阶段(episode)。

图 10

图 11

图 10 展示了 NTM 比 LSTM 学习的速度明显快很多,在接近 30,000 episode 的时候接近 0 的代价,而 LSTM 并没有在 100 万 episode 后达到 0 的代价。另外,采用前驱控制器的 NTM 比使用 LSTM 控制器的 NTM 学习的速度更加快。这两个结果表明 NTM 的外存的确是比 LSTM 的内部内存更加有效的一种维持数据结构的方式。NTM 同样比 LSTM 在更加长的序列上泛化得更好,可以在图 11 中看到。使用前驱控制器的 NTM 对 接近 12个项目的情形下接近完美的效果(两倍于训练数据的最大长度),仍然有低于 15 个项目的序列每序列 1 bit 的平均代价。

图 12

在图 12 中,我们展示了在一个单个测试 episode 通过一个 LSTM 控制读头的 NTM 内存操作。在“Inputs”中,我们看到输入代表项目的分隔符在第 7 行作为单一的 bit。在项目的序列已经进行传递后,在第 8 行的一个分隔符让网络准备接受一个查询项目。这里,查询项目对应于在序列中(在绿色盒子中)的第二个项目。在“Outputs”中,我们看到了网络给出了输出在训练中的项目 3 (在红色盒子中)。在“读取权重”中,在最后三个时间步,我们看到控制器从连续位置上读取了项目 3 的时间分片。这非常奇怪,因为这看起来网络已经直接跳到了正确的存储项目 3 的位置。然而,我们可以解释这个行为通过看“写权重”。这里我们发现,内存甚至在输入给出了一个分隔符的时候进行了写操作。我们可以在“Add”确认这个数据实际上在给定分隔符的时候已经写入内存(比如,在黑色盒子中的数据);而且,每次分隔符出现,加入到内存中的向量是不同的。更多的分析揭示出网络在通过使用基于内容的查找获得了器读取后相应的位置移动一位的位置。另外,使用内容查找的 key 对应于添加到这个黑色盒子的向量。这其实表示了下面的算法:在每个项目分隔符给出的时候,控制器写一个该项目的前三个时间片压缩的表示。在查询过来时,控制器重新计算同样的查询的压缩表示,使用基于内容的查找来获得第一次写表示的位置,然后偏移 1 位来产生后续的序列中的项目(这样就把基于内容的查找和基于位置的偏移结合起来了)。

4.4 动态 N-Grams

动态 N-Grams 任务的目标就是测试 NTM 是否可以快速适应新的预测分布。特别地,我们对 NTM 是否能使用其内存作为一个重写的表,可以用来保存变换统计的数量,因此来衡量传统的 N-Gram 模型。 我们考虑所有可能的在二元序列上的 6-Gram 分布。每 6-Gram 分布可以被表示成一个 $$2^5 = 32$$ 个数字的表,表示了在给定所有可能的长度为 5 的二元历史序列时下一个 bit 为 1 的概率。对每个训练样本,我们首先通过独立地从 $$Beta(\frac{1}{2},\frac{1}{2})$$ 中采样所有 32 个概率产生随机的 6-Gram 的概率。

我们然后使用当前的查找表通过采样 200 个按 bit 顺序产生的特殊的训练序列。这个网络一次看序列的一个 bit,然后被询问预测下一个 bit。这个问题的最有预测器可以通过贝叶斯分析(Murphy,2012)获得:

图 13

其中 $$c$$ 是在前面的上下文中的 5 个bit,$$B$$ 则是下一个 bit 的值,而 $$N_0$$ 和 $$N_1$$ 在序列中目前为止对应于 0 和 1 的次数。因此,我们可以将 NTM 和 LSTM 进行对比。为了衡量性能,我们使用了一个从 1000 个 长度为 200 的序列,从和训练数据同样的分布中采样出来的。如图 13 所示,NTM 获得了小的但是显著地性能提升,但是并没有达到最优的代价。这两种架构在观察到新的输入时的进化在图 14 中进行了展示,并加上最优预测进行比对。NTM 内存使用情况的分析(图 15)表明控制器使用内存来计算有多少个 1 和 0,已经在不同的上下文中看到了,这样使得能够实现类似于最优估计的算法。

图 14

图 15

4.5 优先级排序

图 16

这个任务测试 NTM 是否能对数据进行排序——重要的基本算法。随机二元序列向量的序列跟随一个标量的优先级作为网络的输入。优先级是从 $$[-1,1]$$ 之间进行均匀采样的。木i包含根据优先级进行排序后的二元向量,如图 16 所示。

图 17

每个输入序列包含 20 个二元向量,及对应的优先级,每个目标序列是输入中 $$16$$ 个最高优先级向量。NTM 的内存使用情况检查让我们得出一个假设,它使用优先级来确定每次写得相对位置。为了检测这个假设,我们拟合了一个优先级线性函数到观测的写位置。图 17 展示了由这个线性函数紧紧的匹配的观测到得些位置。同样还展示了网络从内存位置中读出是按照递增顺序,就是对排序的序列进行遍历。

图 18

图 18 中的学习曲线展示了使用了前驱控制器和 LSTM 控制器的 NTM 从本质上在这个任务上超过了 LSTM。注意到 8 个并行的读和写头需要用来在次任务上拥有最优的性能;这可能会反映出仅仅使用一元的向量操作就能够对向量进行排序的难度。

4.6 实验细节

对所有的实验,RMSProp 算法用来进行训练,按照 Graves 2013 的研究形式并以 momentum 为 $$0.9$$。表 1 到 3 给出了网络配置和学习率的细节。所有的 LSTM 网络有三个 stacked 隐藏层。注意 LSTM 参数的数量随着隐藏元的个数以平方增长(由于递归链接的缘故)。这个和 NTM 不同,其中参数的数量并不会随着内存位置的数量而增加。在反向传播训练中,所有的梯度部分都限制在 $$(-10,10)$$ 之间。

表 1

表 2

表 3

5. 结语

受生物学中工作记忆和数字计算机的设计启发,我们发明了神经网络图灵机。跟传统神经网络一样,该架构是端到端可微的,可以被梯度下降算法训练。我们的实验证明,这个架构可以从样本数据中学会简单的算法,并可以很好地在训练样本之外应用这个学到的算法。

原文发布于微信公众号 - CreateAMind(createamind)

原文发表时间:2017-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

自动文本摘要

摘要的主要思想是找到包含整个集合的“信息”的数据子集。这种技术在今天的工业中被广泛使用。搜索引擎就是一个例子;其他的例子包括文档、图像集合和视频的汇总。文档摘要...

3761
来自专栏机器之心

专栏 | 深度好奇提出文档解析框架:面向对象的神经规划

29010
来自专栏算法修养

文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)

前言: 对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识。然而SVM最核心的地方应...

952
来自专栏CSDN技术头条

数据可视化的10个关键术语

Format 交互方式 Interactive visualisations allow you to modify, manipulate and explo...

2057
来自专栏ATYUN订阅号

如何用pycococreator将自己的数据集转换为COCO类型

在如今深度学习的领域中,如果把数据比作老K,用以确保数据格式正确的就是Q,或者至少也得是J或者10,由此你可以看出它相当重要。在努力收集图像并注释所有的对象之后...

2475
来自专栏新智元

PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升

【新智元导读】PyTorch 发布了最新版,API 有一些变动,增加了一系列新的特征,多项运算或加载速度提升,而且修改了大量bug。官方文档也提供了一些示例。 ...

6377
来自专栏新智元

深度学习挑战冯·诺依曼结构

【新智元导读】想挑战冯·诺依曼,就必须从三个要素入手:基本操作,例如加减乘除;逻辑流程控制,例如if-else-then,for,while;设存储器,内存和硬...

40111
来自专栏吉浦迅科技

DAY19:阅读纹理内存之Texture Gather

3814
来自专栏机器学习算法工程师

深入理解TensorFlow中的tf.metrics算子

本文翻译自Avoiding headaches with tf.metrics,原作者保留版权。

3722
来自专栏企鹅号快讯

输验证码输到崩溃?教你15分钟黑掉全球最流行的验证码插件

大数据文摘作品 编译:Katrine Ren、朝夕、钱天培 验证码这种东西真的是反人类。虽然它在保证账号安全、反作弊以及反广告有着至关重要的作用,但对于普通用户...

2698

扫码关注云+社区

领取腾讯云代金券