attention翻譯為注意力,對於不同的輸入資訊根據重要性不同賦予不同的權重。**於人類對同一事物的注意力不同而得名。可以根據圖一來做簡單的理解,其中顏色較深的部分,指的是比較關注的分布。
在nlp中,attention**於seqseq中,在最後乙個timestep後encode輸出開始**decode的階段,如圖2中中法文翻譯為英文為例。在每一時刻生成右邊英語句子的過程中只關注其中輸入法語句子中最重要的資訊部分。
圖三,是乙個實現seqseq中attention句子的形象的演示過程,其中在每一時刻,decode每乙個中間向量和encode中每乙個中間向量,通過乙個函式(如點乘,余弦相似度),計算得到attention score,如圖中藍色score部分。隨後進入第2部,將這些attention score經過softmax函式變換,得到0~1的概率分布,然後將這些概率分別和encode的各自attention向量相乘求和得到attention output
如圖四中所示,將source中的構成元素想象成是由一系列的資料對構成,此時給定target中的某個元素query,通過計算query和各個key的相似性或者相關性,得到每個key對應value的權重係數,然後對value進行加權求和,即得到了最終的attention數值。所以本質上attention機制是對source中元素的value值進行加權求和,而query和key用來計算對應value的權重係數。即可以將其本質思想改寫為如下公式(圖5)。至於attention機制的具體計算過程,如果對目前大多數方法進行抽象的話,可以將其歸納為兩個過程:第乙個過程是根據query和key計算權重係數,第二個過程根據權重係數對value進行加權求和。而第乙個過程又可以細分為兩個階段:第乙個階段根據query和key計算兩者的相似性或者相關性;第二個階段對第一階段的原始分值進行歸一化處理(圖6)
在編碼的互動層過後得到輸出context向量矩陣h(2d,t)和query詞向量矩陣u(2d,j)。計算相似度矩陣s,s的計算過程如圖7所示,a為h向量,b為u向量,得到的相似度矩陣為s(t,j)。
詳細分解過程如圖8所示。s(t,j)表示的是h中第t個詞向量和u中第j個詞向量,得到的乙個相似度得分。
計算context_to_query_attention,如圖9所示。首先將相似度矩陣根據行向量,進行softmax變換,得到矩陣a.然後拿a(1,j)中的任意一行at與u中的對應位置的每乙個詞向量(2d,1)相乘加和得到乙個(2d,1)的向量。
計算query-to-context attention,如圖10所示。首先通過相似度矩陣s,取每一行向量的最大值,得到矩陣z,z經過softmax變換,得到矩陣b,拿b中的每乙個值和對應的h向量中每一位置的詞向量做乘積加和得到乙個(2d,1)的向量,然後複製該向量t次得到qtc attention。
深度學習中的注意力模型(2017版)
attention mechanism in seq2seq and bidaf — an illustrated guide
如何視覺化深度學習網路中Attention層
在訓練深度學習模型時,常想一窺網路結構中的attention層權重分布,觀察序列輸入的哪些詞或者詞組合是網路比較care的。在小 中主要研究了關於詞性pos對輸入序列的注意力機制。同時對比實驗採取的是words的self attention機制。下圖主要包含兩列 word attention是sel...
關於深度學習
一 deep learning的基本思想 假設我們有乙個系統s,它有n層 s1,sn 它的輸入是i,輸出是o,形象地表示為 i s1 s2 sn o,如果輸出o等於輸入i,即輸入i經過這個系統變化之後沒有任何的資訊損失 呵呵,大牛說,這是不可能的。資訊理論中有個 資訊逐層丟失 的說法 資訊處理不等式...
關於深度學習
寫這篇文章其實是個意外,在一本圖形教材裡看到了神經網路,感覺好像以前在機器學習裡見過,就稍微了解了一下。dl的浪潮好像影響很大,之前在知乎上看到很多中小型公司,能組起雲平台的都在做大資料。在這裡我只是想說一下,人工智慧,機器學習,深度學習的區別。詳細資料 我覺得深藍的總結比較準確 機器學習 一種實現...