图灵机就是一种简单的计算机模型。正如现代计算机一样,其思想中也包含了一个外部存储器和某种处理器。本质上,图灵机包含上面写有指令的磁带和能够沿着磁带读取的设备。根据从磁带上读取到的指令,计算机能够决定在磁带上不同的方向上移动以写入或者擦除新符号等等。
而神经图灵机(NTM)简而言之就是一种神经网络,但是它从图灵机中获得灵感来尝试执行一些计算机可以解决得很好而机器学习模型并不能很好地解决的任务。本质上,它包括一个神经网络控制器(controller)、读取磁带设备的模拟器或处理器,如果你愿意的话,还可以加上外部存储或记忆(memory)。
控制器是一个神经网络,提供输入的内部表示,通过读写头与存储器相互作用。值得注意的是,这种内部表征与最终储存在存储器中的并不完全相等,后者是这种表征的一种函数。
对于神经网络机来说,控制器的类型就是最重要架构选择的代表。这种控制器可以是前馈或递归神经网络。前馈控制器比起一个递归控制器要快速得多,并提供更多的透明度。但这意味着付出低表现力的代价,因为它限制了NTM每时间步所能执行的计算类型。
读写设备让神经网络图灵机更加有趣。它们是仅有能够直接与存储器互动的成分。从内部来说,每个读写头的行为都被它自身的权重向量所控制,在每一时间步得到刷新。每个向量上的权重与在记忆中的位置一致(权重向量总和为1)。为1的权重尽在相应存储位置聚焦NTM所有的注意力。为0的权重则与记忆位置无关。
其结构如下图所示:
NTM在所有读取到的输入上都是持续的。就像长短期记忆(LSTM)网络或者其他相关的模型一样,它是一个循环神经网络(recurrent neural network)。这意味着,像我们大多数人熟悉的一样,它读取类似变量的输入,但是,神经图灵机和图灵机也有不同之处:除了有一个记忆/内存之外,神经图灵机也可以接受一连串连续的输入并提供输出。
这里的关键思想是神经图灵机基本上就是可微分的图灵机,这是很重要的,因为我们每天在计算机上做的算法和事情对计算机来说是非常困难的,原因是计算机的计算是绝对的。要么是0要么是1。计算机在「非此即彼」的逻辑或者整数中运作。然而大多数的神经网络和机器学习实际上不是这样的。它们使用实数。它们使用更加平滑的曲线,使得它们更加容易训练,这意味着,在看到它们的输出时,你可以轻易地通过输出追踪回去调整参数以得到希望的输出。当计算机CPU尽是诸如异或门(XOR)和与门(AND)等跳变函数时,这是非常难以实现的。神经图灵机采用了基本的图灵机中的所有功能找到了平滑的模拟函数。因此,比如在磁带上,神经图灵机可以决定稍微向左或者向右移动,而不是单纯的向左或者向右。
在神经图灵机可以做到的事中,一个有趣的例子是它们可以识别平衡的括号。这个是特别有趣的,因为这涉及到的使用了栈(stack)的算法,所以本质上你可以随着左括号的进入去跟踪它们,然后尝试去匹配与之对应的右括号。这件事神经网络可以做,但是会以更加统计的方式完成,而神经图灵机实际上可以像人类程序员一样去完成这个任务。
[描述来源:NTM-Lasagne:基于Lasagne的神经图灵机函数库|机器之心]
[描述来源:神经图灵机深度讲解:从图灵机基本概念到可微分神经计算机|机器之心]
发展历史
描述
2013年Alex Graves在论文中展示了如何使用LSTM递归神经网络来生成具有长距离结构的复杂序列,只需一次预测一个数据点即可。该方法适用于文本(数据是离散的)和在线手写(数据是实值的),能够以各种风格生成高度逼真的草书手写。
2014年Dzmitry Bahdanau和Yoshua Bengio等学者描述了神经机器翻译,与传统的统计机器翻译不同,神经机器翻译的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。他们推测使用固定长度矢量是提高这种基本编码器-解码器架构性能的瓶颈,并且给出了相关解决建议。
这两项工作都属于可微分的关注模型(differentiable models of attention),而NTM是基于这项工作之上的,它是记忆增强神经网络(memory-augmented neural networks)早期例子中的一个,由Alex Graves等学者于2014年提出的。
主要事件
年份 | 事件 | 相关论文/Reference |
2013 | Alex Graves在论文中展示了如何使用LSTM递归神经网络来生成具有长距离结构的复杂序列 | Graves, A. (2013). Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850. |
2014 | Dzmitry Bahdanau和Yoshua Bengio等学者描述了神经机器翻译 | Bahdanau, D., Cho, K., and Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. abs/1409.0473. |
2014 | Alex Graves等学者提出了NTM | Graves, A.; Wayne, G.; Danihelka, I. (2014). Neural Turing Machines. arXiv:1410.5401. |
发展分析
瓶颈
NTM目前的主要缺陷有:
- 架构依赖;
- 大量的参数;
- 并不能从GPU加速中受益;
- 难以训练
首先,一旦你指定了一般的架构,在实现它的时候仍然需要做出很多决策。例如,对于每一个给定的输入或输出单元,在给定的时间步长下你能够读取或者写入多少向量?这些都很重要,它不仅仅是提高你的识别准确率的问题。如果你不能正确地做到这些,那它很有可能永远都得不到一个合理的结果。参数的数量是极其大的,这会让你的RAM压力很大。这是机器学习中的一个重要部分,它们并不会受益于GPU加速,虽然正如我们所见,GPU加速是机器学习中的重要一部分。原因是这是序列式的,很难并行化,因为它们当下所做的都是基于之前的输入。很难将这些部分分解成容易的并行计算。并且NTM的训练非常困难。
未来发展方向
NTM能够接受输入和输出,并且学习得到能够从输入映射到输出的算法。这确实相当令人兴奋,因为这本质上是在尝试着取代程序员。它们还非常擅长语言建模(language modeling),因此NTM的未来仍然是非常有希望的。
Contributor: Yuanyuan Li