Attention機制的基本原理


原文鏈接: https://zhuanlan.zhihu.com/p/72001554 [seq2seq模型+attention機制]

attention機制的原理

神經學中的注意力機制有兩種:

(1)自上而下的有意識的注意力,稱為聚焦式注意力(Focus Attention),聚焦式注意力是指有預定目的,依賴任務的,主動有意識地聚焦與某一對象的注意力。

(2)自下而上的無意識的注意力,稱為基於顯著性注意力(Saliency-Based Attention)。是由外界刺激驅動的注意,不需要主動去干預,和任務無關。如果一個對象的刺激信息不同於其周圍信息,一種無意識的“贏者通吃”(Winner-Take-All)或者門控(Gating)機制就可以把注意力轉向這個對象。

當你在聽你的朋友說話時,你專注於你朋友的說話而忽略了周圍其他的聲音,這就是聚焦式注意力,當你在其他周圍聲音中聽到了感興趣的詞時,你會馬上注意到,這是顯著性注意力。

給定N組信息輸入 [公式] ,每個向量 [公式] 都表示一組輸入信息。注意力機制的計算分為兩步:一是在所有輸入信息上計算注意力分布,二是根據注意力分布來計算輸入信息的加權平均。

注意力分布:為了從N個輸入向量 [公式] 中選擇出和某個特定任務相關的信息,需要引入一個和任務相關的表示稱為查詢向量(Query Vector),並通過一個打分函數score()計算每個輸入向量和查詢向量之間的相關性。

給定一個和任務相關的查詢向量q,用注意力變量 [公式] 來表示被選擇信息的索引位置,即 [公式] 表示選擇了第i個輸入向量。首先計算在給定q和X下,選擇第i個輸入向量的概率 [公式] (權重),

[公式]

[公式] 為注意力分布權重, [公式] 為注意力打分函數,打分函數有很多種方式比如:

  1. 加性模型: [公式]
  2. 點積模型: [公式]
  3. 縮放點積模型: [公式]
  4. 雙線性模型: [公式]

[公式] 為可學習的參數, [公式] 為輸入向量的維度。

點積模型在實現上更好的利用了矩陣乘積,從而計算效率更高,但是當輸入向量的維度d比較高,點積模型的值通常有比較大的方差,從而導致softmax函數的梯度比較小,縮放點積模型可以較好的解決此問題。雙線性模型可以看作是一種泛化的點積模型,假設雙線性模型公式中 [公式] ,原式可寫為 [公式] ,分別對x和q進行線性變換后計算點積,相比與點積模型,雙線性模型在計算相似度時引入了非對稱性。

加權平均:注意力分布 [公式] 可以理解為在給定任務相關的查詢q時,第i個輸入向量受關注的程度。 [公式]

硬性注意力

軟性注意力其選擇的信息是所有輸入信息在注意力分布下的期望。還有一種只關注到某一位置上的信息,叫做硬性注意力(Hard Attention)。

選擇最高概率的輸入信息: [公式] ,j為概率最大的輸入信息的下標,即 [公式]

硬性注意力缺點是基於最大采樣或隨機采樣的方式來選擇信息。因此最終的損失函數與注意力分布之間的函數關系不可導,無法使用反向傳播算法進行訓練。為了使用反向傳播算法,一般使用軟性注意力來代替硬性注意力。

鍵值對注意力

可以用鍵值對(key-value pair)格式來表示輸入信息,其中“鍵”計算注意力分布 [公式] ,"值"用來計算聚合信息。

用 [公式] 表示N個輸入信息,給定任務相關的查詢向量q時,注意力函數:

[公式]

其中 [公式] 為打分函數.當 [公式] 時,鍵值對模式就等價於普通的注意力機制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM