【論文筆記】UniLM - Unified Language Model Pre-training for Natural Language Understanding and Generation

摘要

UniLM由微軟研究院在bert的基礎(chǔ)上開發(fā)的新型預(yù)訓(xùn)練模型,可在自然語言理解和生成任務(wù)上進(jìn)行微調(diào),模型采用了三個任務(wù)進(jìn)行預(yù)訓(xùn)練:單向、雙向、sequence to sequence預(yù)測。采用共享的Transformer網(wǎng)絡(luò)和特殊的attention掩碼機制,結(jié)合了AR和AE語言模型的優(yōu)點,在抽象摘要、生成式問題回答語言生成數(shù)據(jù)集的抽樣領(lǐng)域取得了最優(yōu)秀的成績。

1. 介紹

AR: Aotoregressive Lanuage Modeling,又叫自回歸語言模型。它指的是,依據(jù)前面(或后面)出現(xiàn)的tokens來預(yù)測當(dāng)前時刻的token,代表模型有ELMO、GPT等。

img

AE:Autoencoding Language Modeling,又叫自編碼語言。通過上下文信息來預(yù)測當(dāng)前被mask的token,代表有BERT ,Word2Vec(CBOW)。

img

AR 語言模型:

  • 缺點:它只能利用單向語義而不能同時利用上下文信息。 ELMO 通過雙向都做AR 模型,然后進(jìn)行拼接,但從結(jié)果來看,效果并不是太好。
  • 優(yōu)點: 對自然語言生成任務(wù)(NLG)友好,天然符合生成式任務(wù)的生成過程。這也是為什么 GPT 能夠編故事的原因。

AE 語言模型:

  • 缺點: 由于訓(xùn)練中采用了 [MASK] 標(biāo)記,導(dǎo)致預(yù)訓(xùn)練與微調(diào)階段不一致的問題。 此外對于生成式問題, AE 模型也顯得捉襟見肘,這也是目前 BERT 為數(shù)不多實現(xiàn)大的突破的領(lǐng)域。

  • 優(yōu)點: 能夠很好的編碼上下文語義信息, 在自然語言理解(NLU)相關(guān)的下游任務(wù)上表現(xiàn)突出。

語言模型詳解

  1. ELMo 學(xué)習(xí)兩個單向的語言模型,一個前向語言模型,從左到右讀取文本,一個后向語言模型,從右向左讀文本,encode文本信息。

  2. GPT 采用從左向右的Transformer來逐詞預(yù)測文本。

  3. Bert 使用雙向Transformer encoder,將左右的文本信息都融合起來,預(yù)測masked word。Bert在大量的自然語言理解任務(wù)上表現(xiàn)很優(yōu)越,但雙向的結(jié)構(gòu)使得它很難在自然語言生成的任務(wù)上應(yīng)用。

詞向量經(jīng)典模型:從word2vec、glove、ELMo到BERT_xiayto的博客-CSDN ...
  1. UniLM 是一個多層的Transformer網(wǎng)絡(luò),在大量文本上進(jìn)行了聯(lián)合預(yù)訓(xùn)練,針對三種無監(jiān)督語言模型目標(biāo)進(jìn)行優(yōu)化。單向LM、雙向LM、sequence to sequence LM。
image-20200722200845834
image-20200722200430548
  • UniLM與Bert對比:

    相同點:可以通過fine-tune來適應(yīng)各種下游任務(wù)

    不同點:Bert主要用于NLU任務(wù)。UniLM通過不同的self-attention masks機制,能夠為不同的語言模型來生成不同的文本信息,從而應(yīng)用于NLU和NLG任務(wù)。

  • UniLM的三個優(yōu)點:

    1. 不同的LM模型使用共享的參數(shù)和架構(gòu),減輕訓(xùn)練和構(gòu)造多個LM模型的需求

    2)由于UniLM的共享參數(shù)在不同的LM目標(biāo)中進(jìn)行了聯(lián)合優(yōu)化,所以學(xué)習(xí)到的文本表征具有更高的普適性,減緩了單個LM模型的過擬合問題。

    3)在NLU任務(wù)的應(yīng)用外,UniLM能夠作為sequence to sequence模型使用,從而應(yīng)用于NLG任務(wù)中,比如抽象摘要,問答生成。

2. 預(yù)訓(xùn)練

預(yù)訓(xùn)練過程為:給定輸入序列x=x_1,...,x_{|x|},UniLM為每一個token訓(xùn)練出一個融合上下文信息的向量表征,即詞向量。

UniLM通過三個無監(jiān)督語言模型目標(biāo)優(yōu)化共享的Transformer network,LM目標(biāo)分別為:單向LM,雙向LM,sequence-to-sequence LM。UniLM通過特殊的self-attention機制來控制在訓(xùn)練過程中考慮的文本信息,這種self-attention機制通過mask來決定計算每個token
的向量表征時應(yīng)該考慮的context是哪些。

在雙向LM模型中,沒有任何mask,因為上下文信息都會被融入token中。在從左向右的單向LM模型中,矩陣上半三角會被mask掉,因為token只考慮左邊的文本信息。在seq-to-seq模型中,句子s1的矩陣部分沒有mask,s1因為s1融合上下文信息,句子s2矩陣的右上三角有mask,因為s2融合了s1的信息和左邊的文本信息。

當(dāng)UniLM預(yù)訓(xùn)練完成以后,便可通過fine-tuning來應(yīng)用到下游任務(wù)中。

image-20200722200845834

2.1. 輸入表征

模型輸入x為單詞序列,在單向LM中為文本片段,在雙向LM和seq-to-seq LM中為一對文本片段。

我們在輸入的開頭加上開始符號[SOS],每個片段的結(jié)尾加上結(jié)束符[EOS],在NLU任務(wù)中,結(jié)束符用于標(biāo)志句子的邊界信息,在NLG任務(wù)重,結(jié)束符還可以讓學(xué)到何時終止解碼步驟。

輸入的表征和Bert一致,每個token的向量表征為相應(yīng)的token embedding,position embedding,sgment embedding的加和。但UniLM在優(yōu)化不同的LM模型時,segment embedding會有所變化。

image-20200722211324258
  • Token Embeddings 詞的向量表示

    token embedding 層是要將各個詞轉(zhuǎn)換成固定維度的向量。在BERT中,每個詞會被轉(zhuǎn)換成768維的向量表示。

  • Segment Embeddings 輔助BERT區(qū)別句子對中的兩個句子的向量表示

    BERT 能夠處理對輸入句子對的分類任務(wù)。這類任務(wù)就像判斷兩個文本是否是語義相似的。句子對中的兩個句子被簡單的拼接在一起后送入到模型中。那BERT如何去區(qū)分一個句子對中的兩個句子呢?答案就是segment embeddings.

    Segment Embeddings 層只有兩種向量表示。前一個向量是把EA賦給第一個句子中的各個token, 后一個向量是把EB賦給第二個句子中的各個token。如果輸入僅僅只有一個句子,那么它的segment embedding就是全EA。

  • Position Embeddings 讓BERT學(xué)習(xí)到輸入的順序?qū)傩?/strong>

    加入位置信息,能讓模型理解相同單詞在不同句子中不同位置的信息,學(xué)習(xí)到不同的向量表示。

    實現(xiàn)過程中,Bert處理512個token的輸入,詞向量維度為768,position embedding是(512,768)的lookup表,序列的每個位置的position embedding對應(yīng)表中相應(yīng)的行。

    因此,如果有這樣兩個句子“Hello world” 和“Hi there”, “Hello” 和“Hi”會由完全相同的position embeddings,因為他們都是句子的第一個詞。同理,“world” 和“there”也會有相同的position embedding。

2.2. 骨干網(wǎng)絡(luò):多層Transformer

模型輸入向量:\{X_i\}_{i=1}^{|x|}, 首先被包裝為H^0=[x_1,...,x_{|x|}], 然后通過L層的transformer,在不同層融合上下文信息,每個Transformer塊使用多頭注意力融合上一層輸出的向量,編碼為H^l=[h_1^l,...,h_{|x|}^l],H^l = Tranformer_l(H^{l-1}),l\in[1,L],

image-20200723102851540

上一層的輸出H^{l-1}\in R^{|x|\times d_h}通過三個參數(shù)矩陣W\in R^{d_h\times d_k}被線性的投影為queries,keys和values。

掩碼矩陣M決定一對token在attention中是否會考慮對方。

文章使用不同的掩碼矩陣M來控制生成一個token的表征時需要考慮的上下文信息。

2.3 預(yù)訓(xùn)練目標(biāo)

  1. 完形填空:對于三個LM模型都進(jìn)行完形填空任務(wù),模型在與訓(xùn)練過程中隨機選取輸入中的token,將他們替換成特殊字符[MASK],將這些[MASK]字符的輸出向量放入softmax分類器中來預(yù)測字符的值。UniLM的參數(shù)通過最小化原始tokens和預(yù)測tokens的交叉熵?fù)p失函數(shù)來優(yōu)化。
  2. 下一句預(yù)測:針對雙向LM模型進(jìn)行下一句預(yù)測任務(wù),操作和bert一致。目的是讓模型理解兩個句子之間的聯(lián)系。訓(xùn)練的輸入是句子A和B,B有一半的幾率是A的下一句,輸入這兩個句子,模型預(yù)測B是不是A的下一句。預(yù)訓(xùn)練的時候可以達(dá)到97-98%的準(zhǔn)確度。

2.4 預(yù)訓(xùn)練設(shè)置

整體的訓(xùn)練目標(biāo)為各LM模型訓(xùn)練目標(biāo)的總和。在每個訓(xùn)練批次中,1/3使用雙向LM目標(biāo),1/3使用seq-to-seq LM目標(biāo),自左向右和自右向左的單向LM目標(biāo)都為1/6。

UniLM的模型構(gòu)架和Bert Large版本一樣,激活函數(shù)和GPT一樣用gelu。此外,本模型采用24層transformer,隱層節(jié)點為1024,注意力頭數(shù)16,包含360M參數(shù)。

UniLM使用Bert Large進(jìn)行初始化,再在英語wikipedia和BookCorpus上進(jìn)行預(yù)訓(xùn)練。詞典大小為28,996,輸入句子的最大長度為512。

輸入token被mask掉的概率為15%,其中10%用隨機token替換,10%保持用原始token,80%用[mask]替換。此外,80%情況下mask一個token,20%情況下mask bigram或trigram。

2.5 在下游NLU和NLG任務(wù)中微調(diào)

  • NLU任務(wù)

    使用雙向tranformer encoder進(jìn)行微調(diào),文本分類任務(wù)中,使用[sos]的輸出向量,標(biāo)為h_1^L,輸入到隨機初始化的softmax分類器中,分類概率為softmax(h_1^LW^C)W^C\in R^{d_h \times C}是參數(shù)矩陣,C是類別數(shù)目。

  • NLG任務(wù)

    使用seq-to-seq模型,微調(diào)過程和預(yù)訓(xùn)練中使用self-attention masks相同。S1為源序列,S2為目標(biāo)序列,輸入為“[sos] s1 [eos] s2 [eso]”,模型通過隨機在s2中mask一定比例的token,學(xué)習(xí)去還原這些token。訓(xùn)練目標(biāo)為在給定上下文的時候最大化masked tokens的概率。在生成的過程中,若預(yù)測出了[eos]則代表生成結(jié)束。

實驗

  • 抽象摘要

    image-20200723143437231
  • 問答

    image-20200723143447925
  • 問題生成、回復(fù)生成

    image-20200723143502064

參考文獻(xiàn):paper閱讀:UniLM(Unified Language Model Pre-training for Natural Language Understanding and Generation)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容