国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Transformer理論學(xué)習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了Transformer理論學(xué)習(xí)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Transformer出自于論文《attention is all you need》。

一些主流的序列模型主要依賴(lài)于復(fù)雜的循環(huán)結(jié)構(gòu)或者CNN,這里面包含了編解碼器等。而Transformer主要的結(jié)構(gòu)是基于注意力機(jī)制,而且是用多頭注意力機(jī)制去替換網(wǎng)絡(luò)中的循環(huán)或者CNN(換言之就是transformer這個(gè)網(wǎng)絡(luò)模型是不需要循環(huán)結(jié)構(gòu)和CNN,只用注意力機(jī)制就行)。

一些循環(huán)神經(jīng)網(wǎng)絡(luò),比如LSTM,GRU等都是由編碼器-解碼器構(gòu)成。以RNN為例,在計(jì)算序列的時(shí)候(比如一個(gè)句子),會(huì)一個(gè)詞一個(gè)詞的計(jì)算,對(duì)于第t個(gè)詞,會(huì)計(jì)算一個(gè)隱藏狀態(tài)叫ht。該隱藏狀態(tài)是由前面一個(gè)詞的隱藏狀態(tài)ht-1和當(dāng)前位置的第t個(gè)詞決定的,也就是計(jì)算當(dāng)前詞的時(shí)候和之前的歷史狀態(tài)是有關(guān)系的。但這就帶來(lái)了一些問(wèn)題

????????????????????????????????(1)比如這種方法無(wú)法并行計(jì)算(在計(jì)算當(dāng)前t詞的時(shí)候,需要把之前的詞全部計(jì)算完),這樣就會(huì)導(dǎo)致很多資源的浪費(fèi)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)還有就是因?yàn)殡[藏狀態(tài)是不斷積累的,如果序列比較長(zhǎng)那么之前的一些狀態(tài)可能會(huì)丟失

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)如果想要存儲(chǔ)之前的ht狀態(tài),在序列長(zhǎng)的時(shí)候會(huì)對(duì)內(nèi)存開(kāi)銷(xiāo)比較大

在之前的一些的網(wǎng)絡(luò),比如ConvS2S等,這些對(duì)于長(zhǎng)序列是比較難以建模的,這是因?yàn)榫矸e網(wǎng)絡(luò)就是一個(gè)段窗口的濾波器,那么對(duì)于長(zhǎng)序列是不友好的。而如果是使用transformer的話(huà),使用注意力機(jī)制,那么就可以看到這一層的所有信息(或者可以理解為transformer是一個(gè)超大的卷積,可以涵蓋所有的像素),卷積看的是局部信息,transformer是全局信息,但卷積也有一個(gè)優(yōu)勢(shì)就是它是多通道多維度的(提取多維度的特征),因此transformer借鑒了卷積的思想,提出了多頭注意力機(jī)制(Multi-Head Attention),用Multi-Head Attention去模擬卷積多通道的特點(diǎn)。

transformer是第一個(gè)只用self-attention來(lái)做encoder-decoder的模型,因此在學(xué)習(xí)transformer的時(shí)候需要把自注意力機(jī)制看明白。

通常的模型會(huì)含有編解碼器(encoder-decoder)。編碼器指的是將一個(gè)輸入長(zhǎng)度為n的x1~xn的序列編碼成一個(gè)長(zhǎng)度也為n的zn序列,每個(gè)zt對(duì)應(yīng)于xt特征表示,就是把你的輸入變成機(jī)器學(xué)習(xí)可以理解的向量(這就好比把計(jì)算機(jī)的一些輸入變成0101這樣的,就是編碼),解碼器就是編碼器的逆過(guò)程,只是要注意的是,解碼器的輸出長(zhǎng)度為m,這個(gè)m不一定等于n的長(zhǎng)度。但要注意的是在解碼輸出的時(shí)候,比如做翻譯的時(shí)候,是一個(gè)詞一個(gè)詞的往外蹦,過(guò)去時(shí)刻的輸出會(huì)成為當(dāng)前時(shí)刻的輸入,這個(gè)就是叫自回歸(auto-regressive)。就是說(shuō)輸入的時(shí)候編碼是一整段的話(huà),但輸出的時(shí)候是一個(gè)字一個(gè)字的出。

transformer也是使用的encoder-decoder的架構(gòu),是將一些self-attention、point-wise、fully connected layer進(jìn)行的組合(堆疊)。

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

上面的圖就是transformer的一個(gè)結(jié)構(gòu),是編碼器和解碼器構(gòu)成的??梢钥吹皆诰幗獯a器均有一個(gè)輸入,編碼器的輸入是Input,解碼器的輸入是Output。解碼器在做預(yù)測(cè)的時(shí)候是沒(méi)有輸入的!實(shí)際上是解碼器在之前時(shí)刻的一些輸出作為輸入。

編碼器構(gòu)成

圖中的Nx就是一個(gè)transformer block[就和ResNet 中的殘差塊類(lèi)似]。

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

接下來(lái)看看這個(gè)transformer block。可以看到里面有個(gè)多頭注意力機(jī)制,前饋網(wǎng)絡(luò)(Feed Forward),或者就是說(shuō)是個(gè)MLP吧。

綜上,編碼器的構(gòu)成就是一個(gè)多頭注意力機(jī)制+MLP+殘差邊+norm。

在論文中說(shuō),編碼器是由6個(gè)重復(fù)的layer構(gòu)成,其實(shí)就是上面說(shuō)的transformer block。然后每個(gè)layer中又有兩個(gè)sub-layers,第一個(gè)sub-layer叫多頭注意力機(jī)制,上面已經(jīng)提到了,第二個(gè)sub-layer是position-wise fully connected feed-forward network[實(shí)際就是個(gè)MLP]。對(duì)每個(gè)子層(sub-layer)采用了一個(gè)殘差的鏈接,然后又添加了一個(gè)layer-norm的東西。因此每個(gè)子層的公式為:

LayerNorm(x+Sublayer(x))

每個(gè)層的輸出維度為512[方便殘差連接]。

因此這里的調(diào)參就直接調(diào)兩個(gè)就行,一個(gè)是重復(fù)layer的數(shù)量,一個(gè)是輸出維度。

layerNorm

與batchNorm相比,變長(zhǎng)的情況下使用LayerNorm,batchNorm可以在一個(gè)mini-batch中將我的特征(也就是說(shuō)通道維度上)分布變?yōu)橐粋€(gè)均值為0,方差為1的標(biāo)準(zhǔn)分布當(dāng)中。layernorm是對(duì)每個(gè)樣本變成標(biāo)準(zhǔn)分布。

個(gè)人理解,batchnorm是考慮通道維度上每個(gè)特征向量的分布,layernorm是考慮每個(gè)樣例維度上的分布(這樣的就可以把每個(gè)樣例的所有特征向量均考慮進(jìn)去,這樣對(duì)不定長(zhǎng)的序列比較好)。

注意力機(jī)制

注意力機(jī)制可以描述為一個(gè)query和一些key-value對(duì) 映射成的一個(gè)輸出的函數(shù)。具體來(lái)說(shuō)output是你的value的一個(gè)加權(quán)和。因此輸出的維度和value的維度是一樣的。value的權(quán)重是對(duì)應(yīng)的Key和query的相似度來(lái)計(jì)算的。該注意力機(jī)制的作用是處理序列中不同位置之間的關(guān)系。這種機(jī)制可以使得Transformer能夠同時(shí)考慮不同位置之間的關(guān)系,從而捕捉上下文信息。


Query、key、value的理解

query:指當(dāng)前位置(或當(dāng)前單詞)的表示,用來(lái)尋找與其他位置的關(guān)聯(lián)程度

key:表示其他位置的信息,與Q計(jì)算關(guān)聯(lián)度。

value:是位置的實(shí)際表示或信息,通常是transformer中每個(gè)位置的原始嵌入表示,注意力分?jǐn)?shù)計(jì)算完畢后(Q和K的內(nèi)積),通過(guò)對(duì)Value進(jìn)行加權(quán)平均,得到當(dāng)前位置的注意力加權(quán)表示。

這里舉個(gè)例子:

將英語(yǔ)"I love coding"翻譯為法語(yǔ)。

在Transformer模型中,每個(gè)輸入句子被嵌入為一系列向量,其中每個(gè)單詞都由一個(gè)嵌入向量表示。在自注意力機(jī)制中,Query、Key和Value的作用如下:

1.Query:對(duì)于每個(gè)單詞,我們會(huì)產(chǎn)生一個(gè)Query向量。例如,對(duì)于英文句子中的"love"這個(gè)單詞,會(huì)生成一個(gè)Query向量,它包含了關(guān)于"love"這個(gè)單詞的信息。

2.Key:對(duì)于每個(gè)單詞,同樣會(huì)生成一個(gè)Key向量。Key向量用來(lái)衡量其他單詞與當(dāng)前單詞之間的關(guān)系。在我們的例子中,對(duì)于"love"這個(gè)單詞,也會(huì)生成一個(gè)Key向量。

3.Value:每個(gè)單詞都有對(duì)應(yīng)的Value向量,這個(gè)向量包含了單詞的原始嵌入表示。"love"這個(gè)單詞也會(huì)有一個(gè)對(duì)應(yīng)的Value向量。

現(xiàn)在,我們需要計(jì)算注意力分?jǐn)?shù)(權(quán)重)。具體步驟如下:

  • 對(duì)于"love"這個(gè)單詞的Query向量,會(huì)與輸入句子中的其他單詞的Key向量進(jìn)行點(diǎn)積,得到每個(gè)單詞與"love"之間的關(guān)聯(lián)分?jǐn)?shù)(衡量其他單詞與當(dāng)前單詞的關(guān)聯(lián)性)。這反映了每個(gè)單詞與"love"之間的相似程度。

  • 注意力分?jǐn)?shù)經(jīng)過(guò)一些歸一化操作,最終用于對(duì)所有單詞的Value向量進(jìn)行加權(quán)平均。這個(gè)加權(quán)平均得到了"love"這個(gè)單詞的注意力加權(quán)表示。

這個(gè)過(guò)程對(duì)于句子中的每個(gè)單詞都會(huì)執(zhí)行一遍,從而為每個(gè)單詞生成一個(gè)對(duì)應(yīng)的注意力加權(quán)表示。在翻譯任務(wù)中,這些注意力加權(quán)表示可以被用來(lái)生成目標(biāo)語(yǔ)言的翻譯結(jié)果。

總之,Query、Key和Value在Transformer中是為了捕捉序列中不同位置之間的關(guān)系,并用于計(jì)算注意力加權(quán)表示。這個(gè)機(jī)制使得Transformer能夠在處理序列數(shù)據(jù)時(shí)更好地理解上下文信息。


在transformer中query和keys是等長(zhǎng)的,等于,value的長(zhǎng)度為.然后是對(duì)query和keys兩個(gè)向量做內(nèi)積,如果內(nèi)積的值越大,說(shuō)明向量夾角越小,兩個(gè)特征越相似。然后再用這個(gè)內(nèi)積的結(jié)果除以(就是向量的長(zhǎng)度)【可以防止梯度消失或爆炸】,再經(jīng)過(guò)一個(gè)softmax得到權(quán)重(也叫做注意力分?jǐn)?shù))?!颈热缃o一個(gè)query,n個(gè)keys value,那么就會(huì)算出n個(gè)值,因?yàn)槊總€(gè)q會(huì)和k做內(nèi)積,算出來(lái)后再放如softmax就會(huì)得到n個(gè)非負(fù)的而且加起來(lái)和等于1的一個(gè)權(quán)重】,然后將這個(gè)權(quán)重作用在我們的value上就會(huì)得到相應(yīng)的輸出了,但是這種方法實(shí)際計(jì)算起來(lái)比較慢,因?yàn)樾枰粋€(gè)個(gè)的計(jì)算,因此可以用矩陣乘法來(lái)計(jì)算即可。

這里的Mask是為了避免在第t時(shí)間看到以后時(shí)間的東西,可以在qt和kt之后的那些值給一個(gè)非常大的負(fù)數(shù),這樣可以保證后面的這些數(shù)在經(jīng)過(guò)softmax的時(shí)候輸出接近0.

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

多頭注意力機(jī)制

這里的線(xiàn)性層(Linear)就是做一個(gè)低維度的映射,然后經(jīng)過(guò)一個(gè)上面的注意力機(jī)制,然后重復(fù)h次(就是有h個(gè)注意力,即注意力的頭數(shù)),然后把這些輸出進(jìn)行合并(concat),最后再經(jīng)過(guò)一個(gè)Linear的映射。這個(gè)就是有點(diǎn)模擬CNN中的多個(gè)輸出的意思。

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

?公式如下:

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

自注意力機(jī)制

可以看一下這個(gè)注意力層。

自注意力機(jī)制通過(guò)直接建模任意兩個(gè)位置之間的關(guān)系,能夠更好地捕捉長(zhǎng)距離的依賴(lài),使得模型能夠理解遠(yuǎn)處位置的上下文信息。不同頭(多頭注意力)可以捕捉不同距離的關(guān)系,一些頭可能更關(guān)注近處的關(guān)系,而另一些頭可能更關(guān)注遠(yuǎn)處的關(guān)系。這樣的多頭機(jī)制使得模型能夠更好地適應(yīng)不同范圍內(nèi)的關(guān)聯(lián)信息。

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

?可以看到在編碼器的輸入,在輸入到Multi-Head attention的時(shí)候分別復(fù)制了三份,q,k,v。而此時(shí)的q,k,v實(shí)際是一個(gè)東西,這個(gè)東西就是叫自注意力機(jī)制。

解碼器構(gòu)成

masked多頭注意力機(jī)制

與編碼器不同的是,解碼器的block中多了一個(gè)Masked多頭注意力機(jī)制。

解碼器是由三個(gè)部分組成,masked多頭注意力機(jī)制,多頭注意力機(jī)制,前饋網(wǎng)絡(luò)(MLP)。然后將最后的輸出經(jīng)過(guò)一個(gè)softmax得到輸出。

解碼器和編碼器很相似,只不過(guò)在解碼器是有三個(gè)子層。多了一個(gè)masked 多頭注意力機(jī)制。另外在解碼器當(dāng)中做了一個(gè)自回歸,當(dāng)前輸出輸入集是上面一些時(shí)刻的輸出,在解碼器訓(xùn)練的時(shí)候,在預(yù)測(cè)第t個(gè)時(shí)刻的輸出時(shí)候,是不應(yīng)該看到t時(shí)刻以后的那些輸入的,實(shí)現(xiàn)這種的做法是加入了masked 多頭注意力機(jī)制。

?然后看一下解碼器的這里,如下圖??梢钥吹酱藭r(shí)的多頭注意力機(jī)制的輸入也有三個(gè),其中兩個(gè)輸入是編碼器的輸出(k,v),query是來(lái)自于你解碼器下一個(gè)attention的輸出。

Transformer理論學(xué)習(xí),transformer,學(xué)習(xí),深度學(xué)習(xí)

masked多頭注意力機(jī)制的作用:

Masked多頭注意力機(jī)制通過(guò)遮蓋(masking)部分輸入信息,限制了模型在預(yù)測(cè)未來(lái)位置時(shí)的訪(fǎng)問(wèn)能力,從而用于處理順序性任務(wù),如語(yǔ)言模型和序列生成。

1.順序性任務(wù)處理: 在一些任務(wù)中,特別是語(yǔ)言建模和序列生成任務(wù),模型需要逐步生成輸出序列,而每個(gè)時(shí)間步只能訪(fǎng)問(wèn)已生成的部分。為了模擬這種場(chǎng)景,需要使用Masked多頭注意力機(jī)制,其中注意力分?jǐn)?shù)在計(jì)算時(shí)會(huì)被限制為僅考慮當(dāng)前時(shí)間步及之前的位置,而忽略未來(lái)的位置。這使得模型能夠逐個(gè)時(shí)間步地生成序列,而不會(huì)在生成時(shí)候透視未來(lái)信息。

2.遮蓋未來(lái)信息: 在處理順序性任務(wù)時(shí),如果模型可以訪(fǎng)問(wèn)未來(lái)位置的信息,可能會(huì)導(dǎo)致信息泄露和過(guò)擬合問(wèn)題。Masked多頭注意力機(jī)制通過(guò)在計(jì)算注意力分?jǐn)?shù)時(shí)設(shè)置一些位置為無(wú)效(或很小的)注意力分?jǐn)?shù),從而遮蓋了未來(lái)位置的信息,確保模型只能看到當(dāng)前時(shí)間步及之前的信息。

3.自回歸生成: 在自然語(yǔ)言生成任務(wù)中,例如語(yǔ)言模型或文本生成,模型需要根據(jù)之前的生成部分來(lái)預(yù)測(cè)下一個(gè)詞。Masked多頭注意力機(jī)制允許模型根據(jù)已生成的部分計(jì)算注意力,以更好地決定下一個(gè)生成的詞。

4.避免信息泄露: 在某些情況下,訓(xùn)練和推理過(guò)程需要模型能夠?qū)ξ磥?lái)位置做出預(yù)測(cè)。但在一些應(yīng)用中,未來(lái)信息不應(yīng)該在預(yù)測(cè)時(shí)出現(xiàn)。Masked多頭注意力機(jī)制通過(guò)限制模型的未來(lái)訪(fǎng)問(wèn)能力,防止了未來(lái)信息泄露。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-636625.html


到了這里,關(guān)于Transformer理論學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包