Transformer&&Bert
Transformer
背景
像在語言建模和機器翻譯等這一些建模和轉(zhuǎn)換問題中,采用的主流框架是編碼器-解碼器框架。傳統(tǒng)的編碼器-解碼器框架采用的主要方法是RNN,而RNN及其衍生的網(wǎng)絡對前后的隱藏狀態(tài)有依賴性,無法實現(xiàn)并行。這樣就導致在訓練長序列任務和較深的網(wǎng)絡時,速度十分緩慢。 而Transformer就利用自注意力機制實現(xiàn)了快速并行,改進了RNN及其衍生網(wǎng)絡訓練慢的特點,同時可以訓練非常深的網(wǎng)絡,從而提高模型的準確率。
模型結(jié)構(gòu)
Transformer最開始用于機器翻譯領域,它的輸入是待翻譯語言的句子,輸出是翻譯好的句子。它的框架是編碼器-解碼器框架,編碼器和解碼器都有六個相同的塊組成,每個塊中都使用了自注意力機制。
Postional Encoding
位置編碼是Transformer里一個重要的部分。因為在注意力機制部分是沒有考慮語序的,也就是說將一個句子隨機打亂輸入到注意力機制層,他的輸出結(jié)果與不打亂是相同的,所以在位置編碼部分,通過完整編碼公式,讓每個位置的編碼值不同以此來記住句子中詞的絕對位置信息,同時由于sin、cos這類周期函數(shù),讓每個位置的詞都能由其他任一位置的此表示以此來記住句子中詞之間的相對位置信息。這樣就彌補了注意力機制層不考慮句子語序的部分。
Self-Attention
注意力機制是Transformer的核心部分,Transformer首發(fā)論文的名字就是《Attention is all your need》,由此也可以看出注意力機制的重要性。注意力機制層通過Q,K,V三個矩陣計算每個詞和句子中每個詞的注意分數(shù)力,相關(guān)性大的注意力分數(shù)就會大,以此讓得到的詞向量不僅僅只包含自身的含義,而是綜合考慮了全局,融入了上下文信息。
Multi-Head Attention
多頭就類似于CNN網(wǎng)絡中的通道,它保證了模型可以注意到不同子空間的信息,從而捕捉到更加豐富的特征信息。
Masked Multi-Head Attention
帶掩碼的多頭注意力機制層位于解碼器中,因為注意力機制能開到上下文的信息,而解碼器在對序列中的一個元素輸出時時不應該看到該元素之后的元素的,因此Transformer中將該元素之后的元素使用< mask >掩蓋起來,其他的與編碼器的注意力機制層相同。
Add & Norm
Add表示殘差網(wǎng)絡,它通過乘法變加法,用于緩解梯度消失,以及來訓練更深層次的網(wǎng)絡。 Norm表示LayerNorm,它對樣本的的元素進行歸一化,以此緩解數(shù)據(jù)的劇烈變化,從而加快模型收斂速度。
Bert
整體框架
Bert采用了Transformer的編碼器結(jié)構(gòu),但是網(wǎng)絡結(jié)構(gòu)比Transformer更深,有BERT BASE 和BERT LARGE兩個版本。Bert是給基于微調(diào)的模型,完成新的任務只需要增加一個簡單的輸出層即可,它在大規(guī)模數(shù)據(jù)上進行訓練,訓練主要分為兩個階段:預訓練階段(在大型數(shù)據(jù)集上進行訓練得到預訓練模型)和Fine-tuning階段(后續(xù)遷移到其他任務中的微調(diào))
對輸入的修改
與Tranformer模型進行比較,Bert對輸入的修改包括以下幾個部分:
輸入的每一個樣本是一個句子對
加入了[CLS]和[SEP]分隔符
使用Segment Embedding區(qū)分每個單詞歸屬于那個句子
位置編碼信息通過模型訓練過程中學習得到的
預訓練任務一:帶掩碼的語言模型
使用 < mask > 隨機掩蓋句子中的一部分單詞,然后傳入Bert模型,預測掩蓋位置的正確單詞,這樣預測詞時能看到上下文的信息,從而更好的根據(jù)全文理解單詞的意思。
預訓練任務二:下一個句子預測
將50%傳入句子對的第二個句子的替換成預料庫中的隨機句子,然后預測第二個句子是否承接上一句,以此讓模型學習到全文的信息。
微調(diào)
預訓練完得到模型之后就可以利用微調(diào)讓模型適應下游任務。