Sutskever 30 #14:不挑了,每一对都算一遍

#13 Memory Networks 里 attention 干的是挑:拿问题去跟每条事实比一比,挑出该读的那条,多跳就是顺着挑好几次。从 #09 Bahdanau 起,这一整条线都在把「挑」做得更软、更可微。 Santoro 那帮人 2017 年的 A simple neural network module for relational reasoning(模型常被叫 Relation Network,下面简称 RN)问了句反过来的话:能不能不挑?它的答案是不挑。把每一对对象 (o_i, o_j) 都丢进同一个小网络 g,全部加起来,再用 f 从这个和里读出答案: $$RN(O) = f_\phi\Big(\sum_{i,j} g_\theta(o_i, o_j, q)\Big)$$没有 attention 权重,没有路由,没有谁比谁重要。所有对一视同仁,各算一遍,求和。听着挺笨,但这一笨恰好是后来 self-attention 的骨架——self-attention 不过是把这个等权的和换成了 softmax 加权的和。 为什么求和就够 三件事撑着这个模块。一个 relation 本来就是「两个对象的函数」,同一个 g 用在每一对上,参数省,还逼着模型把关系当成通用的东西,而不是给每对配一套。一堆对象本来没有先后,先求和再读出,意味着打乱顺序结果一个字都不变——置换不变是白送的。问题 q 拼进每一对里,g 看到的是 (o_i, o_j, q),于是「关心哪种关系」由问题说了算。 读出那一步就是过个 f 再 softmax, $$\hat a = \mathrm{softmax}\big(f_\phi(r)\big), \qquad r = \sum_{i,j} g_\theta(o_i, o_j, q)$$跟 #12 NTM 那套 location addressing、erase/add 比,这里干净得不像话:两个 MLP,一次求和。论文标题里的 simple 不是谦虚。 ...

June 5, 2026

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