Mark Collier、Joeran Beel作者Huiyuan Zhuo、张倩参与

老论文没有源码?14年神经图灵机的复现被接收为大会论文

在篇篇论文都是 state-of-the-art 的年代,论文的可复现性与官方代码一直受到研究者的关注,我们希望知道实际的模型性能或改进方法到底有没有原论文写的那么好。最近都柏林圣三一学院的研究者通过一篇论文描述如何复现 14 年提出的神经图灵机,并同时公开了源代码。他们表示原论文没有提供源代码,且其它研究者复现的代码在速度和性能上都有缺陷,因此他们重新使用 TensorFlow 仔细复现了这篇论文。目前该论文已被 ICANN 2018 接收。

项目地址:https://github.com/MarkPKCollier/NeuralTuringMachine

神经图灵机(NTM)[4] 是几种新的神经网络架构 [4, 5, 11] 的一个实例,这些架构被分类为记忆增强神经网络(MANN)。MANN 的典型特征是存在外部记忆单元。这与门控循环神经网络(如长短期记忆单元(LSTM),其记忆是一个在时间维度上保持不变的内部向量)不同。LSTM 已在许多商业上重要的序列学习任务中取得了当前最优性能,如手写体识别 [2]、机器翻译 [12] 和语音识别 [3]。但是,已经证明了 MANN 在一些需要一个大型存储器和/或复杂的存储器访问模式的人工序列学习任务上优于 LSTM,如长序列记忆和图遍历 [4, 5, 6, 11]。

NTM 文章的原作者没有提供其实现的源码。NTM 的开源实现是存在的,但是其中一些实现报告显示,在训练期间,它们的实现梯度有时会变成 NaN,导致培训失败。然而其他开源代码会报告收敛缓慢或不报告其实现的学习速度。缺乏可靠的 NTM 开源实现使得从业者更难将 NTM 应用于新问题,使得研究者更难去改进 NTM 框架。

本文定义了一个成功的 NTM 实现,该实现学会完成三个基准的序列学习任务 [4]。作者指定了控制 NTM 实现的可选参数集合,并对其他开源的 NTM 实现中的许多记忆内容初始化方案进行了经验对比,发现如何选择 NTM 记忆内容初始化方案是能否成功实现 NTM 的关键。作者在另一个开源的 NTM 实现上建立了 Tensorflow 实现,但在得出实验结果之后,作者对记忆内容初始化、控制器头部参数计算和接口进行了重大改变,从而使其能更快地收敛,更可靠地优化,并且更容易与现有的 Tensorflow 方法集成。

这个存储库包含神经图灵机的一个稳定、成功的 Tensorflow 实现,已经在原论文的 Copy,Repeat Copy 和 Associative Recall 任务上进行了测试。

应用

from ntm import NTMCell

cell = NTMCell(num_controller_layers, num_controller_units, num_memory_locations, memory_size,
 num_read_heads, num_write_heads, shift_range=3, output_dim=num_bits_per_output_vector,
 clip_value=clip_controller_output_to_value)

outputs, _ = tf.nn.dynamic_rnn(
 cell=cell,
 inputs=inputs,
 time_major=False)

该实现源自另一个开源 NTM 实现 https://github.com/snowkylin/ntm。作者对链接的代码做了微小但有意义的更改,使得实现中的训练变得更加可靠,收敛更加快速,同时更容易与 Tensorflow 集成。该论文的贡献是:

  • 作者比较了三种不同的记忆初始化方案并发现将神经图灵机的记忆内容初始化为小的常数值比随机初始化或通过记忆初始化的反向传播效果要好。

  • 作者将 NTM 控制器的输出剪切到一个范围内,有助于解决优化的困难。

  • NTMCell 实现了 Tensorflow RNNCell 接口(https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/RNNCell),因此可以直接与 tf.nn.dynamic_rnn 等一起使用。

  • 从未像其他一些实现一样,看到损失出现 NaN 的情况。

  • 作者实现了 NTM 论文中 5 个任务中的 3 个。与 LSTM、DNC 和 3 个记忆内容初始化方案相比,作者进行了很多实验并报告了实现的收敛速度和泛化性能。

论文:Implementing Neural Turing Machines

论文地址:https://arxiv.org/abs/1807.08518

神经图灵机(NTM)是记忆增强神经网络的一个实例,是一类新的循环神经网络,通过引入外部记忆单元将计算从存储器中分离。NTM 在一些序列学习任务上的性能要优于长短期记忆单元。存在许多 NTM 的开源实现,但是它们在训练时不稳定,同时/或者无法重现 NTM 该有的性能。本文介绍了成功实现 NTM 的细节。本文的实现学习去解决 NTM 原文中的 3 个序列学习任务。作者发现记忆内容初始化方案的选择对于能否成功实现 NTM 至关重要。记忆内容初始化为小常数值的网络平均收敛速度是第二名记忆内容初始化方案的 2 倍。

2 神经图灵机

NTM 由一个控制器网络和一个外部记忆单元组成,控制器网络可以是一个前馈神经网络或一个循环神经网络,外部存储器单元是 N * W 的记忆矩阵,其中 N 表示记忆位置的数量,W 表示每个记忆单元的维度。无论控制器是否是循环神经网络,整个架构都是循环的,因为记忆矩阵的内容不随时间而变化。控制器具有访问记忆矩阵的读写头。在一个特定记忆单元上读或写的影响通过一个软注意力机制进行加权。这种寻址机制类似于神经机器翻译中使用的注意力机制 [1, 9],不同之处在于,它将基于位置的寻址与这些注意力机制中基于内容的寻址相结合。

5 结果

5.1 记忆初始化方案对比

作者根据常数初始化方案初始化的 NTM 收敛到接近 0 误差,比学习的初始化方案快约 3.5 倍,而随机初始化方案无法在分配的时间内解决 Copy 任务(图 1)。

图 1:Copy 任务不同记忆初始化方案下,学习曲线的对比。对于根据常数、学习的和随机的初始化方案初始化的每一个 NTM 来说,误差是每训练 10 次后取中值。

根据常数初始化方案初始化的 NTM 收敛到接近 0 的误差,比学习的初始化方案快约 1.15 倍,比随机初始化方案快 5.3 倍(图 3)。

图 3:Associative Recall 任务在不同记忆初始化方案下,学习曲线的对比。对于根据常数、学习的和随机的初始化方案初始化的每一个 NTM 来说,误差是每训练 10 次后取中值。

5.2 架构比较

图 4:Copy 任务采用不同架构时,学习曲线的对比。对于 DNC,NTM 和 LSTM 来说,误差是每训练 10 次后取中值。

图 6:Associative Recall 任务采用不同架构时学习曲线的对比。对于 DNC、NTM 和 LSTM 来说,误差是每训练 10 次后取中值。

工程GitHub实现神经图灵机
111
相关数据
神经图灵机技术

神经图灵机(NTMs)是Alex Graves等人发表的一种递归神经网络模型。NTM将神经网络的模糊模式匹配能力与可编程计算机的算法能力相结合。一个NTM有一个神经网络控制器连接到外部存储器资源,通过注意机制与外部存储器资源进行交互。 记忆交互是端对端可区分的,可以使用梯度下降对其进行优化。 具有长期短期记忆(LSTM)网络控制器的NTM可以从输入和输出示例推断简单的算法,例如复制,排序和关联回忆。

神经机器翻译技术

2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构 [4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(long distance reordering)」问题。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

推荐文章
test
test
test
啊黑龙江
叽叽叽叽叽
叽叽叽叽叽
• • •  另外1条回复
test
test
test
图全挂了