转载请注明出处
谷歌公司的DeepMind的一个研究小组最近开发了一种新的架构来解决神经网络难以举一反三的局限,使得在神经网络可以在训练的数值范围内外都更好地实现结果的一般化。
机器语言程序仅在它们所训练的范围值内学习恒等函数
在训练的数字范围外,平均误差严重上升
包括昆虫,哺乳动物和人类等在内的许多物种都已被观察到具有表达和使用数值数量的能力。这表明,基本的定量推理是智力的重要组成部分,具有许多进化优势。
此种定量推理能力对机器而言非常有价值,它可以使机器更快、更有效地完成涉及数字操作的任务。然而,至今为止,如果被训练用于表示和操纵数字信息的神经网络遇到超出曾经训练的值域的问题,很少能够举一反三地交出令人满意的答卷。
谷歌公司的DeepMind的一个研究小组最近开发了一种新的架构来解决这一局限,使得在神经网络可以在训练的数值范围内外都更好地实现结果的一般化。他们的研究预先发布在了arXiv上,可以为开发更先进的、用于完成定量推理任务的机器学习工具提供信息。
“当标准的神经架构被训练数到某一数字时,它们往往难以数到更大的数,”该项目首席研究员安德鲁•查斯克(Andrew Trask)告诉Tech Xplore。“我们研究了这个限制,并发现在其他算术函数中也存在这个问题。这让我们假设,神经网络像学习词汇库有限的文字那样学习数字。这使得他们无法恰当地推理使用包含以前没见过的数字的函数。而我们的目标是提出一种可以进行更好推断的新架构。”
神经累加器(NAC)是其输入值的线性变换。变换矩阵是tanh(W)和σ(M)的元素乘积。神经算术逻辑单元(NALU)使用两个具有绑定权重的NAC来启用加/减(较小的紫色单元)和乘法/除法(较大的紫色单元),由门(橙色单元)控制
研究人员设计了一种架构,将数值表示为通过原始算术运算符(由学习门控制)来操控的线性激活,以此鼓励更系统的数字推断。他们将这个新模块称为神经算术逻辑单元(NALU),其灵感来自传统处理器中的算术逻辑单元。
“数字通常以单热或分布式形式在神经网络中编码,而基于数字的函数是在一系列非线性激活的层中学习的,”查斯克解释说,“我们提议将数字存储为标量,在每个神经元中存储一个数字。例如,如果你想存储数字42,你应该只有一个包含'42'的激活的神经元,而不是用一系列0-1神经元来编码。”
研究人员还改变了神经网络学习函数的方式。他们没有采用可以学习任意函数的标准架构,而是设计了一种架构,可以向前传播预定义的一组被认为可能有用的函数(如,加法,乘法或除法),并使用神经架构来学习基于这些函数的注意机制。
“这些注意机制随后决定何时何地应用每个可能有用的函数,而不是学习该函数本身,”查斯克说,“这是创建具有理想的数学函数学习偏差的深度神经网络的一般原则。”
上图是来自gridworl时间跟踪任务的帧。代理(灰色)必须在指定时间内移动到目的地(红色)。下图表明NAC提高了基于A3C算法的代理用于此任务的推理能力
他们的测试表明,NALU增强型神经网络可以学习执行各种任务,例如时间跟踪,对数字图像执行算术功能,将数字语言翻译成实值标量,执行计算机代码和计算图像中的对象。
与传统架构相比,它们的模块在训练期间呈现的数值范围内外都获得了明显更好的一般化能力。虽然NALU可能不是每项任务的理想解决方案,但他们的研究提供了一种通用的设计策略,可以用于创建在某一特定函数集良好运作的模型。
“关于深层神经网络应该从一组预定义的函数中进行选择,并学习控制函数使用场合的注意机制,这是一个非常具有延展性的想法。”查斯克解释道,“在这项研究中,我们探索了简单的算术函数(加法,减法,乘法和除法),但我们对将来在更强大的函数上学习注意机制的可能性感到兴奋,也许我们可以将目前已经观察到的推理结果拓展应用到其它领域。”
领取专属 10元无门槛券
私享最新 技术干货