模型與訓練

Attention 是什麼?模型怎麼決定該看哪裡

Attention(注意力機制)是 Transformer 架構的核心。它讓模型在處理某一個詞的時候,去計算這個詞跟序列中其他每一個詞的相關程度,再依照相關程度分配權重,決定要參考誰、參考多少。因為每個位置都能直接看到全部位置,模型才有辦法處理長距離的關聯,例如一個代名詞指的是前面哪一個名詞。
Attention 是什麼?模型怎麼決定該看哪裡:文章重點卡

Attention 是什麼?模型怎麼決定該看哪裡

「小明把書放在桌上,因為它太重了。」你一秒就知道「它」指的是書不是桌子。模型靠什麼做到同一件事?答案是注意力機制。

這是現代語言模型的核心零件。不用會算,但值得知道它在幹嘛。

你將學到什麼

定義

處理每個詞時,計算它跟其他詞的相關程度,依權重決定要參考誰。

白話比喻

像在會議室裡聽多人講話,你會自動把注意力分配給跟主題最相關的人。

為什麼重要

每個位置都能直接看到全部位置,長距離的關聯才抓得住。

代價

計算量隨序列長度快速增加,這是上下文長度會有上限的原因之一。

定義

注意力機制讓模型在處理每一個詞的時候,動態決定要參考序列裡的哪些詞。它會算出每一對詞之間的相關程度,再依照相關程度分配權重。

權重高的位置影響大,權重低的影響小。這個分配不是寫死的規則,而是模型從資料裡學出來的。

白話比喻

像你坐在一場多人會議裡。所有人都在講話,但你不會平均分配耳朵。

你會自動把注意力放在跟當下議題最相關的那幾個人身上,其他的當背景音。模型做的就是這件事,只是它對每個字都重算一次。

它解決了什麼問題

在注意力機制之前,序列模型是一個字一個字往下傳遞資訊。距離越遠,前面的訊息越容易被稀釋掉。

注意力讓每個位置都能直接看到全部位置,中間不需要接力。長距離的指涉與呼應因此才抓得住。

跟相近名詞的差別

名詞它是什麼關係
Attention決定看哪裡的計算機制零件
Transformer以注意力為核心的模型架構由這個零件組成
Context Window模型一次能處理的長度上限受注意力的計算成本影響
KV Cache把算過的中間結果暫存起來為了讓注意力不必重算

實際用例

你會在幾個地方間接遇到它。長文摘要時模型能抓出跨段落的主線、翻譯時代名詞對得上、程式碼補全時能對應到前面幾十行的變數。

另一個實務影響是 中段遺失:內容太長時,中間位置分到的注意力相對稀薄,重要資訊放在開頭或結尾通常比較安全。

常見誤解

最常見的誤解是把注意力權重當成模型的解釋。權重高只代表計算上參考得多,不等於「模型是因為這個原因才這樣回答」,兩者不能畫等號。

第二個誤解是以為注意力等於理解。它是一種相關性的加權運算,理解是這個運算堆疊很多層之後浮現的結果,不是機制本身。

本文源起本文為酒Ann 的 AI 名詞彙編系列,用白話把常見名詞一次講清楚。歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

自注意力跟注意力是同一件事嗎?
自注意力是注意力的一種。差別在比對的對象:自注意力是同一段序列自己跟自己比,用來理解句子內部的關係;一般的注意力也可以拿一段序列去比對另一段,例如翻譯時把目標語言對照到來源語言。
多頭注意力是什麼意思?
同一層裡同時跑多組注意力,每一組學會關注不同面向,例如一組偏文法結構、一組偏語意關聯。多組算完之後再合併,模型就能同時掌握多種關係,而不是被迫只挑一種。
為什麼上下文不能無限長?
因為注意力要算每個位置對其他所有位置的關聯,序列變長時計算量與記憶體需求增加得很快。這是上下文容量有上限的主要原因之一,也是各種長脈絡技術想解決的問題。