https://www.jianshu.com/p/89ce327e957c
本文是對(duì)transformer的細(xì)節(jié)進(jìn)行整理,主要有以下問(wèn)題:
Transformer為什么Q和K使用不同的權(quán)重矩陣生成,為何不能使用同一個(gè)值進(jìn)行自身的點(diǎn)乘?
關(guān)于 self-attention 為什么要使用 Q、K、V,僅僅使用 Q、V/K、V 或者 V 為什么不行?
transformer中的attention為什么scaled?
Transformer計(jì)算attention的時(shí)候?yàn)楹芜x擇點(diǎn)乘而不是加法??jī)烧哂?jì)算復(fù)雜度和效果上有什么區(qū)別?
在計(jì)算attention score的時(shí)候如何對(duì)padding做mask操作?
為什么Transformer 需要進(jìn)行 Multi-head Attention?
self-attention 為什么它能發(fā)揮如此大的作用?
殘差結(jié)構(gòu)意義
Transformer中的Mask矩陣已經(jīng)有順序了,能去掉position embedding嗎?
為什么說(shuō) Transformer 可以代替 seq2seq?
Transformer 相比于 RNN/LSTM,有什么優(yōu)勢(shì)?為什么?
Transformer為什么Q和K使用不同的權(quán)重矩陣生成,為何不能使用同一個(gè)值進(jìn)行自身的點(diǎn)乘?
transformer中為什么使用不同的K 和 Q, 為什么不能使用同一個(gè)值? - TniL的回答 - 知乎注解:簡(jiǎn)單回答就是,使用Q/K/V不相同可以保證在不同空間進(jìn)行投影,增強(qiáng)了表達(dá)能力,提高了泛化能力。
關(guān)于 self-attention 為什么要使用 Q、K、V,僅僅使用 Q、V/K、V 或者 V 為什么不行?
這個(gè)問(wèn)題我覺(jué)得并不重要,self-attention 使用 Q、K、V,這樣三個(gè)參數(shù)獨(dú)立,模型的表達(dá)能力和靈活性顯然會(huì)比只用 Q、V 或者只用 V 要好些,當(dāng)然主流 attention 的做法還有很多種,比如說(shuō) seq2seq with attention 也就只有 hidden state 來(lái)做相似性的計(jì)算,處理不同的任務(wù),attention 的做法有細(xì)微的不同,但是主體思想還是一致的,不知道有沒(méi)有論文對(duì)這個(gè)問(wèn)題有過(guò)細(xì)究,有空去查查~
「其實(shí)還有個(gè)小細(xì)節(jié),因?yàn)?self-attention 的范圍是包括自身的(masked self-attention 也是一樣),因此至少是要采用 Q、V 或者 K、V 的形式,而這樣“詢問(wèn)式”的 attention 方式,個(gè)人感覺(jué) Q、K、V 顯然合理一些?!?div style="height:15px;">
transformer中的attention為什么scaled?
transformer中的attention為什么scaled? - TniL的回答 - 知乎Transformer計(jì)算attention的時(shí)候?yàn)楹芜x擇點(diǎn)乘而不是加法??jī)烧哂?jì)算復(fù)雜度和效果上有什么區(qū)別?
最基礎(chǔ)的 attention 有兩種形式,一種是 Add(加性),一種是 Mul(點(diǎn)乘)
為了計(jì)算更快。矩陣加法在加法這一塊的計(jì)算量確實(shí)簡(jiǎn)單,但是作為一個(gè)整體計(jì)算attention的時(shí)候相當(dāng)于一個(gè)隱層,整體計(jì)算量和點(diǎn)積相似。在效果上來(lái)說(shuō),從實(shí)驗(yàn)分析,兩者的效果和dk相關(guān),dk越大,加法的效果越顯著。論文中的實(shí)驗(yàn)圖如下:
add VS mul
在計(jì)算attention score的時(shí)候如何對(duì)padding做mask操作?
為什么Transformer 需要進(jìn)行 Multi-head Attention?結(jié)合文章和論文看,主要回答以下問(wèn)題:
不同頭之間的差距有多少?
是否隨著層數(shù)的變化而變化?
有大量的paper表明,Transformer,或Bert的特定層是有獨(dú)特的功能的,底層更偏向于關(guān)注語(yǔ)法,頂層更偏向于關(guān)注語(yǔ)義。那么我們假定:在同一層Transformer關(guān)注的方面是相同的,那么對(duì)該方面而言,不同的頭關(guān)注點(diǎn)應(yīng)該也是一樣的。不過(guò),在下圖中也表明:同一層中,總有那么一兩個(gè)頭獨(dú)一無(wú)二,和其他頭的關(guān)注pattern不同。(從某個(gè)角度看,至少一個(gè)頭的效果不如多幾個(gè)頭好,至于具體是幾個(gè)head又是另一個(gè)問(wèn)題了。)
From:https://arxiv.org/pdf/1906.05714.pdf
論文
《What Does BERT Look At? An Analysis of BERT’s Attention》中可視化表示:頭之間的方差隨著所在層數(shù)的增大而減小。但是這種差距有什么作用至今還沒(méi)有得到解釋。
同一層中,不同的頭數(shù)量是否對(duì)
有影響?
論文
《Analyzing Multi-Head Self-Attention:Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned》給出的結(jié)論是:只有一小部分頭對(duì)翻譯而言是重要的,其他的頭都是次要的;重要的頭有一種或多種專有的關(guān)注模式。
Transformer原論文中的結(jié)果,我們主要看base那一行和(A)組。對(duì)于PPL和BLEU,確是8個(gè)頭/16個(gè)頭最好,1個(gè)頭最差,4個(gè)和32個(gè)頭稍微差一點(diǎn),但是差的不多。從這里來(lái)看,head也不是越多越好或者越少越好。
transformer
初始化如何影響
?能否通過(guò)控制初始化去控制
?
論文
《Improving Deep Transformer with Depth-Scaled Initialization and Merged Attention》討論了初始化對(duì)Transformer各層方差的影響,最終緩解梯度消失的問(wèn)題。從這個(gè)角度講,Transformer底層的頭方差大是因?yàn)門(mén)ransformer存在的梯度消失問(wèn)題,也就是說(shuō),并不是模型自己覺(jué)得底層的方差大是好的,而是自己沒(méi)有辦法讓它變好。所以,合理的初始化應(yīng)該可以減少底層頭的方差,提高效果。
從
為什么Transformer 需要進(jìn)行 Multi-head Attention?整體來(lái)看:
Multi-Head其實(shí)不是必須的,去掉一些頭效果依然有不錯(cuò)的效果(而且效果下降可能是因?yàn)閰?shù)量下降),這是因?yàn)樵陬^足夠的情況下,這些頭已經(jīng)能夠有關(guān)注位置信息、關(guān)注語(yǔ)法信息、關(guān)注罕見(jiàn)詞的能力了,再多一些頭,無(wú)非是一種enhance或noise而已。
self-attention 為什么它能發(fā)揮如此大的作用
self-attention 是一種自身和自身相關(guān)聯(lián)的 attention 機(jī)制,這樣能夠得到一個(gè)更好的 representation 來(lái)表達(dá)自身;self-attention 可以捕獲同一個(gè)句子中單詞之間的一些句法特征(比如圖 1 展示的有一定距離的短語(yǔ)結(jié)構(gòu))或者語(yǔ)義特征。
引入 Self Attention 后會(huì)更容易捕獲句子中長(zhǎng)距離的相互依賴的特征,因?yàn)槿绻?RNN 或者 LSTM,需要依次序序列計(jì)算,對(duì)于遠(yuǎn)距離的相互依賴的特征,要經(jīng)過(guò)若干時(shí)間步步驟的信息累積才能將兩者聯(lián)系起來(lái),而距離越遠(yuǎn),有效捕獲的可能性越小。
Self Attention 對(duì)于增加計(jì)算的并行性也有直接幫助作用。
殘差結(jié)構(gòu)意義
防止梯度消失,幫助深層網(wǎng)絡(luò)訓(xùn)練
具體理論推導(dǎo)可以看看
殘差網(wǎng)絡(luò)解決了什么,為什么有效?Transformer中的Mask矩陣已經(jīng)有順序了,能去掉position embedding嗎?
Transformer中的Mask矩陣已經(jīng)有順序了,能去掉position embedding嗎? 總結(jié)一下,需要根據(jù)具體任務(wù)看position embedding,如果是序列任務(wù),可能最好還是保留,如果對(duì)位置不敏感,去掉也是可以的。
另外,也有論文證明去掉position embedding在語(yǔ)言建模上提升性能
為什么說(shuō) Transformer 可以代替 seq2seq?
出處:
關(guān)于Transformer,面試官們都怎么問(wèn)簡(jiǎn)單點(diǎn)說(shuō),一方面是想想seq2seq有什么缺點(diǎn),另一方面是transformer有什么優(yōu)點(diǎn)?
seq2seq缺少attention,不能關(guān)注重點(diǎn)。encoder的輸出是所有信息都?jí)嚎s到一個(gè)向量中,在序列比較長(zhǎng)的時(shí)候,會(huì)損失encoder的一些信息,decoder不能夠關(guān)注到其想要關(guān)注的信息。(后來(lái)有帶attention+seq2seq的改進(jìn))
transformer表達(dá)能力更強(qiáng),通過(guò)自身和自身的關(guān)聯(lián),增強(qiáng)自身的表達(dá)度
transformer有并行能力
這里用代替這個(gè)詞略顯不妥當(dāng),seq2seq 雖已老,但始終還是有其用武之地,seq2seq 最大的問(wèn)題在于「將 Encoder 端的所有信息壓縮到一個(gè)固定長(zhǎng)度的向量中」,并將其作為 Decoder 端首個(gè)隱藏狀態(tài)的輸入,來(lái)預(yù)測(cè) Decoder 端第一個(gè)單詞(token)的隱藏狀態(tài)。在輸入序列比較長(zhǎng)的時(shí)候,這樣做顯然會(huì)損失 Encoder 端的很多信息,而且這樣一股腦的把該固定向量送入 Decoder 端,Decoder 端不能夠關(guān)注到其想要關(guān)注的信息。
上述兩點(diǎn)都是 seq2seq 模型的缺點(diǎn),后續(xù)論文對(duì)這兩點(diǎn)有所改進(jìn),如著名的Neural Machine Translation by Jointly Learning to Align and Translate,雖然確確實(shí)實(shí)對(duì) seq2seq 模型有了實(shí)質(zhì)性的改進(jìn),但是由于主體模型仍然為 RNN(LSTM)系列的模型,因此模型的并行能力還是受限,而 transformer 不但對(duì) seq2seq 模型這兩點(diǎn)缺點(diǎn)有了實(shí)質(zhì)性的改進(jìn)(多頭交互式 attention 模塊),而且還引入了 self-attention 模塊,讓源序列和目標(biāo)序列首先“自關(guān)聯(lián)”起來(lái),這樣的話,源序列和目標(biāo)序列自身的 embedding 表示所蘊(yùn)含的信息更加豐富,而且后續(xù)的 FFN 層也增強(qiáng)了模型的表達(dá)能力(ACL 2018 會(huì)議上有論文對(duì) Self-Attention 和 FFN 等模塊都有實(shí)驗(yàn)分析,見(jiàn)論文:How Much Attention Do You Need?A Granular Analysis of Neural Machine Translation Architectures),并且 Transformer 并行計(jì)算的能力是遠(yuǎn)遠(yuǎn)超過(guò) seq2seq 系列的模型,因此我認(rèn)為這是 transformer 優(yōu)于 seq2seq 模型的地方。
Transformer 相比于 RNN/LSTM,有什么優(yōu)勢(shì)?為什么?
RNN 系列的模型,并行計(jì)算能力很差
RNN 系列的模型
時(shí)刻隱層狀態(tài)的計(jì)算,依賴兩個(gè)輸入,一個(gè)是
時(shí)刻的句子輸入單詞
,另一個(gè)是
時(shí)刻的隱層狀態(tài)的輸出
,這是最能體現(xiàn) RNN 本質(zhì)特征的一點(diǎn),RNN 的歷史信息是通過(guò)這個(gè)信息傳輸渠道往后傳輸?shù)?。?RNN 并行計(jì)算的問(wèn)題就出在這里,因?yàn)?div id="c9ozetgccsir" class='imgcenter'>
上述結(jié)論是通過(guò)一些主流的實(shí)驗(yàn)來(lái)說(shuō)明的,并不是嚴(yán)格的理論證明,具體實(shí)驗(yàn)對(duì)比可以參見(jiàn):
但是值得注意的是,并不是說(shuō) Transformer 就能夠完全替代 RNN 系列的模型了,任何模型都有其適用范圍,同樣的,RNN 系列模型在很多任務(wù)上還是首選,熟悉各種模型的內(nèi)部原理,知其然且知其所以然,才能遇到新任務(wù)時(shí),快速分析這時(shí)候該用什么樣的模型,該怎么做好。