Neural Turing Machine(NTM) - 神经图灵机
请直接参考:Neural Turing Machine(NTM) - 神经图灵机,本文只是进行补充
补充与总结:
- 向量\(w_t\)中的每个元素代表各个记忆与输入的相关程度。
- 定位机制(Addressing Mechanism)就是用于生成\(w_t\)
- pytorch实现的NTM:https://github.com/loudinthecloud/pytorch-ntm
3.2 Location-based Addressing
“3.2 Location-based Addressing”公式显示有问题,下面进行重写:
Location-based Addressing包括下面三个步骤。
3.2.1. Interpolation(插值)
控制器生成一个阈值\(g_t\)对当前的内容定位向量\(w_t^c\)与t-1时刻的定位向量\(w_{t-1}\)进行一个插值操作,插值的结果即为输出值\(w_t^g\):
这里的插值操作可以理解为LSTM的更新门,结合过去的w权值计算新的w
3.2.2. shift(偏移)
对于\(w_t^g\)中的每个位置元素\(w_t^g(i)\),我们考虑它相邻的k个偏移元素,认为这k个元素与\(w_t^g(i)\)相关,如当k=3时,三个相邻元素分别是:\(w_t^g(i)\)本身和位置偏移为1的元素\(w_t^g(i-1)\)和\(w_t^g(i+1)\),此时,我们希望新的位置为i的元素能包含这三个元素,因此用一个长度为3的偏移权值向量\(s_t\)来表示这三个元素的权重,然后权值求和得到输出值\(w_t^′\):
这里的偏移操作在原文中用的是循环卷积(circular convolution)公式表示的,我们可以理解为把向量wgt首尾相连形成一个环状,然后在环中用st作为卷积核做一维卷积操作。本质上是假设当前元素与相邻的偏移元素相关。
3.2.3. Sharping(重塑)
当偏移操作中的权值比较平均的时候,上述的卷积操作会导致数据的分散(dispersion)和泄漏(leakage),就像把一个点的信息分散在三个点中,权值如果太平均会使三个点包含的值太模糊(个人理解),因此需要把权值大小的区别进行强化,也就是sharping。具体来说,控制器生成一个参数\(\gamma_t>1\),然后对各个权值进行γt指数然后归一化:
最后我们得出了最终的w_t用于提取和储存记忆。