摘要
UniLM由微軟研究院在bert的基礎(chǔ)上開發(fā)的新型預(yù)訓(xùn)練模型阳欲,可在自然語言理解和生成任務(wù)上進行微調(diào)眼姐,模型采用了三個任務(wù)進行預(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等。
AE:Autoencoding Language Modeling蛮寂,又叫自編碼語言蔽午。通過上下文信息來預(yù)測當(dāng)前被mask的token,代表有BERT 共郭,Word2Vec(CBOW)祠丝。
AR 語言模型:
- 缺點:它只能利用單向語義而不能同時利用上下文信息。 ELMO 通過雙向都做AR 模型除嘹,然后進行拼接写半,但從結(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)突出堂淡。
語言模型詳解
ELMo 學(xué)習(xí)兩個單向的語言模型,一個前向語言模型扒腕,從左到右讀取文本绢淀,一個后向語言模型,從右向左讀文本瘾腰,encode文本信息皆的。
GPT 采用從左向右的Transformer來逐詞預(yù)測文本。
Bert 使用雙向Transformer encoder蹋盆,將左右的文本信息都融合起來费薄,預(yù)測masked word。Bert在大量的自然語言理解任務(wù)上表現(xiàn)很優(yōu)越栖雾,但雙向的結(jié)構(gòu)使得它很難在自然語言生成的任務(wù)上應(yīng)用义锥。
- UniLM 是一個多層的Transformer網(wǎng)絡(luò)拌倍,在大量文本上進行了聯(lián)合預(yù)訓(xùn)練,針對三種無監(jiān)督語言模型目標(biāo)進行優(yōu)化噪径。單向LM柱恤、雙向LM、sequence to sequence LM找爱。
-
UniLM與Bert對比:
相同點:可以通過fine-tune來適應(yīng)各種下游任務(wù)
不同點:Bert主要用于NLU任務(wù)梗顺。UniLM通過不同的self-attention masks機制,能夠為不同的語言模型來生成不同的文本信息车摄,從而應(yīng)用于NLU和NLG任務(wù)寺谤。
-
UniLM的三個優(yōu)點:
- 不同的LM模型使用共享的參數(shù)和架構(gòu)仑鸥,減輕訓(xùn)練和構(gòu)造多個LM模型的需求
2)由于UniLM的共享參數(shù)在不同的LM目標(biāo)中進行了聯(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)練過程為:給定輸入序列,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ù)中徙赢。
2.1. 輸入表征
模型輸入為單詞序列,在單向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會有所變化咆蒿。
-
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
模型輸入向量:, 首先被包裝為
, 然后通過L層的transformer蔗蹋,在不同層融合上下文信息事期,每個Transformer塊使用多頭注意力融合上一層輸出的向量,編碼為
,
上一層的輸出通過三個參數(shù)矩陣
被線性的投影為queries兽泣,keys和values。
掩碼矩陣M決定一對token在attention中是否會考慮對方胁孙。
文章使用不同的掩碼矩陣M來控制生成一個token的表征時需要考慮的上下文信息唠倦。
2.3 預(yù)訓(xùn)練目標(biāo)
- 完形填空:對于三個LM模型都進行完形填空任務(wù)称鳞,模型在與訓(xùn)練過程中隨機選取輸入中的token,將他們替換成特殊字符[MASK]稠鼻,將這些[MASK]字符的輸出向量放入softmax分類器中來預(yù)測字符的值冈止。UniLM的參數(shù)通過最小化原始tokens和預(yù)測tokens的交叉熵?fù)p失函數(shù)來優(yōu)化。
- 下一句預(yù)測:針對雙向LM模型進行下一句預(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進行初始化,再在英語wikipedia和BookCorpus上進行預(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進行微調(diào)伤为,文本分類任務(wù)中,使用[sos]的輸出向量,標(biāo)為
绞愚,輸入到隨機初始化的softmax分類器中叙甸,分類概率為
,
是參數(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
參考文獻:paper閱讀:UniLM(Unified Language Model Pre-training for Natural Language Understanding and Generation)