解讀預訓練語言模型的2019:爆款新模型井噴,BERT要被全面碾壓了嗎?

本文是 InfoQ“解讀 2019”年終技術盤點系列文章之一。

自Google在2018年推出預訓練語言模型BERT,在11項NLP任務上達到最高水平,預訓練語言模型的研究與應用成爲學術界和工業界廣泛關注的重點,被認爲開啓了自然語言處理的新篇章。在2019年各大公司和高校陸續發佈了自己的預訓練語言模型,如:Facebook發佈的RoBERTa,CMU發佈的XLNet,Stanford發佈的ELECTRA,還有百度的ERNIE模型等,不斷刷新自然語言理解任務的最高表現,並且在細粒度輿情分析,序列化推薦等不同場景下展現了巨大的應用價值。本文着重對預訓練語言模型的重要意義,當前的發展,包括模型,訓練方法等進行了總結、回顧與探討,也歡迎同行業的學者,專家交流指正。

預訓練語言模型簡介

語言模型的任務是根據一個句子裏的已知詞預測句子裏的未知詞,在自動填充(如:在電子郵件書寫過程中的自動補全),機器翻譯,語音識別等方向有着廣泛的應用,傳統的語言模型包括n-gram,HMM等。在2003年Joshua Bengio首次提出使用神經網絡來建模語言模型,由於近期一系列有影響力的預訓練語言模型的工作都是基於神經網絡的,本章節將重點關注神經語言模型。

神經語言模型不僅提供了強大的建模語言模型的工具,同時,也提供了詞,句子以及文本的向量表示。2013年誕生了被大家廣泛使用的Word2Vec,利用語言模型作爲訓練任務,得到詞的向量表示,這裏每個詞的向量表示是固定的,與上下文無關,例如:“bank”的詞向量表示在“bank of China”和“river bank”這兩個不同的上下文裏面都是一樣的。2017年ELMo利用雙向LSTM獲取了一個基於上下文的詞向量表示(contextualized word embedding),使得每個詞的向量表示包含了上下文的語義信息,例如前面的例子裏面,“bank”一詞在使用ELMo得到的embedding在不同的上下文是不一樣的。此後的一系列工作都採用了基於上下文的詞向量表示。

一個革命性的工作是2018年誕生的BERT,該工作將Transformer的架構引入了預訓練語言模型,並開啓了Pretraining-Finetuning的框架。該框架在預訓練階段基於大規模無監督語料進行兩個預訓練任務,分別是詞級別和句子級別的,一個是MLM(Masked Language Modeling),另外一個是NSP(Next Sentence Prediction),MLM是從一個部分被Mask的句子恢復這些被Mask 掉的確實詞,NSP是判斷一個句對是不是上下句,從而獲取基於上下文的詞和句子的表示。在Finetune階段,針對具體的下游任務,BERT會微調中間層參數以調整詞的Embedding以及調整預測層的參數,成功的將預訓練學到的詞和句子的表示遷移到下游任務中,實現了對低資源任務的有效支撐。

預訓練語言模型的發展現狀

由於BERT取得的巨大成功,2019年在預訓練語言模型方面涌現了一大批有效,實用並且帶給人來啓發的工作。由於篇幅有限,本文未能列舉所有工作,只會挑選一些來闡述。下面在模型,預訓練任務和算法三個維度進行總結。

模型方面

模型方面主要有以下幾個方面的改進。

位置信息編碼方式。BERT的網絡架構是一個多層的Transformer網絡,由於Transformer並沒有直接考慮輸入的token的位置信息,原始的Transformer模型和BERT分別採用了函數式和參數式的絕對位置編碼方式,即每一個位置上輸入的token會疊加一個與位置信息相關的一個embedding(這個embedding稱爲絕對位置編碼:absolute position embedding,APE),前者的位置編碼是一個與位置相關的函數,後者則是模型參數的一部分,在預訓練過程中學到的。此後,CMU和Google提出的Transformer-XL和XLNet提出了相對位置編碼方式,即在每一層計算隱狀態的相互依賴的時候考慮它們之間的相對位置關係,這個相對位置信息表示爲一個相對位置編碼(relative position embedding,RPE),這兩個工作均在相對位置編碼中加入了可學習的參數。此後,華爲發佈的NEZHA模型使用了完全函數式的相對位置編碼(相對位置編碼沒有任何需要學習的參數),實驗結果表明該位置編碼方式使得模型在各個下游任務上的效果均得到明顯提升。

詞表embedding矩陣的分解與中間層的層共享。 Google發佈的ALBERT針對詞表embedding矩陣進行了矩陣分解,將原先的大小爲VH的詞表embedding矩陣分解爲兩個大小分別爲VE和E*H的low-rank矩陣相乘的形式,其中V,H分別爲詞表大小以及模型隱狀態維度,E則是遠小於V和H的值,因而這個方法有效的減少了詞表embedding的參數。同時,該模型採用了層共享技術,並嘗試了共享中間層多頭注意力或者是Feed Forward Network的參數。實驗證明該方法在顯著少於原始BERT參數量的前提下在多個下游任務上大大超越了BERT

預訓練任務方面

在詞級別的訓練任務方面,一個爲大家廣泛使用且證明有效的方法是全詞Mask技術。不同於原始的BERT模型Mask單個Token,該技術在MLM預訓練任務中Mask整個詞而不是單個Token(如下圖全詞Mask方法Mask了一整個詞“大興”),進而提升了任務難度使得BERT學到更多語義信息。此任務在Google發佈的英文BERT的訓練以及哈工大和科大訊飛聯合發佈的中文BERT模型以及華爲發佈的NEZHA模型中得到了應用。

百度發佈的ERNIE模型在詞法,句法以及語義方面分別引入了若干任務。詞法方面,百度ERNIE採用了Knowledge Masking的方法,即MLM預訓練任務中Mask若干實體。句法方面,其採用了句子重排序以及句子距離計算的任務。語義方面,百度ERNIE使用了大量來自搜索引擎的數據,採取了信息檢索相關的任務。

CMU和Google聯合發佈的XLNet框架統一了預訓練語言模型的Autoencoder和Auto-regressive兩種框架。預訓練階段,一改原始BERT通過引入[MASK]字符來恢復缺失詞,XLNet則是通過Auto-regressive的方式,逐個生成一個句子中的缺失詞。這樣的方式使得預訓練和Finetune階段都不需要引入[MASK]字符,解決了原始BERT的預訓練和Finetune不一致(discrepancy)的問題(原始BERT的預訓練語料中包含[MASK]字符而Finetune則不包含)。與此同時,Auto-regressive的生成方式也使得生成詞之間具有一定的依賴,後生成的詞會依賴之前生成的詞,解決了原始BERT中各個缺失詞互相之間獨立生成的問題。此外,訓練過程中,XLNet還將一個句子的缺失詞進行了多次不同順序的生成,充分利用了語料的語義信息。

華盛頓大學和Facebook聯合發佈的SpanBERT模型還引入了Span預測任務,該任務Mask一個連續的Span(例如下圖中“場”,“很”,“不”三個字),利用Span前後的兩個字的最上層表示(下圖中的x3和x7)以及待預測字的位置信息來預測該字,如下圖中,待預測字爲“不”,Span預測任務會使用x3,x7和“不”這個字的位置信息(就是x3和x6還有p7,即“不”這個字的絕對位置編碼)來預測該字,“場”和“很”的預測也是同樣的方法。該方法使得Span前後的字的表示會包含Span中字的語義信息,由於在訓練過程中,一個句子會被隨機Mask很多次,所以句子中每個字都有機會成爲Span的前後字,進而使得各個字學到的表示都會包含周圍Span的信息,Span預測任務能夠有效提高模型在下游的Span抽取任務(此任務的目標是獲取一段文字中目標片段的開始和結束位置)的效果。

斯坦福大學提出的ELECTRA模型採用了生成對抗式的方法訓練模型。生成器採用了BERT模型,即一個Denoising Autoencoder,恢復一個句子中被Mask的詞,由於BERT不可能達到100%的復原,被恢復的詞有一些是原句中的原詞,有一些則被替換成了別的詞。辨別器也是一個多層的Transformer網絡,其訓練任務是辨別生成器輸出的句子中哪些詞是原詞,哪些是被替換的。在ELECTRA中,最終保留的是辨別器,由於預訓練階段,在生成器中,各個句子中的每一個詞的表示都被使用來進行一個二分類任務(即是否是原詞),相比原始的BERT(只有15%不到的詞的表示被拿來做預測),ELECTRA的sample的利用率非常之高,進而收斂很快,在相同的FLOPS的情況下,性能優於BERT,ROBERTa等同樣規模的預訓練語言模型。

訓練算法

在訓練算法方面,當前有兩個廣泛使用的方法。

第一個在訓練過程中變量的精度方面做了優化,此方法被稱爲混合精度訓練(Mixed Precision Training),在傳統的深度學習訓練過程中,所有的變量包括weight,activation和gradient都是用FP32(單精度浮點數)來表示。而在混合精度訓練過程中,每一個step會爲模型的所有weight維護一個FP32的copy,稱爲Master  Weights,在做前向和後向傳播過程中,Master Weights會轉換成FP16(半精度浮點數)格式,權重,激活函數和梯度都是用FP16進行表示,最後梯度會轉換成FP32格式去更新Master Weights。

第二個主要是優化算法方面的,此優化算法被稱爲LAMB優化器,通常在深度神經網絡訓練的Batch Size很大的情況下(超過一定閾值)會給模型的泛化能力帶來負面影響。而LAMB優化器通過一個自適應式的方式爲每個參數調整learning rate,能夠在Batch Size很大的情況下不損失模型的效果,使得模型訓練能夠採用很大的Batch Size,進而極大提高訓練速度。在訓練BERT的研究中,使用LAMB優化器在不損失模型效果的前提下,Batch Size達到了超過30k,使得BERT的訓練時間從3天降到了76分鐘。

總結與展望

預訓練語言模型在大規模無監督文本上進行預訓練,將得到的詞和句子的表示成功遷移到廣泛的下游任務上,並取得了巨大成功,尤其對於低資源場景。2019年涌現出的一大批在預訓練語言模型的探索工作主要圍繞在預訓練任務方面,通過設計任務使模型學到更加豐富有效的語義信息。

在未來,筆者認爲預訓練語言模型還有着巨大的發展空間。

筆者認爲模型方面的發展方向有兩條線:1,模型效果方面,根據XLNet的實驗,我們看到當前即使large量級的模型還只能underfit海量的數據,因此,模型方面就效果而言還有很大的改進空間;2,訓練效率方面,當前的訓練各個預訓練語言模型在幾十塊GPU的算力下還是需要若干天,算力和資金消耗巨大,如何巧妙設計模型,降低冗餘的計算也是一個重要問題。

此外,2019年的大部分工作是基於BERT做了很多嘗試性的工作,比如:函數式相對位置編碼方面,經過嘗試發現效果好,但似乎缺少針對性,筆者認爲這是在模型的理論方面可解釋性不夠造成的,我們很難理解Transformer架構到底有什麼欠缺,到底哪裏學不好,每一部分到底起到什麼作用,因而很難有針對性的改進方案。現有的解釋性工作大多集中在解釋預訓練語言模型的功能,如:學到的詞表示是否能夠做詞法和句法分析等,原理性的解釋比較少,北京大學提出的MacaronNET 是一個很好的原理方面的解釋性工作,用偏微分方程解釋Transformer的工作原理,從數學的角度準確定量地闡釋了Transformer的機制,不過確實需要很強的數學功底才能吃透,2020期待更多這方面的工作。

作者介紹

魏俊秋博士,華爲高級技術專家,華爲諾亞方舟實驗室語音語義組的研究員,博士畢業於香港科技大學計算機系,本科畢業於南京大學。長期從事時空數據分析、主題模型、預訓練語言模型的研究,在國際頂級會議和期刊,如:SIGMOD、TKDE、ICDM、TKDD發表論文數篇,並曾在國際知名會議,如:COLING、BIG DATA、BiGComp、PAKDD擔任程序委員會委員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章