AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
56/100 第六週:📌 轉換器架構與注意力機制(Transformers & Attention)🔍
56.多頭注意力(Multi-Head Attention)🎯 看得廣又細,才能全面理解!
________________________________________
🎯 單元導讀:
你可能已了解 Self-Attention 是 Transformer 的核心,但當只用一組 Q/K/V,模型只能從一個角度看資料。
這樣可能會錯過語意的其他面向。
因此,Transformer 引入了更強大的架構:
多頭注意力(Multi-Head Attention),讓模型可以從多種語意空間同時觀察資訊關係。
這不只是數學上的拆分,而是語言理解上的革命突破。
________________________________________
🧠 一、為什麼要多頭?
單頭的問題:
• 無法同時捕捉「語法結構」與「語意指涉」
• 在不同語境中可能失去彈性
• 容易對長序列關聯反應遲鈍
多頭的解法:
將注意力拆成多個「平行世界」,每個頭觀察不同的角度
________________________________________
🔍 二、Multi-Head Attention 結構圖解
輸入 X
│
→ 多組 Q/K/V 線性映射(h 頭)
↓
┌───── 注意力 Head₁ ─────┐
├───── 注意力 Head₂ ─────┤ ← 每頭學習不同語意/語法關聯
│ ... │
└───── 注意力 Headₕ ─────┘
↓
→ Concatenate 拼接
→ 線性層整合投影(Wᵒ)
Multi-Head Attention 的運作過程中,輸入向量 X 首先會被分別投影成多組 Q、K、V(共 h 個頭),每一個注意力頭(Head₁、Head₂、…)會在不同子空間中學習詞與詞之間的關聯性,如語法依賴、語意相似或上下文照應。這些頭的輸出會被**拼接(Concatenate)**起來,再透過一個共同的線性層(Wᵒ)整合成最終的注意力輸出。這種架構允許模型同時從多個角度捕捉資訊,大幅提升對語境的理解能力與表現力。
________________________________________
📐 三、運作步驟
🧠 Multi-Head Attention 是怎麼運作的?
假設你有一句話,經過編碼後每個詞都變成了一個向量,這些向量組成了輸入 XXX。
________________________________________
✅ 步驟一:變成 Q、K、V 三份資料
我們先把每個詞的向量複製三份,分別叫做:
• Query(Q):我要去問別人誰跟我有關
• Key(K):我提供給別人來判斷是否和我有關
• Value(V):如果有人覺得我重要,就把我的資訊傳給他
這三個是從輸入資料透過不同的「轉換公式」算出來的,像是乘上一組不同的參數矩陣(可以想成是三種濾鏡)。
________________________________________
✅ 步驟二:每個詞都「去問其他詞重要嗎?」
每個詞會拿自己的 Q 去跟所有詞的 K 做比較,算出一個分數(數學上是內積再除以一個根號),
然後用 softmax 把這些分數轉成「注意力權重」(誰重要、誰不重要)。
________________________________________
✅ 步驟三:根據注意力權重,去平均其他詞的 V
分數越高,表示你越關注那個詞,那你就多拿一點它的 Value 向量來加進自己的資訊裡。
這樣每個詞都會變成一個包含上下文的新向量。
________________________________________
✅ 步驟四:一次做很多頭(多頭注意力)
為了讓模型從不同角度來理解句子,我們不只做一次注意力,
而是做好幾次(例如 8 個頭),每個頭有不同的 Q/K/V「濾鏡」參數,觀察不同特徵(像語意、語法、位置等等)。
做完後把所有頭的輸出合併在一起,再透過一個線性轉換,變成最終輸出結果。
________________________________________
🎯 為什麼這樣做很強大?
因為它讓模型:
• 每個詞都可以同時關注整句話的其他詞
• 不同的注意力頭可以學習不同的關聯
• 不依賴詞的位置,也能理解「誰影響誰」
這就是 Multi-Head Attention 的精髓。
________________________________________
📊 四、多頭注意力的視覺化價值
以 GPT 或 BERT 分析一句話:
"The animal didn't cross the street because it was too tired."
不同注意力頭可能會:
• 一頭關注語法主詞(it → animal)
• 一頭關注否定語氣(didn't → cross)
• 一頭關注因果邏輯(because → tired)
這就如同多位讀者從不同角度解讀同一句話。
________________________________________
⚙️ 五、多頭注意力的好處與設計原則
優點 說明
🧠 多角度捕捉語意 模型可從語法、結構、語義、位置等多重視角理解
📈 增加模型容量 將表示學習分散至不同空間,提升表示能力
🔄 並行運算效率高 各頭可平行計算,兼具效率與表現
⚠ 注意:
• 頭數(h)設太多會導致過擬合、效能下降
• 常見設置:h = 8、d_model = 512,每頭 d_k = 64
________________________________________
📚 六、小結與啟示
✅ 多頭注意力讓 Transformer 不僅「看到整體」,還能多角度、多層次理解序列資訊
✅ 是大型語言模型(如 BERT、GPT)生成與理解能力強大的來源之一
✅ 頭與頭之間互為補充,使模型在語言、圖像、音訊皆能表現出色
________________________________________
💬 問題挑戰:
1️⃣ 多頭注意力是否越多越好?頭數和參數量有何關聯?
ANS:
多頭注意力可以讓模型從不同角度學習語意關聯,但不是越多越好。因為每個注意力頭都會佔用參數與運算資源,而且太多頭可能會學到重複或無效的資訊,反而造成浪費。
從參數的角度看:如果模型維度固定(例如 512 維),頭數變多,每個頭的維度會變小(例如 8 頭 → 每頭 64 維),這可能會限制每個頭能學到的特徵。因此,頭數需要根據任務複雜度與計算資源做平衡。
2️⃣ 如果某些頭學到的是「類似的關聯」,你會怎麼處理?
ANS:
這表示模型內部出現「注意力重疊」或資源浪費。解決方式可以有以下幾種:
✅ 剪枝(Pruning):移除效果重複或貢獻低的頭,減少模型複雜度
✅ 引入正則化:例如使用 Head Diversity Loss,強迫不同頭學習不同類型的關聯
✅ 改用 Sparse Attention 或 Routing 機制,只保留必要的注意力連結
這樣可以讓每個頭「專責一部分」,提升效率與表示能力。
3️⃣ 除了語言,你認為哪個領域也可以用「多頭」方式進行關聯捕捉?
ANS:
除了語言,多頭注意力也非常適合圖像、音訊與生物資訊等領域。
📷 圖像(Vision Transformer):每個注意力頭可以關注不同區域(邊緣、輪廓、顏色)
🔊 音訊:可分別捕捉低頻/高頻、短時/長時的聲音特徵
🧬 基因與蛋白質序列:每個頭可觀察不同生物結構區塊或長距離相互作用
這種「多頭分工」的設計,讓模型更能理解多維度、複雜結構的資料。