神经网络图灵机

摘要

本文通过引入一个使用注意力程序进行交互的外部存储器(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的值,将他们存储在不同的地址中,然后获取他们再执行乘法操作 。这个例子中,变量是通过指定地址寻址的,而不是内容。我们称之为“指定地址寻址”。内容寻址比地址寻址严格来说更为通用,因为内容寻址本身可能包含地址信息。但在我们的实验证明提供地址寻址功能,对某些形式的通用化很有必要,所以我们同时引入了两种寻址机制。

3.4 控制网络

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

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

论文下载链接:http://arxiv.org/pdf/1410.5401v1.pdf

本文分享自微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-22

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python技巧 | 一行代码减少一半内存占用

    我想与大家分享一些我和我的团队在一个项目中经历的一些问题。在这个项目中,我们必须要存储和处理一个相当大的动态列表。测试人员在测试过程中,抱怨内存不足。下面介绍一...

    昱良
  • 搞算法的我们,不知道这些算法怎么行

    分享 动一动手指,分享给向我们一样需要的人 这是一篇有趣的文章,George Dvorsky试图解释算法之于当今世界的重要性,以及哪些算法对人类文明最为重要,如...

    昱良
  • 干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在()中讲到在文本挖掘预处理中...

    昱良
  • 笔记42 | Android加载器Adapter的深入学习篇(一)

    项勇
  • dbms_stats 导入导出 schema 级别统计信息

        在使用CBO优化器模式的Oracle数据库中,统计信息是CBO生成最佳执行计划的重要依据。这些统计信息通常包括列级、表级、索引、系统级别的统计信息等。所...

    Leshami
  • LeetCode 刷题笔记——递归与回溯的理解

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    剑影啸清寒
  • 【Go】优雅的读取http请求或响应的数据-续

    之前发布 【Go】优雅的读取http请求或响应的数据 文章,网友 “wxe” 咨询:“优化前后的请求耗时变化有多大”,之前只分析了内存分配,这篇文章用单元测试的...

    thinkeridea
  • [日常] Go语言圣经--示例: 并发的Echo服务

    1.io.Copy()方法 func Copy(dst Writer, src Reader) (written int64, err error)

    陶士涵
  • 1044. 火星数字(20)

    地球人的0被火星人称为tret。 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep,...

    AI那点小事
  • python类的装饰器

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    于小勇

扫码关注云+社区

领取腾讯云代金券