【基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例4800字】_第1頁
【基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例4800字】_第2頁
【基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例4800字】_第3頁
【基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例4800字】_第4頁
【基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例4800字】_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例目錄TOC\o"1-3"\h\u11143基于Transformer網(wǎng)絡(luò)結(jié)構(gòu)的翻譯模型分析案例 1172801.1整體框架: 2230121.1.1Embedding與positionalencoding: 419151.1.2Self-Attention 5187841.1.3Multi-HeadAttention 733041.1.4Add&Norm: 9110361.1.5FeedForward前饋神經(jīng)網(wǎng)絡(luò) 10186321.1.6激活函數(shù) 10119941.2Encoder編碼器 1319421.3Decoder解碼器 14174021.3.1Decoder中的第一個Multi-HeadAttention 14175931.3.2Decoder中的第二個Multi-HeadAttention 16173191.3.3Softmax預(yù)測單詞 16Transformer模型從宏觀上可以看作是一個黑箱,它有輸入有輸出。在翻譯任務(wù)中,輸入為源語言,輸出為目標(biāo)語言。將這個黑箱拆開,就可以看到它的內(nèi)部結(jié)構(gòu)是由編碼器、解碼器以及它們之間的鏈接組成。具體模型以及各部分組成結(jié)構(gòu)將在本章介紹。1.1整體框架:圖1.1Transformer框架結(jié)構(gòu)整體框架可以簡化成一個Seq2Seq模型,左側(cè)部分encoder讀進(jìn)去輸入,右側(cè)部分decoder得到輸出,encoder與decoder分別有N層。圖1.2Encoder與Decoder信息交互標(biāo)準(zhǔn)的Transformer模型中N取6,編碼器部分是由六個相同的編碼器堆疊而成,解碼器部分與之相對應(yīng)的也由六個相同解碼器堆疊而成。所有的編碼器結(jié)構(gòu)相同,但并沒有共享參數(shù),解碼器部分同理。最后一個編碼器的輸出會與每一層的解碼器進(jìn)行交互[15],如圖1.2。每一層的encoder和decoder內(nèi)部結(jié)構(gòu)如圖:圖1.3Encoder與Decoder內(nèi)部結(jié)構(gòu)Encoder的每一層由兩步操作構(gòu)成--Self-Attention和FeedForward;而Decoder每一層由三步操作構(gòu)成--Self-Attention、Encoder-DecoderAttention和FeedForward。其中的Self-Attention和Encoder-DecoderAttention均使用Multi-HeadAttention機(jī)制。1.1.1Embedding與positionalencoding:設(shè)Transformer的輸入為x,則x由兩部分組成,分別是詞Embedding和位置Embedding。一句話可以表示成一個向量矩陣,其中矩陣的每一行是一個單詞的向量,如下圖所示:圖1.4Transformer輸入表示輸入的數(shù)據(jù)要經(jīng)過處理轉(zhuǎn)換成相對應(yīng)的embedding,具體過程為:將句子按字切分,每個字對應(yīng)一個512維度的字向量,對于字向量可以使用word2vec或隨機(jī)初始化,插入細(xì)節(jié)點(diǎn)得到結(jié)果。因?yàn)楹竺嬗?jì)算attention時會屏蔽掉填充的部分,所以在處理數(shù)據(jù)時對于填充部分的embedding直接賦予0值。embedding過程僅用于最底層的編碼器中,所有編碼器都會接受一個512維的向量列表,在最底層編碼器中向量列表作為詞向量,而在其他編碼器中向量列表作為下一層編碼器的輸出。在transformer模型中,一句話中所有的單詞是可以一起并行處理的,這樣做增快了速度,但是忽略了單詞之間的序列關(guān)系,或者說是先后關(guān)系,所以序列信息無法捕捉。但同時序列信息很重要,代表全局的結(jié)構(gòu),因此必須將序列的相對分詞或絕對position信息利用起來,位置信息的計(jì)算公式如式(1.1),(1.2)[15]:(1.1)(1.2)對于同一個位置,針對512個維度向量的位置編碼,在512個維度中,在偶數(shù)位置使用sin計(jì)算,在奇數(shù)位置使用cos計(jì)算。得到位置編碼后,將512維度的位置編碼與字向量的512個維度相加得到的結(jié)果作為transformer的輸入[12]。詞嵌入過程僅用于最底層的編碼器中,所有編碼器都會接受一個512維的向量列表,在最底層編碼器中向量列表作為詞向量,而在其他編碼器中向量列表作為下一層編碼器的輸出。1.1.2Self-Attention從宏觀上來講,當(dāng)機(jī)器翻譯一個句子時,例如:Thecatdoesn’twanttocatchthemousebecauseitistoosmall.句中的it指代的是哪一個單詞,對于算法來說這并不容易。翻譯模型在處理到it這個單詞時,自注意力機(jī)制會把it和mouse聯(lián)系起來。詳細(xì)來說,Attention用來計(jì)算兩個向量的“相關(guān)程度”,(1.3)式(1.3)中Q、K、V分別代表query,key和value三個向量,在transformer中,由對已處理過的輸入單詞向量分別乘以Wq、Wk、Wv三個矩陣參數(shù)得到(三個矩陣由初始化得來,可以通過訓(xùn)練更新)計(jì)算過程如下圖1.5所示,其中X,Q,K,V的每一行都表示一個詞向量[27]:圖1.5Q,K,V的計(jì)算dk代表q和k的維度,這里除以dk開根號的值是因?yàn)殡S著q和k乘積越來越大,softmax層的梯度會變小,除以根號dk而非其他值是為了保持方差控制為1。圖1.4Self-Attention結(jié)構(gòu)Attention的計(jì)算過程可以這樣描述:將Q和K映射到輸出上,輸出是V中所有values的加權(quán),其中的權(quán)重是由query和每個key計(jì)算出來的。計(jì)算方法分為以下三步:通過點(diǎn)乘計(jì)算Q和K的相似度,如圖1.5,下圖中的1234表示句中的每一個單詞;圖1.5Q乘以K的轉(zhuǎn)置的計(jì)算2)將得到的相似度結(jié)果進(jìn)行softmax歸一化,即上圖得到的矩陣中每一行的和都變?yōu)?;3)對于得到的歸一化權(quán)重結(jié)果,對所有的values加權(quán)求和,得到attention向量,如圖1.6:圖1.6Self-Attention輸出1.1.3Multi-HeadAttention多頭注意力機(jī)制是指在attention機(jī)制的基礎(chǔ)上,使用幾套W矩陣參數(shù),分別得到各自的q、k、v。多頭相當(dāng)于把原始信息打到了不同的空間,保證transformer可以注意到不同子空間的信息,捕捉到更加多的特征信息,多個頭就會有多個輸出,這些輸出需要合在一起輸出(為了是的輸出與輸入結(jié)構(gòu)對標(biāo),拼接的矩陣乘以一個線性W0降維得到輸出Z)。上一小節(jié)已經(jīng)介紹了如何通過Self-Attention得到輸出矩陣Z,這一節(jié)的Multi-HeadAttention是由多個Self-Attention構(gòu)成,如圖1.7,其中輸入X矩陣分別傳到h個不同的自注意力機(jī)制層中,計(jì)算得到h個不同的輸出矩陣Z,如圖1.8,圖中h取8。圖1.7Multi-HeadAttention圖1.88個Self-Attention1.1.4Add&Norm:Add&Norm由兩部分組成,分別是殘差結(jié)構(gòu)和LayerNorm,具體公式如(1.4)(1.5):LayerNorm(X+MultiHeadAttention(X))(1.4)LayerNorm(X+FeedForward(X))(1.5)輸出MultiHeadAttention(X)和FeedForward(X)均與輸入X維度相同。殘差結(jié)構(gòu)以在encoder中為例,即位置編碼后的輸入X矩陣與此矩陣計(jì)算注意力后的Z矩陣對位相加的結(jié)果,這樣做在向后傳播的鏈?zhǔn)椒▌t中確保了梯度不會為0,緩解了深度網(wǎng)絡(luò)中的梯度消失問題的出現(xiàn),可以使得信息前后向傳播更加順暢。圖1.9殘差結(jié)構(gòu)LayerNorm的特點(diǎn)是針對同一個樣本的所有單詞做縮放,因此相比于BatchNormal更適用于transformer。1.1.5FeedForward前饋神經(jīng)網(wǎng)絡(luò)在進(jìn)行了多頭注意計(jì)算之后,encoder和decoder中每一層都包含一個全連接的前向網(wǎng)絡(luò),它分為兩個linear層,第一層的激活函數(shù)為relu,第二層沒有使用激活函數(shù)。輸出為:(1.4)其輸入輸出的向量維度均為512,中間隱層的維度是2048,這個全連接層在每一層的不同時間步是共享的,但在不同層是獨(dú)立的。1.1.6激活函數(shù)在前饋神經(jīng)網(wǎng)絡(luò)中,本文嘗試使用了不同的激活函數(shù)來增強(qiáng)神經(jīng)網(wǎng)絡(luò)的非線性表示能力。最終選用了GELU作為前饋層的激活函數(shù)。激活函數(shù)是深度學(xué)習(xí)網(wǎng)絡(luò)的組成中很重要的一部分,尤其對于層數(shù)很多的網(wǎng)絡(luò),激活函數(shù)的選擇幾乎決定著整個網(wǎng)絡(luò)是否可以正常運(yùn)行。對于深度比較大的VGG網(wǎng)絡(luò),隨著運(yùn)算層的增加,其效果不升反降,但是選擇了合適的激活函數(shù)后在配上殘差網(wǎng)絡(luò),能得到一個質(zhì)的提升,對于目前研究,VGG網(wǎng)絡(luò)中選擇Relu或者Relu的變體可以達(dá)到較好的效果。一個合適的激活函數(shù),不僅僅可以決定一個模型是否可以達(dá)到預(yù)計(jì)效果,還會決定一個網(wǎng)絡(luò)的訓(xùn)練效率,比如對于Alexnet網(wǎng)絡(luò),使用Relu做為激活函數(shù),只需要訓(xùn)練5次,基本得到比較好的效果,若使用Tanh激活函數(shù),置少需要35個訓(xùn)練周期,可見一個合適的激活函數(shù)可以大大提高模型訓(xùn)練的效率以及效果。目前,現(xiàn)有的激活函數(shù)有很多,但是基本的激活函數(shù)有六個,分別為linear、exponential、sigmoid、tanh、softmax和relu,其他的激活函數(shù)大多衍生于這六個基本的激活函數(shù),比如ThresholdedRelu、LeakyRelu、PRelu和GELU均衍生自Relu函數(shù),hard-sigmoid衍生于sigmoid。下面將一次介紹幾本與本文相關(guān)的激活函數(shù)。(1)Sigmoid激活函數(shù)Sigmoid函數(shù)經(jīng)常用于二分類網(wǎng)絡(luò)中,該激活函數(shù)可以將輸入映射在[0,1]之間,在二分類任務(wù)中,將利用該激活函數(shù)激活后的輸出用于樣本的分量,當(dāng)輸出值大于0.5時,該樣本會被認(rèn)為是正樣本,當(dāng)輸出值小于0.5時,該樣本會被認(rèn)為是負(fù)樣本。Sigmoid在標(biāo)注模型中也常常使用到,比如對于實(shí)體提取任務(wù),若利用標(biāo)注模型完成該任務(wù),則會產(chǎn)生兩列與輸入字符串等長的序列,該序列中的每個值均是通過sigmoid產(chǎn)生,相當(dāng)于第一個序列產(chǎn)生實(shí)體的起始位置,第二個序列產(chǎn)生實(shí)體的結(jié)束位置,即序列相應(yīng)位置為正樣本,其他位置為負(fù)樣本。圖1.10sigmoid激活函數(shù)(2)Tanh激活函數(shù)在Relu未出現(xiàn)以前,Tanh為訓(xùn)練模型中很常用的激活函數(shù),該激活函數(shù)可以將輸入通過指數(shù)運(yùn)算,映射到[-1,1]之間。但是,該函數(shù)兩側(cè)的飽和域較大,當(dāng)輸入值較大時,很容易造成梯度消失,產(chǎn)生零梯度。并且,該函數(shù)使用指數(shù)運(yùn)算,算力消耗大,收斂速度慢,因此效率不是很高。但是tanh激活函數(shù)依然在門機(jī)制中常常用到,比如GTU單元,該單元就是通過將Tanh激活的Dense層與另一個Sigmoid單元激活的Dense層相乘,達(dá)到門激活的效果。圖1.11Tanh激活函數(shù)(3)Relu激活函數(shù)Relu函數(shù)是在Tanh之后產(chǎn)生的一種較新穎簡單的激活函數(shù),該函數(shù)運(yùn)算非常簡單,只需要將負(fù)值乘0截去就可以,算力消耗非常的小,效率高。對于大多數(shù)網(wǎng)絡(luò)來說,Relu總能產(chǎn)生比Tanh優(yōu)秀的效果,因此Relu函數(shù)得到了很好的發(fā)展,產(chǎn)生了多種變體。對于Tanh兩側(cè)飽和區(qū)問題,Relu的正值域梯度恒為1,不存在梯度消失和梯度爆炸的情況,在relu的負(fù)值域,梯度也是1,但是輸入的負(fù)值在輸出后均為0,會使得被激活的層的參數(shù)失效。圖1.12Relu激活函數(shù)(4)LeakyRelu激活函數(shù)為了解決Relu的死區(qū)問題,即負(fù)值域恒為零導(dǎo)致被激活層的參數(shù)無法更新的問題,提出了LeakyRelu激活函數(shù)。LeakyRelu繼承了Relu的高效的優(yōu)點(diǎn),其運(yùn)算過程非常簡單,算力消耗也非常小,但是該激活函數(shù)有效的緩解了負(fù)值輸出帶來的參數(shù)更新問題。該激活函數(shù)就是將負(fù)值域的全零轉(zhuǎn)化為了一個非零的線性映射,因此就產(chǎn)生了一個超參數(shù),即該線性映射的系數(shù),該系數(shù)可以在實(shí)驗(yàn)中通過實(shí)驗(yàn)找到最優(yōu)解,但是尋找最優(yōu)解非常的耗時,并且一個模型中往往會用到很多激活函數(shù),若依次調(diào)節(jié)參數(shù)其復(fù)雜度是高的,并且是很難實(shí)現(xiàn)的。圖1.13LeakyRelu激活函數(shù)(5)PRelu激活函數(shù)為了解決LeakyRelu中超參數(shù)很難找到最優(yōu)解的問題,產(chǎn)生了PRelu激活函數(shù),該函數(shù)將線性映射的參數(shù)從人工設(shè)定轉(zhuǎn)化為了通過模型學(xué)習(xí)得到的參數(shù),因此該激活函數(shù)可以更方便的使用,模型在訓(xùn)練中就可以以被激活層的梯度通過動量的方式更新該線性映射的參數(shù)。并且未涉及復(fù)雜的指數(shù)運(yùn)算,其算力消耗相對Tanh也要小很多。1.14PRelu激活函數(shù)(6)GELU激活函數(shù)GELU激活函數(shù)最初在GPT模型中很常用,該模型通過正太分布擬合出線性映射系數(shù),其函數(shù)圖像類似與RELU函數(shù),但是該激活函數(shù)更平滑,沒有Relu函數(shù)中原點(diǎn)處的陡峭轉(zhuǎn)折。該函數(shù)在負(fù)值域也存在飽和域,但是一般深度神經(jīng)網(wǎng)絡(luò)的的輸出值均在[-2,2]之間,而該函數(shù)的飽和域在-1.5之后,因此不會造成大面積的參數(shù)無法更新,而導(dǎo)致模型失效的結(jié)果。圖1.15GELU激活函數(shù)本文即使用的該激活函數(shù),因?yàn)樵摵瘮?shù)算力消耗小,效率高,并且在實(shí)驗(yàn)中發(fā)現(xiàn),該函數(shù)相對其他Relu的變體收斂的更快,相對Tanh能達(dá)到更好的效果。并且本文在模型輸出部分使用了softmax激活函數(shù),用于預(yù)測翻譯結(jié)果。1.2Encoder編碼器將上面介紹的Multi-HeadAttention,FeedForward,Add&Norm鏈接就可以構(gòu)造出一個encoderblock,為了確保鏈接,所有層的輸出維數(shù)都相同為512。第一個encoderblock接收句子中單詞的向量矩陣,經(jīng)過兩個模塊后輸出一個矩陣,作為下一個encoderblock的輸入矩陣,經(jīng)過六個相同結(jié)構(gòu)的堆疊組成Encoder編碼器,最后一個encoderblock的輸出作為編碼信息矩陣將會在Decoder中使用,如圖1.10,圖中輸出的編碼矩陣C,圖1.10Encoder編碼句子1.3Decoder解碼器解碼器同樣是六層相同結(jié)構(gòu)的堆疊,不同之處是:多頭注意機(jī)制層多了一個masked,簡單從代碼上講就是需要對當(dāng)前單詞和之后的單詞做mask,否則模型在訓(xùn)練和預(yù)測時會存在gap(訓(xùn)練時可以看到整句全部的單詞,而在預(yù)測時看不到當(dāng)前單詞后面的單詞)。比encoder多一個交互層,最后一層encoder的輸出作為K和V矩陣與每一層decoder的自注意力結(jié)果Q矩陣進(jìn)行交互。1.3.1Decoder中的第一個Multi-HeadAttention一個Decoderblock中的第一個Multi-HeadAttention為MaskedMulti-HeadAttention,因?yàn)閐ecoder是根據(jù)之前的單詞來預(yù)測當(dāng)前單詞,在翻譯任務(wù)中,是無法知道后續(xù)單詞的,所以要masked掉這個單詞之后的所有單詞,而且要注意mask操作在Self-Attention中的softmax層之前,下面用矩陣來描述第一個Multi-HeadAttention的具體流程,下面用0,1,2,3,4,5分別表示“<Begin>Ilikemachinelearning<end>”第一步:圖1.11中輸入矩陣包括“<Begin>Ilikemachinelearning”0~4五個單詞向量,而Mask矩陣是一個5×5的矩陣,從畫出的Mask矩陣可以發(fā)現(xiàn),每個單詞只能是由該單詞之前的信息。圖1.11輸入矩陣

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論