神经图灵机是什么?给神经网络配一块可读写的外部记忆
神经图灵机(Neural Turing Machine,NTM)是一种把神经网络与外部记忆结合起来的模型,由 DeepMind 的 Alex Graves、Greg Wayne 和 Ivo Danihelka 在 2014 年提出。它的灵感来自计算机科学中的图灵机:图灵机由一个控制器和一条可以读写的纸带组成;神经图灵机则由一个神经网络控制器和一块可以读写的记忆矩阵组成。
为什么要给神经网络加记忆
普通的神经网络,包括当时流行的循环神经网络和长短期记忆网络,它们的“记忆”都存储在网络内部的状态和权重中。这种记忆容量有限,而且信息混在一起,很难像计算机那样,把一条数据存放到某个位置、之后再准确地取出来。这让神经网络在需要记住和操作大量信息的任务上表现不好,比如准确地复制一长串数字、对一组数据进行排序。而计算机程序做这些事情非常容易,因为它有可以随意读写的内存。神经图灵机的想法就是:让神经网络也拥有一块类似内存的外部存储,并学会如何使用它。
它是怎么工作的
神经图灵机由两部分组成:控制器,一个神经网络,可以是前馈网络或长短期记忆网络,它接收输入、产生输出,并决定如何读写记忆;记忆矩阵,由许多个记忆单元组成,每个单元存储一个向量。控制器通过“读头”和“写头”来访问记忆。
关键的难点在于:传统计算机读写内存时,要指定一个确切的地址,这是一个离散的操作,无法求导,因此不能用梯度下降来训练。神经图灵机的巧妙之处在于用“软”的方式来读写:它不是只读写某一个位置,而是用一组权重同时关注所有的位置,只是对某些位置关注得多、对其他位置关注得少。读取时,按照权重对各个位置的内容加权求和;写入时,也按照权重对各个位置进行不同程度的擦除和添加。这样,整个系统就是可微分的,可以用梯度下降端到端地训练。
它确定关注哪些位置的方式有两种:基于内容的寻址,找出与某个查询内容最相似的记忆位置,类似于“联想记忆”;基于位置的寻址,在上一次关注的位置基础上向前或向后移动,便于按顺序地处理数据。
它学会了什么
实验表明,神经图灵机仅从输入和输出的例子中,就学会了一些简单的算法,比如复制一段序列、重复复制、联想回忆、排序等。而且它学到的方法能够推广到比训练时更长的序列上,这一点比普通的长短期记忆网络表现得更好。
后续发展
2016 年,DeepMind 在《自然》杂志上发表了神经图灵机的改进版本:可微分神经计算机(DNC),它的记忆管理更加完善,能够完成在伦敦地铁图上规划路线、回答关于家族关系的推理问题等任务。神经图灵机和可微分神经计算机属于“记忆增强神经网络”的研究方向。它们用注意力机制来读写外部记忆的思想,与后来的 Transformer 有相通之处;而今天大语言模型借助检索增强生成和外部记忆来扩展能力,也延续了“让模型使用外部存储”这一思路。