CN108431832A - 利用外部存储器扩增神经网络 - Google Patents
利用外部存储器扩增神经网络 Download PDFInfo
- Publication number
- CN108431832A CN108431832A CN201680072537.6A CN201680072537A CN108431832A CN 108431832 A CN108431832 A CN 108431832A CN 201680072537 A CN201680072537 A CN 201680072537A CN 108431832 A CN108431832 A CN 108431832A
- Authority
- CN
- China
- Prior art keywords
- weight
- neural network
- external memory
- write
- reading
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Processing (AREA)
Abstract
用外部存储器扩增神经网络的方法、***和装置,包括编码在计算机存储介质上的计算机程序。***中的一个包括存储器接口子***,其被配置为执行包括以下的操作:确定外部存储器中的多个位置中的每一个的相应基于内容的权重;确定外部存储器中的多个位置中的每一个的相应分配权重;从位置的相应基于内容的权重和位置的相应分配权重确定外部存储器中的多个位置中的每一个的相应最终写入权重;以及根据最终写入权重将由写入向量定义的数据写入外部存储器。
Description
背景技术
本说明书涉及神经网络***体系结构。
神经网络是机器学习模型,其采用一层或多层非线性单元来预测所接收的输入的输出。一些神经网络除了输出层外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层(即下一个隐藏层或输出层)的输入。网络的每一层根据相应的参数集合的当前值从所接收的输入生成输出。
一些神经网络是递归神经网络。递归神经网络是接收输入序列并从输入序列生成输出序列的神经网络。具体地,递归神经网络可以在计算当前输出中使用来自处理先前的输入的网络的一些或全部内部状态。递归神经网络的示例是包括一个或多个长时间的短期存储器(LSTM)存储器块的LSTM神经网络。每个LSTM存储器块可以包括一个或多个单体,每个单体包括允许单体存储单体的先前状态的输入门、忘记门和输出门,例如用于生成当前激活或被提供到LSTM神经网络的其他组件。
发明内容
本说明书描述了与扩增的神经网络***相关的技术。通常,扩增的神经网络***包括被配置为接收神经网络输入并生成神经网络输出的神经网络、存储从神经网络输出的部分取得的值的外部存储器(即神经网络外部的存储器)以及存储器接口子***,其被配置为接收神经网络输出的部分以及使用所接收的部分从外部存储器擦除、写入和读取。
在此描述了用于处理***输入序列以生成***输出序列的扩增的神经网络***。扩增的神经网络***包括神经网络,其中神经网络被配置为接收神经网络输入序列并处理每个神经网络输入以从神经网络输入生成神经网络输出。神经网络输出包括***输出部分、读取部分、写入键和写入向量。神经网络***还包括外部存储器;和存储器接口子***。所述存储器接口子***被配置为执行操作,所述操作包括:对于神经网络输出中的每一个,提供从***输出部分取得的输出作为***输出序列中的***输出;从写入键确定外部存储器中的多个位置中的每一个的相应基于内容的权重;基于外部存储器中的多个位置中的每一个用于修改存储在该位置中的数据的可用程度,确定外部存储器中的多个位置中的每一个的相应分配权重;从位置的相应基于内容的权重和位置的相应分配权重确定外部存储器中的多个位置中的每一个的相应最终写入权重;根据最终写入权重将写入向量定义的数据写入外部存储器;从读取部分确定外部存储器中的多个位置中的每一个的一个或多个读取权重集合;根据读取权重集合从外部存储器读取数据;以及将从外部存储器读取的数据与***输入序列中的下一个***输入组合以在神经网络输入序列中生成下一个神经网络输入。
确定外部存储器中的多个位置中的每一个的相应分配权重可以包括:确定表示位置的可用性正被使用的程度的位置中的每一个的相应使用值;根据使用值对位置进行排序;以及基于排序和使用值确定位置中的每一个的相应分配权重。确定位置中的每一个的相应使用值可以包括:基于用于写入先前神经网络输出的位置的先前最终写入权重来增加位置的先前使用值。神经网络输出可以包括释放门集合,所述释放门定义当写入外部存储器时多个位置中的每一个能够释放的程度,并且其中确定位置中的每一个的相应使用值可以包括基于位置能够释放的程度来修改位置的增加的先前使用值以生成位置的相应使用值。
根据使用值对位置进行排序可以包括按照使用的升序来对位置进行排序。确定位置中的每一个的相应分配权重可以包括:通过将位置的使用值减一来确定位置的初始分配权重;以及基于排序中的其他定位中的其他位置的使用值来修改初始分配权重。
神经网络输出可以包括:分配门,其管理基于内容的权重和分配权重之间的内插,以及写入门,其管理对外部存储器的写入的写入强度。确定多个位置中的每一个的相应最终写入权重可以包括:根据分配门在位置的基于内容的权重和位置的分配权重之间的内插,并且根据写入门门控内插的结果来确定位置的最终写入权重。
神经网络输出可以进一步包括擦除向量。操作可以还包括:对于神经网络输出中的每一个,根据最终写入权重和擦除向量从外部存储器擦除。
在此还描述了用于处理***输入序列以生成***输出序列的扩增的神经网络***。扩增的神经网络***包括神经网络,其中神经网络被配置为接收神经网络输入序列并处理每个神经网络输入以从神经网络输入生成神经网络输出。神经网络输出包括:***输出部分、写入部分、用于一个或多个读取头端中的每一个的相应读取键、以及写入向量。扩增的神经网络***还包括外部存储器和存储器接口子***。所述存储器接口子***被配置为执行操作,所述操作包括:对于神经网络输出中的每一个,提供从***输出部分取得的输出作为***输出序列中的***输出;从神经网络输出的写入部分确定外部存储器中的多个位置中的每一个的相应写入权重;根据相应写入权重将由写入向量定义的数据写入外部存储器;对于一个或多个读取头端中的每一个:从读取头端的读取键确定外部存储器中的多个位置中的每一个的相应基于内容的读取权重,从由存储器接口子***执行的先前写入操作的权重确定外部存储器中的多个位置中的每一个的一个或多个相应历史权重,从一个或多个历史权重和基于内容的读取权重确定多个位置中的每一个的相应最终读取权重,根据最终读取权重从外部存储器读取数据;以及将从外部存储器读取的数据与***输入序列中的下一个***输入组合以在神经网络输入序列中生成下一个神经网络输入。
操作还可以包括:对于神经网络输出中的每一个,确定外部存储器中的多个位置中的每一个的一个或多个擦除权重集合;以及根据擦除权重集合从外部存储器擦除数据。
神经网络输出可以包括用于每个读取头端的相应读取模式向量,所述读取头端管理一个或多个历史权重与基于内容的读取权重之间的内插。从一个或多个历史权重和基于内容的读取权重确定多个位置中的每一个的相应最终读取权重可以包括:根据读取模式向量在位置的一个或多个历史权重和位置的基于内容的读取权重之间内插。
所述操作可以还包括维持时间链接矩阵,其跟踪由存储器接口子***在外部存储器上执行的先前写入操作的写入权重的历史。操作可以还包括:对于神经网络输出中的每一个,基于神经网络输出的写入权重来更新时间链接矩阵。确定外部存储器中的多个位置中的每一个的一个或多个相应历史权重可以包括从更新的时间链接矩阵确定多个位置中的每一个的相应向后历史权重。从更新的时间链接矩阵确定多个位置中的每一个的相应向后历史权重可以包括:在更新的时间链接矩阵和从先前的神经网络输出的读取头端的最终读取权重取得的向量之间执行矩阵乘法。
确定外部存储器中的多个位置中的每一个的一个或多个相应历史权重可以包括:从更新的时间链接矩阵的转置确定多个位置中的每一个的相应向前历史权重。从更新的时间链接矩阵确定多个位置中的每一个的相应向后历史权重可以包括:在更新的时间链接矩阵的转置和从先前的神经网络输出的读取头端的最终读取权重取得的向量之间执行矩阵乘法。
更新时间链接矩阵可以包括:确定多个位置中的每一个的相应优先权重,其表示位置是写入的最后位置的程度;以及使用多个位置中的每一个的优先权重和神经网络输出的写入权重来更新时间链接矩阵。
还描述了编码在一个或多个计算机存储介质上的计算机程序产品,所述计算机程序产品包括指令,所述指令在由一个或多个计算机执行时使一个或多个计算机实现上述任何扩增的神经网络***的扩增的神经网络***。
还描述了包括由上述任何扩增的神经网络***的存储器接口子***执行的操作的方法。
对于被配置为执行特定操作或动作的一个或多个计算机的***意味着***已经在其上安装了软件、固件、硬件或它们的组合,其在操作中使***执行操作或动作。对于要配置为执行特定操作或动作的一个或多个计算机程序意味着一个或多个程序包括在由数据处理装置执行时使装置执行操作或动作的指令。
本说明书中描述的主题可以实现在特定实施例中,以实现以下优点中的一个或多个。通过用外部存储器(即神经网络外部的存储器)扩增神经网络,扩增的神经网络可以更准确地从各种机器学习任务的接收的输入生成输出。具体地,为了便于处理来自输入序列的给定输入,扩增的神经网络可以通过从外部存储器读取,在处理序列中的许多先前输入期间有效地使用由扩增的神经网络生成的信息。类似地,为了便于处理来自序列的后续输入,扩增的神经网络可以存储在处理外部存储器中的当前输入期间生成的信息。此外,可以增加外部存储器的大小而不增加扩增的神经网络的可训练参数的数量。此外,因为访问外部存储器的整个机制可以被看作是可区分的,所以可以有效地训练扩增的神经网络***。
与其他用于用外部存储器扩增神经网络的体系结构相比,本说明书中描述的***允许神经网络通过改进的读取、写入和擦除机制来更好地利用外部存储器。例如,本说明书中描述的***允许神经网络使用确保分配的存储器块不重叠和干扰的机制来写入外部存储器。另外,本说明书中描述的***允许神经网络释放已经写入的存储器位置,并因此在处理长***输入序列时重新使用存储器。另外,本说明书中描述的***跟踪进行写入的顺序,允许神经网络保持写入外部存储器的序列信息,并恢复从外部存储器读取的写入顺序,即使写入头端跳转到存储器的不同部分。
在附图和下面的描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其他特征、方面和优点将从说明书、附图和权利要求中变得显而易见。
附图说明
图1A示出了示例扩增的神经网络***。
图1B是示例扩增的神经网络***的操作的概念图。
图2是用于从***输入生成***输出的示例过程的流程图。
图3是用于写入外部存储器的示例过程的流程图。
图4是用于确定外部存储器中的位置的分配权重的示例过程的流程图。
图5是用于从外部存储器擦除的示例过程的流程图。
图6是用于从给定读取头端的外部存储器读取的示例过程的流程图。
图7是用于确定读取头端的历史权重的示例过程的流程图。
图8是用于生成外部存储器中的位置的基于内容的权重的示例过程的流程图。
在各个附图中相同的附图标记和记号指示相同的元件。
具体实施方式
图1A示出了示例扩增的神经网络***100。扩增的神经网络***100是被实现为一个或多个位置中的一个或多个计算机上的计算机程序的***的示例,其中实现了下面描述的***、组件和技术。
扩增的神经网络***100是机器学习***,其接收***输入序列并从***输入生成***输出序列。例如,扩增的神经网络***100可以接收***输入x作为输入序列的一部分并且从***输入x生成***输出y。扩增的神经网络***100可以将生成的输出序列存储在输出数据仓库中或提供输出以用于一些其他直接目的,例如用于呈现给用户或供另一***进一步处理。
扩增的神经网络***100可以被配置为接收任何种类的数字数据输入并且基于输入生成任何种类的分值、分类或回归输出。
作为一个示例,扩增的神经网络***100可以被配置为执行图数据处理任务,即需要***识别和探索图结构中的模式的任务。具体地,如果扩增的神经网络***100的输入是图的部分的表示,例如表示图的节点和边的序列化版本的向量序列以及涉及该图的查询,基于输入生成的输出可以定义对查询的答案,例如可以定义从一个节点到另一个节点的通过图的最短路径,可以定义从图中缺失的数据,例如图中的缺失节点或边。作为另一示例,如果扩增的神经网络***100的输入是图的部分的表示,例如表示图的节点和边的序列化版本的向量序列,则输出可以是分类输出,其包括类别集合中的每一个的分值,其中每个分值表示图属于该类别的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是已从图像中提取的图像或特征,则扩增的神经网络***100对于给定图像生成的输出可以是对象类别集合中的每一个的分值,其中每个分值表示图像包含属于该类别的对象的图像的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是从互联网资源、文档或文档的部分提取的互联网资源(例如网页)、文档或文档的部分,由扩增的神经网络***100对于给定的互联网资源、文档或文档的部分生成的输出可以是主题集合中的每一个的分值,其中每个分值表示互联网资源、文档或文档的部分关于该主题的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是特定广告的闪现上下文的特征,则扩增的神经网络***100生成的输出可以是表示特定广告将被点击的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是用户的个性化推荐的特征,例如表征推荐的上下文的特征,例如表征用户所采取的先前动作的特征,则扩增的神经网络***100生成的输出可以是内容项目集合中的每一个的分值,其中每个分值表示用户将乐意响应于被推荐内容项目的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是一种语言的文本,则扩增的神经网络***100生成的输出可以是另一种语言的文本片段集合中的每一个的分值,其中每个分值表示另一种语言的文本片段是将输入文本正确翻译为另一种语言的估计的可能性。
作为另一个示例,如果扩增的神经网络***100的输入是口头话语、口头话语的序列或从两者中的一个取得的特征,则扩增的神经网络***100生成的输出可以是文本片段集合中的每一个的分值,每个分值表示文本片段是用于话语或话语序列的正确转录的估计的可能性。
作为另一个示例,扩增的神经网络***100可以是语音合成***的一部分。
作为另一个示例,扩增的神经网络***100可以是视频处理***的一部分。
作为另一个示例,扩增的神经网络***100可以是对话***的一部分。
作为另一个示例,扩增的神经网络***100可以是自动补全***的一部分。
作为另一个示例,扩增的神经网络***100可以是文本处理***的一部分。
作为另一个示例,扩增的神经网络***100可以是强化学习***的一部分。
具体地,扩增的神经网络***100包括神经网络102和外部存储器104。神经网络102可以是前馈神经网络或递归神经网络,例如浅或深长时间的短期存储器(LSTM)神经网络,其被配置为接收神经网络输入并处理神经网络输入以生成神经网络输出。
通常,由神经网络102接收的神经网络输入是当前***输入和由存储器接口子***106从外部存储器读取的数据的组合。例如,神经网络102可以被配置为接收当前***输入x和从外部存储器104读取的数据r并且生成神经网络输出,该神经网络输出包括定义***输出的数据y和提供给存储器接口子***106的附加输出o。
存储器接口子***106接收由神经网络生成的输出,例如神经网络输出o+y的部分o(其中+表示串联),并将接收到的输出转换成在外部存储器104上要执行的擦除、读取和写入操作。也就是说,存储器接口子***106从神经网络102接收输出o,并且基于输出o从外部存储器104擦除数据e,将数据w写入到外部存储器104,以及从外部存储器104读取数据r。然后可以将由存储器接口子***106读取的数据作为随后的神经网络输入的一部分例如与***输入一起提供给神经网络102。
通常,输出部分o包括由存储器接口子***106用于写入外部存储器104的写入部分,由存储器接口子***106用于从外部存储器104读取的一个或多个读取头端中的每一个的相应读取部分,和由存储器接口子***106在从外部存储器104擦除时使用的擦除部分。
外部存储器104存储由存储器接口子***106写入外部存储器104的数据向量。在一些实施方式中,外部存储器104是具有元素M(i,j,t)的实值矩阵存储器,其中i索引位置,j索引向量元素,并且t索引时间。因此,M(i,j,t)将是在时间t时在外部存储器104中存储在位置i处的向量的元素j处存储的值。通过以这种方式配置外部存储器104、存储器接口子***106和神经网络102,扩增的神经网络***100的组件可以被视为是完全可区分的,从而允许扩增的神经网络***100被有效地训练。
图1B是示例扩增的神经网络***100的操作的概念图。
如图1B所示,神经网络102接收神经网络输入(“输入”)并生成神经网络输出(“输出”)。存储器访问子***106将神经网络输出转换成由外部存储器104上的一个写入头端和两个读取头端执行的操作。具体地,存储器访问子***106使用神经网络输出来执行外部存储器上的写入操作160和两个读取操作162和164。
为了执行写入操作160,存储器访问子***106维持外部存储器104中的位置的使用值170。每个使用值表示正在使用存储数据的对应位置的可用程度。根据使用值170,存储器访问子***106确定外部存储器104中的每个位置用于修改存储在位置中的数据的可用性程度,然后根据该可用性写入外部存储器104。下面参照图2-4更详细地描述写入外部存储器。。
为了执行读取操作162和164中的每一个,存储器访问子***106维持链接数据180,该链接数据180跟踪用于在外部存储器104上执行的先前写入操作的写入权重的历史。根据链接数据180,存储器访问子***106生成每个读取头端的相应权重集合,然后根据所生成的权重从外部存储器104读取。下面参照图2、6和7更详细地描述从外部存储器读取。
尽管图1B的示例示出了两个读取头端,但是在其他示例中,存储器访问子***106使用不同数量的读取头端,例如一个、三个或五个。
图2是用于从***输入生成***输出的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置的一个或多个计算机的***执行。扩增的神经网络***,例如,根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程200。
该***接收***输入(步骤202)。***输入是***接收的***输入序列中的一个。
***获得通过从外部存储器(例如,图1A的外部存储器104)读取生成的一个或多个读取数据向量(步骤204)。通常,每个读取数据向量对应于相应的读取头端,并且***通过在处理***输入序列中的先前输入期间使用相应的读取头端从外部存储器读取而生成。
***通过组合***输入和从外部存储器读取的数据来生成神经网络输入(步骤206)。例如,***可以连接***输入和每个读取数据向量以生成神经网络输入。对于第一***输入,***可以将***输入与预定向量连接,例如神经网络的学习状态。
***使用神经网络(例如图1A的神经网络102)处理神经网络输入,以从神经网络输入生成神经网络输出(步骤208)。取决于实现,神经网络可以是前馈神经网络,例如卷积神经网络或另一种深度前馈神经网络,或递归神经网络,例如LSTM神经网络。如果神经网络是递归神经网络,则递归神经网络在处理当前神经网络输入时也使用来自前一个神经网络输入的递归神经网络的内部状态来生成神经网络输出。在一些实施方式中,神经网络包括递归和前馈层。
***从神经网络输出的***输出部分生成***输入的***输出(步骤210)。神经网络输出的***输出部分是例如由***管理员指定的神经网络输出的预定部分作为要用于生成***输出的部分,即,使得神经网络输出的相同部分用于为由神经网络生成的每个输出生成***输出。
在一些实施方式中,***提供***输出部分作为***输入的***输出。然而,在一些其他实施方式中,***将从外部存储器读取的数据(如以下参照步骤216所描述的)与***输出部分组合(例如连接)和提供连接的输出作为***输出,或者对连接的输出应用一个或多个变换以生成***输出。
***使用神经网络输出的写入部分写入外部存储器(步骤212)。神经网络输出的写入部分是神经网络输出的预定部分,其已经被指定为在写入外部存储器中要使用的部分。
具体地,为了写入外部存储器,***使用神经网络输出的写入部分来确定写入权重,并且根据写入权重将写入向量写入外部存储器。通常,写入权重是外部存储器中位置的基于内容的写入权重和分配权重的组合。
下面参照图3和图4更详细地描述确定写入权重和写入外部存储器。
***使用神经网络输出的擦除部分从外部存储器擦除(步骤214)。神经网络输出的擦除部分是神经网络输出的预定部分,其被指定为从外部存储器擦除时要使用的部分。具体地,***使用由擦除部分定义的擦除向量并根据上述最终写入权重从外部存储器擦除。从外部存储器擦除在下面参照图5进行更详细的描述。
对于一个或多个读取头端中的每一个,***使用读取头端的神经网络输出的读取部分从外部存储器读取,以生成读取头端的读取向量(步骤216)。对于给定读取头端的神经网络输出的读取部分是已被指定为使用读取头端从外部存储器读取时使用的部分的神经网络输出的预定部分。也就是说,每个读取头端分配了神经网络输出的不同部分。
具体地,为了使用读取头端从外部存储器读取,***使用用于读取头端的神经网络输出的读取部分来确定读取权重,然后根据读取权重从外部存储器中的位置读取。通常,***根据外部存储器中的位置的基于内容的权重和一个或多个历史权重来确定给定读取头端的读取权重。
下面参照图6和图7更详细地描述确定读取权重和从外部存储器读取。
在***使用多个读取头端从外部存储器读取的实施方式中,***对给定的***输入执行多个读取操作,并且可以并行且独立于每个其他操作集合来执行多个读取操作。一旦已为每个读取头端生成读取向量,***就可以连接读取向量以生成用于***输入的最终读取向量。此外,***可以按任何顺序执行擦除、读取和写入操作。例如,在一些实施方式中,***擦除然后写入然后从外部存储器读取。但是,在其他实施方式中,***可以按不同的顺序执行这些操作。
可以对于***输入序列中的每个***输入来执行过程200以生成***输入序列的***输出序列。***输入序列可以是以下的序列,对于该序列,期望的输出(即***应当为输入序列生成的输出序列)是未知的。***还可以对训练数据集合中的输入(即,应该由***预测的输出是已知的输入集合)执行过程200,以便训练***,即确定训练值,其用于神经网络的参数和从外部存储器擦除、写入和读取时使用的过程的任何附加参数。因为***的组件是完全可区分的,所以可以对从训练数据集合中选择的输入重复执行过程200,作为训练神经网络的常规机器学习训练技术的一部分,例如如果神经网络是递归神经网络,则通过时间训练技术的随机梯度下降反向传播。
图3是用于将数据写入外部存储器的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100可以执行过程300。
***接收神经网络输出的写入部分(步骤302)。神经网络输出的写入部分包括写入键、写入强度值、写入向量、释放门集合、分配门和写入门。在一些实施方式中,***处理写入部分的一个或多个域移位功能以确保值位于正确的域中以生成写入键、写入强度值、写入向量、释放门、分配门和写入门。
***根据包括在写入部分中的写入键和写入强度值来确定外部存储器中的位置的基于内容的权重(步骤304)。通常,给定位置的基于内容的权重反映该位置处的数据与写入键的相似程度。下面参照图8描述从键确定基于内容的权重。
***使用释放门并且基于外部存储器中的每个位置用于修改存储在位置中的数据的可用程度来确定外部存储器中的位置的分配权重(步骤306)。一般来说,为了确定分配权重,***确定每个位置的使用值,其表示使用位置的可用程度,然后基于使用值、先前神经网络输出的先前最终写入权重和释放门生成分配权重。下面参照图4更详细地描述生成分配权重。
***根据基于内容的权重和分配权重来确定外部存储器中的位置的最终写入权重(步骤308)。
具体地,***使用管理基于内容的权重和分配之间的内插的分配门,以及管理当前写入外部存储器的写入强度的写入门来组合每个位置的分配权重和基于内容的权重以生成该位置的最终写入权重。
更具体地,对于每个位置,***根据分配门在位置的基于内容的权重和位置的分配权重之间进行内插,然后根据写入门门控内插的结果以确定该位置的最终写入权重。
***根据最终写入权重将写入向量定义的数据写入外部存储器(步骤310)。也就是说,为了写入外部存储器中的给定位置,***将写入向量乘以该位置的最终写入权重以确定该位置的经调整的写入向量,然后将当前存储在该位置的向量与该位置的经调整的写入向量相加。
图4是用于确定外部存储器中的位置的分配权重的示例过程400的流程图。为了方便,过程400将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程400。
***访问外部存储器中的每个位置的相应先前使用值(步骤402)。
给定位置的先前使用值表示在先前写入外部存储器之前正在使用该位置的可用程度。如果当前写入是第一次写入外部存储器,则***使用默认使用值(例如零)作为每个位置的先前使用值。
***更新先前使用值以确定每个位置的相应当前使用值(步骤404)。
具体地,对于每个位置,***基于先前写入位置期间用于写入该位置的最终写入权重来增加先前的使用值。如果当前写入将是第一次写入,则***不增加使用值。
对于每个位置,***然后基于释放门修改该位置的增加的先前使用值以确定该位置的当前使用值。通常,释放门定义在写入外部存储器时每个位置可以被释放的程度。
具体地,写入部分包括用于***用来从外部存储器读取的每个读取头端的相应释放门。***从每个读取头端的释放门和先前最终读取权重确定该位置的存储器保留值。给定位置的存储器保留值定义了位置不会被释放门释放的程度。
具体地,在一些实施方式中,给定存储器位置的存储器保留值ψt满足:
其中i从1到读取头端的总数R,是第i个读取头端的释放门,并且是第i个读取头端的先前最终读取权重。
***然后使用存储器位置的存储器保留值来降低存储器位置的增加的先前使用值。在一些实施方式中,给定存储器位置的当前使用值ut满足:
其中ut-1是位置的先前使用值,是该位置的先前最终写入权重,并且ψt是该位置的存储器保留值。
***根据它们的使用值,即按照使用的升序,来排序位置(步骤406)。
***然后基于排序和位置的使用值确定每个位置的相应分配权重(步骤408)。
在一些实施方式中,***通过从位置的使用值减一来确定每个位置的相应初始分配权重,然后基于该排序中的其他定位中的其他位置的使用值来修改该位置的初始分配权重以生成该位置的分配权重。
具体地,在这些实施方式中,对于给定位置,***确定比给定位置使用得少(即比排序中给定位置低)的位置的使用值的乘积。***然后通过将初始分配权重乘以乘积来修改给定位置的初始分配权重。
图5是用于从外部存储器擦除的示例过程500的流程图。为了方便,过程500将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程500。
***接收神经网络输出的擦除部分(步骤502)。擦除部分包括擦除向量。在一些实施方式中,***利用域移位功能来处理擦除部分,该域移位功能确保这些值位于正确的域中以生成擦除向量,即,确保擦除向量中的所有值在0和1之间,包括0和1。
***使用擦除向量和最终写入权重从外部存储器擦除(步骤504)。具体地,对于外部存储器中的每个位置,***将擦除向量乘以该位置的最终写入权重以确定该位置的加权擦除向量。***然后从所有1的向量中减去位置的加权擦除向量以生成最终擦除向量,然后执行当前存储在存储器位置处的向量和最终擦除向量的元素依次相乘以从该位置擦除。
图6是用于针对给定读取头端从外部存储器读取的示例过程600的流程图。为了方便,过程600将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程600。
***可以为一个或多个读取头端中的每一个执行过程600,以为每个读取头端生成相应的读取向量。
***接收用于读取头端的神经网络输出的读取部分(步骤602)。用于读取头端的读取部分包括用于读取头端的读取键、读取强度值和读取模式向量。在一些实施方式中,***利用一个或多个域移位功能来处理用于读取头端的读取部分,以确保这些值位于正确的域中以生成用于读取头端的读取键和读取模式向量。
***从用于读取头端的读取键和读取强度值确定外部存储器中的每个位置的基于内容的读取权重(步骤604)。通常,给定位置的基于内容的权重反映该位置处的数据与读取键的相似程度。下面参照图8描述从键确定基于内容的权重。
***根据***执行的先前写入操作的权重确定外部存储器中的每个位置的一个或多个相应的历史权重(步骤606)。
通常,***维持时间链接矩阵,该时间链接矩阵跟踪由***在外部存储器上执行的先前写入操作的写入权重的历史,并使用时间链接矩阵确定历史权重。
在一些实施方式中,***为每个位置确定两个历史权重:向后历史权重和向前历史权重。
下面参照图7更详细地描述生成历史权重。
***根据基于内容的读取权重和一个或多个历史权重确定外部存储器中的位置的最终读取权重(步骤608)。
具体地,***使用读取模式向量,其管理一个或多个历史权重与基于内容的读取权重之间的内插,以将每个位置的一个或多个历史权重和基于内容的权重进行组合以生成该位置的最终读取权重。也就是说,读取模式向量包括用于每个历史权重和基于内容的权重的相应内插值。
更具体地,对于每个位置,***根据读取模式向量在该位置的一个或多个历史权重和该位置的基于内容的权重之间内插,以确定该位置的最终读取权重。
***根据最终读取权重从外部存储器读取数据以生成读取头端的读取数据向量(步骤610)。具体地,***通过根据最终读取权重组合存储在外部存储器中的每个位置处的向量来生成读取数据向量。也就是说,***计算存储在外部存储器中的每个向量的加权和,其中每个向量的权重是相应存储器位置(即存储向量的存储器位置)的最终读取权重。
图7是用于确定读取头端的历史权重的示例过程700的流程图。为了方便,过程700将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程700。
该***维持时间链接矩阵,该时间链接矩阵跟踪由***在外部存储器上执行的先前写入操作的写入权重的历史(步骤702)。具体地,时间链接矩阵的元素[i,j]表示位置i是写入在先前写入操作对于先前神经网络输出的位置j之后的位置的程度。
***还维持每个位置的相应优先权重,其表示位置是先前写入操作对于先前神经网络输出写入的最后位置的程度(步骤704)。
***使用神经网络输出的优先权重和最终写入权重更新时间链接矩阵(步骤706)。
具体地,在一些实施方式中,更新的时间链接矩阵Lt的条目[i,j]满足:
Lt[i,j]=(1-wt[i]-wt[j])Lt-1[i,j]+wt[i]·pt-1[j],
其中,wt[x]是外部存储器中的位置x的当前最终写入权重,pt-1[j]是外部存储器中的位置j的优先权重,并且Lt-1[i,j]是更新之前的时间链接矩阵的条目[i,j]。
在一些实施方式中,在更新时间链接矩阵之前,***可以从当前最终写入权重生成稀疏当前最终写入权重并且从优先权重生成稀疏优先权重并且在更新时间链接矩阵时使用稀疏写入和稀疏优先权重,即代替当前最终写入权重和优先权重。通过使用稀疏权重来更新时间链接矩阵,***降低了更新链接矩阵和确定历史权重所需的存储器和计算的量。
为了从当前写入权重确定稀疏写入权重,***将除了所有存储位置的写入权重之中的K(小于外部存储器中的位置的总数的预定值)个最高写入权重值之外的所有值设置为0并且将其余的K个权重中的每一个除以其余的K个权重的总和。***可以以类似的方式确定稀疏优先权重。
***从读取头端的更新的时间链接矩阵和先前最终读取权重确定读取头端的历史权重(步骤708)。
在一些实施方式中,***通过在更新的时间链接矩阵和用于先前神经网络输出的读取头端的先前最终读取权重的向量之间执行矩阵乘法来确定包括每个存储器位置的相应向后历史权重的向后历史权重向量。
在一些这些实施方式中,***还通过在更新的时间链接矩阵的转置和先前神经网络输出的读取头端的先前最终读取权重的向量之间执行矩阵乘法来确定包括每个存储器位置的相应向前历史权重的向前历史权重向量。
***更新维持的优先权重以考虑当前写入外部存储器以用于在从外部存储器进行下一次读取之前更新所更新的时间读取矩阵(步骤710)。具体地,在初始写入外部存储器之前,对于所有存储器位置,优先权重为零。
在每次写入外部存储器之后,***基于当前写入操作的当前最终写入权重和先前优先权重来更新优先权重。
具体地,在一些实施方式中,***通过将该位置的维持的优先权重乘以在1与当前写入操作的所有存储器位置的所有写入权重的总和之间的差来确定给定位置的所更新的优先权重以生成经调整的维持的优先权重。***然后将该位置的当前最终写入权重添加到该位置的经调整的维持的优先权重以确定该位置的所更新的优先权重。
图8是用于为外部存储器中的位置生成基于内容的权重的示例过程800的流程图。为了方便,过程800将被描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,扩增的神经网络***,例如根据本说明书适当编程的图1A的扩增的神经网络***100,可以执行过程800。
该***接收基于内容的键向量(步骤802)。
***计算基于内容的键向量和存储在外部存储器中的向量之间的相似性量度(步骤804)。即,***计算基于内容的键向量与存储在外部存储器中的每个向量之间的相应相似性度量。例如,相似性量度可以是余弦相似性度量,其中基于内容的键向量k(h,t)与位于外部存储器M中的第i个位置处的给定向量M(i,·,t)之间的相似度K满足:
***使用相似性量度来计算外部存储器中的位置的基于内容的权重(步骤806)。通常,***计算权重,使得与基于内容的键向量具有较高相似性量度的位置被分配较高的权重。例如,外部存储器M中的第i个位置处的基于内容的权重可以满足:
其中β(h,t)是基于内容的权重的键强度值。
取决于实施方式,***可以基于从神经网络接收的输出来维持存储在外部存储器中的数据的各种程度的持久性。例如,在一些实施方式中,***在***输入的每个序列已被***完全处理之后重新设置外部存储器。作为另一个示例,在一些实施方式中,存储在外部存储器中的数据在输入序列之间持续存在。也就是说,***不会在***输入序列之间从外部存储器删除任何数据。在这些实施方式中,***可以在分配给***的给定任务完成之后并且在***开始不同的机器学习任务之前重新设置外部存储器。替选地,即使在任务之间,***也可以维持外部存储器而不删除值。因此,在处理当前输入序列的同时,***可以在处理先前的输入序列时或者甚至在执行先前的机器学习任务时利用存储在存储器中的数据。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形地实施的计算机软件或固件、计算机硬件(包括本说明书中公开的结构及其结构等同物)或它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在有形的非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。替选地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电信号、光信号或电磁信号,其被生成以对信息进行编码以便传输给合适的接收器装置以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基片、随机或串行存取存储器设备或它们中的一个或多个的组合。
术语“数据处理装置”是指数据处理硬件并且涵盖用于处理数据的所有类型的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置还可以是或者还包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理***、操作***或者它们中的一个或多个的组合的代码。
计算机程序(其也可被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释的语言、或声明性或过程性语言,并且可以以任何形式部署,包括作为独立程序或作为适用于计算环境的模块、组件、子例程或其他单元。计算机程序可能但不必须对应于文件***中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本,专用于所述程序的单个文件中,或者存储在多个协调文件中,例如存储一个或多个模块、子程序或部分代码的文件。计算机程序可以被部署为在一台计算机或多台计算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且装置也可以实现为专用逻辑电路。
举例来说,适用于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘)接收数据或将数据传输到大容量存储设备或两者。但是,计算机不需要这样的设备。此外,可以将计算机嵌入另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器等。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入其中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有以下的计算机上实现:显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器),用于向用户显示信息;以及用户可以通过其向计算机提供输入的键盘和指示设备,例如鼠标或轨迹球。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从设备接收文档来与用户交互;例如通过响应于从web浏览器接收到的请求,将网页发送到用户的客户端设备上的web浏览器。
本说明书中描述的主题的实施例可以在计算***中实现,该计算***包括后端组件,例如作为数据服务器,或者包括中间件组件(例如应用服务器),或者包括前端组件,例如具有用户可以通过其与本说明书中描述的主题的实现交互的关系图形用户界面或Web浏览器的客户端计算机,或者一个或多个这样的后端、中间件或前端组件的任何组合。***的组件可以通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。
计算***可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过运行在相应计算机上的计算机程序并且彼此具有客户端-服务器关系来产生的。
虽然本说明书包含许多具体的实施细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而应被解释为可能特定于特定发明的特定实施例的特征的描述。本说明书中在分立实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反地,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上文可以将特征描述为以某些组合起作用并且甚至最初如此要求,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从组合中删除,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,尽管在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,才能实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应该被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和***通常可以一起集成在单个软件产品中,或者打包成多个软件产品。
已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或序列顺序,才能实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
Claims (20)
1.一种用于处理***输入序列以生成***输出序列的扩增的神经网络***,所述扩增的神经网络***包括:
神经网络,其中所述神经网络被配置为接收神经网络输入序列并且处理每个神经网络输入以从该神经网络输入生成神经网络输出,其中所述神经网络输出包括:
***输出部分,
读取部分,
写入键,和
写入向量;
外部存储器;以及
存储器接口子***,其中所述存储器接口子***被配置为执行操作,所述操作包括对于每个神经网络输出:
提供从所述***输出部分取得的输出作为所述***输出序列中的***输出;
从所述写入键确定所述外部存储器中的多个位置中的每一个的相应基于内容的权重;
基于所述外部存储器中的多个位置中的每一个用于修改存储在该位置中的数据的可用程度,确定所述外部存储器中的多个位置中的每一个的相应分配权重;
从位置的相应基于内容的权重和位置的相应分配权重确定所述外部存储器中的多个位置中的每一个的相应最终写入权重;
根据所述最终写入权重将由所述写入向量定义的数据写入所述外部存储器;
从所述读取部分确定所述外部存储器中的多个位置中的每一个的一个或多个读取权重集合;
根据所述读取权重集合从所述外部存储器读取数据;以及
将从所述外部存储器读取的数据与所述***输入序列中的下一个***输入组合以在所述神经网络输入序列中生成下一个神经网络输入。
2.根据权利要求1所述的扩增的神经网络***,其中,确定所述外部存储器中的多个位置中的每一个的相应分配权重包括:
确定所述位置中的每一个的相应使用值,所述相应使用值表示正使用该位置的可用性的程度;
根据所述使用值对所述位置进行排序;以及
基于所述排序和所述使用值确定所述位置中的每一个的相应分配权重。
3.根据权利要求2所述的扩增的神经网络***,其中,确定所述位置中的每一个的相应使用值包括:
基于用于写入先前神经网络输出的位置的先前最终写入权重来增加所述位置的先前使用值。
4.根据权利要求3所述的扩增的神经网络***,其中,所述神经网络输出包括释放门集合,所述释放门定义当写入所述外部存储器时所述多个位置中的每一个能够被释放的程度,并且其中确定所述位置中的每一个的相应使用值包括:
基于所述位置能够被释放的程度来修改所述位置的增加的先前使用值以生成所述位置的相应使用值。
5.根据权利要求2-4中的任一项所述的扩增的神经网络***,其中根据所述使用值对所述位置进行排序包括按照使用的升序对所述位置进行排序。
6.根据权利要求5所述的扩增的神经网络***,其中,确定所述位置中的每一个的相应分配权重包括:
通过将所述位置的使用值减一来确定所述位置的初始分配权重;以及
基于所述排序中的其他定位中的其他位置的使用值来修改所述初始分配权重。
7.根据权利要求1至6中的任一项所述的扩增的神经网络***,其中,所述神经网络输出包括:
分配门,所述分配门管理所述基于内容的权重与所述分配权重之间的内插,以及
写入门,所述写入门管理对所述外部存储器的写入的写入强度,并且其中确定所述多个位置中的每一个的相应最终写入权重包括:
根据所述分配门在所述位置的基于内容的权重和所述位置的分配权重之间内插,以及
根据所述写入门来门控所述内插的结果以确定所述位置的最终写入权重。
8.根据权利要求1至7中的任一项所述的扩增的神经网络***,其中,所述神经网络输出进一步包括擦除向量,并且其中,所述操作还包括对于每个神经网络输出:
根据所述最终写入权重和所述擦除向量从所述外部存储器擦除。
9.一种用于处理***输入序列以生成***输出序列的扩增的神经网络***,所述扩增的神经网络***包括:
神经网络,其中所述神经网络被配置为接收神经网络输入序列并且处理每个神经网络输入以从该神经网络输入生成神经网络输出,其中所述神经网络输出包括:
***输出部分,
写入部分,
用于一个或多个读取头端中的每一个的相应读取键,和
写入向量;
外部存储器;以及
存储器接口子***,其中所述存储器接口子***被配置为执行操作,所述操作包括对于每个神经网络输出:
提供从所述***输出部分取得的输出作为所述***输出序列中的***输出;
从所述神经网络输出的写入部分确定所述外部存储器中的多个位置中的每一个的相应写入权重;
根据所述相应写入权重将由所述写入向量定义的数据写入所述外部存储器;
对于一个或多个读取头端中的每一个:
从所述读取头端的读取键确定所述外部存储器中的多个位置中的每一个的相应基于内容的读取权重,
从由所述存储器接口子***执行的先前写入操作的权重确定所述外部存储器中的多个位置中的每一个的一个或多个相应历史权重,
从所述一个或多个历史权重和所述基于内容的读取权重确定所述多个位置中的每一个的相应最终读取权重,和
根据所述最终读取权重从所述外部存储器读取数据;以及
将从所述外部存储器读取的数据与所述***输入序列中的下一个***输入组合以在所述神经网络输入序列中生成下一个神经网络输入。
10.根据权利要求9所述的扩增的神经网络***,所述操作还包括对于每个神经网络输出:
确定所述外部存储器中的多个位置中的每一个的一个或多个擦除权重集合;以及
根据所述擦除权重集合从所述外部存储器擦除数据。
11.根据权利要求9或10中的任一项所述的扩增的神经网络***,其中所述神经网络输出包括用于每个读取头端的相应读取模式向量,所述读取头端管理所述一个或多个历史权重与所述基于内容的读取权重之间的内插,并且其中从所述一个或多个历史权重和所述基于内容的读取权重确定所述多个位置中的每一个的相应最终读取权重包括:
根据所述读取模式向量在该位置的一个或多个历史权重和该位置的基于内容的读取权重之间内插。
12.根据权利要求9-11中的任一项所述的扩增的神经网络***,其中,所述操作还包括:
维持时间链接矩阵,所述时间链接矩阵跟踪由所述存储器接口子***在所述外部存储器上执行的先前写入操作的写入权重的历史。
13.根据权利要求12所述的扩增的神经网络***,其中,所述操作还包括对于每个神经网络输出:
基于所述神经网络输出的写入权重来更新所述时间链接矩阵。
14.根据权利要求13所述的扩增的神经网络***,其中,确定所述外部存储器中的多个位置中的每一个的一个或多个相应历史权重包括:
从所更新的时间链接矩阵确定所述多个位置中的每一个的相应向后历史权重。
15.根据权利要求14所述的扩增的神经网络***,其中,从所更新的时间链接矩阵确定所述多个位置中的每一个的相应向后历史权重包括:
在所更新的时间链接矩阵和从用于先前的神经网络输出的读取头端的最终读取权重取得的向量之间执行矩阵乘法。
16.根据权利要求13-15中的任一项所述的扩增的神经网络***,其中,确定所述外部存储器中的多个位置中的每一个的一个或多个相应历史权重包括:
从所更新的时间链接矩阵的转置确定所述多个位置中的每一个的相应向前历史权重。
17.根据权利要求16所述的扩增的神经网络***,其中,从所更新的时间链接矩阵确定所述多个位置中的每一个的相应向后历史权重包括:
在所更新的时间链接矩阵的转置和从用于先前的神经网络输出的读取头端的最终读取权重取得的向量之间执行矩阵乘法。
18.根据权利要求13-17中的任一项所述的扩增的神经网络***,其中,更新所述时间链接矩阵包括:
确定所述多个位置中的每一个的相应优先权重,所述相应优先权重表示所述位置是写入的最后位置的程度;以及
使用所述多个位置中的每一个的优先权重和所述神经网络输出的写入权重来更新所述时间链接矩阵。
19.一种编码在一个或多个计算机存储介质上的计算机程序产品,所述计算机程序产品包括指令,所述指令在由一个或多个计算机执行时使所述一个或多个计算机实现根据权利要求1-18中的任一项所述的扩增的神经网络***。
20.一种包括由根据权利要求1-18中的任一项所述的存储器接口子***执行的操作的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562265912P | 2015-12-10 | 2015-12-10 | |
US62/265,912 | 2015-12-10 | ||
PCT/US2016/066020 WO2017100711A1 (en) | 2015-12-10 | 2016-12-09 | Augmenting neural networks with external memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108431832A true CN108431832A (zh) | 2018-08-21 |
CN108431832B CN108431832B (zh) | 2022-09-13 |
Family
ID=57708799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680072537.6A Active CN108431832B (zh) | 2015-12-10 | 2016-12-09 | 利用外部存储器扩增神经网络 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10832134B2 (zh) |
EP (1) | EP3371747B1 (zh) |
JP (1) | JP6651629B2 (zh) |
KR (1) | KR102158683B1 (zh) |
CN (1) | CN108431832B (zh) |
WO (1) | WO2017100711A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112789626A (zh) * | 2018-09-27 | 2021-05-11 | 渊慧科技有限公司 | 可扩展和压缩的神经网络数据储存*** |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10044751B2 (en) * | 2015-12-28 | 2018-08-07 | Arbor Networks, Inc. | Using recurrent neural networks to defeat DNS denial of service attacks |
US20180189266A1 (en) * | 2017-01-03 | 2018-07-05 | Wipro Limited | Method and a system to summarize a conversation |
WO2018142378A1 (en) * | 2017-02-06 | 2018-08-09 | Deepmind Technologies Limited | Memory augmented generative temporal models |
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
US11243944B2 (en) * | 2017-06-29 | 2022-02-08 | Futurewei Technologies, Inc. | Dynamic semantic networks for language understanding and question answering |
CN107508866B (zh) * | 2017-08-08 | 2020-10-02 | 重庆大学 | 减小移动设备端神经网络模型更新的传输消耗的方法 |
US11188820B2 (en) | 2017-09-08 | 2021-11-30 | International Business Machines Corporation | Deep neural network performance analysis on shared memory accelerator systems |
US10853725B2 (en) | 2018-05-18 | 2020-12-01 | Deepmind Technologies Limited | Neural networks with relational memory |
JP6906478B2 (ja) * | 2018-05-23 | 2021-07-21 | 株式会社東芝 | 情報処理装置、情報処理方法、およびプログラム |
KR20190136431A (ko) | 2018-05-30 | 2019-12-10 | 삼성전자주식회사 | 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 |
US11775815B2 (en) * | 2018-08-10 | 2023-10-03 | Samsung Electronics Co., Ltd. | System and method for deep memory network |
US20200090035A1 (en) * | 2018-09-19 | 2020-03-19 | International Business Machines Corporation | Encoder-decoder memory-augmented neural network architectures |
CN110377342B (zh) * | 2019-06-10 | 2022-08-30 | 平安科技(深圳)有限公司 | 基于卷积神经网络的显存处理方法、装置及存储介质 |
CN112149049A (zh) | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于变换矩阵的装置和方法、数据处理*** |
US11604976B2 (en) | 2020-04-29 | 2023-03-14 | International Business Machines Corporation | Crossbar arrays for computations in memory-augmented neural networks |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092018A (en) * | 1996-02-05 | 2000-07-18 | Ford Global Technologies, Inc. | Trained neural network engine idle speed control system |
WO2000072256A2 (de) * | 1999-05-24 | 2000-11-30 | Ipcentury Ag | Neuronales netz zum computergestützten wissensmanagement |
CN101076806A (zh) * | 2004-12-09 | 2007-11-21 | 英国国防部 | 败血症的早期检测 |
CN101253493A (zh) * | 2005-08-31 | 2008-08-27 | 微软公司 | 在图形处理单元上训练卷积神经网络 |
CN103617235A (zh) * | 2013-11-26 | 2014-03-05 | 中国科学院信息工程研究所 | 一种基于粒子群算法的网络水军账号识别方法及*** |
CN103824291A (zh) * | 2014-02-24 | 2014-05-28 | 哈尔滨工程大学 | 连续量子雁群算法演化脉冲耦合神经网络***参数的自动图像分割方法 |
US20140180694A1 (en) * | 2012-06-06 | 2014-06-26 | Spansion Llc | Phoneme Score Accelerator |
CN104657776A (zh) * | 2013-11-22 | 2015-05-27 | 华为技术有限公司 | 神经网络***、基于神经网络***的图像解析方法和装置 |
US20150220833A1 (en) * | 2014-01-31 | 2015-08-06 | Google Inc. | Generating vector representations of documents |
CN105144164A (zh) * | 2013-03-13 | 2015-12-09 | 谷歌公司 | 使用深度网络对概念术语评分 |
-
2016
- 2016-12-09 JP JP2018530744A patent/JP6651629B2/ja active Active
- 2016-12-09 KR KR1020187017730A patent/KR102158683B1/ko active IP Right Grant
- 2016-12-09 US US15/374,974 patent/US10832134B2/en active Active
- 2016-12-09 EP EP16820464.2A patent/EP3371747B1/en active Active
- 2016-12-09 WO PCT/US2016/066020 patent/WO2017100711A1/en active Application Filing
- 2016-12-09 CN CN201680072537.6A patent/CN108431832B/zh active Active
-
2020
- 2020-11-09 US US17/093,373 patent/US20210117801A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092018A (en) * | 1996-02-05 | 2000-07-18 | Ford Global Technologies, Inc. | Trained neural network engine idle speed control system |
WO2000072256A2 (de) * | 1999-05-24 | 2000-11-30 | Ipcentury Ag | Neuronales netz zum computergestützten wissensmanagement |
CN101076806A (zh) * | 2004-12-09 | 2007-11-21 | 英国国防部 | 败血症的早期检测 |
CN101253493A (zh) * | 2005-08-31 | 2008-08-27 | 微软公司 | 在图形处理单元上训练卷积神经网络 |
US20140180694A1 (en) * | 2012-06-06 | 2014-06-26 | Spansion Llc | Phoneme Score Accelerator |
CN105144164A (zh) * | 2013-03-13 | 2015-12-09 | 谷歌公司 | 使用深度网络对概念术语评分 |
CN104657776A (zh) * | 2013-11-22 | 2015-05-27 | 华为技术有限公司 | 神经网络***、基于神经网络***的图像解析方法和装置 |
CN103617235A (zh) * | 2013-11-26 | 2014-03-05 | 中国科学院信息工程研究所 | 一种基于粒子群算法的网络水军账号识别方法及*** |
US20150220833A1 (en) * | 2014-01-31 | 2015-08-06 | Google Inc. | Generating vector representations of documents |
CN103824291A (zh) * | 2014-02-24 | 2014-05-28 | 哈尔滨工程大学 | 连续量子雁群算法演化脉冲耦合神经网络***参数的自动图像分割方法 |
Non-Patent Citations (6)
Title |
---|
ALEX GRAVES 等: "Neural Turing Machines", 《ARXIV》 * |
BAOYUAN LIU等: ""Sparse Convolutional Neural Networks"", 《2015 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR)》 * |
JASON WESTON 等: "MEMORY NETWORKS", 《ARXIV》 * |
SREERUPA DAS等: ""Learning Context-free Grammars: Capabilities and Limitations of a Recurrent Neural Network with an External Stack Memory"", 《ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 5》 * |
WEI ZHANG 等: "Structured Memory for Neural Turing Machines", 《ARXIV》 * |
刘亦青: ""RBF人工神经网络算法研究及硬件实现"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112789626A (zh) * | 2018-09-27 | 2021-05-11 | 渊慧科技有限公司 | 可扩展和压缩的神经网络数据储存*** |
US11983617B2 (en) | 2018-09-27 | 2024-05-14 | Deepmind Technologies Limited | Scalable and compressive neural network data storage system |
Also Published As
Publication number | Publication date |
---|---|
CN108431832B (zh) | 2022-09-13 |
US10832134B2 (en) | 2020-11-10 |
JP2018537788A (ja) | 2018-12-20 |
KR102158683B1 (ko) | 2020-09-22 |
WO2017100711A1 (en) | 2017-06-15 |
KR20180091850A (ko) | 2018-08-16 |
EP3371747A1 (en) | 2018-09-12 |
US20170169332A1 (en) | 2017-06-15 |
JP6651629B2 (ja) | 2020-02-19 |
US20210117801A1 (en) | 2021-04-22 |
EP3371747B1 (en) | 2023-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108431832A (zh) | 利用外部存储器扩增神经网络 | |
US10958748B2 (en) | Resource push method and apparatus | |
TWI788529B (zh) | 基於lstm模型的信用風險預測方法及裝置 | |
KR102302609B1 (ko) | 신경망 아키텍처 최적화 | |
CN106471525A (zh) | 增强神经网络以生成附加输出 | |
CN108140143A (zh) | 正则化机器学习模型 | |
CN109313722A (zh) | 存储器高效的基于时间的反向传播 | |
CN108021983A (zh) | 神经架构搜索 | |
CN108605053A (zh) | 优化为未来动作缓存的用户界面数据 | |
CN109196527A (zh) | 广度和深度机器学习模型 | |
CN110268422A (zh) | 利用强化学习的设备布局优化 | |
CN110147882B (zh) | 神经网络模型的训练方法、人群扩散方法、装置及设备 | |
CN109313720A (zh) | 具有稀疏访问的外部存储器的增强神经网络 | |
CN103718198A (zh) | 预测模型应用编程接口 | |
CN108182634A (zh) | 一种借贷预测模型的训练方法、借贷预测方法和装置 | |
CN106462803A (zh) | 增强具有外部存储器的神经网络 | |
CN107969156A (zh) | 用于处理图形数据的神经网络 | |
WO2018137420A1 (zh) | 一种信息推荐列表的生成方法及装置 | |
CN110298508A (zh) | 行为预测方法、装置及设备 | |
CN113554184A (zh) | 一种模型训练方法、装置、电子设备及存储介质 | |
CN113034168A (zh) | 内容项投放方法、装置、计算机设备及存储介质 | |
US11227122B1 (en) | Methods, mediums, and systems for representing a model in a memory of device | |
CN116910345A (zh) | 一种标签推荐方法、装置、设备及存储介质 | |
CN114757700A (zh) | 物品销量预测模型训练方法、物品销量预测方法及装置 | |
TWI768857B (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 |