self attention是提出transformer的**《attention is all you need》中提出的一種新的注意力機制,這篇博文僅聚焦於self attention,不談transformer的其他機制。self attention直觀上與傳統seq2seq attention機制的區別在於,它的query和massage兩個序列是相等的。大家可能都以為self attention是attention的改進版,但其實self attention的設計思想來自rnn和cnn,希望這篇博文能對你有所啟發。在談論self attention之前我們首先認識一下以kqv模型來解釋的attention機制。
假定輸入為q(query), memory中以鍵值對(k,v)形式儲存上下文。那麼注意力機制其實是query到一系列鍵值對(key, value)上的對映函式。tt
attention本質上是為序列中每個元素都分配乙個權重係數,這也可以理解為軟定址。如果序列中每乙個元素都以(k,v)形式儲存,那麼attention則通過計算q和k的相似度來完成定址。q和k計算出來的相似度反映了取出來的v值的重要程度,即權重,然後加權求和就得到了attention值。
self attention機制在kqv模型中的特殊點在於q=k=v,這也是為什麼取名self attention,因為其是文字和文字自己求相似度再和文字本身相乘計算得來。
抖音演算法面試題,self attention和seq2seq attention相比,優越在**。rnn本身對於長距離的依賴關係有一定的捕捉能力,但由於序列模型是通過門控單元使得資訊保持流動,並且選擇性地傳遞資訊。但這種方式在文字長度越來越長的條件下,捕捉依賴關係的能力越來越低,因為每一次遞迴都伴隨著資訊的損耗,所以有了attention機制來增強對我們所關注的那部分依賴關係的捕捉。除此之外,序列模型也不能對層次結構的資訊進行有效的表達。
attention(包括self attention在內)本身的優點(相較於rnn而言):
cnn在nlp領域也有比較廣泛的應用。cnn模型可以被看作n-gram的detector,n-gram的n對應cnn卷積核的大小。cnn基於的假設是區域性資訊存在相互依賴關係,而卷積核可以把這些依賴關係以類似於n-gram的形式提取出來。另外,cnn具備hierachicial receptive filed,使得任意兩個位置之間的長度距離是對數級別。
self-attention的優點(相較於cnn而言):
如果普通attention機制在乙個視窗下計算attention score,正如我這篇博文介紹的attention機制,那麼這種attention機制的感受野就只有視窗,而且隨著視窗移動還需要計算多次。
所以self-attention相較於seq2seq attention還有另乙個優點:
再模擬於cnn的multi-kernel,實現self-attention的時候也可以有多份的self-attention score,這產生了multi-head self attention。
transformer裡面一共有三種self-attetnion:
三種self-attention的區別:
自注意力 self attention
注意力機制不僅能用來處理編碼器或前面的隱藏層,它同樣還能用來獲得其他特徵的分布,例如閱讀理解任務中作為文字的詞嵌入 kadlec et al.2017 37 然而,注意力機制並不直接適用於分類任務,因為這些任務並不需要情感分析 sentiment analysis 等額外的資訊。在這些模型中,通常我...
計算機視覺 self attention機制
先來看乙個翻譯的例子 i arrived at the bank after crossing the river 這裡面的bank指的是銀行還是河岸呢,這就需要我們聯絡上下文,當我們看到river之後就應該知道這裡bank很大概率指的是河岸。在rnn中我們就需要一步步的順序處理從bank到rive...
自注1 DNS網域名稱解析過程
在閱讀本書的過程中,會碰到一些知識點是自己不太熟悉但又不在書籍所涵蓋的範疇當中的,因此需要把這部分知識點單獨的整理出來。在 的伸縮性架構有關應用伺服器負載均衡的章節中,其中一種負載均衡的方式為 dns網域名稱解析負載均衡 這裡就涉及到dns網域名稱解析過程,因此本篇文章主要梳理了這部分知識點。一 定...