序列模型与Transformer

交叉注意力(cross-attention)

/ kross uh-TEN-shun /

交叉注意力,是从一个序列伸向另一个序列的注意力。自注意力让一个序列看它自己,交叉注意力则让一组词元去咨询另一组截然不同的词元。记住它有个干净的法子:查询来自序列 A(我正在处理的东西),而键与值来自序列 B(我在查阅的材料)。它就是模型如何在两个世界里各踏一只脚。

交叉注意力的经典老家,是用于翻译的编码器—解码器 Transformer。当解码器写法语译文时,它产出的每个词都把一个查询送进编码器存下的、那句英文源文的向量里,把此刻相关的那部分原文拉进来。这正是让译文系在源文上、而非飘成流畅废话的东西。同样的技巧也连接不同模态:在文生图模型里,构建图像的词元用交叉注意力去查阅文本提示词;在图说模型里,文字去查阅图像特征。

交叉注意力是两股信息被缝合在一起的那道接缝,这让它对任何「把一样东西映到另一样」的任务都不可或缺——文到图、音到文、问题到检索出的文档。它诚实的局限与所有注意力相同:它只能注意序列 B 中确实在场的材料。若所查阅的源里不含所需信息,交叉注意力也无法凭空变出——这也是为何把模型扎根在好的源材料上,比注意力本身有多优雅更要紧。

在一个文生图生成器里,提示词「一辆红色自行车」被编码一次。当模型作画时,构成那辆自行车的图块词元把查询送进提示词的键/值中,于是「红色」一词便能恰恰操控那些图块的颜色。

查询来自一股流,键与值来自另一股——这是两个序列之间的桥。

它的定义性特征是来源的分裂:查询来自一个序列,键与值来自另一个。这是把交叉注意力与自注意力区分开的唯一东西——数学是一模一样的。而且它只能浮现被查阅序列里有的东西,无法发明缺失的信息。

又称
encoder-decoder attention交叉注意力編碼器-解碼器注意力cross attention