為什麼Transformer如此強大?注意力機制是關鍵!

上次,我們已經逐步解析了Transformer的內部工作原理。Transformer是現代AI中很多工具的核心技術之一,也是大語言模型的重要組成部分。這項技術首次出現是在2017年的一篇著名論文《Attention is All You Need》中。今天,我們將深入瞭解Transformer中的核心機制--注意力機制,並通過可視化的方式觀察它是如何處理資料的。


回顧Transformer的基本背景

我們研究的這個模型的目標是接受一段文字輸入,並預測下一個詞彙。

輸入的文字會被分解成稱為“token”的小片段,這些token通常是單詞或單詞的組成部分。為了便於理解,我們暫且簡化成假設token就是單詞,Transformer的第一步是將每個token與一個高維向量(即嵌入向量,embedding)關聯起來。

一個關鍵的概念是:高維空間中的方向可以對應語義意義。上篇文章中,我們舉例說明了一個方向可以表示“性別”,比如通過在空間中沿著某個方向移動,可以將一個男性名詞的嵌入轉化為對應的女性名詞的嵌入。

當然,這只是一個例子。你可以想像,在這個高維空間中,還有無數其他方向對應著單詞的其他語義特徵。Transformer的目標是逐步調整這些嵌入向量,使它們不僅僅表示單獨的單詞,還能包含更加豐富的上下文語義資訊。

理解注意力機制的作用

需要提前說明的是,很多人認為注意力機制很複雜,不容易理解。所以如果一開始覺得有點難,不用擔心,這很正常。為了更好地理解,我們先通過幾個例子來直觀感受注意力機制的作用,而不急於進入複雜的數學計算。

例1:單詞“mole”的多重含義

考慮以下短語:

1.American shrew mole

2.One mole of carbon dioxide

3.Take a biopsy of the mole


我們知道,單詞“mole”在不同的上下文中有不同的含義。但在Transformer的第一個步驟中(將文字分解並為每個token關聯嵌入向量),“mole”在所有情況下的初始嵌入是相同的。因為這個嵌入是通過尋找表生成的,並沒有參考上下文。

只有在Transformer的後續步驟中,其他詞的嵌入才能傳遞資訊,幫助調整“mole”的向量,使其能夠反映具體的語義。你可以想像,在嵌入空間中,有多個不同方向分別代表“mole”的不同含義,而經過訓練的注意力機制會根據上下文調整向量,使其指向更具體的方向。

例2:單詞“tower”的語義精煉

再來看“tower”這個詞。其初始嵌入可能指向一個泛化的方向,表示“大而高的事物”。如果它前面有“Eiffel”,你希望注意力機制能夠更新這個向量,使其指向表示“埃菲爾鐵塔”的方向,並可能與“巴黎”“法國”等相關向量相關聯。如果前面還有“miniature”(小型的),那麼向量還需要進一步更新,不再與“大而高”相關。


注意力機制不僅可以讓單詞的語義更具體,還可以將資訊從一個嵌入向量傳遞到另一個嵌入向量,甚至可以傳遞非常複雜的語義資訊。

一個綜合例子:推理“下一個單詞”

假設輸入的是一整本懸疑小說的內容,直到接近結尾的句子:

“Therefore, the murderer was…”

如果模型要精準預測接下來的單詞,它必須依賴序列中最後一個向量,而這個向量最初只是表示單詞“was”。經過所有注意力機制和層的計算後,這個向量最終會包含大量上下文資訊,包括所有與推理相關的內容。

單頭注意力的計算過程


為了讓計算更簡單直觀,我們使用一個例子:

輸入短語為:“A fluffy blue creature roamed the verdant forest.”

此時我們假設,唯一需要更新的語義關係是形容詞修飾它們對應的名詞。

第一步:生成查詢(Query)向量

在這個過程中,每個單詞都會生成一個查詢向量,用於“提問”或“尋找”相關資訊。例如:

名詞“creature”會“問”:“前面有沒有形容詞修飾我?”

而形容詞“fluffy”和“blue”會“回答”:“是的,我是形容詞,而且就在這裡。”

查詢向量是通過一個矩陣WQ與初始嵌入向量相乘生成的。

假設查詢向量的維度比嵌入向量小(比如128維),通過矩陣乘法,我們為每個token生成一個查詢向量。

第二步:生成鍵(Key)向量

與此同時,每個單詞還會生成一個鍵向量,用於“回答”查詢。鍵向量的生成方式類似,也是通過一個矩陣WK與初始嵌入相乘生成的。

在我們的例子中,我們希望鍵向量能夠表示“我是形容詞”並與名詞的查詢向量對齊。

第三步:計算查詢和鍵的匹配程度

為了判斷某個查詢和鍵是否匹配,我們計算它們的點積(dot product)。點積值越大,表示匹配程度越高。

以“creature”為例:

“fluffy”和“blue”的鍵向量與“creature”的查詢向量會有較高的點積值;

而像“the”這樣的詞則匹配程度較低。

通過這種方式,我們得到一個注意力矩陣,其中每個儲存格的值表示對應單詞之間的相關性。

第四步:歸一化與掩碼(Masking)

注意力矩陣的值可能在任意範圍內,為了便於後續計算,我們通過softmax操作將每一列的值歸一化為0到1之間,並確保每列的總和為1,就像機率分佈一樣。

此外,為了避免未來的單詞影響過去的單詞,我們會對矩陣進行掩碼處理(masking)。即將所有“不合法”的值設定為負無窮,確保它們歸一化後為0。

更新嵌入向量

計算完注意力矩陣後,我們就可以根據其權重更新嵌入向量了。具體方法是:

1.通過另一個矩陣WV為每個單詞生成一個值向量(Value)。

2.然後根據注意力權重,將相關的值向量加權求和,更新目標單詞的嵌入向量。

以“creature”為例:

它的更新嵌入向量將主要受到“fluffy”和“blue”的值向量的影響,從而使其語義更具體化,表示“毛茸茸的藍色生物”。

注意力機制的核心在於:通過查詢、鍵和值的互動,讓詞語之間傳遞上下文資訊,逐步豐富每個詞語的語義表達。雖然真正的計算過程複雜且涉及大量參數,但理解這一基本流程,有助於你更好地認識Transformer的工作原理。


注意力機制在Transformer中的工作原理

1.注意力機制的作用

核心思路:通過計算詞之間的相關性(attention pattern),調整每個詞的嵌入向量,使其在上下文中更有意義。

值矩陣(Value Matrix):與每個詞相關聯的值向量(Value Vector),用於反映上下文對當前詞的具體影響。

更新過程:

每個詞的查詢向量(Query)會與其他詞的鍵向量(Key)進行匹配,生成權重(Attention Weights)。

使用這些權重重新加權值向量,得到每個詞的上下文更新(delta E)。

最終將更新加入到原始嵌入,形成新的嵌入。

2.自注意力與多頭注意力

自注意力(Self-Attention):

在同一段輸入中,所有詞之間計算注意力權重。

應用範圍:用於生成更豐富的詞語表示(如“fluffy blue creature”結合語境描述)。


多頭注意力(Multi-Headed Attention):

平行運行多個獨立的注意力頭(Attention Heads)。

每個頭的查詢、鍵和值矩陣參數不同,因此捕獲上下文的不同方面。

在GPT-3中,每個層包含96個注意力頭,允許模型學習多種語義和語法關聯。

3.矩陣參數和最佳化


矩陣尺寸:

查詢和鍵矩陣(Query & Key):用於生成注意力權重,維度較小(嵌入維度 × 縮小維度)。

值矩陣(Value Matrix):初始為嵌入維度 × 嵌入維度,但為了效率分解為“值下降矩陣”和“值上升矩陣”。

多頭注意力參數總量:

單頭約有630萬參數。

96個頭約有6億參數。

GPT-3的96層中,注意力機制貢獻了約580億參數,佔總模型參數的三分之一。

4.擴展:跨注意力與歷史


跨注意力(Cross-Attention):

在需要處理兩個不同資料集的模型中使用(如翻譯模型)。

鍵與值來自一種資料,查詢來自另一種資料。

示例:英法翻譯模型中,鍵與值可能來自英文,查詢來自法文。

歷史發展:

注意力機制的出現極大提高了模型的平行化計算能力,推動了大規模深度學習模型的成功。

尤其是其高效的平行計算能力,利用GPU硬體快速處理大規模計算。


未來展望(技術層面)

1.更高效的注意力計算

儘管注意力機制已經取得了巨大成功,但其計算複雜度較高,尤其在處理長序列時。當前的計算複雜度為(其中是序列長度)。未來的研究可能會集中在以下方向:

稀疏注意力(Sparse Attention):通過剪枝或限制每個詞只能關注某些鄰近的詞,大幅降低計算量,例如Longformer和BigBird。

低秩分解與壓縮技術:如Linformer,使用矩陣分解來減少記憶體和計算消耗。

隨機特徵投影:如Performer,通過將注意力對應為線性計算來加速。

2.跨模態注意力(Cross-Modality Attention)

注意力機制正在被廣泛應用於多模態任務(如圖像、文字和音訊的融合)。未來可能出現:

跨模態統一模型:如CLIP、DALL-E,這類模型通過注意力機制在多個模態間共享資訊,顯著增強生成能力和理解能力。

更高效的模態對齊:研究改進跨模態注意力的對齊方式,使模型對模態間的關係理解更加自然。

3.更輕量化的模型設計

多頭注意力機制固然強大,但模型規模(如GPT-3的175B參數)也帶來了部署難題。未來的發展可能集中在:

知識蒸餾(Knowledge Distillation):將大模型壓縮為小模型,保留其性能。

模組化設計:通過細粒度的注意力模組,動態調整計算量(如Switch Transformer)。

未來展望(實際應用)

注意力機制的應用場景已經超越了NLP,未來可能在以下領域進一步拓展:

1.自然語言處理(NLP)

多語言模型最佳化:通過改進注意力機制,讓模型更高效地捕捉語言之間的語法與語義對應。

更強的對話理解:在任務型對話、情感分析中,注意力機制可以捕捉更加微妙的上下文資訊。

2.電腦視覺(CV)

視覺Transformer (ViT):注意力機制已經在圖像分類、目標檢測中取得了領先性能。未來可能應用於:

視訊分析:如動作識別、視訊生成。

三維資料處理:如點雲資料分析、增強現實(AR)場景理解。

3.醫療與生命科學

藥物研發:利用多頭自注意力模型分析分子結構,預測藥物與目標蛋白的結合能力。

醫療圖像分析:結合多模態資料(如病歷文字、CT掃描圖像)提升診斷精度。

4.自動駕駛與智能交通

注意力機制可以用於融合感測器資料(如激光雷達、攝影機和GPS),幫助車輛在複雜環境中實現即時決策。

5.金融與風險分析

注意力機制適用於高維時間序列分析,幫助預測市場趨勢、量化風險,甚至檢測異常交易行為。 (人工世界Artificial World)