Transformer 引擎

softmax 注意力權重(softmax attention weights)

原始的注意力分數很雜亂——有的大、有的為負,加起來也不成個整齊的數。softmax 把它們整理乾淨。它拿每一列分數壓成一組總和恰為一的正權重,就像把一塊派分給所有詞元。現在每個權重可以直接讀成「我這一份注意力放在這裡」,而詞元的新值就是這個加權平均。

softmax 把每個分數取指數再除以總和,於是最大的分數佔主導,小的則往零收縮。差距比絕對大小更重要:一個只比鄰居高幾分的分數,就可能吸走大部分權重。這也是為什麼事先縮放分數很重要——否則過大的點積會把 softmax 推向接近贏者全拿的狀態,使梯度幾乎消失。

一個後果是注意力很少是完美銳利的;通常會有些權重外洩到許多詞元上,模型也常把剩餘的權重停在單一個「沉沒(sink)」詞元上。由於每個權重都是正的,注意力只能以相加的方式混合資訊——它無法做減法。

\alpha_{ij}=\frac{e^{e_{ij}}}{\sum_{k}e^{e_{ik}}}

softmax 把每一列分數轉成總和為一的權重。