序列模型与Transformer

注意力机制(attention mechanism)

/ uh-TEN-shun MEK-uh-niz-um /

注意力机制,是模型为当前正在处理的每一项,决定该最重看重哪些其他信息的一种办法。设想你在读这句话:「奖杯放不进手提箱,因为它太大了。」要弄清「它」指什么,你的目光会扫回「奖杯」和「手提箱」,掂量二者的分量。注意力就是机器版的这一次扫视:模型不再把整句话压成一份固定的摘要,而是把每个词都留在手边,每走一步,就把那些要紧的词按权重调和成一份混合。

具体来说,注意力把「A 项对 B 项有多相关?」变成一个数字。模型在它所聚焦的对象与其他每一项之间算出一个分数,让这些分数过一遍 softmax,使之变成相加等于一的正权重,再对各项的内容做加权平均。权重高的词贡献很大;权重近乎为零的词,实际上就被忽略了。事先什么都不丢弃——相关度是为每个位置当场重新计算的。

注意力之所以重要,是因为旧办法逼着模型在产出任何输出之前,先把整段输入压进一个瓶颈向量,而长输入在这一挤压中常被弄得面目全非。注意力拆掉了这个瓶颈:输出可以直接伸回输入的任何部分。但有一点要说清楚——注意力是一种加权平均的技巧,并非理解或推理。权重告诉你模型看了哪里,却不告诉你为什么;把它当作模型逻辑的清晰解释,是一种众所周知的过度解读。

把「河的岸边」翻译成法语时,模型要在 rive(河岸)与 banque(银行)之间抉择。当它处理到「岸」字,注意力会把很大的权重压在邻近的「河」字上,这一语境便把它推向 rive。

注意力让一个词的意思,可以靠扫一眼它周围的词来确定。

「模型注意到了哪里」很容易被读成「模型为何这样决定」,但二者并不等同。注意力权重只是众多成分之一,研究表明往往可以大幅改动权重而输出几乎不变——所以应把注意力图当作线索,而非供词。

又称
attention注意力机制注意力機制soft attention