亲爱的数据
出品:谭婧
感谢以下技术顾问的参与:段志成(某科技创业公司)、王俊皓(美国哥伦比亚大学)、黄至铖(北京科技大学研究生)
论文摘要
神经网络可以学习如何表示和操作数字信息,但在训练过程中,神经网络的泛化能力并不是很好,特别是面对训练中数值范围之外的泛化。为了鼓励更系统性的数值外推(数值分析的两种高精度算法:外推法和校正法),我们提出了一种将数字量表示为线性激活的体系结构,该体系是用初始的算术运算符来操作的,由学门控制。我们称这个模块为神经算术逻辑单元(NALU),与传统处理器中的算术逻辑单元相类似。实验表明,神经算术逻辑单元增强型神经网络可以学习跟踪时间,对数字图像进行算术运算,将数字语言翻译成实值标量,执行计算机代码,并在图像中数出目标对象的个数。与传统的体系结构相比,我们在训练过程中所遇到的数值范围内和外部都得到了更好的泛化,通常是在经过训练的数值范围之外推断出数量级。
论文正文
1.介绍
从昆虫到哺乳动物再到人类,许多物种都能够表达数值的数量,能进行数值推理是普遍的智能行为。虽然神经网络可以通过适当的学习信号成功地表示和操作数值,但通常不会表现出泛化能力[6, 20]。具体地说,常见的失败存在于——使用的数值范围之外的数量时,即使目标函数很简单(例如,它只依赖于聚集计数或线性外推),也会经常观察到失败。
这种失败模式表明,学习行为的特征是通过记忆而不是系统的抽象。触发外推失败的输入分布是否会引起实际的关注取决于训练模型的运行环境。然而,有相当多的证据表明,像蜜蜂一样简单的动物会进行系统的数值推断吗[? 7]有相当多的证据还表明,在对数值数量进行系统性的推理时,生态优势是有利的。
在本文中,我们开发了一个新的模块,它可以与标准的神经网络体系结构(如LSTMs或卷积神经网络)结合使用,但它倾向于学习系统的数值计算。我们的策略是在非线性的情况下,将数值表示成单个的神经元。对于这些单值神经元,我们应用能够进行简单函数的运算符(例如,+, −,×,等等)。这些操作符是由参数控制的,这些参数决定了用来创建每个输出的输入和操作。然而,尽管有这样的组合特性,它们是可微的,可以使用反向传播。
我们在各种任务领域(合成、图像、文本和代码)、学习信号(监督和强化学习)和结构(前馈和重复)进行实验。实验发现,我们所提出的模型可以学习函数,而不是表示数据的潜在的数值特性,并将其推广到比训练期间观察到的更大数量级的数字。
我们还观察到,即使不需要外推,我们的模块相对于线性层具有更高的计算偏差。在一个案例中,我们的模型超过了一个最先进的图像计数网络,误差幅度为54%。值得注意的是,我们对之前的技术进行的唯一修改是用我们的模型替换它的最后一个线性层。
1.1 Numerical Extrapolation Failures in Neural Networks,神经网络的数值外推故障
为了解释系统的标准网络故障,我们展示了各种MLPs的行为,以学习标量标识函数,这可能是一个最直接的系统关系。这个点并不新——神经网络难以学习恒等关系式[14]。我们展示这个是因为,尽管下面的许多架构在理论上可以代表恒等函数,但通常无法获得它。
在图1中,我们将展示这个失败的本质(实验细节和更详细的结果见附录A)。我们训练一个自动编码器将标量值作为输入(例如,数字3),在其隐含层对值进行编码(分布式表示),然后重建输入值作为最后一个隐藏层的线性组合(再一次以3为例)。我们所训练的每一个自动编码器在其参数化(3个隐藏层的8个层)、调优(1万次迭代,学习速率0.01、平方损失)和初始化方面都是相同的,只在隐藏层上的非线性选择上有所不同。对于图1中的每一个点,训练100个-5到5的模型,然后用这100个-5到5的模型去编码-20到20,对编码结果取平均值。
我们看到,即使在使用简单架构的基本任务之上,所有非线性函数都无法学会——提取范围之外的数字的特征。此故障的严重程度直接对应于所选激活函数内的非线性程度。一些激活学习是高度线性的(如PReLU),它在一定程度上减少了错误,但是像sigmoid函数和tanh函数这样的非线性函数却始终失败。因此,尽管神经网络能够表现出推断的功能,但在实践中,我们发现他们没有学会这样做。
图一
2 The Neural Accumulator & Neural Arithmetic Logic Unit,神经累加器和神经算术逻辑单元
在这里,我们提出了两种模型,它们能够以一种系统的方式学习如何表示和操纵数字。第一个支持的能力是附加的累积数量,一个好的归纳偏差用于线性推理。这个模型构成了第二个模型的基础,它支持乘法外推。这个模型还说明了如何将任意算术函数的归纳偏差有效地合并到端到端模型中。
我们的第一个模型是神经累加器(NAC),它是一个线性(仿射)层的特殊情况,它的变换矩阵W由1、0和1组成;也就是说,它的输出是输入向量的行数增加或减(而不是任意的随机重新计算)。这就阻止了这一层在将输入映射到输出的时候改变数字表示的范围,这意味着它们在整个模型中是一致的,不管有多少操作被链接在一起。我们通过鼓励0、1和1在W中以下列方式改进了一个简单线性层的归纳偏差。
因为硬约束执行的每个元素属于集合W是{−1,0,1}会使学习困难,我们提出一个连续可微的参数化W的无约束参数:W = tanh( ˆ W)σ( ˆ M)。这种形式是方便学习梯度下降和产生矩阵的元素保证是在[−1,1]之中,偏向接近-1,0或1。该模型不包含偏置矢量,并且不对输出进行非线性压缩。
图二
图2:神经累加器(NAC)是其输入的线性变换。转换矩阵是tanh(W)和(M)的元素乘积,神经算术逻辑单元(NALU)使用两个带有绑定的权重的NACs来支持加法或者减法(较小的紫色圆圈)和乘法/除法(较大的紫色圆圈),由一个门(橙色圆圈)控制。
NALU由两个NAC细胞(紫色圆圈)组成,被已经训练好的sigmoidal gate g(橙色圆圈)插值,这样,如果加/减子单元的输出值被应用于权重1(on),那么多/分的子单元格是0(off),反之亦然。
第一个NAC(较小的紫色圆圈)计算累积向量a,它存储了NALU的加法/减法运算的结果;它与原始的NAC完全相同(i.e., a = Wx)。第二个NAC(更大的紫色圆圈)在对数空间中运行也是因此能够学习乘法和除法,将结果存储在m中:
总之,这个单元可以学习算术函数,包括乘法、加法、减法、除法和幂函数,它可以推断出训练过程中观察到的范围之外的数字。
3 Related Work相关工作
数值推理是以智能的方式解决许多问题的核心,而扩展是深度学习的一个重要课题。一个被广泛研究的任务是在图像2、4中计数对象[2, 4? , 25, 31, 33]。这些模型通常采用两种方法中的一种:1)使用深度神经网络分割特定对象的各个实例,并在后处理步骤或2中显式地计算它们),通过回归损失来学习端到端地预测对象计数。我们的工作与第二种策略更密切相关。
其他的工作是更加明确地尝试在学习执行小代码片段的上下文中,对数值计算和算术函数进行建模[32,23]。学习在有限范围内计数,也包括在各种问答任务中,尤其是BaBI任务中[29]。
许多模型也能够成功地学会[1,18,12]。但是,据我们所知,没有此类任务清楚明确地要求训练期间计算超出观察的范围。还可以将我们的工作视为在深度神经网络中倡导线性激活函数,这与最近的模型结构创新有关,例如ResNets [14],Highway Networks [26]和DenseNet [15],这些网络模型也提倡线性连接,以减少梯度爆炸/弥散并促进更好地学习偏差。这些网络模型也提倡线性连接,以减少梯度爆炸/弥散并促进更好地学习偏差。这种线性连接提升了性能,但由于增加了模型体系结构的深度,从而增加了额外的计算资源。
我们的工作也机器学习中更广的主题一致,它试图以行为控制方程(behavior-governing equations)的形式来识别系统的底层结构,可以很好地推断出空间中未知的部分[3]。这是近期的热门趋势:神经网络文献中关于递归记忆概念系统表示,允许这些概念上的函数外推到比在训练期间观察到的序列更长的序列。
对于递归网络而言,是否以及如何推广到比在训练中遇到的更长序列的问题一直引发着人们的浓厚兴趣,特别是由于人类语言中格式正确的句子可以无限长,但仅从有限的样本中学习[9,19, 28]。
最近的工作还集中于用系统的外部存储器模块来扩充LSTM,允许它们推广诸如排序[30, 11, 13]之类的操作。再次,特别关注在通过系统抽象的训练过程中观察到的更长序列。最后,对人类和动物的数值推理的认知和神经基础进行了深入的研究,这有一个受欢迎的综述,请参见Dehaene [5]。我们的模型是一种记忆理论,它假定大小被表示为累积操作所操纵的连续量[?]。特别地,我们的单个神经元表示的数字回忆,Gelman和Galistel'假定的“numerons”——代表数字的单个神经元[8]。然而,在许多物种中,连续量似乎用近似表示来表征,其中锐度随幅度[22]减小,这不同于我们的模型中的恒定精度。
4 Experiments,实验
本文的实验测试了多种设置中的数值推理和外推。我们直接从数字输入中研究简单算术函数的显式学习,并间接从图像数据中学习。我们考虑时域:文本到整数值的转换,以及包含条件逻辑和算术的计算机程序的评价。这些有监督的任务补充了强化学习任务,隐式地涉及计数以跟踪时间。我们的结论与先前研究的MNIST任务的相同,但我们获得了最先进的预测精度,并提供消融研究,以了解哪些NALU的组成部分能够提供最好的收益。
4.1 Simple Function Learning Tasks,简单的函数学习任务
在这些最初的合成实验中,我们证明了NACs和NALUs能够学习选择相关输入并对他们应用不同的算术函数的能力,这是它们被设计用来解决的关键功能(下面我们将在更复杂的体系结构中使用这些功能)。我们有两个任务变量:一种是将输入一次性全部呈现为单个向量(静态任务),另一种是随时间顺序呈现输入(循环任务)。输入是随机生成的,对于目标,两个值(a和b)被计算为输入的常规部分的总和。然后计算一个操作(例如,a×b)提供训练(或评估)目标。该模型通过最小化平方损失来训练端到端的模型,并从训练范围(插值)或训练范围外的值(外推)中观察模型的性能。实验细节和更多细节性的结果在附录B中。在静态任务,对于基线模型,我们将 NAC和 NALU到MLPs 使用各种标准非线性和线性模型进行比较。我们报告基线的最佳中值,也就是Relu6的激活值。使用额外的非线性的结果也在附录B中,对于周期性的任务,我们报告了一个LSTM的性能和性能最好的RNN变量,它来自几个共同架构,一个带有ReLU激活的RNN(额外的重复基线也在附录B中)。
4.2 MNIST Counting and Arithmetic Tasks ,MNIST计算和算术任务
在前面的合成任务中,输入和输出都是在一个泛化的表示(作为浮点数)中提供的,并且只有内部操作和表示必须以一种通泛化的方式来学习。实验中,我们发现反向传播是否能够学习到非数值输入到NACs/NALUs模型的特征。在这些任务中,一个循环网络被输入10个随机选择的MNIST数字,在这个系列的最后,它必须输出一个关于它所观察到的数值。在MNIST数字计数任务中,模型必须学会计算它所看到的每种类型的图像(10类回归),并且在MNIST数字加法任务中,必须学会计算所观察到的数字总和(线性回归)。每个训练序列来自MNIST的训练集图片,测试序列来自测试集合。评估发生在长度为10(插值)的保持序列和两个外推长度:100和1000之间。虽然没有提供对convnet的直接监督,但我们通过传入长度为1的测试序列(也来自MNIST测试数据集)并估计基于计数/总和的精度来估计它是如何学会区分数字的。参数是随机初始化的,并通过对目标数向量或之和的平方误差进行反向传播。正如我们之前看到的,标准体系结构在插值长度上成功地完成了,但是它们在外推中完全失败了。值得注意的是,RNN-tanh和RNN-ReLU模型也没有学会在训练中插入比在训练中看到的更短的序列。然而,NAC和NALU都进行了推断和插值。Table2显示了这两个任务的结果。正如我们之前所看到的,标准的在第一个内插的长度上成功了,但是它们在外推法上完全失败了。值得注意的是,RNN-tanh和RNN-ReLU模型也没有学会对较短的序列进行插值,而不是在训练过程中看到的。然而,NAC和NALU都进行了推断和插值。
4.3 Language to Number Translation Tasks 数字翻译任务的语言
神经网络在处理自然语言输入方面也相当成功,而基于lstm的模型在许多任务中都是最先进的,在许多任务中,10、27、16。然而,就像其他的数字输入一样,不清楚数字单词的表示是否以一种系统的方式学习。为了测试这个,我们创建了一个新的翻译任务,它将一个文本数字表达式(例如,515)转换成一个标量表示(515)。
表格2
我们用0到1000的数字进行了训练和测试。训练集包括0到19,除了随机样本的间隔,调整以确保每一个独特的token出现至少一次在训练集。有169个训练集的例子,验证,和200年200年在测试测试。所有在这个数据集上训练的网络都从一个令牌嵌入层开始,然后通过一个LSTM进行编码,然后是一个线性层,NAC,或者NALU。我们观察到,LSTM的两个变量都严重地超过了169个训练集的数量,并且泛化得很差。LSTM+NAC在训练和测试集上都表现不佳。lstm+nalu以较大的优势实现了最佳的泛化性能,这表明乘数对于这项任务是重要的。我们在图3中展示了在随机选择的测试例子中,NALU的中间状态。在没有监督的情况下,模型会学习跟踪对未知数字的合理估计,直到当前的token。这使得网络能够预测给定的token,这些token是网络之前从未见过到,比如80,因为在训练期间它看到了80个1个80个4和80个7。可以利用和token来形成附加表达式(见最后一个例子),尽管在训练中没有看到这些表达式。
图三
4.4 Program Evaluation程序评估
评估程序需要控制几个逻辑和算术运算和中间值的book-keeping。我们认为两个程序评估任务定义[32]。第一种方法是简单地添加两个大整数,而后者涉及到评估包含多个操作的程序(if statements, +,−)。我们关注的是外推:神经网络能否学习一种能泛化到更大的数值范围的解决方案?我们通过对从[0,100)中一致地拉出的两位数的输入整数进行训练来研究这个问题,并用具有三位和四位数字的随机整数来研究这一点。在设置32之后,我们报告了从模型和目标整数的完整预测之间匹配数字的百分比,但是我们处理数字输入的方式不同。我们不是逐个字符地传递整数,而是在一个时间步骤中传递完整的整数值,并以RMSE损失重新输出输出。我们的模型设置由一个“由”LSTM“配置”的NALU组成,也就是说,它的参数ˆ W, ˆ M, ˆ G都是LSTM输出ht的学习函数。因此,LSTM学会了控制NALU,依赖于所看到的操作。
图四
我们将其与三个流行的RNNs(UGRNN、LSTM和DNC)进行比较,并在加法(补充图6)和程序评估(图4)中观察到,所有的模型都能够在一个固定的输入域中解决任务,然而只有NALU能够推断出更大的数字。在这种情况下,我们看到外推是稳定的,即使范围增加了两个数量级。
4.5 Learning toTrack Time in a Grid-World Environment,学习在Grid-World环境中跟踪时间
到目前为止,在所有的实验中,我们的模型都被训练来进行数值预测。然而,正如在介绍中所讨论的,系统的数字计算似乎是一系列(自然)智能行为的基础。在这个任务中,我们测试一个NAC是否可以被RL-trained agent“内部”使用,从而对其环境中的定量变化进行更系统的概括。我们开发了一个简单的grid-world环境任务,在这个任务中,一个agent被给予一个时间(指定为一个真值),并且如果在那个时间(而不是之前)到达一个特定的位置,就会获得奖励。
图5
如图5所示,这个任务中的每一集都从(t=0)开始,并在一个5个5个网格的世界中随机放置一个目标红色方块。在每一个时间步骤中,agent接收作为输入的56 × 56像素表示(整个)世界的状态,并且必须从中选择一个单独的离散的动作。开始时,agent还会收到一个数字(整数)指令T,它可以传递代理必须到达目的地的确切时间(红色方块)。为了达到最大的奖励m,代理必须选择动作并移动,以便在精确地t=T时,第一步进入红色方块。
当agent达到红色方块或者达到指定时间时(t=L),训练模组将会被送出。我们先用递归核心存储(LSTM)训练一个传统的A3C agent[21],并且做出调整使得这个agent通过一个拼接在它输出的视觉模组的额外的输入装置,在LSTM前,先接受到指令T。除了上面这个构造,我们也训练了一个稍有变动的构造。这次指令会直接传输给LSTM存储,也会直接传输给NAC,再从NAC传输回给LSTM. 两个agent都是同样的训练模组训练的:T~U(8是T的最小值,这样t=T时,agent总能到达目标位置)。 两个agent很快学习了并掌握了训练模组。但是,就像图示5那样,带有NAC的agent在T小于等于19的时候很好的很好的完成了任务,但是标准的A3C agent在T大于13的时候不能理想的完成任务。
失败都是有启发性的,仔细考虑为什么两个agents最后都失败了。 正如通过考虑在先前模型中观察到的外推误差预测的那样,对于大于12的激励,基线因子表现得好像激励仍然是12,在t=12(太早)到达目的地并且因此接收增量较少得奖励更大得刺激。相反对于大于20得激励,具有NAC的agent从未到达目的地。注意,为了开发可以合理遵循数字和非数字(例如语言或图标)指令的agent,指令刺激直接传递到agent的核心LSTM并且首先通过NAC传递。我们假设NAC的这种相对于NAC的其他用途的更有限的外推(在数量级方面)是由仍然使用LSTM在某种程度上编码计算的模型引起的。到目前为止,我们已经强调了外推的成功;然而,我们的结果表明,NAC层在插值方面通常表现得非常好。在我们的最终任务中,MNIST的奇偶校验任务[25],插值准确。同样,在这个任务中,输入和输出都不是直接作为一个数字提供的,但是它隐含地对数值的推理进行了解释。在这些实验中,NAC或它的变体取代了seguet al.25提出的模型的最后一个线性层,它将卷积神经网络的输出与预测的softmax层连接起来。
由于最初的模型在这里有一个仿射层(affine layer),而NAC是一个受约束的仿射层,所以我们系统地观察每个约束的重要性。表4总结了不同模型的性能。正如我们所看到的,消除偏差并将非线性应用于权重会显著增加末端模型的准确性,即使大多数参数不在NAC本身中。NAC将之前最好结果的误差降低了54%。
4.6 MNIST Parity Prediction Task & Ablation Study奇偶性预测任务与模型简化测试研究
到目前为止,我们已经强调了外推的成功;然而,我们的结果表明,NAC层在插值方面通常表现得非常好。在我们的最终任务中,MNIST的奇偶校验任务[25],插值准确。同样,在这个任务中,输入和输出都不是直接作为一个数字提供的,但是它隐含地对数值的推理进行了解释。在这些实验中,NAC或它的变体取代了seguet al.25提出的模型的最后一个线性层,它将卷积神经网络的输出与预测的softmax层连接起来。由于最初的模型在这里有一个仿射层(affine layer),而NAC是一个受约束的仿射层,所以我们系统地观察每个约束的重要性。表4总结了不同模型的性能。正如我们所看到的,消除偏差并将非线性应用于权重会显著增加末端模型的准确性,即使大多数参数不在NAC本身中。NAC将之前最好结果的误差降低了54%。
5 Conclusions ,结论
目前在神经网络中数学计算能力建模的方法不完善,因为数值表示无法在训练期间观察到的范围之外进行泛化。我们已经展示了在不同领域如何应用NAC模型和NALU模型来纠正这两个缺点,提供了数值表示和函数泛化在训练过程中观察到的范围之外的应用。然而,NAC或NALU不太可能成为每项任务的完美解决方案。相反,它们举例证明了一种通用的设计策略,用于创建具有针对目标类功能的偏差(biases intended)的模型。这个设计策略是由我们所提出的单个神经元数量表示来实现的,它允许将任意的(可微的)数值函数添加到模块中,并通过学习门(learned gates)来控制,就像NALU在加法/减法和加法/除法之间的例子一样。(完)
领取专属 10元无门槛券
私享最新 技术干货