CN108475346B - 神经随机访问机器 - Google Patents

神经随机访问机器 Download PDF

Info

Publication number
CN108475346B
CN108475346B CN201680072624.1A CN201680072624A CN108475346B CN 108475346 B CN108475346 B CN 108475346B CN 201680072624 A CN201680072624 A CN 201680072624A CN 108475346 B CN108475346 B CN 108475346B
Authority
CN
China
Prior art keywords
neural network
input
module
output
time step
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680072624.1A
Other languages
English (en)
Other versions
CN108475346A (zh
Inventor
伊利亚·苏特思科韦尔
马尔钦·安德里霍维奇
卡罗尔·彼得·库拉奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN108475346A publication Critical patent/CN108475346A/zh
Application granted granted Critical
Publication of CN108475346B publication Critical patent/CN108475346B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

方法、系统和装置,包括编码在计算机存储介质上的计算机程序,用于从系统输出生成系统输入。在一个方面中,一种神经网络系统包括存储器,所述存储器存储一组寄存器向量和定义模块的数据,其中,每个模块是把一个或多个第一向量作为输入并且输出第二向量的相应函数。所述系统也包括控制器神经网络,所述控制器神经网络被配置成接收每个时间步的神经网络输入并且处理该神经网络输入以生成神经网络。所述系统还包括子系统,所述子系统被配置成确定所述模块中的每个模块的输入,处理向模块的输入以生成相应的模块输出,确定所述寄存器向量的更新值,并且从所述寄存器向量的更新值生成下一个时间步的神经网络输入。

Description

神经随机访问机器
技术领域
本说明书涉及神经网络系统架构。
背景技术
神经网络是采用非线性单元的一个或多个层来针对接收到的输入预测输出的机器学习模型。一些神经网络除了包括输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一个层(即,下一个隐藏层或输出层)的输入。网络的每层依据相应的参数集的当前值从接收到的输入生成输出。
一些神经网络是循环(recurrent)神经网络。循环神经网络是接收输入序列并且从该输入序列生成输出序列的神经网络。特别地,循环神经网络可基于在计算当前输出时处理前一个输入来使用网络的内部状态中的一些或全部。循环神经网络的示例是长短期记忆(LSTM)神经网络,其包括一个或多个LSTM记忆块。每个LSTM记忆块可包括一个或多个cell,所述一个或多个cell各自包括输入门、忘记门和输出门,其允许该cell存储该cell的先前状态,例如以用于在生成当前激活时使用或者待提供给LSTM神经网络的其它组件。
发明内容
本说明书描述一种作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统。该系统可以是用于从系统输出生成系统输入的神经网络系统。
系统包括存储器,所述存储器存储一组寄存器向量和定义多个模块的数据。每个模块是把一个或多个第一向量作为输入并且输出第二向量的相应函数。
系统也包括控制器神经网络,所述控制器神经网络被配置成针对多个时间步中的每个时间步,接收该时间步的神经网络输入并且处理该时间步的神经网络输入以生成该时间步的神经网络输出。
系统也包括子系统,所述子系统被配置成针对时间步中的每一个:根据神经网络输出确定向多个模块中的每个模块的输入;针对模块中的每个模块,使用该模块来处理向模块的输入以生成相应的模块输出;使用模块输出根据神经网络输出来确定寄存器向量的更新值;以及从寄存器向量的更新值生成下一个时间步的神经网络输入。
系统可以包括外部可变大小存储带(memory tape)。所述多个模块可以包括第一模块和第二模块,第一模块依据第一模块的输入从外部可变大小存储带读取,第二模块依据第二模块的输入来向外部可变大小存储带写入。
子系统可以被配置成用系统输入初始化外部可变大小存储带。在多个时间步中的最后时间步之后存储在外部可变大小存储带中的值可以是系统输出。
下一个时间步的神经网络输入可以是寄存器向量中的每个寄存器向量的二值化值。
子系统还可以被配置成针对每个时间步:根据神经网络输出来确定时间步是否应当是多个时间步中的最后时间步。
控制器神经网络可以是循环神经网络。
本说明书也描述一种用于使用神经网络系统来从系统输入生成系统输出的方法,所述神经网络系统包括控制器神经网络,所述控制器神经网络被配置成针对多个时间步中的每个时间步,接收该时间步的神经网络输入,并且处理该时间步的神经网络输入以生成该时间步的神经网络输出。方法包括,针对多个时间步中的每个时间步:将一组寄存器向量和定义多个模块的数据存储在存储器中,其中,每个模块是把一个或多个第一向量作为输入并且输出第二向量的相应函数;根据神经网络输出确定向多个模块中的每个模块的输入,其中,每个模块是把一个或多个第一向量作为输入并且输出第三向量的相应函数;针对模块中的每个模块,使用该模块来处理向模块的输入以生成相应的模块输出;使用模块输出根据神经网络输出来确定多个寄存器向量的更新值;以及从寄存器向量的更新值生成下一个时间步的神经网络输入。
神经网络系统还可以包括外部可变大小存储带。多个模块可以包括第一模块和第二模块,第一模块依据第一模块的输入来从外部可变大小存储带读取,第二模块依据第二模块的输入来向外部可变大小存储带写入。方法还可以包括用系统输入初始化外部可变大小存储带。在多个时间步的最后时间步之后存储在外部可变大小存储带中的值可以是系统输出。下一个时间步的神经网络输入可以是寄存器向量中的每个寄存器向量的二值化值。
方法还可以包括根据神经网络输出来确定时间步是否应当是多个时间步中的最后时间步。
控制器神经网络可以是循环神经网络。
有利的实施方式可包括以下特征中的一个或多个。系统可包括神经网络系统,所述神经网络系统操纵指针,将指针存储在存储器中,并且将指针解引用(dereference)到工作存储器中。因此,系统可向需要指针追踪和操纵的操作问题提供解。系统可通过用输入序列初始化寄存器并且产生对应的输出序列来学习序列到序列变换。另外,输出序列可用于更新寄存器的值。在某些方面中,系统可包括外部可变大小存储带。该可变大小存储带可由系统使用来提高系统在一般化长输入序列时的效率。附加地,该可变大小存储带可由系统用作输入输出通道。在此实例中,可在系统接收到系统输入时初始化可变大小存储带。附加地,响应于系统输入而生成的系统输出可由系统存储在可变大小存储带中。
这个和其它方面的其它实施方式包括被配置成执行编码在计算机存储设备上的方法的动作的对应系统、装置、和计算机程序。
在附图和下面的描述中阐述了本发明的一个或多个实施例的细节。本发明的其它特征和优点将根据说明书、附图和权利要求书变得显而易见。
附图说明
图1示出示例神经网络系统。
图2是用于从在当前时间步下的神经网络输出生成后续时间步的神经网络输入的示例过程的流程图。
图3是与外部可变大小存储带交互的示例过程的流程图。
在各个附图中相似的附图标记和名称指示相似的元素。
具体实施方式
图1示出示例神经网络系统100。神经网络系统100是作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统的示例,其中实现了在下面描述的系统、组件、和技术。
神经网络系统100接收系统输入并且从所述系统输入生成系统输出。例如,神经网络系统100可接收系统输入x并且从该系统输入x生成系统输出y。神经网络系统100可将系统输出存储在输出数据储存库中,或者提供输出以供由远程系统用作输入,或其任何组合。
神经网络系统100可被用于通过以下来将输入序列变换成输出序列:用系统输入初始化寄存器并且在预定数目的时间步之后提供包括由寄存器的更新值所表示的序列的系统输出,如将在下面更详细地描述。
例如,如果输入序列是原始语言的单词的序列,例如,句子或短语,则目标序列可以是输入序列向目标语言的翻译,即,表示原始语言的单词的序列的目标语言的单词的序列。作为另一示例,如果输入序列是字素的序列,例如,序列{g,o,o,g,l,e},则目标序列可以是输入序列的音素表示,例如序列{g,uh,g,ax,l}。作为另一示例,如果输入序列是原始语言的单词的序列,例如,句子或短语,则目标序列可以是原始语言的输入序列的概要,即,具有比输入序列更少的单词但是保留输入序列的基本含义的序列。
神经网络系统100包括控制器神经网络102、存储器104、和子系统106。
控制器神经网络102是被配置成接收神经网络输入并且处理该神经网络输入以生成神经网络输出的神经网络。在一些实施方式中,控制器神经网络102是前馈神经网络。在一些其它实施方式中,控制器神经网络102是循环神经网络,例如LSTM神经网络。
子系统106接收由控制器神经网络102生成的输出o。例如,子系统106可接收输出并使用所接收到的输出以使用各自接受相应的输入并提供相应的输出的预定数目的模块来对被存储在存储器104中的一组寄存器操作。即,子系统106从控制器神经网络102接收输出o并且基于该输出o,使用模块来与寄存器交互以更新寄存器的值。寄存器的更新值可被存储在存储器104中。例如,子系统可从存储器104读取r1寄存器值,使用模块来与寄存器值交互以确定寄存器的更新值,并且基于更新值来将w1写入到存储器104。
在某些方面中,神经网络系统100可包括外部可变大小存储带110。外部可变大小存储带110可由神经网络系统100使用来增加神经网络系统100的存储器容量。另外,外部可变大小存储带110可被用作神经网络系统100的输入输出通道。在此实例中,可用系统输入x初始化外部可变大小存储带110。附加地,外部可变大小存储带110可被用于实现特定模块,诸如读取模块和写入模块。例如,子系统106可被配置成使用读取模块来从存储带110读取r2并且使用写入模块来将w2写入到外部可变大小外部存储器110。将在本文中进一步讨论外部可变大小存储带110的利用。
控制器神经网络102可接收寄存器的向量作为输入。具体地,每个寄存器可存储寄存器的诸如{0,1,…,M-1}的一组可能值的分布,其中M表示常数。每个寄存器的分布可作为寄存器向量p被存储,其中寄存器向量满足pi≥0和∑ipi
寄存器向量p可由子系统106存储在存储器104中。寄存器向量可由子系统106读取r并且作为输入s提供给控制器神经网络102。
在一些方面中,子系统106可被配置成经由多个模块访问寄存器。例如,子系统106可被配置成基于接收到的控制器神经网络102的神经网络输出来向每个模块提供输入。模块可被配置成基于模块接收到的输入生成输出。子系统106可被配置成使用模块的输出来更新寄存器向量。已更新的寄存器向量可以由子系统106作为输入提供给控制器神经网络102。具体地,模块可包括函数,诸如整数加法或相等性测试。将在本文中进一步描述子系统106的操作。
神经网络输入可包括取决于寄存器的值的输入。在另一示例中,控制器神经网络102可接收表示被作为向量存储在寄存器中的概率分布的神经网络输入。控制器神经网络102也可处理所述神经网络输入以生成神经网络输出。
概率分布可作为向量p∈RM被存储。在此实例中,R表示寄存器而M表示常数。在一些方面中,如果每个寄存器的所有概率分布被作为神经网络输入提供给控制器神经网络102,则神经网络系统100的参数的数目可取决于M的值。在此实例中,控制器神经网络102可能未被配置成一般化为不同的存储大小。为了适应此实例,控制器神经网络102可以替代地针对每个寄存器向量1≤i≤R接收作为二值化值的神经网络输入。寄存器的二值化值是寄存器中的当前值等于0的概率。
控制器神经网络102在被提供有二值化值作为神经网络输入时可以作为离散神经网络被实现。在此实例中,控制器神经网络102的输入可以是寄存器的二值化值。因此,代替执行控制器神经网络102,可以针对寄存器的二值化值中的每一个预先计算控制器神经网络102的离散化神经网络输出。在此实例中,与控制器神经网络102的非离散化版本相比控制器神经网络102可以有效率地生成神经网络输出。
子系统106可被配置成针对初始时间步从控制器神经网络102接收神经网络输出o并且针对后续时间步向控制器神经网络102提供神经网络输入s。在某些方面中,子系统106也接收系统输入x以在针对后续时间步提供神经网络输入时使用。在某些方面中,由子系统106生成的神经网络输入可作为系统输出y被提供。另外,子系统106可被配置成确定每个时间步是否应当是多个时间步中的最后时间步。因此,子系统106可确定时间步何时应当作为系统输出被输出。
换言之,根据由控制器神经网络102生成的每个神经网络输出,子系统106确定是否使得神经网络102针对当前系统输入x生成一个或多个附加神经网络输入s。然后,子系统106根据由神经网络102针对系统输入x生成的每个神经网络输出o来确定针对系统输入x的系统输出y。
子系统106可被配置成选择要提供给多个模块的特定输入。子系统106可基于由控制器神经网络102提供的神经网络输出来确定所选择的输入。附加地,子系统106可基于接收到的系统输入来确定所选择的输入。模块可用于产生与所选择的输入相对应的输出。例如,每个模块可接收一个或多个第一向量作为输入并且提供第二向量作为输出。在某些方面中,向量可对应于寄存器的值。在其它方面中,向量可对应于寄存器的概率分布。每个向量可由子系统106作为输入提供给模块,并且由模块对其作用以产生对应的输出。
子系统106还可进一步被配置成确定由模块产生的输出的哪些值要存储在寄存器中。例如,模块可包括由子系统106在每个时间步下执行的预定模块集。给定模块m1、m2、...、mQ,所述模块中的每个模块可包括诸如下列的函数,
mi:{0,1,...,M-1}×{1,2,...,M-1}→{0,1,...,M-1}
在此实例中,模块可以各自被提供有由子系统106确定的输入。子系统106可被配置成从诸如{r1,...,rR,o1,...,oi-1}的一组输入确定每个模块的输入。在此实例中,rj表示在当前时间步下存储在第j寄存器中的值并且oj表示模块mj在当前时间步下的输出。
在某些方面中,子系统106可被配置成针对每个1≤i≤Q确定寄存器的值{r1,...,rR,o1,...,oi-1}的加权平均。加权平均值可以作为输入被提供给每个模块。例如,可通过以下计算来确定寄存器的值的加权平均:oi=mi((ri,...,rR,o1,...,oi-1)Tsoftmax(ai),(r1,...,rR,o1,...,oi-1)Tsoftmax(bi))
在此实例中,ai和bi表示由控制器神经网络102产生并且提供给子系统106的向量。因为值rj是概率分布,所以被提供给模块mi的输入也是概率分布。
在一些方面中,模块mi是为整数输入和输出而定义的。在其它方面中,模块被作为输入和对应输出扩展到概率分布。例如,给定每一0≤c<M,可通过以下计算来确定模块的概率分布输出,
Figure BDA0001691875840000091
在此实例中,a和b各自表示由控制器神经网络102输出到子系统106的向量,mi表示与向量交互的模块,并且c表示模块的输出向量。
在模块产生对应输出之后,子系统106可被配置成基于模块产生的输出来确定要存储在寄存器中的更新值。更新值可表示被作为向量存储在寄存器中的概率分布。子系统106可被配置成同时地更新模块的输出ci以及寄存器的值。模块的更新值以向量的形式输出,以及可通过以下计算来确定寄存器的更新值,
ri=(r1,...,rR,o1,...,oQ)Tsoftmax(ci)
神经网络系统100可被配置成操纵并解引用指针。具体地,神经网络系统100可被配置成操纵指针,将指针存储在存储器中,并且将指针解引用到工作存储器中。在某些方面中,神经网络系统100可以被提供有解引用而作为原语,使得可在其解需要指针追踪和操纵的问题上对神经网络系统100进行训练。例如,可在诸如链接列表问题的问题上对神经网络系统进行训练,在所述链接列表问题中神经网络系统100必须搜索第k元素并且找到具有给定值的第一元素。
可使用梯度下降来对神经网络系统100进行训练。在对神经网络系统100进行训练时,可执行梯度限幅(gradient clipping),使得不会发生溢出。例如,在反向传播内部具有中间值的梯度可变得大并且在单精度浮点运算中导致溢出。在此实例中,可在反向传播的执行内使用梯度限幅来重新扩缩梯度并防止溢出。附加地,可在梯度下降期间将随机高斯噪声添加至所计算的梯度。随机高斯噪声的方差可增强神经网络系统100在训练期间的稳定性。
在某些方面中,神经网络系统100可用外部可变大小存储带110加以扩展。可变大小存储带110可用于一般化被提供给控制器神经网络102的系统输入和/或神经网络输入的相对长的序列。可变大小存储带110可包括各自存储集合{0,1,…,M-1}的分布的M个存储cell。可通过指向存储器104中的特定位置的指针来标识集合{0,1,…,M-1}的分布。
可变大小存储带110可包括通过特定矩阵来描述的状态。例如,可通过矩阵
Figure BDA0001691875840000101
来描述可变大小存储带110的状态。在此实例中,值
Figure BDA0001691875840000102
表示矩阵中的第i存储cell保持值j的概率。
子系统106可被配置成使用两个特定模块来与可变大小存储带110交互。所述两个特定模块可包括读取模块和写入模块。例如,子系统106可被配置成由子系统106从可变大小存储带110读取指针作为输入o。响应于读取该指针作为输入,读取模块可返回存储在可变大小带存储器中的给定地址下的值。因此,子系统106可被配置成基于读取模块的输出来从可变大小带存储器读取r特定值。
读模块可被扩展到模糊指针。例如,如果指针p是表示指针被作为输入提供给读取模块的概率分布的向量,则子系统106的读取模块可被配置成返回值
Figure BDA0001691875840000103
在一些方面中,针对每个存储cell存储的分布可被子系统106解释为可变大小存储带110中的模糊地址。另外,所述分布中的每一个可由子系统106用作模糊指针。因此,可以通过指向可变大小存储带110中的特定位置的指针来标识集合{0,1,…,M-1}的分布。
在另一示例中,子系统106可被配置成从可变大小存储器读取指针和值作为输入。响应于接收到指针和值作为输入,子系统106的写入模块可被配置成提供写入w命令作为神经网络输出。写入命令可作为神经网络输入被提供给控制器神经网络102。控制器神经网络102可处理写入命令并且将该命令作为输出提供给子系统106。因此,子系统106可被配置成将指针的值和地址写入在可变大小存储带110中。例如,可通过以下操作将指针p和值a存储在存储器104中,
Figure BDA0001691875840000111
可变大小存储带110可作为神经网络系统100中的输入输出通道被实现。因此,可用特定输入序列初始化可变大小存储带110,并且神经网络系统可被配置成产生被存储在可变大小存储带110中的神经网络输出。神经网络输出可包括特定序列。子系统106可被配置成基于由控制器神经网络102提供的特定序列来初始化可变大小存储带110的一部分。
存储在可变大小存储带110中的值可被子系统106读取并且作为神经网络系统100的系统输出提供。如果子系统106确定要生成最终系统输出,则子系统106可从可变大小存储带110读取要由子系统106作为系统输出提供的值。
例如,针对每个时间步i,控制器神经网络102可被配置成输出标量fi,子系统106可使用该标量fi来确定该子系统确定是否终止处理的概率,即,通过计算sigmoid(fi)来确定。换言之,子系统106可根据神经网络输出来确定当前时间步是否应当是多个时间步中的最后时间步。如果系统基于概率确定,则系统使用最近生成的时间步输出作为最终系统输出。
在训练期间,可以针对每个输入-输出对(x,y)来计算损失值。该损失值可以被定义为作为产生正确输出的预期负对数似然性的神经网络系统100的损失。在一个方面中,可以在给定表示在特定时间步t之后存储在可变大小存储带110中的存储器内容的随机变量Mt并且给定表示最大允许时间步数的T的情况下来计算损失值。在此实例中,T可作为神经网络系统100的超参数被实现。可通过以下计算来确定每个输入-输出对(x,y)的损失值,
Figure BDA0001691875840000112
在此实例中,M0表示在第一时间步的平方(t2)之前的存储器内容。因此,神经网络系统100可被配置成在仍然尚未产生系统输出的情况下在最后时间步中产生输出,而不管ft的值如何。在此实例中,可通过以下计算来确定在系统输出中使用的指针,
Figure BDA0001691875840000121
图2是用于从在当前时间步下的神经网络输出生成针对后续时间步的神经网络输入的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,依据本说明书适当地编程的神经网络随机访问机器系统——例如图1的神经网络随机访问机器系统100——可执行过程200。
在步骤210处,神经网络系统将寄存器向量和定义一个或多个模块的数据存储在存储器中。寄存器向量可包括诸如{0,1,…,M-1}的特定集合的分布,其中M是常数。数据定义模块可各自表示把一个或多个第一向量作为输入并且输出第二向量的函数。数据定义模块可包括如上所述的读取模块和写入模块。数据定义模块也可包括下列中的一个或多个:zero(a,b)=0的零模块、one(a,b)=1的一模块、two(a,b)=2的二模块、inc(a,b)=a+1的增加模块、add(a,b)=a+b的加法模块、sub(a,b)=a-b的减法模块、dec(a,b)=a-1的减小模块、less_than(a,b)=[a<b]的小于模块、less_or_equal_than(a,b)=[a≤b]的小于或等于模块、equality_test(a,b)=[a=b]的相等性测试模块、min(a,b)=min(a,b)的最小模块、max(a,b)=max(a,b)的最大模块、以及其它类型的模块。
在步骤220处,神经网络系统在时间步下接收神经网络输入。在一些方面中,神经网络系统可在多个时间步中的每个时间步下接收多个网络输入。神经网络输入可包括取决于寄存器的值或换言之寄存器向量的值的输入。
在步骤230处,神经网络系统处理神经网络输入以生成神经网络输出。例如,神经网络可处理特定时间步的神经网络输入以生成该特定时间步的神经网络输出。
在步骤240处,神经网络系统基于神经网络输出来确定模块输入。具体地,神经网络系统可被配置成选择要提供给特定模块集的输入。神经网络系统可基于神经网络输出来确定所选择的输入。在某些方面中,向量可对应于寄存器的向量。在其它方面中,向量可对应于寄存器的概率分布。每个向量可由子系统作为输入提供给模块,从而由模块作用以产生对应的输出。向量和概率分布可对应于存储在神经网络系统的存储器中的寄存器。
在步骤250处,神经网络系统处理模块输入以生成模块输出。具体地,神经网络系统可被配置成处理向每个模块的输入,并且使用每个模块来生成相应的模块输出。所述模块可用于产生与所选输入相对应的输出。例如,每个模块可接收一个或多个第一向量作为输入并且提供第二向量作为输出。例如,多个第一向量可以作为输入被提供给模块,诸如整数加法函数,并且该模块可以与多个第一向量交互以产生第二向量作为包括特定值的输出。
在步骤260处,神经网络系统使用模块输出来确定寄存器向量的更新值。寄存器向量的更新值可对应于模块的输出的值。在某些方面中,寄存器向量的更新值可部分地通过神经网络输出来确定。
在步骤270处,神经网络系统生成后续时间步的神经网络输入。具体地,神经网络系统可被配置成基于寄存器向量的更新值来生成神经网络输出。例如,神经网络输入可以是寄存器中的每一个的二值化值。
图3是用于与外部可变大小存储带交互的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,依据本说明书适当地编程的神经网络随机访问机器系统——例如图1的神经网络随机访问机器系统100——可执行过程300。
在步骤310处,神经网络系统接收系统输入。
在步骤320处,神经网络系统用系统输入初始化外部存储器。例如,神经网络系统可以用系统输入初始化外部可变大小存储带。可变大小存储带可被初始化以使得神经网络系统可以交互并且修改可变大小存储带。例如,神经网络系统可被配置成基于所接收到的系统输入来从可变大小存储带读取或者写入到可变大小存储带。因此,可变大小存储带可作为神经网络系统的输入-输出组件被初始化。
在某些方面中,系统输入被直接地提供给可变大小存储带。因此,可变大小存储器可被初始化来存储系统输入。系统输入可以被存储在可变大小存储带的存储cell中。在此实例中,可通过神经网络系统经由可变大小存储带的存储cell来访问系统输入。
在步骤330处,神经网络系统基于时间步的神经网络输出来确定给定时间步的模块输入。在某些方面中,第一模块输入可对应于读取模块并且第二模块输入可对应于写入模块。读取模块可被配置成从可变大小存储带读取。写入模块可被配置成写入到可变大小存储带。
在步骤340处,神经网络系统依据第一模块输入从外部存储器读取。在此实例中,神经网络系统的读取模块可以被配置成关于第一模块输入从可变大小存储带读取。
在步骤350处,神经网络系统依据第二模块输入从外部存储器写入。在此实例中,神经网络系统的写入模块可被配置成关于第二模块输入写入到可变大小存储带110。
已经描述了许多实施方式。然而,应理解的是,可以在不脱离本公开的精神和范围的情况下作出各种修改。例如,可以使用上面示出的各种形式的流程,其中重新排序、添加或删除步骤。
本发明的实施例和本说明书中描述的所有功能操作可用数字电子电路或者用计算机软件、固件、或硬件——包括本说明书中公开的结构及其结构等同物、或者用它们中的一个或多个的组合加以实现。本发明的实施例可被实现为一个或多个计算机程序产品——例如编码在计算机可读介质上以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、影响机器可读传播信号的物质的组分,或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有设备、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。该设备除了包括硬件之外,还可包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光学或电磁信号,该信号被生成来对信息进行编码以便发送到适合的接收器设备。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可用任何形式的编程语言(包括编译或解释语言)编写,并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例程或适合于在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。程序可在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、存储在专用于所讨论的程序的单个文件中、或者存储在多个协调文件——例如,存储一个或多个模块、子程序或代码的部分的文件中存储。可将计算机程序部署成在一个计算机上或在位于一个站点处或者跨多个站点分布并且通过通信网络互连的多个计算机上执行。
说明书中描述的过程和逻辑流程可通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也可由专用逻辑电路执行,并且装置也可作为专用逻辑电路被实现,所述专用逻辑电路例如为FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者,以及任何种类的数字计算机中的任何一个或多个处理器。一般地,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。一般地,计算机也将包括用于存储数据的一个或多个海量存储设备(例如,磁盘、磁光盘或光盘)或者可操作地耦合至该海量存储设以从其接收数据,或者将数据转移到该海量存储设备,或者兼而有之。然而,计算机不必具有此类设备。此外,可将计算机嵌入在另一设备中,所述另一设备例如平板计算机、移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器等。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,作为示例包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路来补充,或者并入专用逻辑电路。
为了提供与用户的交互,可在计算机上实现本发明的实施例,所述计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可用来向该计算机提供输入的键盘和指示设备,例如,鼠标或轨迹球。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,所述任何形式包括声、语音或触觉输入。
本发明的实施例可被实现在计算系统中,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可用来与本发明的实施方式交互的图形用户界面或Web浏览器的客户端计算机),或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,互联网。
计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
尽管本说明书包含许多细节,但是这些不应该被解释为对本发明的或可以要求保护的范围构成限制,而是相反被解释为特定于本发明的特定实施例的特征的描述。也可在单个实施例中相结合地实现在本说明书中在分开的实施例的场境(context)中描述的某些特征。相反地,也可在多个实施例中分开地或者按照任何适合的子组合实现在单个实施例的场境中描述的各二个特征。此外,尽管特征可以在上面被描述为按照某些组合起作用并且甚至最初如此要求保护,然而来自要求保护的组合的一个或多个特征可在一些情况下被从该组合中删去,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中按照特定次序描绘操作,但是这不应该被理解为要求按照所示的特定次序或按照顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述的实施例中的各个系统组件的分离不应该被理解为在所有实施例中要求这样的分离,并且应该理解的是,所描述的程序组件和系统一般地可被一起集成在单个软件产品中或者封装到多个软件产品中。
在提及HTML文件的每个实例中,可以用其它文件类型或格式替代。例如,HTML文件可以用XML、JSON、纯文本或其它类型的文件代替。此外,在提及表或散列表的情况下,可以使用其它数据结构(诸如电子表格、关系数据库或结构化文件)。
已经描述了本发明的特定实施例。其它实施例在所附权利要求书的范围内。例如,权利要求书中记载的步骤可被以不同的次序执行并仍然实现所希望的结果。

Claims (13)

1.一种用于从系统输入生成系统输出的神经网络系统,所述神经网络系统包括:
存储器,所述存储器存储一组寄存器向量和定义多个模块的数据,其中,每个模块是把一个或多个第一向量作为输入并且输出第二向量的相应函数;
控制器神经网络,所述控制器神经网络被配置成针对多个时间步中的每个时间步:
接收该时间步的神经网络输入;以及
处理该时间步的神经网络输入以生成该时间步的神经网络输出;
子系统,所述子系统被配置成针对所述多个时间步中的每个时间步:
根据该神经网络输出来确定向所述多个模块中的每个模块的输入;
针对所述模块中的每个模块,使用该模块来处理向该模块的输入以生成相应的模块输出;
使用该模块输出根据该神经网络输出来确定所述寄存器向量的更新值;以及
从所述寄存器向量的所述更新值生成下一个时间步的神经网络输入;以及
外部可变大小存储带,其中,所述多个模块包括第一模块和第二模块,所述第一模块依据向所述第一模块的输入来从所述外部可变大小存储带读取,所述第二模块依据向所述第二模块的输入来向所述外部可变大小存储带写入;以及
所述子系统进一步被配置为从所述外部可变大小存储带读取指针作为输入。
2.根据权利要求1所述的神经网络系统,其中,所述子系统被配置成用所述系统输入初始化所述外部可变大小存储带。
3.根据权利要求2所述的神经网络系统,其中,在所述多个时间步中的最后时间步之后存储在所述外部可变大小存储带中的值是所述系统输出。
4.根据权利要求1至3中任一项所述的神经网络系统,其中,所述下一个时间步的神经网络输入是所述寄存器向量中的每个寄存器向量的二值化值。
5.根据权利要求1至3中任一项所述的神经网络系统,其中,所述子系统进一步被配置成针对每个时间步:
根据所述神经网络输出来确定该时间步是否应当是所述多个时间步中的最后时间步。
6.根据权利要求1至3中任一项所述的神经网络系统,其中,所述控制器神经网络是循环神经网络。
7.一种用于使用神经网络系统来从系统输入生成系统输出的方法,所述神经网络系统包括控制器神经网络,所述控制器神经网络被配置成针对多个时间步中的每个时间步,接收该时间步的神经网络输入,以及处理该时间步的神经网络输入以生成该时间步的神经网络输出,所述方法包括,针对所述多个时间步中的每个时间步:
将一组寄存器向量和定义多个模块的数据存储在存储器中,其中,每个模块是把一个或多个第一向量作为输入并且输出第二向量的相应函数;
使用所述神经网络系统的子系统,根据该神经网络输出确定向多个模块中的每个模块的输入,其中,每个模块是把一个或多个第一向量作为输入并且输出第三向量的相应函数;
使用所述神经网络系统的所述子系统,针对所述模块中的每个模块,使用该模块来处理向该模块的输入以生成相应的模块输出;
使用所述神经网络系统的所述子系统,使用该模块输出根据该神经网络输出来确定多个寄存器向量的更新值;以及
使用所述神经网络系统的所述子系统,从所述寄存器向量的所述更新值生成下一个时间步的神经网络输入;以及
其中,所述神经网络系统进一步包括所述子系统、所述存储器和所述控制器神经网络外部的外部可变大小存储带,并且其中,所述多个模块包括第一模块和第二模块,所述第一模块依据向所述第一模块的输入来从所述外部可变大小存储带读取,所述第二模块依据向所述第二模块的输入来向所述外部可变大小存储带写入;以及
所述子系统进一步被配置为从所述外部可变大小存储带读取指针作为输入。
8.根据权利要求7所述的方法,进一步包括用所述系统输入初始化所述外部可变大小存储带。
9.根据权利要求8所述的方法,其中,在所述多个时间步中的最后时间步之后存储在所述外部可变大小存储带中的值是所述系统输出。
10.根据权利要求7至9中的任一项所述的方法,其中,所述下一个时间步的神经网络输入是所述寄存器向量中的每个寄存器向量的二值化值。
11.根据权利要求7至9中的任一项所述的方法,进一步包括:
根据所述神经网络输出来确定该时间步是否应当是所述多个时间步中的最后时间步。
12.根据权利要求7至9中的任一项所述的方法,其中,所述控制器神经网络是循环神经网络。
13.一种编码有指令的计算机可读存储介质,所述指令在由一个或多个计算机执行时,使得所述一个或多个计算机执行根据权利要求7至12中的任一项所述的方法。
CN201680072624.1A 2015-11-12 2016-11-11 神经随机访问机器 Active CN108475346B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562285941P 2015-11-12 2015-11-12
US62/285,941 2015-11-12
PCT/US2016/061659 WO2017083744A1 (en) 2015-11-12 2016-11-11 Neural random access machine

Publications (2)

Publication Number Publication Date
CN108475346A CN108475346A (zh) 2018-08-31
CN108475346B true CN108475346B (zh) 2022-04-19

Family

ID=57421960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680072624.1A Active CN108475346B (zh) 2015-11-12 2016-11-11 神经随机访问机器

Country Status (4)

Country Link
US (1) US20170140264A1 (zh)
EP (1) EP3362951B1 (zh)
CN (1) CN108475346B (zh)
WO (1) WO2017083744A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110929855B (zh) * 2018-09-20 2023-12-12 合肥君正科技有限公司 一种数据交互方法和装置
LU101088B1 (en) * 2019-01-04 2020-07-07 Iee Sa Method and System for Processing Neural Network Predictions in the Presence of Adverse Perturbations
CN113646785B (zh) * 2019-03-29 2024-04-12 谷歌有限责任公司 使用自动ccz量子态的表面编码计算
WO2022082342A1 (en) * 2020-10-19 2022-04-28 Alibaba Group Holding Limited Computer memory-side pointer chasing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1981123A (zh) * 2004-06-25 2007-06-13 Fev电机技术有限公司 具有神经网络的汽车控制装置
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法
CN104598972A (zh) * 2015-01-22 2015-05-06 清华大学 一种大规模数据回归神经网络快速训练方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974169A (en) * 1989-01-18 1990-11-27 Grumman Aerospace Corporation Neural network with memory cycling
US9336498B2 (en) * 2012-06-19 2016-05-10 Georges Harik Method and apparatus for improving resilience in customized program learning network computational environments
US9082078B2 (en) * 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1981123A (zh) * 2004-06-25 2007-06-13 Fev电机技术有限公司 具有神经网络的汽车控制装置
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法
CN104598972A (zh) * 2015-01-22 2015-05-06 清华大学 一种大规模数据回归神经网络快速训练方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Neural Turing Machines;Alex Graves et al.;《arXiv:1410.5401v2 [cs.NE]》;20141210;第2-4节,图1 *
Recurrent Neural Networks with External Memory for Language Understanding;Baolin Peng et al.;《arXiv:1506.00195v1 [cs.CL]》;20150531;第1-5页 *

Also Published As

Publication number Publication date
EP3362951A1 (en) 2018-08-22
WO2017083744A1 (en) 2017-05-18
US20170140264A1 (en) 2017-05-18
EP3362951B1 (en) 2021-07-21
CN108475346A (zh) 2018-08-31

Similar Documents

Publication Publication Date Title
US11829860B2 (en) Processing and generating sets using recurrent neural networks
US11928600B2 (en) Sequence-to-sequence prediction using a neural network model
US11321542B2 (en) Processing text sequences using neural networks
CN110268422B (zh) 利用强化学习的设备布局优化
EP3446260B1 (en) Memory-efficient backpropagation through time
CN105719001B (zh) 使用散列的神经网络中的大规模分类
US20210117801A1 (en) Augmenting neural networks with external memory
CN113887701B (zh) 生成用于神经网络输出层的输出的方法、系统和存储介质
CN109074517B (zh) 全局归一化神经网络
US11151443B2 (en) Augmenting neural networks with sparsely-accessed external memory
US11010664B2 (en) Augmenting neural networks with hierarchical external memory
WO2018156942A1 (en) Optimizing neural network architectures
CN108369661B (zh) 神经网络编程器
CN108475346B (zh) 神经随机访问机器
US11010663B2 (en) Associative long short-term memory neural network layers
US11755879B2 (en) Low-pass recurrent neural network systems with memory
US20200302303A1 (en) Optimization of neural network in equivalent class space
US10635972B1 (en) Recurrent neural networks with rectified linear units
EP4118584A1 (en) Hyperparameter neural network ensembles
CN114258546A (zh) 反对称神经网络

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant