Sutskever 30 #12:让 attention 能写

从 #10 留下的问题接过来 #10 Pointer Networks 让 attention 第一次直接当输出——softmax 不再对着固定词表挑词,而是对着输入位置挑一个。decoder 每一步指向输入里的某个地方。 不过那还是 read-only 的指针。模型只能指过去读,不能在那个位置上留下新内容。 Graves、Wayne、Danihelka 2014 Neural Turing Machines 把指针往前推了一步:attention 不只能读,还能写。模型旁边放一块外部 memory,就是一张可读可写的矩阵。每一步 controller 算出两类指针:一组用来读,一组用来擦+加。 这就是 NTM 的主问题:如果 attention 已经能指向输入里的位置,下一步自然就是:它能不能指向一块可读可写的记忆? 一块 N×M 的矩阵 把 memory 想成一个矩阵 M,N 行(slot 数),每行 M 维(slot 大小)。这就是 NTM 的"外部 memory"。 读操作很直接。给一个 attention 权重 w(一个长度为 N 的概率分布),读出来的就是按 w 对所有行的加权求和: $$r_t = \sum_i w_t(i) \cdot M_t(i)$$跟 Bahdanau attention 算 context vector 是一样的——只是这里的"key/value"不是 encoder 的 annotations,而是 memory 矩阵本身。 写操作多一步:先按 w 擦掉旧内容,再按 w 加上新内容。controller 输出两个 M 维向量:一个 erase vector e,一个 add vector a: ...

April 27, 2026