自注意力机制Self-attention(1)
目錄:
自注意力機制Self-attention(1)
自注意力機制Self-attention(2)
本文是對李宏毅老師的課程進行了整理。
視頻地址為:
https://www.bilibili.com/video/BV1Wv411h7kN?p=23
1 問題引入
問:為什么要引入自注意力機制?
答:輸入一個向量,經過Model預測后得到一個分類結果/數值型結果;當輸入一組向量,經過Model預測后有三種可能的輸出,第一種輸出是一個分類結果/數值型結果,第二種輸出是每個向量輸出一個分類結果/數值型結果(有多少個輸入向量,就有多少個分類結果),第三種輸出是多種分類結果/數值型結果(輸入向量個數和輸出分類結果個數不相同),例如句子"I saw a saw (我看到了一個鋸子)"中判斷"saw"的詞性,第一個是動詞,第二個是名詞,如果沒有上下文,很難判斷"saw"的詞性。
問:哪些應用場景會有一組向量的輸入呢?
答:
(1)一段文字:
(2)一段語音:
(3)social network:
(4) 藥物發現:
2 方法介紹
問:如何利用輸入的一組向量a1a^1a1,a2a^2a2,a3a^3a3,a4a^4a4,得到輸出b1b^1b1,b2b^2b2,b3b^3b3,b4b^4b4?
答:首先通過目標向量a1a^1a1,找到關聯的a2a^2a2,a3a^3a3,a4a^4a4;然后只要知道怎么計算出b1b^1b1,就同理知道b2b^2b2,b3b^3b3,b4b^4b4計算了。
問:如何得到注意力分數?
答:這個模塊是自注意力機制的核心模塊。
上圖介紹了兩種方法來計算注意力分數。
左邊方法為:用一個矩陣WqW^qWq乘上左邊的向量得到一個向量qqq,再用另外一個矩陣WkW^kWk乘上左右邊的向量得到向量kkk;注意力分數α=q?k\alpha = q \cdot kα=q?k。
右邊方法為:用一個矩陣WqW^qWq乘上左邊的向量得到一個向量qqq,再用另外一個矩陣WkW^kWk乘上左右邊的向量得到向量kkk;注意力分數α=Wtanh?(q+k)\alpha = W \tanh (q + k)α=Wtanh(q+k)。
李老師在本次課程采用的是左邊的方法。
query: q1=Wqa1q^1 = W^q a^1q1=Wqa1(備注:transform)
key:k2=Wka2k^2 = W^k a^2k2=Wka2(備注:transform)
attention score:α1,2=q1?k2\alpha_{1,2} = q^1 \cdot k^2α1,2?=q1?k2
Soft-max:α1,i′=exp?(α1,i)∑jexp?(α1,j)\alpha_{1,i}^{'} = \frac{\exp(\alpha_{1,i})}{\sum_j \exp(\alpha_{1,j})}α1,i′?=∑j?exp(α1,j?)exp(α1,i?)?
總結
以上是生活随笔為你收集整理的自注意力机制Self-attention(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (pytorch-深度学习系列)卷积神经
- 下一篇: 数理人文