資源地址 |
---|
Attention is all you need.pdf(0積分) - CSDN |
第二遍閱讀(通讀)

圖1——Transformer結(jié)構(gòu)圖

圖2——Attention結(jié)構(gòu)圖
2.1 Background
Background
中說,ByteNet和ConvS2S都使用了CNN結(jié)構(gòu)作為基礎(chǔ)模塊去計(jì)算input和output之間的潛在聯(lián)系,其中,關(guān)聯(lián)來自兩個(gè)任意輸入或輸出位置的信號所需的計(jì)算量,伴隨著distance的增長而增長,ConvS2S呈線性增長,ByteNet呈對數(shù)增長,而在Transformer中,這個(gè)操作所需的計(jì)算量只是常數(shù)級別,盡管代價(jià)是平均了注意力的加權(quán)位置降低了有效分辨率(這里的有效分辨率是什么?),但作者用Multi-Head Attention機(jī)制去抵消了這個(gè)代價(jià)。(所以NLP的一個(gè)關(guān)鍵任務(wù)是,計(jì)算詞語之間的相關(guān)度?)
Self-Attention 機(jī)制在 reading comprehension, abstractive summarization, textual entailment and learning task-independent sentence representations(閱讀理解、抽象摘要、文本隱含和學(xué)習(xí)任務(wù)獨(dú)立的句子表征)中都有成功的應(yīng)用實(shí)踐。
End-to-end memory networks are based on a recurrent attention mechanism instead of sequence aligned recurrence and have been shown to perform well on simple-language question answering and language modeling tasks.端到端記憶網(wǎng)絡(luò)基于循環(huán)注意機(jī)制,而不是序列對齊遞歸,并已被證明在簡單語言問題回答和語言建模任務(wù)上表現(xiàn)良好
那什么是End-to-end memory network?
看起來End-to-end memory networks和Transformer都一樣,都是使用了attention mechanism,但是Transformer是更徹底一些,連recurrent、sequence-aligned(序列對齊)、convolution模塊都沒有,是entirely on self-attention,self-attention不是Transformer這篇論文首先提出的,但是就如同標(biāo)題說的Attention is all you need,純粹基于self-attention他們是第一個(gè)。后面的章節(jié),作者就在討論如何motivate self-attention和相比于(Convolutional sequence to sequence learning、Neural GPUs learn algorithms、Neural machine translation in linear time)這三篇論文的優(yōu)勢了。
2.1 參考文章或視頻鏈接 |
---|
[1] Textual Entailment(自然語言推理-文本蘊(yùn)含) - AllenNLP |
[2] 文本蘊(yùn)涵(Textual entailment) |
2.2 Model Architecture
Model Architecture
在原文中是第三章節(jié),這個(gè)章節(jié)里分了下面的小節(jié)。
- Encoder and Decoder Stacks
- Attention(兩部分內(nèi)容共同構(gòu)建了Attention模塊)
- Scaled Dot-Product Attention
- Multi-Head Attention
- Applications of Attention in our Model
- Position-wise Feed-Forward Networks
- Embeddings and Softmax
- Positional Encoding (這個(gè)讀第二遍不懂,讀第三遍的時(shí)候重點(diǎn)解釋)
在正式對Model Architecture行文前,作者說Transformer也遵循了Encoder先生成中間表示然后Decoder對中間表示進(jìn)行decode的這么一個(gè)架構(gòu),并且是用stacked self-attention and point-wise, fully connected layers去實(shí)現(xiàn)的,這里有個(gè)point-wise, fully connected layers的網(wǎng)絡(luò),中文譯名是逐點(diǎn)全連接層,其表達(dá)公式是
F
F
N
(
x
)
=
m
a
x
(
0
,
x
W
1
+
b
1
)
W
2
+
b
2
FFN(x) = max(0, xW_1+b_1)W_2 + b_2
FFN(x)=max(0,xW1?+b1?)W2?+b2?
也就是說,兩個(gè)Linear層中間夾著一個(gè)ReLU就是point-wise, fully connected layer,ReLU的表達(dá)式就是
m
a
x
(
0
,
x
)
max(0,x)
max(0,x)

圖3 —— point-wise詳細(xì)結(jié)構(gòu)圖(來自參考文章3)
也就對應(yīng)于圖1的這個(gè)Feed Forward的藍(lán)色的這部分:

圖4 —— point-wise全局結(jié)構(gòu)圖
2.2 參考文章或視頻鏈接 |
---|
[1] Position-Wise Feed-Forward Layer |
[2] Position-wise Feed-Forward Network (FFN) - Github |
[3] Illustrated Guide to Transformers- Step by Step Explanation |
先看這篇 [4] The Annotated Transformer - Harvard NLP |
[5] 《Transformer論文逐段精讀【論文精讀】》- 李沐 |
[6] 《Transformer詳解(李沐大神文字版,干貨滿滿?。? CSDN |
2.2.1 Encoder and Decoder Stacks
作者在這里分別描述了Encoder與Decoder。
Encoder是
N
=
6
N=6
N=6層,每一層Encoder Layer有兩個(gè)sub-layers,一個(gè)是multi-head self-attention,另一個(gè)是position-wise fully connected feed-forward network,然后都加上了殘差連接與正則化Norm,也就是Add & Norm
。
Decoder也是
N
=
6
N=6
N=6層,除了Encoder已經(jīng)有的兩個(gè)sub-layers,還多了一部分Masked Multi-Head Attention
,其作用是對encoder stack的輸出進(jìn)行multi-head attention的處理,看到下面這張圖,不妨先忽略被藍(lán)色方塊掩蓋住的Add & Norm
,可以發(fā)現(xiàn)①和②兩個(gè)部分高度一致,所以說Decoder也包括了Encoder的功能邏輯?這么說當(dāng)然是沒錯(cuò)的,我想,只要具備編碼轉(zhuǎn)換的這樣一種邏輯coding A -> coding B
,就是Encoder,至于叫Decoder,那是為了方便理解的人為命名。

圖5 —— Encoder-Decoder結(jié)構(gòu)對比圖
此外,應(yīng)該對Add & Norm
的作用感到有點(diǎn)好奇,Add
就是將輸出與殘差連接相加,那Norm
呢?Norm
的作用是歸一化,用來將消除梯度爆炸,比如權(quán)重已經(jīng)訓(xùn)練到了一個(gè)瓶頸,即前后變化在指定范圍內(nèi),那就該停止了,如果再訓(xùn)練那就容易導(dǎo)致overfitting過擬合,這就是正則化項(xiàng)的一個(gè)作用[4]。
Q:BatchNorm與LayerNorm的區(qū)別?
請看李沐老師的講解與參考文章[1]
2.2.1 參考文章或視頻鏈接 |
---|
[1] 《論文筆記 | Layer Normalization》- 知乎 |
[2] 《Transformer論文逐段精讀【論文精讀】》- 李沐 |
[3] 《Transformer詳解(李沐大神文字版,干貨滿滿!)》- CSDN |
[4] Regularization in Neural Networks |
[5] About Train, Validation and Test Sets in Machine Learning |
2.2.2 Scaled Dot-Product Attention
關(guān)于這部分的內(nèi)容,核心問題應(yīng)該有兩個(gè)。
Q1:為什么Transformer搞了三個(gè)矩陣Q、K、V,然后一通操作猛如虎的就可以表示Attention注意力了?Q、K、V在這個(gè)過程中到底做了什么?
在看視頻前,先從語文上分析注意力這個(gè)詞語,先來一段你和媽媽的日常對話:“在外面一個(gè)人要多注意身體,工作是工作,不能把身體累垮了,身體是革命的本錢”,如果你比較注重自己的身體,那么這段話,我想會對你產(chǎn)生一些作用,你可能不自覺的會生成一個(gè)公式:
成功 = 0.3 × 事業(yè) + 0.7 × 身體 成功=0.3 \times 事業(yè)+0.7 \times 身體 成功=0.3×事業(yè)+0.7×身體
當(dāng)然,不同人的這個(gè)公式是不一樣的,看你如何定義成功、成功包括哪些因素、這些因素所占權(quán)重又有多大,那么好,注意力的本質(zhì)就是權(quán)重的分配,權(quán)重大點(diǎn)就多注意一些,權(quán)重少點(diǎn)就少注意一些。 其余內(nèi)容由于本人表達(dá)與排版能力有限,請看本節(jié)參考視頻[1]與[2]。視頻[1]還是沒解釋,為什么Q、K、V矩陣一樣然后相乘也能表示注意力,看上去這并沒有其視頻開頭提到的一些確切含義了。視頻[2]及其彈幕提到了這些觀點(diǎn):
(1)Transformer中,不同head所擁有的Q矩陣負(fù)責(zé)不同種類的相關(guān)性。
(2)CNN經(jīng)過特殊的構(gòu)造,可以是Self-Attention的一個(gè)特例。
(3)RNN有長序列依賴問題和無法并行。現(xiàn)在來解釋 Q K T QK^T QKT在干什么,先看到公式,
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk??QKT?)V
我認(rèn)為 Q K T QK^T QKT和計(jì)算詞向量之間的 c o s cos cos相似度并沒有本質(zhì)區(qū)別, Q Q Q矩陣第一行對應(yīng)的詞向量 q q q與 K T K^T KT矩陣第一列對應(yīng)的詞向量 k T k^T kT相乘,有
c o s ( θ ) = q k T ∣ q ∣ ∣ k T ∣ cos(\theta) = \frac{qk^T}{|q||k^T|} cos(θ)=∣q∣∣kT∣qkT?
其余的行和列可以依次類推,看上去就和 c o s cos cos相似度差了一個(gè)系數(shù)而已。
Q2:自注意力機(jī)制中,為什么要除 d k \sqrt{d_k} dk???又為什么要用softmax?
先看到計(jì)算公式
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk??QKT?)V
也就是下面這張圖的紅框部分,Mask(opt.)是在說這個(gè)Mask是可選的,在Decoder架構(gòu)中,會用到這個(gè)Mask,而Encoder里是沒有這個(gè)Mask的。圖x —— Scaled Dot-Product Attention結(jié)構(gòu)圖
根據(jù)對 S o f t m a x Softmax Softmax的了解,一旦自變量x的值超過了一定區(qū)間,其斜率就變得平滑,無論x怎么變化,y值變化都不會太大,這樣顯然是沒有什么區(qū)分度的,為了改善這種作用,因此加上了一個(gè) d k \sqrt{d_k} dk?? 的縮放因子,將自變量的取值區(qū)間落到一個(gè)合適的范圍內(nèi),但你用 2 d k \sqrt{2d_k} 2dk??理論上可不可以呢?貌似沒任何理由阻止你這樣用,作者他們在文章給了個(gè)腳注,用來說明為什么用 d k \sqrt{d_k} dk?? 這個(gè)縮放因子,假設(shè) q 、 k q、k q、k互相獨(dú)立,且 q 、 k q、k q、k向量的數(shù)據(jù)遵從 m e a n = 0 , v a r = 1 mean=0, var=1 mean=0,var=1的分布,那么 q ? k = ∑ i = 1 d k q i k i q\cdot k=\sum_{i=1}^{d_k}{q_ik_i} q?k=∑i=1dk??qi?ki?的結(jié)果就遵從 m e a n = 0 , v a r = d k mean=0, var=d_k mean=0,var=dk?的分布,所以根據(jù)概率論知識,做一個(gè) d k \sqrt{d_k} dk??的放縮,對方差有一個(gè)平方相乘的效果,于是結(jié)果就變回了 m e a n = 0 , v a r = 1 mean=0, var=1 mean=0,var=1的分布,具體可以再看看原文。但是,這又是什么新的教義?就因?yàn)?span id="n5n3t3z" class="katex--inline"> m e a n = 0 , v a r = 1 mean=0, var=1 mean=0,var=1聽上去性質(zhì)很不錯(cuò)?
圖x —— Softmax
講完為什么要用 d k \sqrt{d_k} dk??,需要明白為什么要用softmax了,先讀懂問題Q1, s o f t m a x ( ? ) softmax(?) softmax(?) 里的這個(gè) ? ? ? 就是注意力的計(jì)算結(jié)果,也就是權(quán)重的大小,還是以例子來說明。
2016年12月14日,國家發(fā)展改革委印發(fā)通知——《國家發(fā)展改革委關(guān)于支持武漢建設(shè)國家中心城市的復(fù)函》[4],文件上是這么說武漢這座城市的,“具備建設(shè)國家中心城市的基礎(chǔ)條件”,注意,沒加重要二字,有網(wǎng)友是這么調(diào)侃的,重要的就是不重要,不強(qiáng)調(diào)重要就是重要[5],你可以理解為各城市的發(fā)展水平,就部分等價(jià)于引起上級機(jī)關(guān)對于各城市重要性的衡量程度,也就是心中的分量(權(quán)重?zé)o處不在)。那么轉(zhuǎn)回來,注意力的計(jì)算結(jié)果就是發(fā)展水平,你可以簡單理解為GDP,那么 s o f t m a x softmax softmax就是上級機(jī)關(guān)在根據(jù)GDP計(jì)算每座城市在心中的分量的過程,從根本上說, s o f t m a x softmax softmax并不改變注意力計(jì)算的實(shí)質(zhì),只是做了一個(gè)歸一化方便后面計(jì)算操作而已,李宏毅老師也在視頻的26分30秒左右說,不一定要用 s o f t m a x softmax softmax,有人把 s o f t m a x softmax softmax換成 R e L U ReLU ReLU結(jié)果還好一點(diǎn)[2]。
額外問題:如何理解超參數(shù)?如何調(diào)超參數(shù)?
Transformer里的Attention head的數(shù)量就是個(gè)超參數(shù),其實(shí),模型需要的超參數(shù)是多少是沒辦法事先推斷的,就像函數(shù)擬合,你說用二次函數(shù)擬合好呢,還是三次函數(shù)擬合好呢?兩個(gè)擬合下來的方差可能都差不多,也沒什么區(qū)別,但你事先就能知道要用二次或三次函數(shù)擬合嗎?你可能是一個(gè)一個(gè)試出來的,就像煉丹一樣,又遇到了一個(gè)先畫靶子再射箭的例子。煉丹自從有了化學(xué)作為學(xué)科指導(dǎo),就不再盲目,可以科學(xué)的制備化學(xué)品甚至預(yù)測化學(xué)性質(zhì);那么這個(gè)超參數(shù),要遇到什么學(xué)科的出現(xiàn),才能科學(xué)的推斷超參數(shù)不再盲目呢?奧卡姆剃刀?奧卡姆剃刀不能用數(shù)學(xué)描述,又或者是,根據(jù)數(shù)據(jù)多訓(xùn)練幾遍挑個(gè)好的不就知道了?那不行,化學(xué)可以根據(jù)化學(xué)式去推斷性質(zhì)甚至反推合成路線,怎么說最多也只能對數(shù)據(jù)做些分析,而不能真的拿網(wǎng)絡(luò)去訓(xùn)練。這段完全胡說八道,如有不當(dāng),請各位看官指出。
2.2.2 參考文章或視頻鏈接 |
---|
[1] 【注意力機(jī)制的本質(zhì)|Self-Attention|Transformer|QKV矩陣】- bilibili |
[2] 【強(qiáng)烈推薦!臺大李宏毅自注意力機(jī)制和Transformer詳解!】- bilibili |
[3] ML Lecture 14: Unsupervised Learning - Word Embedding |
[4] 國家中心城市 - 百度百科 |
[5] 《科普:中心城市和重要的中心城市》- 百度貼吧 |
[6] 《超參數(shù)》- 百度貼吧 |
[7] Understanding Q,K,V In Transformer( Self Attention) |
Attention is all you need 將Self-Attention發(fā)揚(yáng)光大
2.2.3 Multi-Head Attention
這里的多頭,就是把矩陣進(jìn)行拆分,然后運(yùn)算,然后再合并,這個(gè)過程高度類似于Hadoop的MapReduce,但是作用有所不同,不同的頭在訓(xùn)練過程中,注意力觀察的地方會不一樣。誠所謂:“話說天下大勢,合久必分,分久必合”,分治的思想貫穿人類始終,無論是政治架構(gòu)還是地理格局。
在開始本章之前,還需要掌握兩個(gè)事物:
(1)高維矩陣乘法:
2D矩陣與2D矩陣做矩陣乘法,得到的還是2D矩陣,但這是一個(gè)恰到好處的錯(cuò)覺。
所以你就天真地以為3D矩陣與3D矩陣做矩陣乘法,得到的還是3D矩陣?不對哦,根據(jù)參考文章[2]與[3],得到的應(yīng)該是一個(gè)4D矩陣。即 c j k l m = ∑ k a i j k b k l m c_{jklm}= \sum\limits_{k}^{}a_{ijk}b_{klm} cjklm?=k∑?aijk?bklm?,那4D矩陣呢?也符合這個(gè)規(guī)律嗎,4D矩陣相乘還是4D矩陣。
(2)愛因斯坦求和約定:
請看參考文章[1]
2.2.3 參考文章或視頻鏈接 |
---|
[1] 《Einstein Summation (einsum) 的簡單理解》- 知乎 |
[2] Multidimensional Matrix Mathematics:Multidimensional Matrix Equality, Addition,Subtraction, and Multiplication, Part 2 o |
[3] Is there a 3-dimensional “matrix” by “matrix” product? - stackoverflow |
[4] Understanding Numpy Matmul in 4D through Examples |
[5] tensorflow中高維數(shù)組乘法運(yùn)算 - 知乎 |
[6] 【全面理解多維矩陣運(yùn)算】多維(三維四維)矩陣向量運(yùn)算-超強(qiáng)可視化 - 知乎 |
2.3 Why Self-Attention
Why Self-Attention
一章解釋,為什么要自注意力呢?文章總結(jié)下來就是,計(jì)算詞向量之間相關(guān)性的復(fù)雜度降低,提高并行度,對于解決long-range dependencies長序列依賴問題有奇效,
我記得19年軟考有這么一道題目,計(jì)算兩個(gè)矩陣相乘的時(shí)間復(fù)雜度,請看希賽網(wǎng)的解析。
2.3 參考文章或視頻鏈接 |
---|
[1] 《2019年上半年軟考第65題》- 希賽題庫 |
2.4 Training
Training
,略,后續(xù)更新,請看原文,在學(xué)習(xí)率
l
r
a
t
e
lrate
lrate上的這個(gè)公式有點(diǎn)奇怪,學(xué)習(xí)率也是根據(jù)一些參數(shù)計(jì)算出來的,另外也用到了
D
r
o
p
O
u
t
DropOut
DropOut,這也是常規(guī)操作了。
2.5 Results
Results
重新強(qiáng)調(diào)了下結(jié)果,以及作者他們做的一些模型變種,就是調(diào)了參然后列了張表。文章來源:http://www.zghlxwxcb.cn/news/detail-794549.html
2.6 Conclusion
Conclusion
第一遍閱讀的時(shí)候總結(jié)過了。文章來源地址http://www.zghlxwxcb.cn/news/detail-794549.html
到了這里,關(guān)于論文閱讀筆記AI篇 —— Transformer模型理論+實(shí)戰(zhàn) (二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!