訂閱
糾錯
加入自媒體

字節(jié)跳動 | AMBERT:一種多粒度Tokenization的預訓練語言模型

2020-09-25 14:55
學術頭條
關注

論文標題:AMBERT: A Pre-trained Language Model with Multi-Grained Tokenization(多粒度分詞的預訓練語言模型AMBERT)

作者:Xinsong Zhang, Hang Li

機構:字節(jié)跳動

圖片標題

摘要

以BERT為代表的預訓練語言模型在自然語言理解(NLU)中的霸主地位毋庸置疑。這些模型中的token通常是細粒度的,對于英文,token是單詞或子詞;對于中文這類語言,token則是單個漢字。在英語中也存在多個單詞組成的自然詞匯單元,例如New York,因此使用粗粒度的tokenization也是合理的。事實上,細粒度和粗粒度tokenization對于預訓練語言模型的學習各有利弊。據(jù)此,字節(jié)跳動提出聯(lián)合使用細粒度和粗粒度的預訓練語言模型:AMBERT。對于英文,將tokenization之后得到的細粒度(一串的單詞)信息和粗粒度(一串的短語)信息輸入到AMBERT,細粒度和粗粒度分別使用一個encoder,這2個encoder僅僅是嵌入層參數(shù)不同,其他參數(shù)共享,從而獲取詞級別的上下文表征和短語級別的上下文表征。在中文上的細粒度和粗粒度分別對應字和詞。在中英文benchmark(包括CLUE, GLUE, SQuAD and RACE)上分別進行實驗。結果表明,AMBERT模型在幾乎所有情況下都優(yōu)于現(xiàn)有性能最好的模型,特別是對中文的性能改善顯著。

模型

AMBERT的整體框架如Figure 3所示。先對輸入文本上進行tokenization,以獲得細、粗粒度的token序列。細、粗粒度token序列再分別輸入到兩個encoder。這里的encoder與BERT或Transformer的encoder的架構完全相同。此外,兩個encoder在每個對應層共享相同的參數(shù),但二者的嵌入層參數(shù)不同。最后分別得到細粒度token序列和粗粒度token序列的的上下文表征。

模型結構簡單到爆,有木有啊?

預訓練

預訓練的目標還是MLM,由于NSP已經是樹倒猢猻散,墻倒眾人推,AMBERT當然站在巨人的肩膀上(踩上一腳),在需要的時候拿過來比(數(shù))較(落)一番。

其中$overline{mathbf{x}}$表示被mask掉的細粒度token(即需要重建出來的token),$hat{mathbf{x}}$表示原文被mask的細粒度token序列。$overline{mathbf{z}}$表示被mask掉的粗粒度token(即需要重建出來的token),$hat{mathbf{z}}$表示原文被mask的粗粒度token序列。

微調

以分類任務上微調為例,將細、粗粒度encoder中 [CLS]的表征,用于下游分類任務。微調過程的優(yōu)化函數(shù)如下:

其中,$mathbf{x}$為輸入的文本,$oldsymbol{y}$表示待預測的文本類別,$oldsymbol{r}_{x 0}$和$oldsymbol{r}_{z 0}$分別是細粒度和粗粒度encoder中特殊token [CLS]的表征。而最后一項則是通過歸一化讓兩個粒度得到的[CLS]表征盡量保持一致。此外,文章還對AMBERT稍作修改,就得到了下述2種變體:

AMBERT-Combo:

用兩個非參數(shù)共享的encoder分別編碼兩種粒度的句子;

AMBERT-Hybrid:

用單個encoder而不是兩個encoder去同時編碼兩種粒度的句子,也就是把粗細粒度的句子先拼接起來再送到BERT里,這就會讓自注意力在不同粒度的句子中進行交互。

實驗

數(shù)據(jù)說明

中文預訓練數(shù)據(jù)集使用一個包含2500萬文檔(57G未壓縮文本))的今日頭條語料庫(估計不會公開的,sad+1)。英文預訓練數(shù)據(jù)集則來自Wikipedia和OpenWebText的1390萬文檔(47G未壓縮文本)的語料庫。對于中文,粗細粒度分別是詞和字,在CLUE上進行評測。分詞工具則是字節(jié)跳動內部開發(fā)的分詞工具(估計也不會開源了sad+10086)。這兩種token的生成過程都利用了WordPiece技術,最終產生的中文詞典分別包含21128個字和72635個詞。對于英文,粗細粒度分別短語和詞。英文單詞是天然的細粒度token,至于粗粒度是先利用KenLM構建n-gram,用頻率足夠高的短語構建短語級別的字典,這些短語的最后一個單詞高度依賴于其前置單詞。最后利用貪心算法對文本進行短語級切分,得到30522個單詞和77645個短語。英文評測任務是在GLUE上進行的,此外還在英文閱讀理解數(shù)據(jù)集SQuAD和RACE進行進一步實驗。

實驗結果:中文數(shù)據(jù)集

中文CLUE上的實驗結果如Table 1和Table 2所示。從實驗結果看,AMBERT在CLUE上確實一枝獨秀,在其中4個任務上取得最優(yōu)結果,但在WSC和CMRC數(shù)據(jù)集上與最優(yōu)結果存在較大差距,特別是CMRC數(shù)據(jù)集上堪稱大型翻車現(xiàn)場(3個百分點的差距)。

實驗結果:英文數(shù)據(jù)集

Table 4和Table 6是AMBERT在GLUE上的實驗結果。在多數(shù)數(shù)據(jù)集上AMBERT要優(yōu)于其他baseline模型,且多粒度的效果確實好于單粒度。但是如果放到更大范圍的模型比較,AMBERT整體上遜色于RoBERTa,但是優(yōu)于其他模型。另外,從機器閱讀理解數(shù)據(jù)集的對比結果Table 5可以看出,在SQuAD上AMBERT大大優(yōu)于Google官方的BERT,而在檢測span任務中,單詞級的BERT通常表現(xiàn)良好,短語級BERT較差。另外,在RACE的dev set 和 test set上,AMBERT發(fā)揮穩(wěn)定,全場最佳。

總結

文章提出多粒度的預訓練模型AMBERT,聯(lián)合使用粗細粒度的語言單元對句子進行切分,從而充分利用二者各自的優(yōu)勢。在中文和英文的自然語言理解任務上證明該模型的有效性,尤其是對中文而言提升效果更加顯著。但是,在中文數(shù)據(jù)集上的比較上有幾個不足:

(1) 中文的分詞工具屬于字節(jié)跳動內部,尚未開源。

(2) 更重要的是,預訓練的數(shù)據(jù)集也是字節(jié)跳動內部的數(shù)據(jù)集,而不是通常中文預訓練使用的中文維基百科語料。作者自己也一再強調,只能作為參考。

(3) 預訓練模型包含代碼和模型均沒有發(fā)布。

基于現(xiàn)況,如此就在CLUE上其他模型比較,似乎有失公允。到底是分詞、數(shù)據(jù)、還是模型優(yōu)勢?雖然作者也一直在強調,對比僅僅作為參考,僅作為參考,作為參考,為參考,參考。。。但是,作為一個既沒有開放源碼也沒有發(fā)布預訓練模型的預訓練語言模型,應該是第一個吧,所以各相關從業(yè)人員于此頗有微詞。未來或許可期,先讓子彈飛一會,讓我們拭目以待。

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號