Sutskever 30 #13:只读,但读好几遍

从 #12 的"写"接过来 #12 Neural Turing Machine 让 attention 既能读也能写一块外部 memory。代价是那套寻址机器很重:内容寻址之外还要 interpolation、convolutional shift、sharpening 一条流水线,写的时候又要 erase 再 add。东西能跑,但训练很 brittle,换个任务就得重调。 Sukhbaatar、Szlam、Weston、Fergus 2015 End-To-End Memory Networks(这一篇下面简称 MemN2N)问了个反方向的问题:这些机器是不是大部分都可以不要? 它的答案是:把写砍掉,把 location addressing 砍掉,只留 NTM 里最朴素的那一半——content-based 的读。memory 不再是一块要反复擦改的矩阵,就是输入本身,写一次,之后只读。 只读会不会太弱?MemN2N 的补法是:读好几遍。一遍不够就拿这一遍的结果当新问题再读一遍。下面把这事拆开看。 记忆就是输入本身 NTM 要专门维护一块 N×M 的矩阵,每步擦改。MemN2N 干脆不写:一段话里的每个事实,就是 memory 里的一行。 把每个事实 x_i(一句话的 bag-of-words)用一个嵌入矩阵投成向量 m_i = A x_i,问题 q 投成 u = B q。读一遍就是一次 content addressing——跟 #11 Luong 的点积、#12 的内容寻址是同一个动作: $$p_i = \mathrm{softmax}(u^\top m_i), \qquad o = \sum_i p_i\, c_i$$p 是 attention 权重,o 是读出来的内容。注意读出用的是另一套嵌入 c_i = C x_i——一套嵌入管"拿什么去匹配",一套管"匹配上了读回什么"。后来 Transformer 里 key 和 value 分开,是同一个分工。 ...

June 4, 2026