Transformer 是第一個(gè)完全依賴于自注意力機(jī)制來計(jì)算其輸入和輸出的表示的轉(zhuǎn)換模型。
主流的序列到序列模型是基于編碼器-解碼器的循環(huán)或卷積神經(jīng)網(wǎng)絡(luò),注意力機(jī)制的提出,優(yōu)化了編解碼器的性能,從而使得網(wǎng)絡(luò)性能達(dá)到最優(yōu)。利用注意力機(jī)制構(gòu)建出新的網(wǎng)絡(luò)架構(gòu)Transformer, 完勝了循環(huán)或卷積神經(jīng)網(wǎng)絡(luò)。Transformer 是第一個(gè)完全依賴于自注意力機(jī)制來計(jì)算其輸入和輸出的表示的轉(zhuǎn)換模型。Transformer可以并行訓(xùn)練,訓(xùn)練時(shí)間更短。
1 Transformer的模型架構(gòu)
序列到序列模型采用的是編碼器-解碼器結(jié)構(gòu),編碼器將輸入序列(,,……,映射成符號(hào)表示z=(,,……,,根據(jù)給定的Z ,解碼器生成輸出序列(,,……,,在每一個(gè)步長里,模型利用前一個(gè)步長中生成的向量和該步長的輸入,生成輸出符號(hào)。
Transformer模型架構(gòu)如圖1-1所示,編碼器-解碼器結(jié)構(gòu)采用堆疊的多頭注意力機(jī)制加全連接層,圖中左邊的是編碼器結(jié)構(gòu),右邊的是解碼器結(jié)構(gòu):
圖 1-1 堆疊的編碼器-解碼器結(jié)構(gòu)(來源:網(wǎng)絡(luò))
編碼器:編碼器由6個(gè)相同的塊結(jié)構(gòu)堆疊而成 N=6,每個(gè)塊結(jié)構(gòu)進(jìn)一步分成兩個(gè)子層:即一個(gè)多頭的自注意力機(jī)制和一個(gè)前饋網(wǎng)絡(luò)全連接層,在塊中的每一個(gè)子層之后,增加一個(gè)歸一化層(Add&Norm),每個(gè)子層的輸出均為歸一化的LayerNorm(x + Sublayer(x)),包括詞嵌入層,模塊中所有子層的輸出的維數(shù)均為512,即 = 512。
解碼器:同理,解碼器也由6個(gè)相同的塊結(jié)構(gòu)堆疊而成 N=6,每個(gè)塊結(jié)構(gòu)在編碼器兩個(gè)子層的基礎(chǔ)之上,增加了第三個(gè)子層,即增加了一個(gè)多頭自注意力子層。與編碼器類似,在塊中的每一個(gè)子層之后,增加一個(gè)歸一化層(Add&Norm)。在解碼器端,對(duì)解碼器堆棧中的自注意力子層進(jìn)行了修改,以防止位置編碼和后續(xù)位置編碼相關(guān),通過這種掩蔽,確保了對(duì)位置i的預(yù)測只能依賴于小于i的位置的已知輸出。
2 Self-attention 自注意力機(jī)制
Attention 函數(shù)將三元組Q(Query)、K(Key)、V(Value) 映射成輸出,其中三元組Q(Query)、K(Key)、V(Value)和輸出均為向量,輸出是V(Value)的加權(quán)和,其中的權(quán)重是Q(Query)和K(Key)對(duì)應(yīng)的組合計(jì)算出來的數(shù)值。
1)帶縮放的點(diǎn)積注意力機(jī)制Scaled dot-product attention
帶縮放的點(diǎn)積注意力機(jī)制(Scaled dot-product attention )的公式如下:
在上面公式中Q和K中的向量維度都是,V的向量維度是
,計(jì)算所有K向量和Q向量的點(diǎn)積,分別除以
,并應(yīng)用一個(gè)Softmax函數(shù)來獲得這些值的權(quán)重。實(shí)際上在self-Attention中,
,為了方便將Attention的計(jì)算轉(zhuǎn)化為矩陣運(yùn)算,論文中采用了點(diǎn)積的形式求相似度。常見的計(jì)算方法除了點(diǎn)積還有MLP網(wǎng)絡(luò),但是點(diǎn)積能轉(zhuǎn)化為矩陣運(yùn)算,計(jì)算速度更快。
兩個(gè)最常用的注意力函數(shù)是:加注意力函數(shù)(Additive Attention)和點(diǎn)積注意力函數(shù)(Dot-product Attention)。除了
的縮放因子外,帶縮放的點(diǎn)積注意力機(jī)制采用的是點(diǎn)積注意力函數(shù),加注意力函數(shù)使用具有單個(gè)隱含層的前饋網(wǎng)絡(luò)來計(jì)算兼容性函數(shù)。雖然這兩者在理論復(fù)雜度上相似,但點(diǎn)積注意力函數(shù)更快,更節(jié)省空間,因?yàn)樗梢允褂酶叨葍?yōu)化的矩陣乘法碼來實(shí)現(xiàn)。而對(duì)于
較小的值,這兩種機(jī)制的性能相似,但在不加大更大
的值的情況下,加注意力函數(shù)優(yōu)于點(diǎn)積注意力函數(shù)。對(duì)于較大的
值,點(diǎn)積相應(yīng)變大,將Softmax函數(shù)推到梯度極小的區(qū)域。為了抵消這種影響,我們通過
來縮放點(diǎn)積。
Transformer模型在三處采用了多頭注意力機(jī)制:
- 在編碼器-解碼器注意力層,Q值來自上一個(gè)解碼器層,K值和V值來自編碼器的輸出,從而使得解碼器的每一個(gè)位置信息均和輸入序列的位置信息相關(guān),這種架構(gòu)模仿了序列到序列模型編解碼器注意力機(jī)制。
- 編碼器中包括自注意力層,在自注意力層中,Q 值、K值和V值均來自編碼器上一層的輸出,編碼器中的位置信息參與到前一層的位置編碼中去。
- 同理,解碼器中的自注意力機(jī)制使得解碼器中的位置信息均參與到所有位置信息的解碼中去。
2)全連接前饋網(wǎng)絡(luò)
在Transfomer編碼器-解碼器架構(gòu)的每一塊中,除了包含多頭注意力機(jī)制外,還包含一個(gè)全連接前饋網(wǎng)絡(luò),全連接前饋網(wǎng)絡(luò)層包含兩次ReLU激活函數(shù)的線性變換。
不同層之間的全連接前饋網(wǎng)絡(luò)的參數(shù)各不相同,模型輸入輸出的維度是512 = 512, 層內(nèi)部的維度是2048 ,即= 2048。
3)嵌入和Softmax
和其它序列到序列的模型相類似,Transformer模型利用詞嵌入技術(shù)將輸入標(biāo)記和輸出標(biāo)記轉(zhuǎn)化為維度為的向量,采用可訓(xùn)練的線性變換和Softmax函數(shù),將解碼器的輸出變換成待預(yù)測的下一個(gè)標(biāo)記的概率。在Transformer模型中,兩個(gè)嵌入層和Softmax層之間共享權(quán)重矩陣。
3 位置編碼Positional Encoding
由于Transformer模型中既沒有遞歸,也沒有卷積,需要獲得輸入序列精準(zhǔn)的位置信息的話,必須插入位置編碼。位置編碼精準(zhǔn)地描述了輸入序列中各個(gè)單詞的絕對(duì)和相對(duì)位置信息,即在編碼器-解碼器的底部輸入嵌入中注入“位置編碼”,位置編碼和輸入嵌入有相同的維度,所以二者可以實(shí)現(xiàn)相加運(yùn)算,位置編碼方式可以有多種,在Transformer模型中采用的是頻率不同的三角函數(shù):
其中pos 是位置,i是維數(shù),也就是說,位置編碼的每個(gè)維數(shù)都對(duì)應(yīng)于一個(gè)正弦曲線。波長從2π到10000·2π的幾何變化。之所以選擇這個(gè)函數(shù)是因?yàn)榧僭O(shè)它使得模型很容易地學(xué)習(xí)相對(duì)位置,對(duì)于任何固定偏移量k,
可以表示為
的線性函數(shù)。
首先,將自注意力機(jī)制和循環(huán)卷積網(wǎng)絡(luò)(RNN )和卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行對(duì)比,比較它們在變長序列
從三個(gè)因素來考量采用自注意力機(jī)制:首先是每一層計(jì)算的復(fù)雜程度;其次,是可以并行計(jì)算的計(jì)算量,用對(duì)序列操作的最小數(shù)目表示;第三,是網(wǎng)絡(luò)中最長相關(guān)路徑的長度。在序列學(xué)習(xí)任務(wù)中,對(duì)長序列相關(guān)性的學(xué)習(xí)是關(guān)鍵性的難點(diǎn)問題,前向和后向信號(hào)路徑的長度往往是影響學(xué)習(xí)效率的關(guān)鍵因素,輸入和輸出序列之間的位置越短,前向和后向信號(hào)路徑則越短,更容易學(xué)習(xí)到長序列的依賴關(guān)系,通過對(duì)比網(wǎng)絡(luò)中輸入輸出序列位置的最長通路路徑,來回答為什么采用自注意力機(jī)制來搭建Transformer模型。
表 3-1 不同層序列操作的的最大路徑長度、每層的復(fù)雜性和最小操作數(shù)
如表3-1所示 :不同層序列操作的的最大路徑長度、每層的復(fù)雜性和最小操作數(shù)。n是序列長度,d是表示維數(shù),k是卷積的核大小,r是受限自注意力中的鄰域的大小。在表3-1中,自注意力機(jī)制通過
操作將序列的位置信息關(guān)聯(lián)起來,而RNN則需要對(duì)序列進(jìn)行
次操作。從計(jì)算的復(fù)雜程度來看,當(dāng)序列長度n小于表示向量的維度d 時(shí),在機(jī)器翻譯任務(wù)中性能能達(dá)到最優(yōu)。為了提高超長輸入序列的計(jì)算性能,限制自注意力中的鄰域r的大小,從而會(huì)使得最長相關(guān)路徑的長度變?yōu)?/p>
。
卷積核維度為k 的單卷積層無法實(shí)現(xiàn)所有輸入和輸出位置信息的連接,所以要求有
層卷積層堆疊,使得最長相關(guān)路徑的長度變長。通常,CNN的訓(xùn)練成本比RNN的訓(xùn)練成本要高。
從表3-1中的對(duì)比還可以看出,自注意力機(jī)制在復(fù)雜程度、并行計(jì)算的計(jì)算量和網(wǎng)絡(luò)中最長相關(guān)路徑的長度三方面均占有優(yōu)勢。
4 Transformer 模型的訓(xùn)練
4.1訓(xùn)練數(shù)據(jù)和批次大小
在標(biāo)準(zhǔn)的WMT2014英語-德語數(shù)據(jù)集上進(jìn)行訓(xùn)練,這個(gè)數(shù)據(jù)集包括大約450萬個(gè)句子數(shù)據(jù)對(duì)。句子采用字節(jié)對(duì)編碼進(jìn)行編碼,源-目標(biāo)詞匯表中共享大約37000個(gè)標(biāo)記。對(duì)于英語-法語,使用了更大的WMT2014英語-法語數(shù)據(jù)集,由3600萬個(gè)句子組成,并將標(biāo)記分割為32000詞匯。句子對(duì)按近似的序列長度排列在一起。每個(gè)訓(xùn)練批都包含一組句子對(duì),其中包含大約25000個(gè)源標(biāo)記和25000個(gè)目標(biāo)標(biāo)記。
4.2 硬件配置
使用8 NVIDIAP100 GPU上訓(xùn)練了Transfomer模型,使用超參數(shù)的基本模型,每個(gè)訓(xùn)練步長大約需要花費(fèi)0.4秒的時(shí)間,對(duì)基本模型總共訓(xùn)練了10萬步或12個(gè)小時(shí)。對(duì)于大模型,步長時(shí)間為1.0秒,大模型訓(xùn)練了30萬步(3.5天)。
4.3 優(yōu)化器
采用Adam 優(yōu)化器,參數(shù)設(shè)置為h β1 = 0.9, β2 = 0.98,并依據(jù)下述公式調(diào)整學(xué)習(xí)率:
對(duì)應(yīng)于第一個(gè)warmup_steps訓(xùn)練步長,學(xué)習(xí)率線性增加,在后續(xù)步長中,學(xué)習(xí)率隨著步長的平方根成正比例下降,其中,warmup_steps =4000。
4.4 正則化
在訓(xùn)練過程中采用了三種正則化方法:
殘差Dropout:在添加子層的輸入和歸一化之前,將Dropout機(jī)制應(yīng)用于每個(gè)子層的輸出,同時(shí)在編碼器-解碼器堆疊的嵌入過程和位置編碼過程中加入Dropout機(jī)制,
= 0.1。
4.5 訓(xùn)練結(jié)果
機(jī)器翻譯
在WMT2014英德翻譯任務(wù)中,Transformer (big)比之前報(bào)告的最佳模型(包括集成)高出2.0多個(gè)BLEU,獲得BLEU分?jǐn)?shù)為28.4。該模型的配置列于表5-2的底部。在8個(gè)P100 GPU 上進(jìn)行訓(xùn)練需要3.5天。甚至基本模型也超過了所有之前發(fā)布的模型和集合,訓(xùn)練成本也大幅度縮減。
在WMT2014年英法翻譯任務(wù)中Transformer (big)獲得了BLEU分值為 41.0分,優(yōu)于之前發(fā)布的所有其它模型,訓(xùn)練成本降低 1/4。
表4.5-1 在英德和英法翻譯任務(wù)中Transformer模型的BLUE 分值和其它模型BLUE 分值的對(duì)比(來源:網(wǎng)絡(luò))
表4.5-1同時(shí)將翻譯質(zhì)量和訓(xùn)練成本與其他模型架構(gòu)的翻譯質(zhì)量和訓(xùn)練成本進(jìn)行了比較。通過比較訓(xùn)練時(shí)間、所使用的GPU的數(shù)量以及對(duì)每個(gè)GPU5的持續(xù)單精度浮點(diǎn)容量的估計(jì)來估計(jì)用于訓(xùn)練模型的浮點(diǎn)操作的數(shù)量。
為了評(píng)估Transformer模型是否可以推廣到其他任務(wù),在英語選區(qū)解析上進(jìn)行了實(shí)驗(yàn)。這個(gè)任務(wù)提出了具體的挑戰(zhàn):輸出受到強(qiáng)大的結(jié)構(gòu)約束,且長度遠(yuǎn)遠(yuǎn)長于輸入。此外,RNN序列對(duì)序列模型還無法在小數(shù)據(jù)體系中獲得最為先進(jìn)的結(jié)果。
通過在賓夕法尼亞州《華爾街日報(bào)》的數(shù)據(jù)集上訓(xùn)練了大約40K句子,數(shù)據(jù)模型為
的4層Transformer。此外,還在半監(jiān)督設(shè)置下訓(xùn)練它,使用更大的高置信度和伯克利解析器語料庫,大約1700萬語句。對(duì)《華爾街日報(bào)》的設(shè)置使用了16K標(biāo)記詞匯,對(duì)半監(jiān)督的設(shè)置使用了32K標(biāo)記詞匯。
結(jié)論:Transformer是采用自注意力機(jī)制的序列到序列模型,在編碼器-解碼器架構(gòu)的神經(jīng)網(wǎng)絡(luò)中,用多頭自注意力機(jī)制取代了RNN 層。對(duì)于翻譯任務(wù),Transformer的訓(xùn)練速度可以比基于循環(huán)層或卷積層的體系架構(gòu)要快得多。關(guān)于2014WMT英德語和WMT2014英法翻譯任務(wù),實(shí)現(xiàn)了不錯(cuò)的性能。在前一項(xiàng)任務(wù)中,Transformer模型的性能甚至優(yōu)于之前報(bào)告的所有其它模型。
作者簡介
陳之炎,北京交通大學(xué)通信與控制工程專業(yè)畢業(yè),獲得工學(xué)碩士學(xué)位,歷任長城計(jì)算機(jī)軟件與系統(tǒng)公司工程師,大唐微電子公司工程師。目前從事智能化翻譯教學(xué)系統(tǒng)的運(yùn)營和維護(hù),在人工智能深度學(xué)習(xí)和自然語言處理(NLP)方面積累有一定的經(jīng)驗(yàn)。