預訓練
先在某個任務(訓練集A或者B)進行預先訓練,即先在這個任務(訓練集A或者B)學習網絡參數,然后存起來以備后用。當我們在面臨第三個任務時,網絡可以采取相同的結構,在較淺的幾層,網絡參數可以直接加載訓練集A或者B訓練好的參數,其他高層仍然隨機初始化。底層參數有兩種方式:frozen,即預訓練的參數固定不變,fine-tuning,即根據現在的任務調整預訓練的參數。
優勢:
1、當前任務數據量少,難以訓練更多的網絡參數,可以加載預訓練的模型,然后根據當前的任務對參數進行fine-tuning,以適合當前的任務。
2、即使當前任務的數據量不少,使用預訓練模型可以加快模型的收斂。
原理:
1、在底層抽出來的特征與任務無關,越具備任務的通用型,所以可以使用底層預訓練好的參數初始化新的任務。
2、高層任務與具體的任務關聯性較大,所以在高層不使用預訓練參數或者采用fine-tuning方式在當前數據集上清洗掉高層無關的特征提取器。
Word2vec
word2vec就是nlp中預訓練的一種方式。但是word2vec有一個缺點就是無法解決多義詞,因為每一個詞只有用一個向量表示。
ELMO
ELMO是“Embedding from Language Models"簡稱。在此之前word embedding本質是個靜態方式,靜態的意思就是說單詞訓練好之后就固定了,在以后使用時,單詞不會跟着上下文場景變化而變化。
ELMO的本質思想是:事先用一個語言模型去學習單詞的word embedding, 當我在使用時,單詞已經具備了特定的上下文,這時候可以根據上下文的語義去調整單詞的word embedding, 這樣經過調整的word embedding更能表達這個上下文中具體的含義,也就解決了一詞多義問題,故ELMO本質就是根據當前上下文對Word Embedding進行動態調整的過程。
Elmo采用典型的兩階段過程:第一階段使用預訓練語言模型進行訓練,第二階段當做具體的下游任務時,從預訓練的網絡中提取對應的詞的Word Embedding作為特征補充到下游任務中。
第一階段,預訓練:采用雙層雙向LSTM對上下文進行編碼,上下文使用靜態的word embedding, 對每層LSTM,將上文向量與下文向量進行拼接作為當前向量,利用大量的預料訓練這個網絡。對於一個新的句子,可以有三種表示,最底層的word embedding, 第一層的雙向LSTM層的輸出,這一層能學習到更多句法特征,第二層的雙向LSTM的輸出,這一層能學習到更多詞義特征。經過elmo訓練,不僅能夠得到word embedding, 又能學習到一個雙層雙向的神經網絡。
第二階段,下游任務使用:將一個新的句子作為elmo預訓練網絡的輸入,這樣該句子在elmo網絡中能獲得三個embedding, 可以將三個embedding加權作為word embedding, 並將此作為下游任務的輸入,這被稱為“Feature-based Pre-Training"。
GPT
GPT是Generative Pre-Training的簡稱。與ELMO相似,采用兩階段的模式:利用語言模型進行預訓練,通過fine-tuning模式應用到下游任務。
利用語言模型進行預訓練:與elmo不同的是,GPT使用transformer進行提取特征,並且是單向的transformer,只是根據上文來預測某個詞。
fine-tuning: 想GPT網絡看起,根據GPT網絡來更改自己任務結構。這樣就可以使用手頭數據對當前任務進行fine-tunining.
BERT
BERT是“Bidirectional Encoder Representations from Transformers"的簡稱。
同GPT采用兩階段模式:利用雙向語言模型進行預訓練,通過fine-tuning模式解決下游任務。
BERT創新: Masked語言模型和Next Sentence Prediction。
Masked語言模型, 即隨機選擇一部分單詞進行mask,然后預測這些單詞,其方式和CBOW類似,為了解決fine-tuning階段不需要mask,所以bert中只選擇15%作為mask的候選,在這15%中80%不做處理,10%進行mask,10%進行替換【不太理解為什么成立】
next sentence prediction:之所以這么做,是考慮到很多NLP任務是句子關系判斷任務,單詞預測粒度的訓練到不了句子關系這個層級,增加這個任務有助於下游句子關系判斷任務。
BERT的輸入: 輸入的部分是個線性序列,兩個句子之間使用sep進行分割,在開頭和結尾分別加一個特殊字符。對於每一個字符都是由三種embedding組成,位置信息embedding, 單詞embedding和句子embdding,三種embedding疊加便是bert的輸入。
總結
word2vec: nlp中最早的預訓練模型,缺點是無法解決一詞多義問題.
ELMO:
優點: 根據上下文動態調整word embedding,因為可以解決一詞多義問題;
缺點:1、使用LSTM特征抽取方式而不是transformer,2、使用向量拼接方式融合上下文特征融合能力較弱。
GPT:.
優點:使用transformer提取特征
缺點:使用單項的語言模型,即單向transformer.
BERT: 優點:使用雙向語言模型,即使用雙向transformer;使用預測目標詞和下一句這中多任務學習方式進行訓練。