語言模型
語言模型是根據語言客觀事實對語言進行抽象數學建模。可以描述為一串單詞序列的概率分布:
通過極大化L可以衡量一段文本是否更像是自然語言(根據文本出現的概率):
函數P的核心在於,可以根據上文預測后面單詞的概率(也可以引入下文聯合預測)。
其中一種很常用的語言模型就是神經網絡語言模型。
神經網絡語言模型NNLM:
給定上文的單詞,利用神經網絡來預測當前位置的單詞。即最大化:
模型結構如下圖所示,首先將one-hot表示的詞向量通過look-up表,也就是矩陣Q,轉換為word embedding的表示,作為輸入層。
訓練剛開始用隨機值初始化矩陣Q,隨着網絡訓練好之后,矩陣Q的內容也被正確賦值了。所以Word Embedding是NNLM的副產物。
這個Word Embedding其實可以單獨拿出來用於下游任務,所以就有了專門預訓練Word Embedding的word2vec。
預訓練語言模型
預訓練首先在計算機視覺領域ImageNet上取得了突破性的進展,人們發現底層的網絡可以捕捉到邊角弧線等基礎特征,而高層網絡捕捉到的特征更為復雜,與下游任務更相關。
所以底層網絡其實是可以在不同的任務間通用的,而高層網絡則可以根據任務進行調整。
底層的網絡參數抽取出特征跟具體任務越無關,則越具備任務的通用性。
而高層特征跟具體任務的關聯較大,實際任務中可以不使用,或者采用Fine-tuning的方法,用新數據集合清洗掉高層無關的特征抽取器。
這種思想后來也被用到了NLP領域。
Word2Vec:
word2vec的主要目的就是訓練得到Word Embedding詞向量,有兩種訓練方式:CBOW(用上下文來預測當前詞),skip-gram(用當前詞預測上下文單詞)。
此外,為了減少計算量,還使用了Negative Sampling,Hierarchical Softmax等方法。
對於下游任務,將句子中的每個詞以one-hot的形式輸入,然后乘以預訓練得到的word embedding矩陣,從而取出對應的詞向量。
使用方式有兩種:
1)Frozen:embedding層的網絡參數不動;
2)Fine-Tuning: embedding層的參數跟着訓練過程一起更新。
不過,這種Word Embedding無法區分一詞多義(因為同一個詞占用的是同一行的參數空間),然而單詞的歧義在語言中廣泛存在(多義性是語言信息編碼的靈活性和高效性的表現)。
為了解決這一問題,就出現了以下一些預訓練模型。以下這些模型不僅可以得到預訓練的詞向量,還可以得到預訓練好的網絡參數,用於下游任務fine-tune。
ELMo:
ELMo的兩個階段:1)預訓練,2)將各層的Embedding作為新特征補充到下游任務中(基於特征融合)。
不僅學到了單詞的Embedding,還學到了一個雙層雙向的LSTM的網絡結構。
缺點(對比后來出現的GPT/BERT):1)特征提取:LSTM的特征抽取能力遠低於Transformer
2)特征融合:淺層的雙向拼接,特征融合能力比較弱
GPT:
特點:1)特征抽取器采用Transformer,抽取能力優於RNN;
2)采用單向的語言模型(漏掉了很多有用信息)(只使用了Transformer的Decoder,所以是單向的)
GPT的兩階段:1)預訓練,2)通過Fine-tuning解決下游任務(基於Fine-tuning)。
Fine-tuning: 對於下游任務,將任務的網絡結構改造成和GPT一樣,使用GPT的參數來初始化。(下圖是不同任務上fine-tune的方法)
BERT:
BERT模型就是預訓練模型的集大成者,刷新了很多任務的benchmark,而且因其通用性,可以應用於很多NLP任務,所以得到了廣泛的使用和傳播。
BERT模型借鑒了很多以往模型的方法,創新不多,其主要創新點在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的representation。
BERT的特點:1)使用Transformer作為特征抽取器,2)預訓練的時候采用了雙向語言模型。(結合了ELMo和GPT的優點)
BERT是一種自編碼的語言模型。
AutoEncoder(自編碼器)是為了避免過擬合,會以一定概率抹掉input矩陣。這種破損數據訓練出來的噪聲較小,因為噪聲也在一定程度上被擦除了,減輕了訓練數據與測試數據的GAP。
BERT就是基於DAE(去噪自編碼器),在BERT中稱為Masked LM。
備注:
Autoregressive ML: 根據上文預測下一個單詞,即LTR任務,或者反過來,從右到左。(ELMo, GPT, XLNET)
Autoencoder ML: 讓語言模型試圖去還原原始輸入的系統。(BERT, RoBerta)
相關資料
NNLM: Yoshua Bengio. A Neural Probabilistic Language Model. JMLR. 2003.
Word2Vec: Efficient Estimation of Word Representations in Vector Space. Tomas Mikolov. 2013. https://arxiv.org/abs/1301.3781v3 (Mikolov是Bengio的高徒)
ELMo: Deep contextualized word representations. Matthew E. Peters. 2018. https://arxiv.org/abs/1802.05365
GPT: Improving Language Understanding by Generative Pre-Training. OpenAI. 2018. https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018. https://arxiv.org/abs/1810.04805
從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史,張俊林. https://zhuanlan.zhihu.com/p/49271699
放棄幻想,全面擁抱Transformer:自然語言處理三大特征抽取器(CNN/RNN/TF)比較。張俊林。 https://zhuanlan.zhihu.com/p/54743941