序列模型與Transformer

交叉注意力(cross-attention)

/ kross uh-TEN-shun /

交叉注意力,是從一個序列伸向另一個序列的注意力。自注意力讓一個序列看它自己,交叉注意力則讓一組詞元去諮詢另一組截然不同的詞元。記住它有個乾淨的法子:查詢來自序列 A(我正在處理的東西),而鍵與值來自序列 B(我在查閱的材料)。它就是模型如何在兩個世界裡各踏一隻腳。

交叉注意力的經典老家,是用於翻譯的編碼器—解碼器 Transformer。當解碼器寫法語譯文時,它產出的每個詞都把一個查詢送進編碼器存下的、那句英文源文的向量裡,把此刻相關的那部分原文拉進來。這正是讓譯文繫在源文上、而非飄成流暢廢話的東西。同樣的技巧也連接不同模態:在文生圖模型裡,構建圖像的詞元用交叉注意力去查閱文字提示詞;在圖說模型裡,文字去查閱圖像特徵。

交叉注意力是兩股資訊被縫合在一起的那道接縫,這讓它對任何「把一樣東西映到另一樣」的任務都不可或缺——文到圖、音到文、問題到檢索出的文件。它誠實的局限與所有注意力相同:它只能注意序列 B 中確實在場的材料。若所查閱的源裡不含所需資訊,交叉注意力也無法憑空變出——這也是為何把模型扎根在好的源材料上,比注意力本身有多優雅更要緊。

在一個文生圖生成器裡,提示詞「一輛紅色自行車」被編碼一次。當模型作畫時,構成那輛自行車的圖塊詞元把查詢送進提示詞的鍵/值中,於是「紅色」一詞便能恰恰操控那些圖塊的顏色。

查詢來自一股流,鍵與值來自另一股——這是兩個序列之間的橋。

它的定義性特徵是來源的分裂:查詢來自一個序列,鍵與值來自另一個。這是把交叉注意力與自注意力區分開的唯一東西——數學是一模一樣的。而且它只能浮現被查閱序列裡有的東西,無法發明缺失的資訊。

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