模型與訓練
Attention 是什麼?模型怎麼決定該看哪裡
Attention(注意力機制)是 Transformer 架構的核心。它讓模型在處理某一個詞的時候,去計算這個詞跟序列中其他每一個詞的相關程度,再依照相關程度分配權重,決定要參考誰、參考多少。因為每個位置都能直接看到全部位置,模型才有辦法處理長距離的關聯,例如一個代名詞指的是前面哪一個名詞。
Attention 是什麼?模型怎麼決定該看哪裡
「小明把書放在桌上,因為它太重了。」你一秒就知道「它」指的是書不是桌子。模型靠什麼做到同一件事?答案是注意力機制。
這是現代語言模型的核心零件。不用會算,但值得知道它在幹嘛。
你將學到什麼
定義
處理每個詞時,計算它跟其他詞的相關程度,依權重決定要參考誰。
白話比喻
像在會議室裡聽多人講話,你會自動把注意力分配給跟主題最相關的人。
為什麼重要
每個位置都能直接看到全部位置,長距離的關聯才抓得住。
代價
計算量隨序列長度快速增加,這是上下文長度會有上限的原因之一。
定義
注意力機制讓模型在處理每一個詞的時候,動態決定要參考序列裡的哪些詞。它會算出每一對詞之間的相關程度,再依照相關程度分配權重。
權重高的位置影響大,權重低的影響小。這個分配不是寫死的規則,而是模型從資料裡學出來的。
白話比喻
像你坐在一場多人會議裡。所有人都在講話,但你不會平均分配耳朵。
你會自動把注意力放在跟當下議題最相關的那幾個人身上,其他的當背景音。模型做的就是這件事,只是它對每個字都重算一次。
它解決了什麼問題
在注意力機制之前,序列模型是一個字一個字往下傳遞資訊。距離越遠,前面的訊息越容易被稀釋掉。
注意力讓每個位置都能直接看到全部位置,中間不需要接力。長距離的指涉與呼應因此才抓得住。
跟相近名詞的差別
| 名詞 | 它是什麼 | 關係 |
|---|---|---|
| Attention | 決定看哪裡的計算機制 | 零件 |
| Transformer | 以注意力為核心的模型架構 | 由這個零件組成 |
| Context Window | 模型一次能處理的長度上限 | 受注意力的計算成本影響 |
| KV Cache | 把算過的中間結果暫存起來 | 為了讓注意力不必重算 |
實際用例
你會在幾個地方間接遇到它。長文摘要時模型能抓出跨段落的主線、翻譯時代名詞對得上、程式碼補全時能對應到前面幾十行的變數。
另一個實務影響是 中段遺失:內容太長時,中間位置分到的注意力相對稀薄,重要資訊放在開頭或結尾通常比較安全。
常見誤解
最常見的誤解是把注意力權重當成模型的解釋。權重高只代表計算上參考得多,不等於「模型是因為這個原因才這樣回答」,兩者不能畫等號。
第二個誤解是以為注意力等於理解。它是一種相關性的加權運算,理解是這個運算堆疊很多層之後浮現的結果,不是機制本身。
本文源起本文為酒Ann 的 AI 名詞彙編系列,用白話把常見名詞一次講清楚。歡迎追蹤 酒Ann 的 Facebook。
延伸學習
常見問答
自注意力跟注意力是同一件事嗎?
自注意力是注意力的一種。差別在比對的對象:自注意力是同一段序列自己跟自己比,用來理解句子內部的關係;一般的注意力也可以拿一段序列去比對另一段,例如翻譯時把目標語言對照到來源語言。
多頭注意力是什麼意思?
同一層裡同時跑多組注意力,每一組學會關注不同面向,例如一組偏文法結構、一組偏語意關聯。多組算完之後再合併,模型就能同時掌握多種關係,而不是被迫只挑一種。
為什麼上下文不能無限長?
因為注意力要算每個位置對其他所有位置的關聯,序列變長時計算量與記憶體需求增加得很快。這是上下文容量有上限的主要原因之一,也是各種長脈絡技術想解決的問題。
