?

探索中文預訓練模型的混合粒度編碼和IDF遮蔽

2024-03-26 02:51邵云帆孫天祥邱錫鵬
中文信息學報 2024年1期
關鍵詞:詞表詞頻語料

邵云帆,孫天祥,邱錫鵬

(復旦大學 計算機科學技術學院,上海 200433)

0 引言

不同于英語或其他能輕易區分字詞的語言,中文句子中不包含顯式的分詞信息。在自然語言處理任務中,通常用兩種粒度來編碼和處理中文文本,詞級別和字級別[1-3]。然而,如今大部分的中文預訓練語言模型都采用字級別的細粒度編碼方式。這會讓句子被編碼為很長的序列,增加模型的計算開銷。而計算開銷的增加,在預訓練語言模型中更加明顯。原因是預訓練語言模型大都以Transformer作為主要模型架構。而Transformer的時間和空間復雜度都是O(L2),其中L是編碼句子的長度。另一方面,詞級別的粗粒度編碼方式一般需要結合性能良好的中文分詞器。當采用詞級別編碼的預訓練語言模型被用于不同的數據集時,需要考慮所結合的中文分詞器的領域遷移問題。當數據分布在模型應用領域和分詞器的訓練領域中的差異過大時,分詞器的性能會有所下降,影響預訓練語言模型的編碼效果。更重要的是,詞級別的粗粒度編碼存在詞典外詞、數據稀疏以及錯誤傳播等問題[4-6]。這些問題進一步阻礙了粗粒度編碼方式在預訓練語言模型中的直接使用。

盡管詞級別編碼方式有著眾多不足,近年來,有許多工作顯示詞級別的粗粒度信息能夠增強采用字級別編碼的中文預訓練語言模型。一種融合粗粒度信息的方式是將詞級別的編碼作為額外的特征輸入模型[7-9]。這一方式往往需要引入額外的參數并增加模型的計算和存儲開銷。另一種融合方式是利用詞級別的信息改進預訓練任務。一些工作嘗試改進預訓練中的遮蔽掩碼策略,將隨機遮蔽改為遮蔽句子中的粗粒度信息,如遮蔽詞、短語或者實體[1,10-11]。改進后的預訓練任務能增強模型的性能,但是訓練后的模型依舊用細粒度的字來編碼文本。此外,在預訓練時,粗粒度遮蔽的方法需要識別句子中的詞、短語或實體,這通常需要一個高質量詞典。在大規模預訓練語料中,通常難以得到這樣的詞典,而用現有的詞典可能會產生領域不匹配問題。

為了結合字級別和詞級別編碼的優點,探索高效的中文預訓練模型編碼粒度和編碼方式。本文做出了以下改進:

首先,探索了基于混合粒度編碼的中文預訓練模型的有效性。在這一編碼中,單字、詞語和短語可以同時出現,共同編碼文本?;旌狭6染幋a的詞表通過數據驅動的算法直接在預訓練數據中得到[12]。相比之前的中文預訓練語言模型,我們的模型編碼效率更高,同時也避免了詞表外詞(OOV)問題,緩解了預定義詞表與訓練數據的領域不匹配問題。

另外,由于混合粒度的編碼擴大了模型詞表,可能需要用更有效率的方式預訓練語言模型。為了加速預訓練過程,我們提出了IDF遮蔽,一種基于詞語逆向文檔頻率(IDF)信息[13]的遮蔽策略。詞語的IDF信息直接從預訓練語料中統計得到,以緩解數據分布不一致問題。在預訓練時優先遮蔽高IDF的詞語并讓模型預測。高IDF的詞語相比隨機挑選的詞出現概率更低,更加難以被預測。因此,這一預訓練任務能鼓勵模型捕捉更充分的上下文信息,從而加速模型的收斂。

我們在多個中文自然語言處理任務中進行了實驗,證明了本文方法的有效性。在CLUE基準數據集上超越了BERT、RoBERTa等預訓練模型。

1 方法

1.1 混合粒度編碼

相比直接使用一個訓練好的中文分詞器,我們采用一元語言模型(Unigram Language Model)來獲取混合粒度編碼詞表。更具體地,我們采用一個基于一元語言模型的無監督詞表構建算法SentencePiece[14],在中文預訓練語料上得到混合粒度的詞表和每個詞的出現概率。這一算法的使用讓我們不用對語料進行分詞處理,因此避免了因引入分詞器而帶來的數據分布不一致。

具體而言,我們基于句子中每個元素的出現概率都相互獨立這一假設,使用一元語言模型建模語料中的句子。對于任意句子x,可以看成是詞表中元素詞元的(token)的序列x=(x1,x2,…,xN),因此,句子的出現概率可以表示為:

(1)

其中,N是句子中詞元個數,p(xi)是詞表中詞元xi的出現概率,服從條件:

(2)

其中,V是預先給定的固定大小的詞表。詞表的構建對于詞信息的利用至關重要。多粒度中文預訓練模型一般通過在語料上統計詞頻得到高頻詞以構建詞表[7-9, 15]。這些詞表中的詞一般質量較高,有清晰的詞邊界。然而,這些詞表并未針對編碼效率進行優化,若直接用于混合粒度編碼,可能會出現編碼后序列過長、詞表過大、詞表利用率低等問題。與詞頻統計方法不同的是,我們采用Kudo等[12]提出的算法,在大規模語料上迭代式地優化詞表在整個數據集上的似然L,從而使得到的詞表更適用于混合粒度編碼。具體而言,基于一元語言模型,計算整個數據集的似然L,并進行優化,如式(3)所示。

(3)

其中,|D|為整個語料的句子數,S(X)是句子X的分詞候選集合,P(x)的定義如式(1)。直接優化似然L計算量過大,因此這里使用EM算法并進行迭代優化。首先,算法根據語料統計得到一個大的初始詞表,然后循環迭代式地逐步刪除詞表中的詞,針對數據集似然L進行優化,直到詞表大小符合預定義的閾值。具體的循環刪詞步驟為:

(1) 使用EM算法計算詞表中每個詞的概率p(xi),使數據集似然L最大。

(2) 針對每個詞xi計算lossi,表示將詞xi移除后似然L的減小量。

(3) 保留lossi較高的前μ%(一般取80%)的詞。

表1 不同詞表的對比

有了混合粒度的編碼詞表,就可以將任意句子編碼為混合粒度的詞元序列。具體而言,對于一段輸入文本X,我們找到一串詞元序列x,使得總概率最大,如式(4)所示。

(4)

其中,S(X)是句子X的分詞候選集合。集合中的每一段分詞序列都由詞表中的詞元組成,并且詞表中包含了大量細粒度的詞元,即漢字和字母。因此,在詞表中不存在的詞,會被拆分成字序列加以表示。這樣我們的分詞算法就可以避免詞表外詞(OOV)的問題。我們采用維特比算法[16]來得到概率最高的詞元序列,避免遍歷S(X)中的所有情況,減少了分詞時所需的開銷。

1.2 基于IDF的遮蔽策略

我們觀察到,混合粒度編碼增加了詞表大小,這可能使得預訓練語言模型需要訓練更多的步數才能達到原有的效果。一方面,這會引入更多參數來表示詞表中的詞元向量。另一方面,基于齊夫定律,詞表中的詞元在數據集中呈現長尾分布,存在極少的高頻詞元和大量的低頻詞元[17]。這樣高度偏斜的詞頻分布會導致數據稀疏的問題,即大量的詞向量很少出現,也很難被訓練。

為了更加系統地了解這一問題,我們在預訓練語料上進行分詞,并計算了每個詞的詞頻和逆文檔頻率(IDF)[13]。對于一個詞w,它的逆文檔頻率可以表示為:

(5)

其中,PD(w)是詞w在文檔中的出現概率,Nw是包含詞w的文檔數,N是語料中的總文檔數。

正如圖1中的結果所示,詞頻分布有著很大的方差,分布范圍從101到108,并且大部分的詞都只有很低的詞頻(小于103),顯然這會導致數據稀疏問題。

圖1 預訓練語料中詞的詞頻和逆文檔頻率(IDF)的分布圖

為了緩解這一問題,一個簡單直接的思路是在預訓練時增加低頻詞的被遮蔽和被預測概率。然而,根據圖1,擁有相似詞頻的詞語可能有著差異很大的數據分布,而這一分布可以利用IDF來描述。如在圖1中,我們展示了詞頻約為2 000時,不同詞語的IDF值。其中高IDF的詞可能是實體或名詞,而帶有低IDF值的詞含有的語義信息較少。這說明IDF值相比詞頻而言,在篩選低頻詞時更加可靠。

因此,我們提出IDF遮蔽策略來加速預訓練過程,并增強模型的表達能力。具體的處理流程如圖2所示,我們首先在預訓練語料中統計得到大規模詞表以及對應的IDF值。在預訓練時,我們首先利用現有分詞器將句子分為由n個詞組成的序列,然后從詞表中得到每個出現詞的IDF值,進一步從中取IDF值最大的k個詞作為候選集;最后,在候選集中隨機采樣m個詞作為遮蔽詞。由于IDF詞表一般遠大于混合粒度的編碼詞表,遮蔽詞可能橫跨多個混合粒度詞元序列。為了減少分詞器的錯誤傳播,我們選擇能覆蓋遮蔽詞的連續混合粒度詞元序列進行遮蔽,即以詞粒度選擇遮蔽范圍,以模型編碼粒度進行遮蔽。因為IDF詞表的數據從預訓練語料中得到,緩解了數據分布不一致的問題。另外,IDF遮蔽還增加了預訓練任務的難度。相比隨機遮蔽策略和簡單的詞級別遮蔽策略,IDF遮蔽策略讓模型更加難以利用局部信息預測遮蔽位置的詞,進而使得模型建模更豐富的、跨度更大的上下文信息,從而增強了模型的表達能力[11]。

圖2 混合粒度編碼的模型使用IDF遮蔽訓練時的數據處理流程

2 實驗設置

2.1 預訓練設置

為了公平對比,我們使用大規模開源數據進行預訓練,處理后數據集大小為13 GB,包含九百萬個文檔。對于混合粒度編碼的詞表,設置詞表大小為6萬,用SentencePiece在預訓練語料中隨機采樣的2 000萬個句子進行一元語言模型的訓練。對于IDF遮蔽需要的低頻詞表和IDF值信息,我們首先用現有的中文分詞器,將預訓練語料分詞,然后統計詞頻和IDF值,略去詞頻小于10的詞。最后得到的IDF詞表包含了大約100萬個詞。我們采用BERT-base架構,即12層的雙向Transformer編碼器,768維隱向量,前饋網絡中間層維度為3 072,12個注意力頭,每個注意力向量的維度為64。我們從頭開始預訓練,以公平對比,并使用Adam優化器訓練模型100萬步,最大句子長度為512,一個批次有384個句子。我們利用學習率先熱身(Warmup)再衰減策略,學習率從零開始線性增加1萬步,達到峰值10-4,然后線性衰減到零。遵循RoBERTa的超參數設置,我們將Adam的beta設為(0.9,0.98),參數衰減(Weight Decay)設為0.01。在預訓練時,我們將遮蔽比例設為15%,并采用IDF遮蔽策略。其中,k為句子總詞數的30%,m為句子總詞數的15%。如當句子中包含512個詞時,候選集大小k=154,遮蔽詞數量m=77。整個預訓練在8塊英偉達RTX3090顯卡(顯存為24 GB)上完成,需要7天左右的時間。

2.2 下游任務設置

2.2.1 數據集

為了測試不同領域以及不同句長分布下模型的性能,我們選用以下數據集進行實驗:

CLUE中文語言理解基準分類數據集[18]: 包含了6個數據集,語義相似度匹配數據集AFQMC,文本分類數據集IFLYTEK和TNEWS,自然語言推理數據集CMNLI,代詞消歧數據集WSC,以及論文關鍵詞匹配數據集CSL。與Zhang等相同,我們在TNEWS和CSL上使用了數據增強[8]。此外,我們還在情感分析數據集ChnSentiCorp[19],篇章級文本分類THUCNEWS[20]句對語義匹配數據集LCQMC[21]上測試了我們的模型。

對于已有分詞標注的任務(如詞性標注,命名實體識別,基于Span的閱讀理解等),在使用混合粒度編碼時,直接使用傳統方式微調會由于分詞不一致問題產生性能損失。針對這些任務,可以采用以下方法: ①改進解碼方式,讓模型預測詞邊界; ②直接使用字粒度編碼微調; ③配合其他字粒度編碼器同時使用;這些改進能緩解分詞不一致問題,我們將混合粒度編碼在這些任務中的擴展作為未來工作。

2.2.2 微調實驗設置

對于基準模型,我們選擇幾個有代表性的主流中文預訓練語言模型進行比較,以證明本文所提出的方法的有效性。為了與其他不同的編碼方式進行比較,選取的模型有字級別、詞級別以及多粒度融合字詞的中文預訓練語言模型:

BERT: 為了充分比較,我們選取幾種不同的BERT實現: ①由谷歌發布的中文版BERT模型[22],在中文wiki上使用隨機遮蔽訓練,在本文中用BERT(Google)表示; ②由Cui等發布的基于整詞遮蔽訓練的BERT-wwm[2],在本文中簡寫為BERT; ③由Zhang和Li得到的詞級別BERT[8],簡稱BERT(word)。

RoBERTa: 我們使用Cui等發布的RoBERTa-wwm-ext進行實驗[2]。這一模型使用谷歌BERT初始化,在大規模語料上訓練100萬步得到。

AMBERT: 由Zhang等提出的多粒度編碼模型[8],分別使用兩個參數共享的編碼器處理細粒度和粗粒度分詞的文本。

LICHEE: 通過改進詞嵌入層融合文本的多粒度信息的預訓練方法[15]。作者將這一方法在不同結構的預訓練模型上進行了應用。我們選用LICHEE-BERT進行對比。

Lattice-BERT: 通過改進注意力機制以編碼Lattice結構的多粒度中文預訓練模型[9]。

我們對所有模型都使用統一的微調流程,針對每個數據集,僅使用該數據集的訓練集進行微調。在每個數據集上,都進行有限的網格搜索。其中,設置批量大小為{16,32},學習率為{1,2,3,5}×10-5,訓練周期在除了WSC的數據集上取{5,8},在WSC上固定為80個周期。對于CLUE分類數據集,本文取開發集正確率最高的模型在測試集上進行預測,并匯報測試集的正確率。對于其他數據集,我們運行5次相同設置的實驗,并同時匯報最佳和平均正確率。

3 實驗結果與分析

3.1 主實驗結果

我們匯報了基準模型以及我們的模型分別在CLUE分類數據測試集上的性能,結果列在表2中。對于其他數據集,我們的結果列在表3中,其中,“?”表示本文根據原論文復現后的結果,括號中的數字為平均值,括號前的數字為最高值。

表2 不同模型在CLUE基準測試中測試集上的正確率 (單位: %)

表3 不同模型在三個數據集上的正確率對比 (單位: %)

如表2和表3所示,混合粒度編碼相比單一粒度的中文預訓練模型,如BERT和RoBERTa等,有著明顯的性能優勢。如表2所示,而對比其他多粒度編碼的預訓練模型,如AMBERT、LICHEE-BERT和Lattice-BERT等,也有很強的競爭力。同時,混合粒度編碼減短了輸入長度,提高了模型推理效率。

3.2 混合粒度編碼的有效性

混合粒度編碼的一大優勢是相比細粒度的編碼,在保持模型的表達能力不變的同時,能夠縮短編碼序列的長度,并能減少模型的計算量。我們隨機從數據集中抽取不同句子長度的文本,并計算這些文本用不同編碼方式所需要的模型計算量,即FLOPs。結果如圖3所示,混合粒度編碼有效減少了計算開銷,在長文本上效果尤為明顯。

圖3 字級別編碼方式(BERT)和混合粒度編碼(Ours)在不同長度下的相對計算開銷比較

我們進一步在不同數據集上對比不同編碼方式的平均編碼長度,并分別記錄推理時間,結果如表4所示,相比字粒度編碼,混合粒度編碼縮小了文本的平均編碼長度,并加快了推理速度。

表4 不同編碼方式在不同數據集上的平均編碼長度和推理時間比較

為了進一步比較不同的編碼方式,我們去除了IDF遮蔽,使用和BERT相同的整詞遮蔽進行訓練和比較。如表5所示,我們的模型“Our BERT(mixed)”就編碼效率而言優于同等數據量訓練的BERT模型。為了公平比較,用同樣的數據集和超參復現了BERT,結果見“Our BERT(char)”??梢钥吹絀DF遮蔽相比整詞遮蔽能同時為字級別和混合粒度編碼的預訓練模型帶來性能提升。當IDF遮蔽配合混合粒度編碼時,所帶來的提升更加明顯。

表5 不同編碼方式和遮蔽方式在CLUE基準測試中驗證集上的正確率(除特殊標明模型使用整詞遮蔽訓練) (單位: %)

3.3 IDF遮蔽的有效性

為了更進一步地證明IDF遮蔽策略的有效性,我們分別使用IDF遮蔽策略以及整詞遮蔽策略預訓練了語言模型,最終結果見表5。配合混合粒度編碼,我們的模型最終能在CLUE驗證集上取得76.13%的平均性能。而單獨在字級別預訓練模型上使用IDF遮蔽,增強了預訓練任務的難度,從而也增強了模型的性能(表5)。

我們選取出優化了不同步數的模型在TNEWS數據集上進行微調。結果如圖4所示,當訓練步數相同時,使用了IDF遮蔽策略的模型的下游任務性能比整詞遮蔽策略優化的模型要好,并且隨著訓練步數的增加IDF遮蔽策略將持續地提升模型的性能,在訓練1M步后依然保持了性能增長趨勢,并且大幅超過了整詞遮蔽策略訓練的模型。

圖4 使用不同遮蔽方式訓練的模型在TNEWS驗證集上的性能隨預訓練步數的變化情況

為了更細致地比較IDF遮蔽策略和整詞遮蔽策略的不同,我們隨機采樣了約2 000萬個詞的預訓練語料(約200 MB),分別使用整詞遮蔽和IDF遮蔽選擇遮蔽詞,并將被遮蔽的詞數按詞頻進行統計,結果如圖5所示。相比整詞遮蔽,IDF遮蔽傾向于選擇詞頻在102~106的中低頻詞進行掩碼,而顯著減少高頻詞(詞頻高于108)的掩碼次數。如圖5所示,IDF遮蔽改變了不同詞頻的詞被遮蔽的概率,而非完全忽略高頻詞。因為IDF遮蔽僅在句內進行IDF排序和選擇,而語料中存在很多僅由高頻詞組成的句子,這時IDF遮蔽從句中選擇的遮蔽詞(其在句內排序IDF很高)在整個語料上IDF很低,屬于高頻詞。

圖5 不同遮蔽方式中被遮掩詞在語料中的詞頻分布

4 相關工作

4.1 多種粒度編碼的中文預訓練模型

現存的中文預訓練語言模型通常將句子以字序列的方式編碼。然而,這會使得長句子難以被表示,會產生很大的計算開銷。同時,這也忽略了中文豐富的粗粒度信息。為了融合粗粒度信息到中文預訓練語言模型中,Zhang等提出了使用兩個參數共享的編碼器分別建模粗粒度和細粒度的信息[8]。而Diao等提出使用一個額外的編碼器單獨建模N元(N-Gram)信息,并逐層融合到細粒度編碼的預訓練語言模型中[7]。然而,這些額外引入的編碼器會引入大量的參數,額外增加了計算和存儲開銷。Li等將文本進行細粒度編碼的同時,加入了Lattice信息作為模型的輸入,并提出了表示Lattice結構的相對位置編碼,使得模型能同時建模多種粒度的文本[9]。然而,Li等的模型結構使得輸入序列變長,相對位置編碼也存在較大的計算開銷,大大增加了模型的計算量。相比之前的工作,我們提出的混合粒度編碼能將句子表示為較短的序列,增加了模型的編碼效率。

4.2 詞信息增強的遮蔽語言建模

相比僅使用隨機遮蔽的預訓練任務,有一系列工作顯示,遮蔽文本中的詞、短語和實體進行訓練,將會增強預訓練模型的性能[1, 9-11]。例如,谷歌在BERT的基礎上,使用整詞遮蔽訓練了BERT-wwm。Joshi等人提出SpanBERT,隨機遮蔽連續的詞元序列,從而進一步增加任務難度[10-12]。ERNIE為了融合知識到模型中,提出遮蔽句子中的實體。針對融合了Lattice信息的模型,Li等提出先將文本分成幾個互相沒有Lattice信息連邊的幾個分割,然后以分割為單元遮蔽[9]。這樣的模型無法直接利用相連的Lattice信息進行預測,增加了預測難度。ERNIE-Gram提出在訓練細粒度編碼的語言模型時,可以同時讓模型預測文本中的粗粒度信息,從而增強模型的性能[22]。這樣模型仍然建模細粒度分詞的文本,在預訓練時使用整詞遮蔽后,模型需同時預測被遮蔽詞以及詞的細粒度信息(詞元序列)。然而,這些方法在遮蔽前往往需要得到文本中的詞語或實體等粗粒度信息。這時一般需要一個預先給定的大規模詞庫或實體庫。因此,預訓練語料和詞庫之間可能會出現數據分布不一致的問題。并且,這些方法在遮蔽時沒有考慮到數據稀疏的問題,低頻詞的出現相對較少且比較稀疏。相比之前的方法,IDF遮蔽策略使用了在預訓練語料上得到的統計信息,并且讓模型重點學習文本中的稀有詞,從而緩解了數據不一致和數據稀疏的問題,更進一步地增強了模型。

5 總結與展望

本文探索了中文預訓練中應用混合粒度編碼的可能性。相比之前中文預訓練模型廣泛采用的細粒度編碼,我們提出的混合粒度編碼有效提升了編碼效率。而相比詞級別等粗粒度的編碼方式,本文的方法有效緩解了詞表外詞(OOV)以及數據稀疏等問題。搭配上所提出的IDF遮蔽策略,我們預訓練的混合粒度編碼語言模型在多個數據集上取得了有競爭力的性能,并且減少了大量模型計算量。

未來工作包括混合粒度編碼應用范圍的拓展以及預訓練遮蔽策略的進一步改進?;旌狭6染幋a能夠明顯提升編碼器的編碼效率,但對于需要細粒度分詞的下游任務不夠友好。未來可以將混合粒度編碼器與細粒度的解碼器相結合,進一步擴展模型的應用深度和廣度。另一方面,IDF遮蔽策略根據詞頻信息調節了不同詞匯的遮蔽頻率,未來可以基于更豐富的數據集和其他先驗信息更系統地選擇遮蔽詞和遮蔽方式,以加快模型的預訓練過程并提升訓練效果。

猜你喜歡
詞表詞頻語料
基于詞頻分析法的社區公園歸屬感營建要素研究
A Chinese-English List of the Sports Programmes in Winter Olympics 冬奧會項目名稱漢英對照詞表
基于語料調查的“連……都(也)……”出現的語義背景分析
敘詞表與其他詞表的互操作標準
華語電影作為真實語料在翻譯教學中的應用
詞頻,一部隱秘的歷史
云存儲中支持詞頻和用戶喜好的密文模糊檢索
《苗防備覽》中的湘西語料
國內外語用學實證研究比較:語料類型與收集方法
以關鍵詞詞頻法透視《大學圖書館學報》學術研究特色
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合