李宏毅机器学习(二)自注意力机制
學(xué)習(xí)內(nèi)容
本文以NLP為基礎(chǔ)來介紹自注意力機(jī)制,而沒有用圖像為基礎(chǔ),但是其實兩者都是相同的。
在圖像中我們可以將圖像切塊(塊的劃分是自定義的),然后計算塊與塊之間的關(guān)系;
這里介紹了self-attention 的由來的應(yīng)用
這里有幾個問題需要說明:
我的理解是,如果兩個特征高度相關(guān),那么這兩個特征之間的相似元素必然很多,那么點積之后的值就會很大,也就是關(guān)系型很強(qiáng); 而且使用dot-product來計算關(guān)系是一個常用的方法。
1. 預(yù)備知識
1.1 Sophisticated Input(復(fù)雜輸入)必須是 Vector set
在之前的一節(jié)中,我們的輸入是一個向量,然后經(jīng)過回歸或者是分類來得到一個標(biāo)量或者類別;
但是如果我們的輸入長不只是有一個,而且多個呢? 而且是可以改變的呢?
一個句子: this is a cat
我們把每個單詞作為一個向量;那么整個句子就是多個可變向量;
但是一個向量(單詞)怎么表示呢?
- 第一種:我們可以以字母為單位,采用one-hot來表示一個單詞;
- 第二種是:Word Embedding
一段語音!
這里就會把一段Sequence當(dāng)作信號;比如我們選取25ms的作為一個frame;
同時我們?nèi)绻氡磉_(dá)整個句子的話,需要 往前和往后調(diào)整10ms;
為什么設(shè)置25和10ms,這是前人證明過的,你只需要用就行了。
所以1s --》 100frames
一個圖
1.2 輸出(以上面各個輸入為基礎(chǔ))
三種輸出可能性;
Each vector has a label
和上面的輸入相對應(yīng): 如果我們輸入是一個句子的話,我們以詞性標(biāo)注(POS tagging)作為例子,那么我們輸出的就是每個單詞(向量)的標(biāo)簽; 如果我們輸入的是一個語音,每段語音(frame)也會有一個標(biāo)簽; 如果我們輸入的是一個圖,每個向量(結(jié)點=人),那么我們的輸出就會是每個節(jié)點買不買某個商品;The whole sequence has a label
可能我們只想判斷一句話的情感; 也可能判斷某一段語音是誰講的; 亦或者該分子的親水性;Model decides the number of labels itself(seq2seq)
比如語音翻譯和語音辨識都是seq2seq,也就是長度不一;2. self-attention
如果輸入vector set的時候都可以使用self-attention
2.1 加入FC層
我們重點說第一種,一對一的,以Sequence Labeling為例,如果你要給每個向量一個label; 我們以單獨的一句話中的每個單詞為基礎(chǔ),每個單詞通過一個FC網(wǎng)絡(luò)就可以實現(xiàn)了。
2.2 加入Window
但是這樣就會有一個問題,你只關(guān)心一個單詞的詞性,如果兩個單詞一樣的話,一個表示動詞,一個表示名詞,那么這樣沒有交集的處理會導(dǎo)致FC層無法處理。 所以需要讓FC層考慮更多的上下文資訊。
所以我們可以擴(kuò)大視野,簡稱window!
2.3 加入Self-attention
self-attention中一個標(biāo)量的獲得是由下面所有的一塊決定的。
怎么產(chǎn)生b1b^{1}b1, 也就需要計算a1a^{1}a1和a2a^{2}a2、a3a^{3}a3的關(guān)系; 也就是α1\alpha^{1}α1、α2\alpha^{2}α2等。
而這個關(guān)系是怎么樣找到的呢? 兩種方法: dot-product和Additive
其中dot-product是將向量乘上一個矩陣W得到q,之后q · k = α\alphaα
右側(cè)則是自己看吧!! transformer中使用的就是dot-product。
所以加入了相關(guān)性后計算如下:
當(dāng)然也可以進(jìn)行softmax歸一化! softmax不唯一,可以使用Relu、Norm等等。
最后我們得到經(jīng)過attention score的向量組合! 你需要清楚地知道下面三個q、k、v是什么!
而我們需要的b1就是我們所求
同理,我們就可以得到{a2、a3、a4a_{2}、a_{3} 、a_{4}a2?、a3?、a4?} —》 {b2、b3、b4b_{2}、b_{3} 、b_{4}b2?、b3?、b4?}
2.4 總結(jié)一下:
2.4.1 得到q、k、v
當(dāng)然Wq、Wk、WvW^{q}、W^{k}、W^{v}Wq、Wk、Wv都是矩陣!
2.4.2 得到attention score : α
下圖中上方是推理第一向量得到的α的過程,下面則是將多個向量表達(dá)方式線性代數(shù)化了!
也就是K作為row, q作為了column。
2.4.3 得到b
同樣的道理
2.4.4 最后總結(jié)
輸入I —》 輸出O;
中間Q是關(guān)系矩陣, A’是注意力矩陣。
特別注意的是: 這里只有Wq、Wk、WvW^{q}、W^{k}、W^{v}Wq、Wk、Wv是需要學(xué)習(xí)的,其它的都是已知的,不需要訓(xùn)練; 為什么呢? 自己去往上翻一翻就知道了。
3. Multi-head self-attention
如果一件事有不同的形式,有很多不同的定義,需要多個head!不同的q 每個head是一種相關(guān)性,多個head就是多個相關(guān)性;
這個head也是一個超參數(shù)!!!
4. Position Encoding
可以看到自監(jiān)督中是沒有位置的定義的!
比如動詞不能作為句頭,動詞一般充當(dāng)謂語。所以需要加入位置信息。但是位置信息不是單純的位置,而是包含了位置的其它資訊,包含了重要性(我的理解是這樣的)。
所以eie^{i}ei長什么樣子呢? 最早的transformer(attention is all your need)
方法一: hand-crafted
這是人設(shè)的! 但是sequence是改變的,所以很費勁
方法二: sinusoidal或者cos
最早的
方法三: 自己煉丹吧!!這是一個尚待研究的問題
比如左下角FloATER是自己創(chuàng)造的
5. Many Applications
Transformer 和 Bert
語音可以、圖像也可以; 具體怎么做,自己看視頻,因為我是做NLP的,直接省略!
比如圖像中的一個pixel多個Channel; 或者是一行;
6. Self-attention v.s CNN
CNN是精簡版的Self-attention! 因為Self-attention需要的感受野是全部的。 而在CNN中,感受野是確定的!
self-attention是一個flexible的model, 而且越是flexible的model越是需要更多的data,data不夠,更容易o(hù)verfitting;比如下面的圖中, 我們比較了六個模型的分別使用CNN 和 Transformer的隨著數(shù)據(jù)集量的增大后準(zhǔn)確率的結(jié)果。 可以看出,數(shù)據(jù)集在少的時候,CNN是好的,但是隨著數(shù)據(jù)集的增加,self-attention逐漸的更好。 這是因為感受野的不同的!
6. Self-attention v.s RNN
因為RNN可以被Self-attention取代,就不講RNN了。
初始是一個memory 是預(yù)定義的!,處理的是一個sequence!
第一個RNN的block吃memory和第一個vector,然后輸出新的memory和經(jīng)過一個FC層來做我們需要的預(yù)測;
第二個RNN的block吃上一個吐出來的東西好第二個vector!
兩者之間有很大的不同:
我們直觀上可能感覺,RNN只考慮前幾個的關(guān)系,而沒有考慮全部;其實RNN也可以是雙循環(huán)的,也可以認(rèn)為是全部的關(guān)系; 所以這不是主要的區(qū)別。
-
天涯若比鄰, self-attention中即使很遠(yuǎn)離,但是只需要計算就可以了; 而RNN中第一個和最后一個還需要經(jīng)歷漫長的關(guān)系,不能夠忘掉。
-
不夠并行處理 ; RNN是一個接著一個的;而self-attention的每個向量都是同時計算出來的。
最下面的鏈接將的是 ALL Transformers are RNN;
7.self-attention for graph
圖的優(yōu)點是有關(guān)聯(lián)已經(jīng)確定了,不需要再次計算了; 只需要計算強(qiáng)弱就行了!不需要決定有還是沒有!
沒有必要再學(xué)習(xí)了!
其實GNN是另一種self-attention
GNN水也是很深的!!
8. To learn more。。。
橫軸是速度,縱軸是準(zhǔn)確率!
self-attention 首先用在Transformer中,但是它很慢,所以才有了下面的各種變形!!
但是準(zhǔn)確率和速度兼顧的方法還需要進(jìn)一步的深究!
總結(jié)
以上是生活随笔為你收集整理的李宏毅机器学习(二)自注意力机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度AI技术盛宴来了!大咖齐聚解读CV/
- 下一篇: PAT乙类1009 说反话 (20 分)