Cross Attention 是 Transformer 模型中的一種注意力機制,主要用於讓模型能夠同時處理來自兩個不同來源的序列信息。它常見於編碼器-解碼器架構中,解碼器透過 cross attention「關注」編碼器輸出的所有位置,從而有效地融合與利用輸入序列信息生成相應輸出。
Cross Attention 的運作原理:
• Query(查詢):來自解碼器(或目標序列)的當前狀態表示。• Key(鍵)和 Value(值):來自編碼器輸出的序列表示。
• Cross attention 計算 Query 與所有 Key 的相似度(通常是點積),得到注意力權重分布。
• 根據權重分布加權求和對應的 Value,得到融合後的信息作為輸出。
• 這使得解碼器能「根據自己的狀態」動態從編碼的輸入序列中選擇相關信息。
與 Self Attention 的差異:
• Self attention 中 Query、Key、Value 三者都來自同一序列,處理的是序列內部元素間的依賴。
• Cross attention 中 Query 與 Key、Value 來自不同序列,用於跨序列信息交互。
應用案例:
• 機器翻譯:解碼器生成一個詞時,從編碼器輸入的所有詞語中選取相關信息。
• 多模態模型:如將文本(Query)和圖像特徵(Key、Value)結合,實現圖文信息融合。
• 視覺語言任務:在 ViLBERT、VisualBERT 等多模態模型中,用於視覺和語言信息交互。
簡單比喻:
Cross attention 就像一個學生(解碼器)在寫作文時,不僅考慮自己已有的想法(Query),還會參考一本書(編碼器輸出)中所有相關內容(Key、Value),有選擇地引用以豐富寫作。
總結:
Cross attention 是 Transformer 中促進不同序列間信息互動的重要機制,支持強有力的跨模態和序列到序列的學習與生成。