柚子快報(bào)邀請(qǐng)碼778899分享:Transformer詳解
柚子快報(bào)邀請(qǐng)碼778899分享:Transformer詳解
目錄
一、引言:
二、Transformer的整體結(jié)構(gòu)
三、Transformer的輸入
輸入嵌入:
信息向量化的實(shí)質(zhì)
獨(dú)熱模型:
Word Embedding
位置編碼:
絕對(duì)位置編碼
1、位置編碼的標(biāo)準(zhǔn):
2、兩種簡(jiǎn)單的位置編碼:
3、Transformer中的絕對(duì)位置編碼
相對(duì)位置編碼
四、Encoder
Encoder的結(jié)構(gòu)
Block的結(jié)構(gòu)
Multi-Head Attention(多頭注意力層)
Add——Residual Networks(殘差網(wǎng)絡(luò))
1、殘差網(wǎng)絡(luò)產(chǎn)生的背景
2、殘差網(wǎng)絡(luò)的結(jié)構(gòu)
3、對(duì)殘差網(wǎng)絡(luò)的理解
4、Transformer的Residual Networks
Norm——Layer Normalization(層標(biāo)準(zhǔn)化)
1、Normalization的背景
2、 Normalization 的通用框架與基本思想
3、BatchNormalization(批標(biāo)準(zhǔn)化)
4、Layer Normalization(層標(biāo)準(zhǔn)化)
5、兩種標(biāo)準(zhǔn)化的區(qū)別
6、Transformer的Layer Normalization
Feed Forward:
五、Decoder
Masked?Multi-Head Attention:
Cross attention:
Decoder的步驟和Softmax 預(yù)測(cè)輸出:
六、Training and Testing
Transformer的Training:
Transformer的Testing:
Training和Testing的注意點(diǎn):
七、總結(jié)?
八、后續(xù)
一、引言:
????????由于Transformer里面的內(nèi)容較多,筆者研究的時(shí)間較長(zhǎng),看了很多博客和資料,這些資料都為筆者的學(xué)習(xí)提供了很多幫助,其中感覺(jué)李宏毅老師講Transformer非常清晰明了,還是向大家強(qiáng)烈推薦李宏毅老師的視頻,這篇文章可以用來(lái)查缺補(bǔ)漏。
二、Transformer的整體結(jié)構(gòu)
????????Transformer 是一種基于自注意力機(jī)制(Self-Attention)的深度學(xué)習(xí)模型架構(gòu),廣泛應(yīng)用于自然語(yǔ)言處理和其他序列到序列的任務(wù)。
????????上圖為Transformer的內(nèi)部結(jié)構(gòu)圖,transformer是建立在Encoder-Decoder模型上的,所以Transformer也分為Encoder和Decoder兩個(gè)部分,下面將按照輸入,Encoder,Decoder的順序進(jìn)行講解。
三、Transformer的輸入
????????如圖可知,輸入經(jīng)過(guò)輸入嵌入之后與位置編碼相加,共同組成Transformer的輸入向量。
????????舉一個(gè)具體的例子:一個(gè)句子“我是學(xué)生”輸入會(huì)先經(jīng)輸入嵌入表示為一個(gè)包含語(yǔ)意特征信息的特征向量,在與位置編碼的位置向量相加之后,才能輸入到Transformer結(jié)構(gòu)中,接下來(lái)將分別介紹輸入嵌入和位置編碼。
輸入嵌入:
????????輸入嵌入從本質(zhì)上來(lái)說(shuō)是信息向量化,將文本、圖像、音頻或其他形式的數(shù)據(jù)轉(zhuǎn)換為向量的過(guò)程,這些向量可以作為神經(jīng)網(wǎng)絡(luò)的輸入。這個(gè)過(guò)程對(duì)于神經(jīng)網(wǎng)絡(luò)的有效性和性能至關(guān)重要,因?yàn)樯窠?jīng)網(wǎng)絡(luò)通常需要以數(shù)值形式的向量來(lái)處理和學(xué)習(xí)數(shù)據(jù)。
信息向量化的實(shí)質(zhì)
????????信息向量化的實(shí)質(zhì)就是將信息轉(zhuǎn)換為一個(gè)高維空間的向量,這些向量在一定意義上可以體現(xiàn)所代表信息的特征,比如在文本信息向量化中,向量在一定程度上可以代表文字的語(yǔ)意特征,再通過(guò)計(jì)算這些向量的距離,就可以計(jì)算出文字中詞語(yǔ)之間的關(guān)聯(lián)程度,從而做到讓計(jì)算機(jī)計(jì)算數(shù)值一樣去計(jì)算自然語(yǔ)言的目的。
????????下面這張圖可以很清晰的看出信息向量化的實(shí)質(zhì),信息被表示為一個(gè)個(gè)向量,在一個(gè)多維空間里就是一個(gè)個(gè)點(diǎn),它們之間的距離就代表之間的關(guān)系密切程度,而且不同維度的距離還會(huì)代表不同種類的關(guān)系,神經(jīng)網(wǎng)絡(luò)可以通過(guò)計(jì)算點(diǎn)之間的距離來(lái)判斷它們之間的關(guān)系。
獨(dú)熱模型:
????????在NLP中有很多將文本信息轉(zhuǎn)換為向量的模型,比如One-Hot(離散表示,或者叫做獨(dú)熱模型),獨(dú)熱模型是將文字信息編碼為序列向量,向量長(zhǎng)度是預(yù)定義的文字信息中擁有的文字量,向量在這一維中的值只有一個(gè)位置是1,其余都是0,1對(duì)應(yīng)的位置就是文字信息表中表示這個(gè)文字的地方。
????????比如需要編碼的文本信息詞匯表有5000個(gè)文字,那么獨(dú)熱模型編碼詞匯表中的每一個(gè)文字都是一個(gè)1*5000維的向量,這個(gè)向量里面只有一個(gè)值為1,那么詞匯表里面的所有文字都可以表示為一個(gè)向量,如下圖所示:
????????比如將一個(gè)句子:“我學(xué)人工智能”使用獨(dú)熱模型轉(zhuǎn)換為向量,那就是一個(gè)5*5000的張量:
????????獨(dú)熱模型看上去非常簡(jiǎn)潔,但是它存在很多問(wèn)題,比如如果文字詞匯表有10k個(gè)單詞,那么一個(gè)詞向量的長(zhǎng)度就是10k,但是每個(gè)向量卻只有一個(gè)位置是1,其余都是0,這明顯是非常浪費(fèi)內(nèi)存的存儲(chǔ)資源。
????????而且更嚴(yán)重的問(wèn)題是獨(dú)熱模型不能體現(xiàn)出詞與詞之間的關(guān)系,比如上面的“喜歡”和“愛(ài)”這兩個(gè)文字意思是非常相近的,但是當(dāng)按照上面的編碼之后,明顯在這些向量中,它們兩個(gè)單詞之間的距離是最遠(yuǎn)的,與它們?cè)~的含義大不相同。
????????這時(shí)候就會(huì)有的人會(huì)說(shuō),可以在設(shè)計(jì)的時(shí)候刻意將意義相近的文字信息的向量1的位置靠近一點(diǎn),但是要知道5000字的排列組合數(shù)量是一個(gè)多么龐大的數(shù)字,靠人力去解決肯定是不可能實(shí)現(xiàn)的。因此對(duì)于文本信息向量化一般是交給機(jī)器處理。
Word Embedding
????????我們首先設(shè)置一個(gè)隨機(jī)的m*n的稠密張量作為權(quán)重矩陣W,m為詞匯表的維度,n為每個(gè)詞的向量大小,對(duì)于上面的5000個(gè)文字的詞匯表來(lái)說(shuō),就是設(shè)置一個(gè)5000*n的稠密張量,這個(gè)n可以自行設(shè)置,比如設(shè)置為128,即5000*128,W與剛才生成的獨(dú)熱模型形成的矩陣V相乘,得到一個(gè)隨機(jī)產(chǎn)生的可以表示一定關(guān)系的整個(gè)文字詞匯表的張量,也就是5000*128,然后經(jīng)過(guò)大量文本數(shù)據(jù)集的訓(xùn)練學(xué)習(xí)來(lái)更新該權(quán)重矩陣,權(quán)重矩陣的參數(shù)不斷調(diào)整,直至張量里面向量之間的距離跟向量所對(duì)應(yīng)的文字語(yǔ)意之間的關(guān)系程度非常契合時(shí)(這句話比較長(zhǎng),意思就是說(shuō)W隨著訓(xùn)練不斷變化,直到任意向量之間的距離跟它們對(duì)應(yīng)的文字語(yǔ)意之間關(guān)系程度呈一定比例),最后得到包含語(yǔ)意特征的向量。
????????一般使用文本數(shù)據(jù)集中的上下文信息或者使用中心詞推理上下文的方式來(lái)訓(xùn)練學(xué)習(xí)權(quán)重矩陣,常用的訓(xùn)練模型有CBOW(Continuous Bag-of-Words)和Skip-gram,具體的模型訓(xùn)練方式這里就不細(xì)講。
????????
輸入嵌入部分相關(guān)的參考鏈接如下:
https://www.paddlepaddle.org.cn/tutorials/projectdetail/3578658#anchor-2
https://zhuanlan.zhihu.com/p/372279569
位置編碼:
????????Transformer架構(gòu)由于其自注意力機(jī)制 (Self-Attention Mechanism) 的特性,對(duì)序列中的元素沒(méi)有固有的順序感知,所以在處理像NLP中元素的順序?qū)Ψg結(jié)果影響很大的情況下,位置編碼就變得非常重要。
????????總的來(lái)說(shuō),位置編碼分為兩個(gè)類型:絕對(duì)位置編碼和相對(duì)位置編碼。
絕對(duì)位置編碼
1、位置編碼的標(biāo)準(zhǔn):
????????絕對(duì)位置編碼為序列中的每個(gè)位置分配一個(gè)唯一的編碼,這種編碼直接反映了元素在序列中的絕對(duì)位置。
????????首先我們得知道神經(jīng)網(wǎng)絡(luò)對(duì)于位置編碼的要求。在理想情況下,位置編碼應(yīng)滿足以下標(biāo)準(zhǔn):
每個(gè)時(shí)間步都有唯一的編碼:在處理序列數(shù)據(jù)時(shí),神經(jīng)網(wǎng)絡(luò)需要能夠區(qū)分序列中不同時(shí)間步的元素。唯一的位置編碼可以確保每個(gè)時(shí)間步都有獨(dú)特的表示,使得網(wǎng)絡(luò)能夠準(zhǔn)確地捕捉序列中不同位置的語(yǔ)義和順序信息。在不同長(zhǎng)度的句子中,兩個(gè)時(shí)間步之間的距離應(yīng)該一致:網(wǎng)絡(luò)在學(xué)習(xí)序列信息時(shí),需要具備一定的“空間感知力”,即能夠理解不同時(shí)間步之間的相對(duì)距離和順序。一致的距離可以幫助網(wǎng)絡(luò)更準(zhǔn)確地捕捉到時(shí)間步之間的相對(duì)位置關(guān)系,而不會(huì)因句子長(zhǎng)度的不同而導(dǎo)致距離的變化。位置編碼不受句子長(zhǎng)短的影響,且編碼的范圍是有限的:位置編碼應(yīng)具有固定的表示范圍,不受序列長(zhǎng)度的影響,以確保網(wǎng)絡(luò)在處理不同長(zhǎng)度的序列時(shí)能夠保持穩(wěn)定性和一致性。此外,編碼的范圍有限也有助于網(wǎng)絡(luò)在訓(xùn)練中更容易收斂和處理。位置編碼必須是確定性的:確定性的位置編碼意味著對(duì)于相同位置的輸入,始終生成相同的編碼,這對(duì)于網(wǎng)絡(luò)的穩(wěn)定性和可重復(fù)性是至關(guān)重要的。確定性可以確保在訓(xùn)練和推理時(shí),網(wǎng)絡(luò)能夠始終以相同的方式處理相同的輸入。
2、兩種簡(jiǎn)單的位置編碼:
????????最容易想到的兩種位置編碼為:
1)為每個(gè)時(shí)間步添加一個(gè)0-1范圍內(nèi)的數(shù)字作為位置編碼,其中0表示第一個(gè)單詞,1表示最后一個(gè)單詞。
比如:
我正在學(xué)人工智能[0,0.16,0.32......1]
我正在認(rèn)真學(xué)人工智能[0,0.125,0.25......1]
????????可以很明顯的看出,這種位置編碼不滿足上面第二個(gè)條件,當(dāng)句子的長(zhǎng)度不同時(shí),位置編碼兩個(gè)時(shí)間步的距離不一致,那么模型可能無(wú)法準(zhǔn)確地區(qū)分序列中不同位置的信息,導(dǎo)致信息的損失或錯(cuò)位。
2)對(duì)每一個(gè)輸入的向量,從1開(kāi)始按順序向后進(jìn)行排序。
比如:
我正在學(xué)人工智能。[1,2,3,5,7,8]
????????在這個(gè)位置編碼中,我們也可以很明顯的發(fā)現(xiàn)不滿足上面的第三個(gè)條件,當(dāng)輸入的句子長(zhǎng)度不斷增加時(shí),位置編碼的數(shù)字也會(huì)不斷增加,數(shù)字增加也就意味著這個(gè)位置占用的權(quán)重也就越大,這樣就無(wú)法凸顯每個(gè)位置真實(shí)的權(quán)重。
????????這兩種位置編碼都無(wú)法滿足神經(jīng)網(wǎng)絡(luò)位置編碼的標(biāo)準(zhǔn),接下來(lái)讓我們看看Transformer的作者是如何設(shè)計(jì)絕對(duì)位置編碼的。
3、Transformer中的絕對(duì)位置編碼
????????
????????Transformer的作者設(shè)計(jì)了一種基于三角函數(shù)的位置編碼方式,為每一個(gè)輸入向量單獨(dú)生成一個(gè)dmoedl維(與前面輸入嵌入得到的向量維數(shù)相等)的位置向量,代替之前的用一數(shù)字表示一個(gè)位置向量。
????????Transformer中的絕對(duì)位置編碼方式如下:
????????在公式里面PE表示位置編碼
????????pos 是某token(意? 見(jiàn)注意)在序列中的位置
????????d model模型中嵌入維度(embedding dimension)的大小
????????i 是編碼維度的索引,范圍為[0,dmodel/2-1]
????????注意:在自然語(yǔ)言處理(NLP)中,"token"(標(biāo)記)通常指的是文本處理過(guò)程中的最小單元或基本單位。具體來(lái)說(shuō),tokenization(標(biāo)記化)是將文本分割成有意義的部分,這些部分可以是單詞、詞根、符號(hào)、短語(yǔ)或其他有意義的單位。每個(gè)被分割出來(lái)的單元就是一個(gè)token。
????????公式上半部分為pos位置的token的位置編碼向量中第2i個(gè)元素的值,下半部分為pos位置的token的位置編碼向量中第2i+1個(gè)元素的值。前面可以直到位置編碼向量是要跟輸入嵌入向量(也就是語(yǔ)意特征向量)相加的,因此它們的維度應(yīng)該相等,所以i的取值范圍應(yīng)該是從0到dmoedl。
????????將其表示為向量形式就是:
????????可以看到每一個(gè)位置編碼向量都是正余弦交替的。
????????逐一對(duì)照一下該編碼方法是否滿足前面的四個(gè)條件:
a.每個(gè)時(shí)間步都有唯一的編碼:可以很明顯的看出由于pos的不同,每個(gè)時(shí)間步的編碼都不相同,是唯一的。
b.在不同長(zhǎng)度的句子中,兩個(gè)時(shí)間步之間的距離應(yīng)該一致:兩個(gè)向量之間的相對(duì)距離可用內(nèi)積來(lái)衡量,計(jì)算一下任意兩個(gè)時(shí)間步之間的相對(duì)距離:
????????從上式可以看出,在維度固定的前提下,兩個(gè)時(shí)間步的token位置編碼向量之間的相對(duì)距離結(jié)果中只有k為可變的,其余都為固定的。因此在任意長(zhǎng)度句子中,只要轉(zhuǎn)換的向量維數(shù)相同(也就是dmodel相同)時(shí),相隔同樣時(shí)間(k相同)的token位置編碼向量的相對(duì)距離也相同。
c.位置編碼不受句子長(zhǎng)短的影響,且編碼的范圍是有限的:由于三角函數(shù)的有界性,所以模型每個(gè)token的位置編碼向量中的每一個(gè)元素都是有界的,因此該編碼方式不受句子長(zhǎng)短的影響且編碼范圍有限。
d.位置編碼必須是確定性的:由公式(1)可知,位置編碼至只與token的位置,維度和元素的序列號(hào)有關(guān),相同位置的token不管是什么內(nèi)容,生成的位置編碼都相同,因此該編碼方式是確定性的。
相對(duì)位置編碼
????????Transformer里面暫時(shí)不涉及相對(duì)位置編碼,有需要的同學(xué)可以參看這篇文章:Swin Transformer之相對(duì)位置編碼詳解-CSDN博客
輸入部分的參考資料:
一文搞懂Transformer的位置編碼_transformer位置編碼-CSDN博客
Transformer的位置編碼_transformer位置編碼-CSDN博客
transformer 位置編碼_transformer位置編碼代碼-CSDN博客
四、Encoder
????????前面通過(guò)輸入嵌入和位置編碼相加得到Transformer的輸入向量之后,向量將會(huì)進(jìn)入Transformer的Encoder(編碼)部分。
Encoder的結(jié)構(gòu)
????????首先要知道Encoder的功能結(jié)構(gòu),在筆者的上一篇文章從ANN到Attention中對(duì)Encoder-Decoder架構(gòu)有所介紹,Encoder其實(shí)先對(duì)每一個(gè)輸入計(jì)算隱狀態(tài),然后得到上下文向量的過(guò)程。
????????
????????但是在Transformer中的Encoder有所不同,主要的不同點(diǎn)是從輸入到隱狀態(tài)的過(guò)程中,不再是簡(jiǎn)單的單層變換,而是六個(gè)相同的Block,最終得到隱狀態(tài)。
????????每一個(gè)Block里面的結(jié)構(gòu)是相同的,接下來(lái)對(duì)Block的結(jié)構(gòu)進(jìn)行詳解。
Block的結(jié)構(gòu)
????????實(shí)際上Block的內(nèi)部結(jié)構(gòu)其實(shí)就是Transformer結(jié)構(gòu)圖Encoder部分除去輸入和N*的部分,依次經(jīng)過(guò)Multi-Head Attention(多頭注意力層),Add(殘差連接層),Norm(層標(biāo)準(zhǔn)化),F(xiàn)eed Forward(前饋層),最后再通過(guò)一次殘差連接和層標(biāo)準(zhǔn)化,得到Block的輸出。注意,在這里Block輸入輸出的形狀是相同的。
Multi-Head Attention(多頭注意力層)
????????Multi-Head Attention(多頭注意力層)在筆者的上一篇文章里有詳細(xì)的介紹,在這里只是簡(jiǎn)要概括一下,Multi-Head Attention 是由多個(gè) Self-Attention 組合形成,每一個(gè)Self-Attention針對(duì)輸入的token之間不同種類的相關(guān)性進(jìn)行計(jì)算attention得分,最后將輸出的結(jié)果拼接在一起(Concat)。
????????由于Self-Attention的輸入輸出形狀是相同的,所以拼接之后的矩陣形狀會(huì)在某一維度變?yōu)樵瓉?lái)的n倍(n為Multi-Head Attention中的Head的數(shù)量),要保證Multi-Head Attention的輸如輸出形狀也相同,就得讓Multi-Head Attention的輸出再傳入一個(gè)Linear層,得到與輸入形狀相同的輸出層。??? ??
Add——Residual Networks(殘差網(wǎng)絡(luò))
論文:Deep Residual Learning for Image Recognition
[2]He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
????????Transformer里面這個(gè)Add層實(shí)質(zhì)上就是來(lái)自這篇論文里殘差網(wǎng)絡(luò)的思想,殘差網(wǎng)絡(luò)(Residual Network,簡(jiǎn)稱ResNet)是一種深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),最早由何凱明等人在2015年提出,用于解決深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中的梯度消失和梯度爆炸問(wèn)題。
1、殘差網(wǎng)絡(luò)產(chǎn)生的背景
????????首先我們要知道對(duì)于目前的人工智能架構(gòu)來(lái)說(shuō),更深層的神經(jīng)網(wǎng)絡(luò)模型可以學(xué)習(xí)到更加復(fù)雜和抽象的特征表示,從而提升模型在處理復(fù)雜任務(wù)時(shí)的表達(dá)能力。深層網(wǎng)絡(luò)通過(guò)層層堆疊的方式可以逐級(jí)提取和組合特征,學(xué)習(xí)到更復(fù)雜和更有效的特征表示,從而在各種任務(wù)中取得更好的性能。因此構(gòu)建更深層的網(wǎng)絡(luò)是人工智能一個(gè)重要的研究方向。
????????網(wǎng)絡(luò)層數(shù)的加深首先帶來(lái)的就是梯度消失和梯度爆炸的問(wèn)題,雖然也有一些解決辦法,如正則化和標(biāo)準(zhǔn)化,雖然一定程度上解決了梯度的問(wèn)題,但是卻產(chǎn)生了網(wǎng)絡(luò)性能的退化,網(wǎng)絡(luò)性能的退化是指隨著網(wǎng)絡(luò)深度的增加,和理論不一致,訓(xùn)練誤差出現(xiàn)了先降低后增加的現(xiàn)象。
????????而Residual Networks,ResNets(殘差網(wǎng)絡(luò))的提出,就解決了上述問(wèn)題。
2、殘差網(wǎng)絡(luò)的結(jié)構(gòu)
????????原論文中的殘差結(jié)構(gòu)如下圖所示:
????????如圖所示,正常的神經(jīng)網(wǎng)絡(luò)中,增加了一個(gè) short cut 分支結(jié)構(gòu),也稱為捷徑連接,或者高速公路,通過(guò)捷徑連接,上一層的輸出x與 ?以上一層輸出x為輸入的中間層的輸出F(x) ?共同組成輸出的結(jié)果。即:
????????通過(guò)這個(gè)公式就可以知道,這個(gè)輸出結(jié)果將原始信息和中間層處理得到的特征信息一起保留下來(lái)。
3、對(duì)殘差網(wǎng)絡(luò)的理解
????????殘差為什么可以解決前面提到的問(wèn)題呢?我們來(lái)想象一下,當(dāng)沒(méi)有殘差連接之后,原始的信息會(huì)經(jīng)過(guò)中間層提取信息的某一方面的特征,而這個(gè)提取特征的能力的程度是經(jīng)過(guò)訓(xùn)練得到的,當(dāng)訓(xùn)練的過(guò)程中由于神經(jīng)網(wǎng)絡(luò)的層數(shù)過(guò)深,導(dǎo)致訓(xùn)練的效果不好,那么該層得到的信息數(shù)據(jù)傳遞給下一層時(shí),就是一個(gè)殘缺版的信息數(shù)據(jù),后面的層就算訓(xùn)練的非常完美,最后也不會(huì)有很好的效果。
????????但是當(dāng)添加上殘差連接之后,由于捷徑連接的存在,原始信息數(shù)據(jù)可以無(wú)損的通過(guò),所以就算該層學(xué)習(xí)到的數(shù)據(jù)不夠好,那么疊加上無(wú)損通過(guò)的原始數(shù)據(jù),依然保留了原始數(shù)據(jù),后面的層仍然可以繼續(xù)對(duì)原始數(shù)據(jù)進(jìn)行特征提取,不至于一步錯(cuò),步步錯(cuò)。
4、Transformer的Residual Networks
??????????同樣,如果該層學(xué)習(xí)到的效果很好,那么依然會(huì)保留著學(xué)習(xí)到的數(shù)據(jù)和原始數(shù)據(jù),下面的層依然可以在這些數(shù)據(jù)基礎(chǔ)上進(jìn)一步學(xué)習(xí)優(yōu)化。進(jìn)而讓網(wǎng)絡(luò)模型的表現(xiàn)越來(lái)越好。
????????在Transformer里面的Residual Networks表現(xiàn)在輸入和Multi-Head Attention處理之后Add(也就是相加)的地方。
????????輸入Xi與F(Xi)相加就是殘差連接,這里的F就是自注意力機(jī)制層。
殘差網(wǎng)絡(luò)部分相關(guān)參考鏈接:殘差結(jié)構(gòu)詳解-CSDN博客
殘差結(jié)構(gòu)詳解-CSDN博客
圖像識(shí)別(五)| resnet50 的殘差結(jié)構(gòu)到底是什么?-CSDN博客
Norm——Layer Normalization(層標(biāo)準(zhǔn)化)
論文:Layer Normalization
[3]Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. "Layer normalization." arXiv preprint arXiv:1607.06450 (2016).
?這里李宏毅老師講的 Normalization有關(guān)內(nèi)容非常清晰明了,推薦大家去看看他的講解。鏈接:
第五節(jié) 2021 - 類神經(jīng)網(wǎng)絡(luò)訓(xùn)練不起來(lái)怎么辦 (五) 批次標(biāo)準(zhǔn)化 (Batch Normalization)_嗶哩嗶哩_bilibili
1、Normalization的背景
????????通過(guò)前面的介紹可以知道,為了得到效果更好的模型,一般神經(jīng)網(wǎng)絡(luò)會(huì)疊加很多的層,但是每通過(guò)一層,輸出與輸入之間的數(shù)據(jù)分布關(guān)系會(huì)發(fā)生變化,通過(guò)層層疊加,高層的輸入變化會(huì)非常劇烈,高層參數(shù)需要不斷適應(yīng)新的輸入數(shù)據(jù)分布,將會(huì)導(dǎo)致學(xué)習(xí)速度下降;下層輸入的數(shù)據(jù)變化可能趨于變大或者趨于變小,將會(huì)導(dǎo)致梯度爆炸或者梯度消失;Normalization的出現(xiàn)就是為了解決這個(gè)問(wèn)題。
2、 Normalization 的通用框架與基本思想
首先,假設(shè)一個(gè)神經(jīng)元的輸入為
Normalization 的通用框架為:
其中為均值,為標(biāo)準(zhǔn)差。
????????Normalization的基本思想是將 x 送給神經(jīng)元之前,先對(duì)其做平移和伸縮變換, 將 x 的分布規(guī)范化成在固定區(qū)間范圍的標(biāo)準(zhǔn)分布。
????????經(jīng)過(guò)標(biāo)準(zhǔn)化處理后,原始數(shù)據(jù)轉(zhuǎn)化為無(wú)量綱化指標(biāo)測(cè)評(píng)值,各指標(biāo)值處于同一數(shù)量級(jí)別,可進(jìn)行綜合測(cè)評(píng)分析;還可以避免由于有些數(shù)值過(guò)大引發(fā)的數(shù)值問(wèn)題。
3、BatchNormalization(批標(biāo)準(zhǔn)化)
????????BatchNormalization可以理解為縱向標(biāo)準(zhǔn)化,Batch Normalization 會(huì)針對(duì)每個(gè)通道獨(dú)立地進(jìn)行,對(duì)于給定的通道,它將計(jì)算該通道內(nèi)所有元素(考慮所有的批量大小、高度、寬度)的平均值和方差,然后使用這些統(tǒng)計(jì)量來(lái)歸一化該通道的值。
????????具體來(lái)說(shuō),對(duì)于每個(gè)通道的每個(gè)像素,Batch Normalization 通過(guò)以下公式進(jìn)行操作:
????????其中,x是輸入值,μ是均值,σ?2?是方差,?是一個(gè)很小的數(shù),以防止除以零。標(biāo)準(zhǔn)化之后數(shù)值平均變?yōu)?、標(biāo)準(zhǔn)差變?yōu)?。
????????由于BatchNormalization是對(duì)同一時(shí)間步進(jìn)入某一層的一個(gè)通道的所有數(shù)據(jù)先求均值和方差,理論上來(lái)說(shuō)是要計(jì)算全部的訓(xùn)練數(shù)據(jù)的均值和方差,但是考慮GPU的內(nèi)存,所以是對(duì)每一個(gè)Batch里面的數(shù)據(jù)來(lái)預(yù)估訓(xùn)練數(shù)據(jù)的均值和方差,所以BatchNormalization需要較大的 batchsize 才能較為合理的代表訓(xùn)練數(shù)據(jù)。
4、Layer Normalization(層標(biāo)準(zhǔn)化)
????????LayerNormalization可以理解為橫向標(biāo)準(zhǔn)化,與 Batch Normalization 不同,層歸一化是對(duì)單個(gè)樣本中所有特征進(jìn)行標(biāo)準(zhǔn)化,而不是在批量的維度上。這意味著層歸一化不依賴于批量的大小,使其特別適用于批量大小不一或需要標(biāo)準(zhǔn)化單個(gè)樣本的場(chǎng)景。
????????層標(biāo)準(zhǔn)化計(jì)算方法與批標(biāo)準(zhǔn)化的計(jì)算方法相同,只是計(jì)算的維度不同,LN和BN不同點(diǎn)是標(biāo)準(zhǔn)化的維度是互相垂直的
????????一般CNN用BN,RNN用LN,時(shí)序特征并不能用Batch Normalization,因?yàn)橐粋€(gè)batch中的序列有長(zhǎng)有短,比如NLP中翻譯不同的語(yǔ)句,語(yǔ)句的長(zhǎng)度是不同的,如果使用BN,由于為了補(bǔ)齊長(zhǎng)短不一的樣例而添加進(jìn)去的0使得較長(zhǎng)序列中詞語(yǔ)的含義向量規(guī)模相對(duì)變小,較短序列中的詞轉(zhuǎn)換為含義向量的規(guī)模相對(duì)變大。平白無(wú)故增添了誤差抖動(dòng)。
5、兩種標(biāo)準(zhǔn)化的區(qū)別
????????Batch_Normalization計(jì)算同一個(gè)批次中所有樣本中的某一通道的平均值和方差,來(lái)估計(jì)整體樣本值得平均值和方差,如果在batch_size較小的情況下,就可能導(dǎo)致估計(jì)的計(jì)算的平均值和方差不是整體樣本的平均值和方差。
????????Layer_Normalization則是計(jì)算某一樣本內(nèi)的所有的平均值和方差,這樣就不會(huì)收到batch_size的影響。
6、Transformer的Layer Normalization
????????在Transformer中,殘差連接之后就會(huì)對(duì)向量進(jìn)行層標(biāo)準(zhǔn)化:
層標(biāo)準(zhǔn)化部分相關(guān)參考鏈接:
Layer Normalization(LN) 層標(biāo)準(zhǔn)化 (為什么Transformer用LN)(手寫(xiě)手動(dòng)實(shí)現(xiàn)LN)-CSDN博客
【關(guān)于 BatchNorm vs LayerNorm】那些你不知道的事-技術(shù)圈
歸一化 (Normalization)、標(biāo)準(zhǔn)化 (Standardization)和中心/零均值化 (Zero-centered)-CSDN博客
一文讀懂Batch_Normalization和Layer_normalization_batch normalization和layer-CSDN博客
Feed Forward:
????????Feed Forward 層比較簡(jiǎn)單,是一個(gè)兩層的全連接層,第一層的激活函數(shù)為 Relu,第二層不使用激活函數(shù)。
????????對(duì)前面得到標(biāo)準(zhǔn)化的數(shù)據(jù)做兩次線性變換,為的是更加深入的提取特征。
????????
????????FeedForward的作用是:通過(guò)線性變換,先將數(shù)據(jù)映射到高緯度的空間再映射到低緯度的空間,提取了更深層次的特征。
????????Feed Forward層輸出的數(shù)據(jù)會(huì)再經(jīng)過(guò)一次殘差連接。至此,block里面的結(jié)構(gòu)已經(jīng)講完了。
????????輸入向量經(jīng)過(guò)相同結(jié)構(gòu)的六個(gè)block之后之后就會(huì)得到Encoder的輸出,得到蘊(yùn)含上文編碼信息的矩陣 C,傳遞到Transformer的Decoder結(jié)構(gòu)中。
五、Decoder
????????仔細(xì)看Decoder的結(jié)構(gòu)圖可以看出Decoder有兩個(gè)輸入,第一個(gè)輸入是前面Encoder的輸出,包含了輸入向量的特征和上下文信息,第二個(gè)輸入其實(shí)就是前一個(gè)時(shí)間步Decoder的輸出,下面這張圖比較直觀:
????????
????????其實(shí)講完Encoder之后再來(lái)介紹Decoder就非常簡(jiǎn)單了,Decoder與Encoder結(jié)構(gòu)上很類似,只有幾點(diǎn)區(qū)別,了解這些區(qū)別之后學(xué)習(xí)Decoder就會(huì)比較簡(jiǎn)單。主要的區(qū)別如下:
Decoder結(jié)構(gòu)中包含兩個(gè) Multi-Head Attention 層:
????????第一個(gè) Multi-Head Attention 層采用了 Masked 操作;
????????第二個(gè) Multi-Head Attention 層采用了cross attention;
????????最后有一個(gè) Softmax 層預(yù)測(cè)輸出。
Masked?Multi-Head Attention:
????????由于Decoder的輸入是前一個(gè)時(shí)間步的Decoder的輸出,Decoder不像Encoder一開(kāi)始就知道整個(gè)語(yǔ)句里的每一個(gè)token,從而實(shí)現(xiàn)并行操作,Decoder的輸入必須等前一個(gè)時(shí)間步的輸出出現(xiàn),也就是Decoder的輸入是一個(gè)token一個(gè)token進(jìn)行的。
????????而初始的Self-Attention是要考慮所有輸入之間的關(guān)聯(lián)性,如下圖所示:
????????每一個(gè)輸出b都與所有的輸入有關(guān),所有的輸入都將參與Attention運(yùn)算。但是現(xiàn)在輸入是一個(gè)一個(gè)產(chǎn)生的,所以輸出只能與現(xiàn)有的輸入有關(guān)。??
????????
????????舉個(gè)例子,比如我們想計(jì)算b2,本來(lái)如果計(jì)算時(shí)所有的輸入都是存在的,那么應(yīng)該先算出雖所有輸入的Q,K,V,然后使用第二個(gè)輸入計(jì)算得到的q2與所有輸入計(jì)算得到的ki計(jì)算attention得分,最后與vi進(jìn)行加權(quán)求和,如下圖所示:
????????但是其實(shí)再求b2時(shí),只有前面兩個(gè)輸入是存在的,后面的輸入還沒(méi)有輸出出來(lái),所以,計(jì)算b2時(shí)只考慮前面兩個(gè)輸入。如下圖所示
????????Masked Multi-Head Attention理論上就是上面所講的步驟,在實(shí)際操作中,為了可以實(shí)現(xiàn)并行運(yùn)算,雖然Transformer推理時(shí)是一個(gè)一個(gè)詞預(yù)測(cè),但是訓(xùn)練時(shí)會(huì)把所有的結(jié)果一次性給到Decoder的輸入,但是會(huì)對(duì)輸入的矩陣進(jìn)行掩碼處理,效果等同于一個(gè)一個(gè)詞給,防止其看到后面的信息,也就是不要讓前面的字具備后面字的上下文信息。
Masked Multi-Head Attention部分相關(guān)參考鏈接:
層層剖析,讓你徹底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的機(jī)制和原理_masked multi-head attention-CSDN博客
2021 - Transformer (下)_嗶哩嗶哩_bilibili
Cross attention:
????????Decoder block 第二個(gè) Multi-Head Attention 變化不大,從名字就可以看出來(lái),Cross,交叉Encoder和Decoder兩個(gè)模塊的數(shù)據(jù)進(jìn)行attention計(jì)算。?具體來(lái)說(shuō),?Self-Attention 的 K, V矩陣不是使用 上一個(gè)時(shí)間步的?Decoder block 的輸出計(jì)算的,而是使用 Encoder 的輸出計(jì)算得到的。
????????如圖所示,在計(jì)算Cross attention時(shí),q是來(lái)自Masked Multi-Head Attention的輸出計(jì)算得到,而k和v則來(lái)自Encoder的輸出經(jīng)過(guò)與不同的權(quán)重矩陣得到。
Decoder的步驟和Softmax 預(yù)測(cè)輸出:
????????
????????講完前面的每一個(gè)單獨(dú)的結(jié)構(gòu)之后,我們來(lái)梳理一下預(yù)測(cè)(inference)時(shí)Decoder部分的步驟:首先一個(gè)開(kāi)始的信號(hào)從最下方輸入,開(kāi)始時(shí)Decoder是沒(méi)有輸出的,所以需要一個(gè)開(kāi)始的標(biāo)志,也就是開(kāi)始的信號(hào)(begin),經(jīng)過(guò)語(yǔ)意嵌入(Embedding)和位置編碼(Positional Encoding)之后,計(jì)算Masked Multi-Head Attention,然后經(jīng)過(guò)殘差連接(Add)和層標(biāo)準(zhǔn)化(Layer Normalization)之后,與Encoder的輸出進(jìn)行交叉注意力計(jì)算(Cross attention),再輸入全連接層,殘差和層標(biāo)準(zhǔn)化,這里得到的向量就是只包含第1個(gè)token的信息。
????????這個(gè)向量再傳出Decoder之后,經(jīng)過(guò)一個(gè)全連接層進(jìn)入Softmax 層,Softmax 函數(shù)將輸入的每一個(gè)元素轉(zhuǎn)換成一個(gè) [0, 1] 范圍內(nèi)的數(shù)值,這些數(shù)值可以被解釋為概率。這兩層其實(shí)就是根據(jù)向量中的信息預(yù)測(cè)第一個(gè)輸出是哪一個(gè)文字,Softmax 層會(huì)輸出一個(gè)與Word Embedding中詞匯表的維度一樣的向量,向量中哪一維的數(shù)字也就是概率最大,那第一個(gè)輸出的就是該維對(duì)應(yīng)的文字。
????????圖中就是對(duì)應(yīng)前面所講的Word Embedding對(duì)應(yīng)的文字詞匯表維度為5000,其中,每一個(gè)字的概率為[0,1]范圍的數(shù)值,所有的概率加起來(lái)為1(由于沒(méi)有列全,所以下面顯示出來(lái)的概率數(shù)值加起來(lái)不一定為1),其中概率最大的文字將會(huì)作為輸出,對(duì)應(yīng)下圖中就是輸出“喜歡”。
????????
????????第一個(gè)輸出之后,該輸出就會(huì)作為第二個(gè)時(shí)間步的輸入,同樣進(jìn)行一遍前面的步驟,但是最后得到的向量就是包含前兩個(gè)token的信息,然后同樣進(jìn)入一個(gè)全連接層和Softmax 層,這兩層就是根據(jù)向量中的信息預(yù)測(cè)二個(gè)輸出是哪一個(gè)文字,Softmax 層同樣會(huì)輸出一個(gè)與Word Embedding中詞匯表的維度一樣的向量,向量中哪一維的數(shù)字也就是概率最大,那第二個(gè)輸出的就是該維對(duì)應(yīng)的文字。
????????以此類推,將整個(gè)句子輸出完畢。
六、Training and Testing
????????當(dāng)讀者看到這里時(shí),Transformer里面的每一個(gè)結(jié)構(gòu)都已經(jīng)了解的很清楚了,現(xiàn)在我們要做的是通過(guò)Training和Testing來(lái)將前面的結(jié)構(gòu)連接起來(lái),形成一個(gè)整體。
????????首先要知道Training和Testing的概念分別是什么。
????????Training(訓(xùn)練):
1)訓(xùn)練指的是使用已知的數(shù)據(jù)集(通常是訓(xùn)練集)來(lái)構(gòu)建(或訓(xùn)練)機(jī)器學(xué)習(xí)模型的過(guò)程。
2)在訓(xùn)練階段,模型通過(guò)學(xué)習(xí)輸入數(shù)據(jù)的特征和相應(yīng)的輸出(標(biāo)簽或目標(biāo))之間的關(guān)系來(lái)調(diào)整模型的參數(shù)。
3)目標(biāo)是使得模型能夠在輸入新數(shù)據(jù)時(shí)做出準(zhǔn)確的預(yù)測(cè)或分類。
????????Testing(測(cè)試):
1)測(cè)試指的是使用另一個(gè)獨(dú)立的數(shù)據(jù)集(測(cè)試集)來(lái)評(píng)估訓(xùn)練好的模型的性能和泛化能力。
2)測(cè)試集是模型在訓(xùn)練過(guò)程中沒(méi)有接觸過(guò)的數(shù)據(jù),用于模擬模型在真實(shí)場(chǎng)景中的表現(xiàn)。
3)通過(guò)測(cè)試集,可以評(píng)估模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)或分類準(zhǔn)確率,從而驗(yàn)證模型的效果和可靠性。
Transformer的Training:
????????首先我們知道在訓(xùn)練時(shí),輸入數(shù)據(jù)和對(duì)相對(duì)應(yīng)的輸出都是可見(jiàn)的,訓(xùn)練時(shí),輸入向量經(jīng)輸入嵌入和位置編碼之后進(jìn)入到Transformer中,經(jīng)過(guò)Encoder編碼和Decoder解碼之后會(huì)輸出一個(gè)矩陣,其實(shí)就是一個(gè)幾率的分布。
????????舉個(gè)例子,輸入向量是一個(gè)語(yǔ)音,說(shuō)的是“我學(xué)人工智能”,這時(shí)訓(xùn)練集中相對(duì)應(yīng)的label應(yīng)該是一個(gè)的6*5000的矩陣,分別在:“我學(xué)人工智能”相對(duì)應(yīng)的位置上數(shù)值為1,其他位置的元素為0。
????????將該語(yǔ)音輸入到Transformer中,輸出的同樣也是一個(gè)6*5000的矩陣,但是輸出矩陣的中的元素分布則不會(huì)像訓(xùn)練集中顯示的這樣,剛開(kāi)始會(huì)是一個(gè)隨機(jī)的分布。
????????在訓(xùn)練的過(guò)程中,Transformer的Softmax輸出的矩陣概率分布應(yīng)該與訓(xùn)練集中的矩陣越接近越好,為了讓輸出的概率分布向訓(xùn)練集中的向量靠近,Transformer的損失函數(shù)就是對(duì)于輸出的每一個(gè)位置的向量,與訓(xùn)練集相對(duì)應(yīng)的向量求Cross entropy(交叉熵)。
????????
????????訓(xùn)練的過(guò)程其實(shí)就是Minimize Cross entropy,就是訓(xùn)練時(shí)通過(guò)Gradient descent(梯度下降法)不斷地更新Transformer里面不同的權(quán)重矩陣,偏置項(xiàng)等,直至所有的Cross entropy全部加起來(lái)最小,就算訓(xùn)練成功。
????????當(dāng)然,訓(xùn)練成功之后也不可能輸出結(jié)果與訓(xùn)練集中的矩陣一模一樣,只有目標(biāo)文字的概率為1,其他為零。而是目標(biāo)文字的是詞匯集中概率最大的一項(xiàng)。
Transformer的Testing:
????????而測(cè)試(或稱為評(píng)估)是評(píng)估已經(jīng)訓(xùn)練好的模型在新數(shù)據(jù)上表現(xiàn)的過(guò)程,因?yàn)槭窃u(píng)估,所以測(cè)試時(shí)會(huì)計(jì)算模型的各種性能指標(biāo),但是不會(huì)根據(jù)這些性能指標(biāo)對(duì)模型的參數(shù)進(jìn)行更新,但是可以根據(jù)測(cè)試得到的指標(biāo)挑選訓(xùn)練時(shí)得到的在測(cè)試集上表現(xiàn)更好的模型。
其功能和過(guò)程主要包括以下幾個(gè)方面:
????????1、驗(yàn)證模型泛化能力:
功能:測(cè)試的主要功能是評(píng)估模型在未見(jiàn)過(guò)的數(shù)據(jù)(測(cè)試集)上的表現(xiàn),以驗(yàn)證模型的泛化能力。泛化能力指的是模型在新數(shù)據(jù)上的預(yù)測(cè)或分類能力,而不僅僅是在訓(xùn)練數(shù)據(jù)上的表現(xiàn)。
過(guò)程:通過(guò)將測(cè)試集輸入到訓(xùn)練好的模型中,得到模型在測(cè)試集上的預(yù)測(cè)結(jié)果。然后,可以計(jì)算模型的各種性能指標(biāo)(如準(zhǔn)確度、精確度、召回率、F1分?jǐn)?shù)等)來(lái)評(píng)估模型的整體表現(xiàn)。
????????2、檢測(cè)和解決過(guò)擬合問(wèn)題:
功能:測(cè)試還可以幫助檢測(cè)模型是否出現(xiàn)過(guò)擬合問(wèn)題。過(guò)擬合是指模型在訓(xùn)練集上表現(xiàn)非常好,但在新數(shù)據(jù)上表現(xiàn)較差的情況。通過(guò)測(cè)試集評(píng)估模型,可以發(fā)現(xiàn)模型是否過(guò)度擬合了訓(xùn)練數(shù)據(jù),從而采取措施來(lái)改進(jìn)模型的泛化能力。
過(guò)程:通過(guò)比較模型在訓(xùn)練集和測(cè)試集上的表現(xiàn),可以判斷模型是否存在過(guò)擬合現(xiàn)象。如果模型在訓(xùn)練集上表現(xiàn)非常好,但在測(cè)試集上表現(xiàn)差異較大,很可能是過(guò)擬合問(wèn)題。
????????3、優(yōu)化和調(diào)整模型:
功能:測(cè)試的結(jié)果可以指導(dǎo)優(yōu)化和調(diào)整模型的過(guò)程,以提高模型的預(yù)測(cè)性能和實(shí)用性。
過(guò)程:根據(jù)測(cè)試集的評(píng)估結(jié)果,可以分析模型在不同數(shù)據(jù)上的表現(xiàn)差異,并據(jù)此調(diào)整模型的超參數(shù)、選擇不同的特征工程方法或者改進(jìn)算法,從而改善模型的整體性能。
????????4、決策支持:
功能:測(cè)試結(jié)果還可以為實(shí)際決策提供支持和依據(jù)。在機(jī)器學(xué)習(xí)應(yīng)用中,模型的預(yù)測(cè)能力直接影響業(yè)務(wù)或科學(xué)問(wèn)題的解決方案,測(cè)試評(píng)估提供的性能指標(biāo)可以幫助決策者了解模型是否可以在實(shí)際環(huán)境中部署和使用。
過(guò)程:基于測(cè)試集的評(píng)估結(jié)果,可以對(duì)模型的預(yù)測(cè)能力進(jìn)行客觀評(píng)估,從而決定是否將模型投入實(shí)際應(yīng)用,并對(duì)其預(yù)測(cè)結(jié)果的可靠性進(jìn)行估計(jì)。
????????總結(jié)來(lái)說(shuō),測(cè)試在機(jī)器學(xué)習(xí)中是評(píng)估模型在新數(shù)據(jù)上表現(xiàn)的重要步驟,其過(guò)程不僅幫助評(píng)估模型的泛化能力和預(yù)測(cè)性能,還能指導(dǎo)優(yōu)化模型和進(jìn)行實(shí)際決策。
Training和Testing的注意點(diǎn):
論文:Sequence to Sequence Learning with Neural Networks
[4]Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." Advances in neural information processing systems 27 (2014).論文:Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks
[5]Bengio, Samy, et al. "Scheduled sampling for sequence prediction with recurrent neural networks." Advances in neural information processing systems 28 (2015).
????????首先我們知道Training時(shí)模型是可以看到輸入對(duì)應(yīng)的lable的,在訓(xùn)練的時(shí)候,模型剛開(kāi)始訓(xùn)練或者還沒(méi)有訓(xùn)練好時(shí),輸出的每一個(gè)向量的元素不一定是在目標(biāo)的文字概率最高,那么輸出的結(jié)果就不是是正確的。
????????但是我們知道,Decoder的輸入一部分是來(lái)自Encoder的輸出,還有一部分應(yīng)該來(lái)自Decoder的輸出。當(dāng)前一個(gè)時(shí)間步輸出正確的時(shí)候,下一個(gè)輸出正確的概率當(dāng)然才會(huì)更高。
????????但是輸出剛開(kāi)始肯定不會(huì)是剛好完全正確的,一個(gè)輸出錯(cuò)誤,就可能會(huì)出現(xiàn)一步錯(cuò),步步錯(cuò)的情況。
????????所以在Transformer里,訓(xùn)練是Decoder的輸入是會(huì)“偷看”訓(xùn)練集中l(wèi)abel的,不管Decoder的輸出是什么,Decoder都會(huì)將正確結(jié)果輸入,以便在訓(xùn)練中實(shí)施Gradient descent。這種方法其實(shí)就是Teacher Forcing(翻譯為教師強(qiáng)迫。。。)機(jī)制。
????????而Testing時(shí)則是按照正常的Decoder進(jìn)行,以前一時(shí)間步的輸出作為Decoder的輸入,一步步獲得Decoder的輸出。
????????這時(shí)候就會(huì)有人想啊,既然訓(xùn)練的時(shí)候是以正確答案進(jìn)行訓(xùn)練的,那如果當(dāng)Testing時(shí)Decoder輸出一個(gè)錯(cuò)誤的,那肯定下一個(gè)時(shí)間步的輸出就肯定是錯(cuò)誤的,為了應(yīng)對(duì)這個(gè)情況,一個(gè)比較簡(jiǎn)便的方法就是在訓(xùn)練資料中故意添加一些“錯(cuò)誤”的資料,讓模型學(xué)習(xí)到當(dāng)Decoder的輸入有錯(cuò)誤訊息時(shí),輸出仍然是正確的。這其實(shí)就是Scheduled ?Sampling(計(jì)劃抽樣)的思想。
????????比如,“人工智能”的語(yǔ)音信號(hào)所對(duì)應(yīng)的訓(xùn)練集的label就是“人功智能”,訓(xùn)練完畢之后,在Testing時(shí)輸出“功”并當(dāng)做Decoder的輸入時(shí),由于Training時(shí)已經(jīng)訓(xùn)練好了訓(xùn)練集輸入“功”時(shí),下一個(gè)輸出為“智”,所以在Testing時(shí)也會(huì)輸出“智”,后面的自然也不會(huì)出錯(cuò)。
????????這與我們平時(shí)的觀念可能有所不同,在訓(xùn)練集中故意添加一些錯(cuò)誤的訊息,反而可能會(huì)對(duì)測(cè)試時(shí)的表現(xiàn)有幫助。
相關(guān)參考鏈接:2021 - Transformer (下)_嗶哩嗶哩_bilibili
七、總結(jié)?
??
????????本篇文章基本上將Ttransformr的大部分內(nèi)容都講了,總體而言,Transformer 模型通過(guò)引入自注意力機(jī)制和多頭注意力機(jī)制,擺脫了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)中固有的序列依賴問(wèn)題,使得模型在處理長(zhǎng)距離依賴和大規(guī)模數(shù)據(jù)集時(shí)表現(xiàn)更為出色,成為自然語(yǔ)言處理和序列到序列學(xué)習(xí)的重要里程碑。
????????Transformer涉及內(nèi)容較多,而且前后有很多關(guān)聯(lián)的地方,加上筆者查閱了很多不同類型的相關(guān)資料,本文的邏輯結(jié)構(gòu)不是非常清晰,文中的圖部分是自己在PPT上面畫(huà)的,部分是從論文或者李宏毅老師的視頻里面截圖得到。 公式都是MathType上手打的,想把這個(gè)公式分享出來(lái),但是沒(méi)找到csdn上發(fā)布文件的地方。文中如果有什么講述不清晰,遺漏,錯(cuò)誤的地方,請(qǐng)大家不吝指正。
八、后續(xù)
后續(xù)可能文章的計(jì)劃安排:
????????CNN、Mamba、loss function、Gan(沒(méi)有順序,學(xué)到哪里介紹到哪里);
????????語(yǔ)音領(lǐng)域相關(guān)基礎(chǔ)知識(shí);
????????還可能會(huì)分享一些電路方面的內(nèi)容。
敬請(qǐng)期待!
柚子快報(bào)邀請(qǐng)碼778899分享:Transformer詳解
文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。