結(jié)合Autoencoding和Autogressive同時(shí)預(yù)訓(xùn)練語言模型

文獻(xiàn)鏈接及詳解見 文獻(xiàn)閱讀(1)-UniLMv2

1. 背景

BERT的出現(xiàn)將NLU問題的SOTA向前提升了很大的一步哩治,然而茬斧,由于BERT屬于Autoencoding語言模型秀仲,需要通過上下文信息來預(yù)測被mask掉的token臀防,在生成模型中會面臨訓(xùn)練過程與預(yù)測過程不一致的問題代虾。因此,BERT并沒有在NLG問題中取得那么好的效果燃异。

UniLMv1用一種elegent的方式將BERT應(yīng)用在NLG任務(wù)中吴裤,并且在使用同一個(gè)model的情況下,僅通過mask矩陣控制輸入就進(jìn)行了不同語言模型的訓(xùn)練日裙。對NLU任務(wù)就是直接使用BERT祭衩,而對seq2seq任務(wù)則是把BERT的"S1 [EOS] S2"當(dāng)成 encoder-decoder結(jié)構(gòu)。UniLMv1可以說結(jié)合了Autoencoding和Autoregressive兩種模型的優(yōu)點(diǎn)阅签,在NLU和NLG任務(wù)中都取得了SOTA的結(jié)果掐暮。

然而,雖然在形式上UniLMv1通過mask矩陣用BERT模擬了Autoregressive模型政钟,但Autoregressive中的一個(gè)核心精髓并沒有體現(xiàn)出來路克,也就是一個(gè)詞預(yù)測的概率和之前預(yù)測出的概率相關(guān)。

更深入的解釋這句話养交,BERT中的掩碼[Mask]之間是相互獨(dú)立的精算。比如“意大利面醬中除了牛肉還需要用到洋蔥和西芹”,如果我們把“洋蔥”和“西芹”mask掉碎连,利用BERT去預(yù)測這兩個(gè)詞灰羽,是分別預(yù)測“洋蔥”和“西芹”。而事實(shí)上,在預(yù)測出“洋蔥”之后廉嚼,“西芹”的概率理應(yīng)受到“洋蔥”的影響玫镐,這在生成任務(wù)中是很自然的,但BERT并沒有很好的體現(xiàn)這一點(diǎn)怠噪。那么本質(zhì)上仍是BERT的UniLMv1自然也不能體現(xiàn)這個(gè)特點(diǎn)恐似。

從另一方面出發(fā),如果我們使用GPT等傳統(tǒng)的Autoregressive模型傍念,他的分解序列都是單向的(GPT的雙向也只是從左到右和從右到左各來一次LSTM矫夷,沒有體現(xiàn)出BERT中“天涯若比鄰”的優(yōu)勢),不能很好的利用全局信息憋槐。因此有了后來的XLNet双藕,把一個(gè)序列的所有tokens做一次全排列,綜合考量所有分解順序阳仔,每種分解序列都做一個(gè)Autoregressive忧陪,這樣實(shí)際上全局信息還是被捕獲到了。

而UniLMv2驳概,則是在BERT的架構(gòu)下赤嚼,結(jié)合了XLNet序列分解的想法旷赖,在UniLMv1中消除了[Mask]之間的獨(dú)立性顺又,又保留了不同語言模型共享參數(shù)的統(tǒng)一訓(xùn)練模式,從而取得了比UniLMv1更好的效果等孵。

2. 實(shí)現(xiàn)思路

2.1 掩碼塊和分解序列

類似于XLNet稚照,把masked positions做一次全排列。例如俯萌,mask掉第二果录,第四和第五個(gè)tokens,那么全排列有六種咐熙。

當(dāng)序列是2 \to 4 \to 5時(shí)弱恒,掩碼概率是

p(x_2 | x_{\setminus \{ 2,4,5 \}})p(x_4 | x_{\setminus\{4,5\}})p(x_5|x_{\setminus \{5\}})
事實(shí)上,相鄰tokens間往往會有較強(qiáng)的關(guān)系棋恼,為了避免模型過多的只學(xué)到local關(guān)系而忽視global關(guān)系返弹,UniLMv2采取了Partially Autoregressive,將一個(gè)或幾個(gè)相鄰tokens封裝入一個(gè)span爪飘,對于整個(gè)個(gè)序列的所有spans义起,相當(dāng)于還是Autoregressive,但每個(gè)span中的tokens不相互attention师崎,這樣避免了總是focus在local shortcuts上默终。

還是剛才的序列,把4, 5封裝在一個(gè)span里,序列變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=2%20%5Cto%204%2C5" alt="2 \to 4,5" mathimg="1">齐蔽,掩碼概率變成了

p(x_2 | x_{\setminus \{ 2,4,5 \}})p(x_4 | x_{\setminus\{4,5\}})p(x_5|x_{\setminus \{4,5\}})

2.2 偽掩碼預(yù)訓(xùn)練模型

這一部分的描述在原文中比較清晰两疚,可以參考我的文獻(xiàn)閱讀筆記 文獻(xiàn)閱讀(1)-UniLMv2

UniLMv2和UniLMv1一脈相承的點(diǎn)是都用mask矩陣來優(yōu)雅地控制輸入進(jìn)行訓(xùn)練,但UniLMv2中肴熏,mask矩陣的設(shè)計(jì)要更加復(fù)雜鬼雀,我們來看一個(gè)mask矩陣的樣例:



self-attention公式為:

A_l=\text{softmax}( \frac {QK^\intercal}{ \sqrt{d_k}}+M )(H^{l-1}W^V_l )

在公式中可以看出mask矩陣M的第(i, j)項(xiàng)表示 output token_i能不能看到 input token_j的信息(能就是0,不能就是- \infty)蛙吏。

把矩陣行列調(diào)整一下順序更有助于我們理解(行是output源哩,列是input):



也就是論文中的:



從中我們可以總結(jié)出如下幾個(gè)原則:

1. 掩碼 [M] 和未被mask的原碼(這里是x_1,x_3,x_6)能看到的信息:

  • 所有的掩碼 [M] 和所有未被mask的原碼(x_1,x_3,x_6)。
    (這其實(shí)就是Autoencoder鸦做,也就是BERT的訓(xùn)練方式励烦。事實(shí)上左上角是個(gè)0矩陣,也就是說mask矩陣M不起任何作用泼诱,可以直接拿掉坛掠,就變成了Autoencoder)

2. 被mask掉的原碼(x_2,x_4,x_5)能看到的信息:

  • 所有的掩碼 [M],所有未被mask的原碼x_1,x_3,x_6(左半邊7治筒,8屉栓,9行)。
  • 它們自身耸袜。
  • 分解序列中前序序列的原碼友多。這里分解序列是4,5 \to 2,因此x_2可以看到x_2,x_4,x_5x_4,x_5看不到x_2堤框,只能看到他們自己域滥。(這體現(xiàn)出了序列分解Autoregressive的思想)

3. 偽掩碼 [P] 能看到的信息:

  • 所有的掩碼 [M]和所有未被mask的原碼(左半邊11,12蜈抓,13行)启绰。
  • 它們自身。
  • 前序序列的原碼沟使,比如這里P_2X_2的偽掩碼)能看到X_4,X_5委可。

這樣的設(shè)計(jì)同時(shí)結(jié)合了Autoencoder和 Partially Autoregressive,AE就是0矩陣腊嗡。
而PAR着倾,按照如上的原則,我們看一下偽掩碼 [P] 都能看到什么:

  • P_4, P_5: X_1M_2X_3P_4P_5M_4M_5X_6
  • P_2: X_1P_2M_2X_3X_4X_5M_4M_5X_6

而這正是PAR的設(shè)計(jì):


另外叽唱,值得注意的是屈呕,偽掩碼實(shí)際上起到的是占位符的作用,因此可以看到原碼時(shí)棺亭,則對應(yīng)的 [P] 不能被看到虎眨。比如X_2不能看到P_2,P_4,P_5X_4,X_5不能看到P_4,P_5(不能看到P_2不是因?yàn)檎嘉唬琼樞蛏媳旧砭涂床坏剑┧宰6?img class="math-inline" src="https://math.jianshu.com/math?formula=P_2" alt="P_2" mathimg="1">因?yàn)榭吹搅?img class="math-inline" src="https://math.jianshu.com/math?formula=X_4%2CX_5" alt="X_4,X_5" mathimg="1">就看不到P_4,P_5岳守。因此,最終呈現(xiàn)上偽掩碼只能被同一span內(nèi)的偽掩碼看到碌冶。

這樣的設(shè)計(jì)原則湿痢,除了同時(shí)體現(xiàn)出AE和PAR(也就是本文說的對兩種LM參數(shù)共享,一次forward就把兩個(gè)LM都訓(xùn)練了扑庞,計(jì)算效率高)以外譬重,還有一個(gè)很重要的點(diǎn),就是防止信息泄露

信息泄露分為兩種:
1. 直接泄露:

所有的掩碼罐氨,如果直接看到其所對應(yīng)原碼臀规,quiz的設(shè)計(jì)就失去意義了,訓(xùn)練時(shí)只需要把權(quán)重堆在這個(gè)通路上就行了栅隐,一定會過擬合塔嬉。

上述原則可以觀察到,無論是 [M] 還是 [P]租悄,都無法看到其所對應(yīng)的原碼谨究,這樣就避免了直接泄露。

2. 間接泄露:

因?yàn)閙odel的結(jié)構(gòu)是多層attention泣棋,因此如果存在這樣一條路徑P_4 \to X_6 \to X_4(兩層attention造成的)胶哲,X_4的偽掩碼間接接觸了它的原碼,也會造成過擬合的問題外傅。

觀察上面的規(guī)則纪吮,我們先除去AE部分的X_1,X_3,X_6M_2,M_4,M_5(因?yàn)橛稍瓌t1俩檬,這一部分只能看到這一部分自己萎胰,形成了閉環(huán),而閉環(huán)內(nèi)顯然是不存在直接泄露的棚辽,通路中一旦鏈到了這個(gè)閉環(huán)技竟,也就無法泄露,因此可以去除掉)

我們先看X_4及其偽掩碼P_4屈藐。P_4只能看到P_4,P_5榔组,而P_4,P_5永遠(yuǎn)只能看到P_4,P_5。另一個(gè)角度联逻,X_4只能被X_2,X_4,X_5以及P_2看到搓扯,而P_4,P_5的閉環(huán)顯然是看不到這些的。

X_2P_2也是一樣包归,P_2只能看到它自己和X_4,X_5锨推,而X_4,X_5只能看到它們自己,因此永遠(yuǎn)看不到X_2。事實(shí)上换可,X_2只能被它自己看到椎椰。

通過上述分析我們可以看出,被mask掉的原碼只能被它們自己沾鳄,以及后序的原碼和偽掩碼看到慨飘。而由原則3,偽掩碼只能看到它們自己和前序的原碼译荞,前序原碼又只能看到更前序的原碼瓤的,永遠(yuǎn)看不到后序的原碼和偽掩碼,因此不存在這樣一條通路的存在吞歼,也就杜絕了間接泄露堤瘤。

2.3 預(yù)訓(xùn)練

類似UniLMv1,在同時(shí)訓(xùn)練Autoencoding模型和Partially Autoregressive時(shí)共享參數(shù)浆熔,使訓(xùn)練出的model能夠結(jié)合兩種語言模型的優(yōu)點(diǎn)本辐。而誤差函數(shù)則是兩種語言模型誤差的和。

3.結(jié)論

在許多NLG和NLU的baseline上取得了SOTA医增,證明了模型的有效性慎皱。對PMLM進(jìn)行的消融研究表明了兩種語言模型在預(yù)訓(xùn)練時(shí)是互補(bǔ)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叶骨,一起剝皮案震驚了整個(gè)濱河市茫多,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忽刽,老刑警劉巖天揖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異跪帝,居然都是意外死亡今膊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門伞剑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斑唬,“玉大人,你說我怎么就攤上這事黎泣∷×酰” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵抒倚,是天一觀的道長褐着。 經(jīng)常有香客問我,道長托呕,這世上最難降的妖魔是什么含蓉? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任洋访,我火速辦了婚禮,結(jié)果婚禮上谴餐,老公的妹妹穿的比我還像新娘姻政。我一直安慰自己,他們只是感情好岂嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布汁展。 她就那樣靜靜地躺著,像睡著了一般厌殉。 火紅的嫁衣襯著肌膚如雪食绿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天公罕,我揣著相機(jī)與錄音器紧,去河邊找鬼。 笑死楼眷,一個(gè)胖子當(dāng)著我的面吹牛铲汪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罐柳,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼掌腰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了张吉?” 一聲冷哼從身側(cè)響起齿梁,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肮蛹,沒想到半個(gè)月后勺择,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伦忠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年省核,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缓苛。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芳撒,死狀恐怖邓深,靈堂內(nèi)的尸體忽然破棺而出未桥,到底是詐尸還是另有隱情,我是刑警寧澤芥备,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布冬耿,位于F島的核電站,受9級特大地震影響萌壳,放射性物質(zhì)發(fā)生泄漏亦镶。R本人自食惡果不足惜日月,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缤骨。 院中可真熱鬧爱咬,春花似錦、人聲如沸绊起。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虱歪。三九已至蜂绎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笋鄙,已是汗流浹背师枣。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萧落,地道東北人践美。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像找岖,于是被迫代替她去往敵國和親拨脉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345