序列模型與Transformer

注意力機制(attention mechanism)

/ uh-TEN-shun MEK-uh-niz-um /

注意力機制,是模型為當前正在處理的每一項,決定該最重看重哪些其他資訊的一種辦法。設想你在讀這句話:「獎盃放不進手提箱,因為它太大了。」要弄清「它」指什麼,你的目光會掃回「獎盃」和「手提箱」,掂量二者的分量。注意力就是機器版的這一次掃視:模型不再把整句話壓成一份固定的摘要,而是把每個詞都留在手邊,每走一步,就把那些要緊的詞按權重調和成一份混合。

具體來說,注意力把「A 項對 B 項有多相關?」變成一個數字。模型在它所聚焦的對象與其他每一項之間算出一個分數,讓這些分數過一遍 softmax,使之變成相加等於一的正權重,再對各項的內容做加權平均。權重高的詞貢獻很大;權重近乎為零的詞,實際上就被忽略了。事先什麼都不丟棄——相關度是為每個位置當場重新計算的。

注意力之所以重要,是因為舊辦法逼著模型在產出任何輸出之前,先把整段輸入壓進一個瓶頸向量,而長輸入在這一擠壓中常被弄得面目全非。注意力拆掉了這個瓶頸:輸出可以直接伸回輸入的任何部分。但有一點要說清楚——注意力是一種加權平均的技巧,並非理解或推理。權重告訴你模型看了哪裡,卻不告訴你為什麼;把它當作模型邏輯的清晰解釋,是一種眾所周知的過度解讀。

把「河的岸邊」翻譯成法語時,模型要在 rive(河岸)與 banque(銀行)之間抉擇。當它處理到「岸」字,注意力會把很大的權重壓在鄰近的「河」字上,這一語境便把它推向 rive。

注意力讓一個詞的意思,可以靠掃一眼它周圍的詞來確定。

「模型注意到了哪裡」很容易被讀成「模型為何這樣決定」,但二者並不等同。注意力權重只是眾多成分之一,研究表明往往可以大幅改動權重而輸出幾乎不變——所以應把注意力圖當作線索,而非供詞。

又稱
attention注意力机制注意力機制soft attention