起
神经网络图灵机(NTM)模型和Memory Network 分别由 DeepMind 和Facebook AI research 独立提出。让人惊讶的是,二者出奇一致的采用了外部记忆单元的来提升神经网络的性能。虽然二者结构差异还是比较明显的,但是核心的思想还是有不少共通之处的。
1. Neural Turing Machine
NTM的主要思想是,当一个样本输入后,由一个控制器决定从memory中寻址,找到需要读取的内容后将内容返回给控制器,控制器再结合样本和读取的内容更新memory,并且向外产生一个输出。
NTM的核心是,如何去从Memory中读数据,以及如何更新Memory
Memory
Memory 是一个 N×M 的矩阵,其中N是可以访问的地址个数,M是每个地址下面记忆向量的大小。
Reading
t时刻,控制器会根据当前的输入产生一个N维的读权重向量
wt
,就是读上的read heads
所谓读就是对记忆矩阵的N个位置的记忆向量进行加权求和,即:
Writing
参考LSTM的实现,写的策略是先擦除,再写入
t时刻,控制器也会产生一个N维的写权重向量即图中write heads。
首先write heads 会使用删除向量(erase vector)对记忆矩阵的每个位置进行擦除记忆操作
然后 write heads 会使用 增向量(add vector)在相同的位置进行写记忆操作
寻址机制
到目前为止,模型的结构都比较简单明了。但是唯一没有涉及到的是读写的权重如何产生。
在NTM中,产生读写权重的过程叫做Address。
内容寻址
通过计算读写头的内容和记忆单元的相似度来决定如何从记忆单元中读取和写入内容.
K[∗,∗] 是向量的余弦相似度
kt 是读写头产生的 key vector
βt 是对应的 key strength
位置寻址
位置寻址设计用来实现记忆单元在位置上的迭代和随机访问. 位置寻址通过一个轮换实现.
在轮换之前, 论文使用了一个 interpolation gate
gt
将内容寻址产生的权重向量给加入进来.
这里 wct 是内容寻址的权重, wt−1 是上一步的读/写头产生的权重.
为了实现轮换,定义了一个轮换权重s. 这里的轮换实际上是一个 soft-rotation. 它不是严格的将一个位置上的元素换到另一个上面去. 而是将不同位置的元素根据轮换权重做一个加权的平均.轮换权重以整数作为输入,输出一个浮点数. 最简单的实现是通过控制器的输出求一个softmax来实现.
定义好轮换权重后
这种定义在轮换权重分布比较钝的时候会发生 leakage 或者 dispersion. 所以每一个head在得到权重之后会进行如下操作
Controller Network
Controller 可以简单的由一个RNN来实现.
2. Memory Network
Memory Network 由以下四个部分构成
I: 将外部输入转化为内部可接受的格式, 如输入单词转化为其embedding后的向量
G: 根据新的输入来更新记忆
O: 更具新的输入和当前的记忆产生新的输出
R: 将输出转化为外部输出,例如将向量转化为单词
我们来看一个具体的实现,这个实现是Facebook AI research 的end-to-end Memory Network。使用Memory network 来完成机器阅读理解的任务
I && G
一系列的样本集
{xi}
都会被转化为一个d维的记忆向量
{mi}
,最简单的实现是使用一个embedding矩阵 A。
在Facebook的实现过程中,
{xi}
通过embedding C转化为另一个向量
{ci}
,为了在产生输出的时候使用
在阅读理解任务中,还有一个最终的问题q需要关注
q 也要被另一个embedding 矩阵 B 转化为向量u
O
实际上与attention model非常的相似
R
总结
NTM与MN同样都使用了一个外部记忆单元
在NTM中,其最精彩的部分是基于内容和地址的soft addressing,soft addressing选择性的读取和写入记忆单元的某些位置,同时soft addressing 的引入也使得原来不可微分的寻址过程变成了可微分的过程,使得整个模型可以使用基于梯度的方法来进行训练
MN相对来说实现比较简单,它比较类似于attention model。读和写的过程都比较直接。