← 全部概念地圖
標準

概念地圖・Transformer 注意力

分類:創新

這一頁不只是把一個概念解釋一遍——一張自己畫的結構圖,加上拿台灣情境從頭走一次的實例演練、這個框架什麼時候會騙你,以及它接回 P.A.I.N. 之後長什麼樣。一頁必須交付的三層 →

Transformer 注意力:每個位置對所有位置打一次分

早上七點,派工表上有四張工單、四組師傅,調度員手裡那支筆在四個名字之間來回畫了三次。Transformer 的注意力做的是同一件事,只是它不猶豫——每一個位置都對全部位置打一次分,分數過一趟 softmax,就變成同一列加起來剛好 1.00 的權重。查詢問「我現在要找什麼」,鍵回答「我這裡掛的是什麼」,兩者對上得出分數;值才是真正被搬走的內容,照權重加總成輸出。這張圖把三個角色、一張分數表、一排加權長條擺在一起,讓你看清楚比例是在哪一步被配出來的。

查詢、鍵、值算出一張分數表,每一列經過 softmax 之後加起來等於 1.00 上排三個方框分別是查詢、鍵、值,各拉一條細線往下匯進中央的四乘四分數表。方格用同一個金色的四段深淺表示權重高低,愈深愈高。第 3 列用朱紅框標出,右端註明這一列加起來是 1.00;表格下方列出這一列的四個權重 0.23、0.05、0.63、0.09,再往下是四條長短不同的直條,第 3 條最高。表格往左上偏移疊著兩層淡色同型方陣,代表多頭並排。 四個位置互相打分:每一列是一個查詢對全部位置的分數 查詢 我現在要找什麼 鍵 每個位置掛的名牌 值 真正被搬走的內容 多頭並排 第 3 列 這一列加起來是 1.00 其他三列也各自等於 1.00 格子愈深,權重愈高 低 高 第 3 列權重 0.23 0.05 0.63 0.09 照這四個權重,把「值」加起來 位置 1 位置 2 位置 3 位置 4 第 3 列 softmax 之前的分數是 2.0、0.5、3.0、1.0 分數只差 1.0(3.0 對 2.0)——指數放大之後,權重變成 0.63 對 0.23
這張表真正稀缺的東西是比例:一格拿多了,同一列別的格就一定拿少。

查詢、鍵、值三個角色怎麼算出一組權重

三個角色的名字很像,做的事完全不同。把它們拆開看,這個結構就沒有神祕感了。

環節它在做的事圖上的位置讀錯會發生什麼
查詢這一個位置現在要找的東西上排左邊的方框當成模型已經知道答案,會高估它的智慧
鍵每個位置對外掛的名牌,用來被比對上排中間的方框只比名牌不看內容,以為配對完就結束了
值真正被搬走、被加總的那份內容上排右邊的方框把權重最高的位置直接當成輸出
原始分數查詢與鍵對上的相關程度,還沒被壓成比例中央的四乘四方格拿原始分數當比例,差距會被讀得太小
softmax 權重把同一列壓成加起來 1.00 的比例第 3 列標出來的四個數字忘了總和固定,單看一格就下結論
多頭好幾張分數表並排,各抓一種關係左上方那兩層疊影只看其中一張表就說模型懂了

把這張表讀完,會冒出一件圖上看不到的事:先後順序。四張工單換個排法,每一格的分數一個字都不會變——這個性質讓整套運算可以完全平行,跑得又快又穩,代價是「誰先誰後」得另外塞進去。真正的模型會在每個位置的向量上加一段位置編碼,等於在每張工單的角落蓋一個時間戳。這一步在招牌圖上沒有形狀,卻是這個結構能不能搬到你那一行的分水嶺。

這種加權適不適合你的問題,先問四件事

一、每個選項都得站上同一把尺。注意力沒有「先篩掉一半再說」這個動作,它要求所有選項一起出現在同一列裡,被同一組規則量過。派工現場最常卡在這裡:有的班底資料齊全,證照、上次去過哪一棟都登記在表上;有的只留一個名字。名字算不出分數,等於他在你看到結果之前就被默默排除了——而排除這件事,權重表上一格都不會顯示。自問:我的每一個選項,都打得出一個可以互相比的分數嗎?

二、差距要被放大還是被壓平,是你選的。softmax 用指數把差距撐開——分數上的一小步,權重上是一大階。碰到吊掛這種工單,你多半就想要它撐開:手上有證照的那組本來就該吃掉大部分派工。可是換成一批彼此差不多的常態擦窗,同一個放大會讓某一組被連續指派到累垮,其他人整天閒著。放大或壓平,在模型裡是一個溫度參數,在現場是一句「這件事要不要一面倒」。自問:分數之間的差距,我希望被放大還是被壓平?

三、順序有沒有意義,得另外交代。注意力算的是每個位置對所有位置的相關程度,它不看誰先誰後。四張工單同時攤在桌上,換一個排法,分數一個字都不會變。真實的排程可沒有這種自由——低樓層那張先做完,吊掛那張的備繩與圍籬時間才夠。模型的解法是把位置資訊另外編碼進去;你這一行若順序決定成敗,這一步省不得。自問:選項的先後順序,對答案有沒有影響?

四、總和等於一,是一個假設。權重加起來等於 1,代表你在分一件有限的東西。派工正好長這樣:一張工單只有一組人上得去,比例配完就沒了。可是有些決定天生不長這樣——今天要不要加保、要不要多帶一組安全繩、要不要再排一次繩索檢查,每一項都能獨立成立,硬要它們湊成 1 只會逼出假的取捨。套這個結構之前,先確認你的問題真的在分同一塊餅。自問:配出來的比例,需要加起來等於一嗎?

一家洗窗公司的早班派工,算一次分數

底下這家台灣中部的洗窗公司,是為了把這個結構講清楚而編出來的示意情境,沒有指涉任何真實公司。

實例演練
  • 攤開四張工單:今天早班共四張,第 2 張是 30 樓外牆吊掛。每一張工單都要對四組師傅打一輪分,這裡只跟完第 2 張。一張一輪
  • 先把尺寫死:有高空吊掛證照 3 分、上次做過同一棟 2 分、今天已排在同一區 1 分。三條規則寫在白板上,誰都能複算。尺先公開
  • 四組師傅各拿到一個分:甲 3+2+1=6,乙 3+1=4,丙 1=1,丁 3=3。到這裡都還只是原始分數。同一把尺
  • 過一趟 softmax:甲 0.84、乙 0.11、丙 0.01、丁 0.04,四項加起來 1.00。這一列的比例,到這一步才算配完。總和固定
  • 看甲跟乙的距離:分數上甲比乙多 2 分,權重上是 0.84 對 0.11。指數把一個小差距撐成一面倒。差距被撐開
  • 剩下三張工單重跑:低樓層那幾張的分數長得完全不同,可是每一張一樣自己配到 1.00。各配各的

這一輪最值得記住的接縫,卡在第四步跟第五步之間。分數是你寫的規則算出來的,三個加分項各自獨立,誰拿幾分都能回頭查;權重則是四組人擠在同一列裡分完的比例——丙那一格掉到 0.01,是被甲擠出來的結果,丙的原始分數從頭到尾沒有動過一分。調度員只盯權重表的話,很容易把丙讀成今天沒有戰力。真正該被留下來的是兩層紀錄:一層是規則怎麼給分,一層是比例怎麼被壓出來。少了前面那一層,你手上只剩一張看起來很篤定、卻沒辦法回頭質問的分配表。以上為說明結構用的示意情境,僅供理解框架之用。

這張分數表最容易被讀反的三個地方

  1. 權重大只說明力氣放在哪一格,它推不出因果。一個位置拿到 0.63,代表模型在算這一格的輸出時,把大部分加權放在那裡。它沒說那一格「造成」了答案——換一批訓練資料、換一顆頭,同一個句子的高權重可能整個搬家。學界為此吵過好幾年,把注意力權重直接當成模型的解釋,在不少任務上被實測推翻過。讀成「模型往哪裡看」可以,讀成「因為它,所以答案才長這樣」就越界了。
  2. 同一列的總和固定,一格變大就一定有別格變小。這是 softmax 的機械性質,跟重要性無關。你在觀察一段序列時看到某個詞的權重下滑,很可能只是同一列裡另一個詞升上去了,那個詞本身什麼都沒變。派工那一列也一樣:丙的 0.01 沒告訴你丙的能力,它告訴你的是這一列被誰吃掉了。要判斷單一項的絕對強弱,得回去看 softmax 之前的原始分數。
  3. 多頭是好幾張表並排,只看一張會漏掉另一頭抓到的關係。圖上左上方那兩層疊影,畫的是真的存在的東西。實際的模型同一層會同時算好幾張分數表,各自學到不同的關係——有的盯著相鄰的字,有的盯著隔很遠的呼應。你截圖貼出來的那張漂亮熱度圖,通常只是其中一頭。拿它去論證「模型理解了什麼」之前,先問一句:其他幾頭在看哪裡?

分數配完之後,誰的痛被算進去了

痛點視角

一列權重配完,也就等於宣布了誰今天不會被服務。

《痛點》那把尺問四件事:誰在痛、痛有多深、你的解法真的讓痛變輕嗎、他願不願意為此掏錢。注意力這張表,四件事裡只答得出半件。它答得出「在這一列裡,誰跟這個查詢最相關」,因為相關程度本來就是它自己算出來的分數。它答不出的是分母以外的那些人——從頭到尾沒被放進這一列的位置,權重表上連一格都沒有,於是永遠停在 0.00。派工表上是那個沒登記證照的師傅;生意上是那個不在你名單裡的客戶。這張圖畫得出資源怎麼被分配,畫不出誰在名單外面等。今晚可以做的一件小事:把你最近一次分配資源的清單抓出來,時間、預算、人力都算,在最後一行加一欄「沒被列進來的是誰」,硬寫三個名字進去。寫得出來,你就知道自己的 softmax 是在多大的一列上跑的。

常見問題

注意力權重可以拿來解釋模型為什麼這樣回答嗎?

只能當線索,不能當證據。權重說的是「算這一格輸出時,力氣分給了誰」,這件事跟「答案由誰決定」中間隔了很多層——同一層還有好幾顆頭,上面還疊了十幾層。研究界對「注意力等於解釋」有過相當激烈的來回,結論偏向謹慎:同一個預測往往找得到權重長相很不一樣、輸出卻幾乎相同的版本。想解釋單一預測,把權重當作起點,再配上針對輸入做擾動的檢驗會踏實得多。

softmax 為什麼一定要讓同一列加起來等於 1?

因為接下來那一步是加權平均。值向量要照權重加總成一個輸出,權重總和若浮動,輸出的尺度就跟著飄,下一層收到的東西每次大小不一。壓成總和 1.00 之後,輸出永遠落在那幾個值向量圍出來的範圍裡,訓練才穩得住。順帶的好處是這組數字可以直接當比例讀——0.63 就是六成三的力氣,不必再換算。

注意力真的完全不管詞的先後順序嗎?

注意力這一步確實不管。把輸入的位置整個對調,分數矩陣只是跟著換行換列,內容一個字都不會變——這個性質讓它可以完全平行運算,也是它跑得比循環式架構快的主因。順序是在進入注意力之前補上的:每個位置的向量會先加上一段位置編碼,等於替每個字別上一枚序號徽章。所以順序沒有消失,它換了一個入口進來。

這套加權能不能直接搬去排班或派工?

當成「怎麼配分」的思考骨架很好用,當成排班系統就太素了。真實派工還有一堆硬限制:工時上限、證照到期日、車輛在哪、客戶指定時段,這些全是硬條件,權重再高也稀釋不了。比較實際的做法是拿這套結構去做前段的優先度打分,把明顯該優先的人選排上來,再交給有硬限制的排程規則收尾。它真正的價值在於逼你把給分規則寫成明文——白板上寫得出來,交班的人才複算得了。

排程表攤開來,看每一個選項是不是都被打過分。同一件事換個角度看,SHAP 瀑布圖拆的是一個已經算完的預測被哪幾項推上去,這一篇拆的是權重最早怎麼被配出來;隱馬可夫模型的格狀圖靠的是前後相鄰的狀態轉移,這一列的每一格則直接對全部位置打分。

發現引用或事實有誤?請寫信回報,我會依更正政策修正。

喜歡這篇文章嗎?

每週幫你拆二本好書,把判斷力、好書金句、好問題,直送你的信箱。

不適合你可隨時退訂 · 每週兩封,陪你把書讀進生活。

送出即表示同意我們依隱私權政策使用你的 email。