再談語言模型

標題:

語言模型再自然語言處理任務中有極其重要的作用,大家較爲熟悉的是n-gram類型的語言模型,無論是傳統的方法還是基於NN的方法,都是根據前N個詞 預測當前詞,或者求當前詞的概率。需要求整個序列的概率時需要對序列進行遍歷然後進行累乘操作。其實自然語言的語言模型可以不這樣玩。下面對一些新型的語言模型加以介紹,並探討一下其應用。

新型語言模型:

bert預訓練方式:

任務1: Masked LM
從直覺上看,研究團隊有理由相信,深度雙向模型比left-to-right 模型或left-to-right and right-to-left模型的淺層連接更強大。遺憾的是,標準條件語言模型只能從左到右或從右到左進行訓練,因爲雙向條件作用將允許每個單詞在多層上下文中間接地“see itself”。

爲了訓練一個深度雙向表示(deep bidirectional representation),研究團隊採用了一種簡單的方法,即隨機屏蔽(masking)部分輸入token,然後只預測那些被屏蔽的token。論文將這個過程稱爲“masked LM”(MLM),儘管在文獻中它經常被稱爲Cloze任務(Taylor, 1953)。

在這個例子中,與masked token對應的最終隱藏向量被輸入到詞彙表上的輸出softmax中,就像在標準LM中一樣。在團隊所有實驗中,隨機地屏蔽了每個序列中15%的WordPiece token。與去噪的自動編碼器(Vincent et al., 2008)相反,只預測masked words而不是重建整個輸入。

雖然這確實能讓團隊獲得雙向預訓練模型,但這種方法有兩個缺點。首先,預訓練和finetuning之間不匹配,因爲在finetuning期間從未看到[MASK]token。爲了解決這個問題,團隊並不總是用實際的[MASK]token替換被“masked”的詞彙。相反,訓練數據生成器隨機選擇15%的token。例如在這個句子“my dog is hairy”中,它選擇的token是“hairy”。然後,執行以下過程:

數據生成器將執行以下操作,而不是始終用[MASK]替換所選單詞:

80%的時間:用[MASK]標記替換單詞,例如,my dog is hairy → my dog is [MASK]
10%的時間:用一個隨機的單詞替換該單詞,例如,my dog is hairy → my dog is apple
10%的時間:保持單詞不變,例如,my dog is hairy → my dog is hairy. 這樣做的目的是將表示偏向於實際觀察到的單詞。
Transformer encoder不知道它將被要求預測哪些單詞或哪些單詞已被隨機單詞替換,因此它被迫保持每個輸入token的分佈式上下文表示。此外,因爲隨機替換隻發生在所有token的1.5%(即15%的10%),這似乎不會損害模型的語言理解能力。

使用MLM的第二個缺點是每個batch只預測了15%的token,這表明模型可能需要更多的預訓練步驟才能收斂。團隊證明MLM的收斂速度略慢於 left-to-right的模型(預測每個token),但MLM模型在實驗上獲得的提升遠遠超過增加的訓練成本。

任務2:下一句預測

許多重要的下游任務,如問答(QA)和自然語言推理(NLI)都是基於理解兩個句子之間的關係,這並沒有通過語言建模直接獲得。

在爲了訓練一個理解句子的模型關係,預先訓練一個二進制化的下一句測任務,這一任務可以從任何單語語料庫中生成。具體地說,當選擇句子A和B作爲預訓練樣本時,B有50%的可能是A的下一個句子,也有50%的可能是來自語料庫的隨機句子。例如:

Input = [CLS] the man went to [MASK] store [SEP]

he bought a gallon [MASK] milk [SEP]

Label = IsNext

Input = [CLS] the man [MASK] to the store [SEP]

penguin [MASK] are flight ##less birds [SEP]

Label = NotNext

團隊完全隨機地選擇了NotNext語句,最終的預訓練模型在此任務上實現了97%-98%的準確率。
摘自:https://blog.csdn.net/qq_39521554/article/details/83062188

ELMo模型介紹

ELMo是一種新型深度語境化詞表徵,可對詞進行復雜特徵(如句法和語義)和詞在語言語境中的變化進行建模(即對多義詞進行建模)。我們的詞向量是深度雙向語言模型(biLM)內部狀態的函數,在一個大型文本語料庫中預訓練而成。
說到詞向量,我們一定會聯想到word2vec,因爲在它提出的詞向量概念給NLP的發展帶來了巨大的提升。而ELMo的主要做法是先訓練一個完整的語言模型,再用這個語言模型去處理需要訓練的文本,生成相應的詞向量,所以在文中一直強調ELMo的模型對同一個字在不同句子中能生成不同的詞向量。
他們使用的是一個雙向的LSTM語言模型,由一個前向和一個後向語言模型構成,目標函數就是取這兩個方向語言模型的最大似然。
(1)ELMo的假設前提一個詞的詞向量不應該是固定的,所以在一詞多意方面ELMo的效果一定比word2vec要好。
word2vec的學習詞向量的過程是通過中心詞的上下窗口去學習,學習的範圍太小了,而ELMo在學習語言模型的時候是從整個語料庫去學習的,而後再通過語言模型生成的詞向量就相當於基於整個語料庫學習的詞向量,更加準確代表一個詞的意思。
(2)ELMo還有一個優勢,就是它建立語言模型的時候,可以運用非任務的超大語料庫去學習,一旦學習好了,可以平行的運用到相似問題。
摘自:https://www.cnblogs.com/huangyc/p/9860430.html

應用

上面其實都是語言模型的訓練方法,應用時也是加載預訓練的語言模型,然後應用在文本的語義編碼中。接下來將在NER和文本VAE文本生成兩個方面進行討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章