【學習筆記】注意力機制(Attention)


前言

這一章看啥視頻都不好使,啃書就完事兒了,當然了我也沒有感覺自己學的特別扎實,不過好歹是有一定的了解了

注意力機制

由於之前的卷積之類的神經網絡,選取卷積中最大的那個數,實際上這種行為是沒有目的的,因為你不知道那個最大的數是不是你需要的,也許在哪一塊你偏偏就需要一個最小的數呢?所以就有了注意了機制。
用X來表示N組輸入信息,D是X的維度,Xn表示一組輸入信息。為了節省計算資源不需要把所有信息都輸入神經網絡,只需要從X中選擇一些和任務相關的信息。注意力機制的計算可以分為兩步:一是在所有輸入信息上計算注意力分布,二是根據注意力分布來計算輸入信息的加權平均

注意力分布 為了從N個向量里面選出某個特定任務相關的信息,我們需要引入一個和任務相關的表示,稱為查詢向量,並通過一個打分函數來計算每個輸入向量和查詢向量之間的相關性

這里的q就是查詢向量,X是輸入,α稱為注意力分布,S則是注意力打分函數,打分函數可以用以下方法計算


其中𝑾, 𝑼, 𝒗為可學習的參數,𝐷 為輸入向量的維度

  • 軟性注意力
    加權平均:注意力分布 𝛼𝑛 可以解釋為在給定任務相關的查詢 𝒒 時,第 𝑛 個輸入向量受關注的程度.我們采用一種“軟性”的信息選擇機制對輸入信息進行匯總
  • 硬性注意力
    而與軟性注意力對應則有硬性注意力,本來在下一節出現,但是為了筆記連貫性,我就直接在這里記了。
    軟性注意力其選擇的信息是所有輸入向量在注意力分布下的期望.此外,還有一種注意力是只關注某一個輸入向量,叫作硬性注意力,硬性注意力有兩種實現方式:一種是選取最高概率的一個輸入向量,另一種硬性注意力可以通過在注意力分布式上隨機采樣的方式實現,硬性注意力的一個缺點是基於最大采樣或隨機采樣的方式來選擇信息,使得最終的損失函數與注意力分布之間的函數關系不可導,無法使用反向傳播算法進行訓練.因此,硬性注意力通常需要使用強化學習來進行訓練.為了使用反向傳播算法,一般使用軟性注意力來代替硬性注意力。

注意力機制的變體

鍵值對注意力我們可以用鍵值對(key-value pair)格式來表示輸入信息,其中“鍵”用來計算注意力分布𝛼𝑛,“值”用來計算聚合信息
可以將注意力機制看做是一種軟尋址操作:把輸入信息X看做是存儲器中存儲的內容,元素由地址Key(鍵)和值Value組成,當前有個Key=Query的查詢,目標是取出存儲器中對應的Value值,即Attention值。而在軟尋址中,並非需要硬性滿足Key=Query的條件來取出存儲信息,而是通過計算Query與存儲器內元素的地址Key的相似度來決定,從對應的元素Value中取出多少內容。每個地址Key對應的Value值都會被抽取內容出來,然后求和,這就相當於由Query與Key的相似性來計算每個Value值的權重,然后對Value值進行加權求和。加權求和得到最終的Value值,也就是Attention值。
這里的理解感謝CSDN的博客: https://blog.csdn.net/weixin_42398658/article/details/90804173

這里V指的就是值

這里兩張圖可以看出區別,普通的機制就是把x和q一起算s再輸出α作為注意力分布,在計算x應該輸入多少,而鍵值對是原來的輸入x使用鍵值對格式,包含一個k和一個v,計算得時候把K和q作為輸入來計算s,再把求出的α和數據里面的v進行輸出

多頭注意力

多頭注意力(Multi-Head Attention)是利用多個查詢𝑸 = [𝒒1, ⋯ , 𝒒𝑀],來並行地從輸入信息中選取多組信息.每個注意力關注輸入信息的不同部分.

結構化注意力

在之前介紹中,我們假設所有的輸入信息是同等重要的,是一種扁平(Flat)結構,注意力分布實際上是在所有輸入信息上的多項分布.但如果輸入信息本身具有層次(Hierarchical)結構,比如文本可以分為詞、句子、段落、篇章等不同粒度的層次,我們可以使用層次化的注意力來進行更好的信息選擇 .此外,還可以假設注意力為上下文相關的二項分布,用一種圖模型來構建更復雜的結構化注意力分布

指針網絡

注意力機制主要是用來做信息篩選,從輸入信息中選取相關的信息.注意力機制可以分為兩步:一是計算注意力分布 𝛼,二是根據 𝛼 來計算輸入信息的加權平均.我們可以只利用注意力機制中的第一步,將注意力分布作為一個軟性的指針(pointer)來指出相關信息的位置.

自注意力模型

上文中出現的鍵值對注意力,其實就是為了自注意力模型的學習做准備,看到這里才算有了一個系統的了解。
感謝CSDN這篇文章對我的理解幫助 https://blog.csdn.net/qq_38890412/article/details/120601834
以利用注意力機制來“動態”地生成不同連接的權重,這就是自注意力模型
加入一個注意力機制和自注意力機制的區別來幫助理解:簡單的講就是Attention機制中的權重的計算需要Target來參與的,即在Encoder-Decoder model中Attention權值的計算不僅需要Encoder中的隱狀態而且還需要Decoder 中的隱狀態。而Self Attention顧名思義,指的不是Target和Source之間的Attention機制,而是Source內部元素之間或者Target內部元素之間發生的Attention機制,也可以理解為Target=Source這種特殊情況下的注意力計算機制。

原本計算相關度只需要X和X的轉置做內積即可,但是為了提高擬合度,對X做了一些變換,這些QKV矩陣就是對於X的線性變化用來增高擬合性,而QKV的內容都可以學習訓練得出


的作用是讓梯度值保持穩定
給出全連接模型和自注意力模型的對比,其中實線表示可學習的權重,虛線表示動態生成的權重.由於自注意力模型的權重是動態生成的,因此可以處理變長的信息序列.

小結

這一章學完有一個很深的感悟,也不知道對不對
所謂的神經網絡,無外乎就是通過權重篩選數據,只不過權重的計算方式和篩選策略不同,就起了不同的名字,也不知道這樣理解對不對


免責聲明!

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



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