字節(jié)跳動 | AMBERT:一種多粒度Tokenization的預訓練語言模型
論文標題: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對于預訓練語言模型的學習各有利弊。據此,字節(jié)跳動提出聯合使用細粒度和粗粒度的預訓練語言模型:AMBERT。對于英文,將tokenization之后得到的細粒度(一串的單詞)信息和粗粒度(一串的短語)信息輸入到AMBERT,細粒度和粗粒度分別使用一個encoder,這2個encoder僅僅是嵌入層參數不同,其他參數共享,從而獲取詞級別的上下文表征和短語級別的上下文表征。在中文上的細粒度和粗粒度分別對應字和詞。在中英文benchmark(包括CLUE, GLUE, SQuAD and RACE)上分別進行實驗。結果表明,AMBERT模型在幾乎所有情況下都優(yōu)于現有性能最好的模型,特別是對中文的性能改善顯著。
模型
AMBERT的整體框架如Figure 3所示。先對輸入文本上進行tokenization,以獲得細、粗粒度的token序列。細、粗粒度token序列再分別輸入到兩個encoder。這里的encoder與BERT或Transformer的encoder的架構完全相同。此外,兩個encoder在每個對應層共享相同的參數,但二者的嵌入層參數不同。最后分別得到細粒度token序列和粗粒度token序列的的上下文表征。
模型結構簡單到爆,有木有啊?
預訓練
預訓練的目標還是MLM,由于NSP已經是樹倒猢猻散,墻倒眾人推,AMBERT當然站在巨人的肩膀上(踩上一腳),在需要的時候拿過來比(數)較(落)一番。
其中$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)化函數如下:
其中,$mathbf{x}$為輸入的文本,$oldsymbol{y}$表示待預測的文本類別,$oldsymbol{r}_{x 0}$和$oldsymbol{r}_{z 0}$分別是細粒度和粗粒度encoder中特殊token [CLS]的表征。而最后一項則是通過歸一化讓兩個粒度得到的[CLS]表征盡量保持一致。此外,文章還對AMBERT稍作修改,就得到了下述2種變體:
AMBERT-Combo:
用兩個非參數共享的encoder分別編碼兩種粒度的句子;
AMBERT-Hybrid:
用單個encoder而不是兩個encoder去同時編碼兩種粒度的句子,也就是把粗細粒度的句子先拼接起來再送到BERT里,這就會讓自注意力在不同粒度的句子中進行交互。
實驗
數據說明
中文預訓練數據集使用一個包含2500萬文檔(57G未壓縮文本))的今日頭條語料庫(估計不會公開的,sad+1)。英文預訓練數據集則來自Wikipedia和OpenWebText的1390萬文檔(47G未壓縮文本)的語料庫。對于中文,粗細粒度分別是詞和字,在CLUE上進行評測。分詞工具則是字節(jié)跳動內部開發(fā)的分詞工具(估計也不會開源了sad+10086)。這兩種token的生成過程都利用了WordPiece技術,最終產生的中文詞典分別包含21128個字和72635個詞。對于英文,粗細粒度分別短語和詞。英文單詞是天然的細粒度token,至于粗粒度是先利用KenLM構建n-gram,用頻率足夠高的短語構建短語級別的字典,這些短語的最后一個單詞高度依賴于其前置單詞。最后利用貪心算法對文本進行短語級切分,得到30522個單詞和77645個短語。英文評測任務是在GLUE上進行的,此外還在英文閱讀理解數據集SQuAD和RACE進行進一步實驗。
實驗結果:中文數據集
中文CLUE上的實驗結果如Table 1和Table 2所示。從實驗結果看,AMBERT在CLUE上確實一枝獨秀,在其中4個任務上取得最優(yōu)結果,但在WSC和CMRC數據集上與最優(yōu)結果存在較大差距,特別是CMRC數據集上堪稱大型翻車現場(3個百分點的差距)。
實驗結果:英文數據集
Table 4和Table 6是AMBERT在GLUE上的實驗結果。在多數數據集上AMBERT要優(yōu)于其他baseline模型,且多粒度的效果確實好于單粒度。但是如果放到更大范圍的模型比較,AMBERT整體上遜色于RoBERTa,但是優(yōu)于其他模型。另外,從機器閱讀理解數據集的對比結果Table 5可以看出,在SQuAD上AMBERT大大優(yōu)于Google官方的BERT,而在檢測span任務中,單詞級的BERT通常表現良好,短語級BERT較差。另外,在RACE的dev set 和 test set上,AMBERT發(fā)揮穩(wěn)定,全場最佳。
總結
文章提出多粒度的預訓練模型AMBERT,聯合使用粗細粒度的語言單元對句子進行切分,從而充分利用二者各自的優(yōu)勢。在中文和英文的自然語言理解任務上證明該模型的有效性,尤其是對中文而言提升效果更加顯著。但是,在中文數據集上的比較上有幾個不足:
(1) 中文的分詞工具屬于字節(jié)跳動內部,尚未開源。
(2) 更重要的是,預訓練的數據集也是字節(jié)跳動內部的數據集,而不是通常中文預訓練使用的中文維基百科語料。作者自己也一再強調,只能作為參考。
(3) 預訓練模型包含代碼和模型均沒有發(fā)布。
基于現況,如此就在CLUE上其他模型比較,似乎有失公允。到底是分詞、數據、還是模型優(yōu)勢?雖然作者也一直在強調,對比僅僅作為參考,僅作為參考,作為參考,為參考,參考。。。但是,作為一個既沒有開放源碼也沒有發(fā)布預訓練模型的預訓練語言模型,應該是第一個吧,所以各相關從業(yè)人員于此頗有微詞。未來或許可期,先讓子彈飛一會,讓我們拭目以待。

請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
10月23日火熱報名中>> 2025是德科技創(chuàng)新技術峰會
-
10月23日立即報名>> Works With 開發(fā)者大會深圳站
-
10月24日立即參評>> 【評選】維科杯·OFweek 2025(第十屆)物聯網行業(yè)年度評選
-
11月27日立即報名>> 【工程師系列】汽車電子技術在線大會
-
12月18日立即報名>> 【線下會議】OFweek 2025(第十屆)物聯網產業(yè)大會
-
精彩回顧立即查看>> 【限時福利】TE 2025國際物聯網展·深圳站