張 英,擁 措+,于 韜
(1.西藏大學 信息科學技術學院,西藏 拉薩 850000;2.西藏大學 藏文信息技術教育部工程研究中心, 西藏 拉薩 850000;3.西藏大學 西藏自治區(qū)藏文信息技術人工智能重點實驗室,西藏 拉薩 850000)
目前,注意力機制在預訓練模型如BERT[1]、RoBERTa[2]、ALBERT[3]中得到了廣泛的應用。相關研究表明,多頭注意力中并不是每個頭都發(fā)揮著重要作用,大多數(shù)注意力頭實際上是冗余的[4];為了減少冗余注意力的影響,研究者提出了“disentangled”[5]掩碼注意力機制和自適應注意力機制[6]等概念。由上述研究可知語言模型固定注意力機制的頭數(shù)并不是最優(yōu)選擇,在模型訓練過程中,不同詞數(shù)的句子均由相同頭數(shù)的注意力機制進行特征學習,可能會造成注意力頭的冗余。
為了減少冗余頭數(shù)造成的干擾,例如在包含特征相對較少的短句中,可能不需要關注罕見詞或某些復合關系等不常見的特征,從而導致多余的頭對特征向量造成一定的噪聲。因此本文提出了在訓練過程中根據(jù)長短句動態(tài)選擇注意力機制頭數(shù)的方法。另外,目前國內(nèi)對藏文預訓練模型的研究較少,所以本文在藏文數(shù)據(jù)上進行探究。綜上所述,本文共提出以下方案:①研究動態(tài)多頭注意力機制的有效性,并揭示了將其融入預訓練模型可以有益于文本分類任務;②在ALBERT模型的注意力層進行改進,并提升了該模型的效果;③本文構建的模型可以較好地表示藏文語義關系,實驗結果表明,在公開數(shù)據(jù)集TNCC分類任務上F1值均獲得了2%以上的提升。
自以多頭注意力為核心創(chuàng)新的transformer模型被提出以來,已成為一大研究熱點[7]。Paul Michel等提出部分注意力頭較冗余的看法;E Voita等[8]為了優(yōu)化Bert模型設計混合向量提取注意力頭捕捉的通用信息;隨后,Clark K等[9]針對BERT注意力機制進行分析,發(fā)現(xiàn)注意力機制除了關注直接賓語、介詞關系等,還大量集中于分隔符、標點符號。為了增強序列學習表示,Chien等提出了一種新的“disentangled”掩碼注意力機制,以減少冗余特征。上述研究表明,注意力機制頭數(shù)的固定,可能會造成注意力頭的冗余或過度注意。
注意力機制通常用于預訓練模型。OpenAI提出了GPT[10]模型,以學習文本的長距離依賴。隨后,Devlin等提出BERT模型,在不同自然語言處理任務上達到了最好效果。OpenAI提出了在BERT基礎上進行精細調(diào)參的RoBERTa模型。同年,Zhenzhong Lan等提出用兩種策略提高模型訓練速度的ALBERT模型,該文結果表明注意力層的參數(shù)共享策略對模型效果影響小,因此本文將在參數(shù)量較小的ALBERT模型的自注意力層上進行改進,以提升該模型的效果。
上文介紹的模型大多應用在中英文上,對于語料稀少的藏文而言預訓練模型較少。Ziqing Yang等提出了面向少數(shù)民族語言的多語言模型CINO[11]。為了促進藏文自然語言處理任務的發(fā)展,Yuan Sun等提出使用藏文語料進行訓練的TiBERT[12]模型。除此之外,Hanru Shi等構建了包含5種語言的MiLMo[13]模型。同年,于韜等[14]提出用于關系抽取任務的藏文ALBERT模型。另外,安波等[15]訓練藏文BERT模型并在標題分類任務上進行實驗。上述皆是對藏文預訓練模型的應用研究,因此本文將對語言模型進行改進,以增強藏文下游任務性能。
自注意力機制是指通過運算獲得句子在編碼過程中每個位置的注意力權重,再計算整個句子的隱含向量[16]。同時,為了避免模型對當前位置信息進行編碼時,過度集中于自身從而提出了多頭注意力機制。與使用單獨的注意力池化不同,多頭注意力機制使用序列不同位置的子空間表征信息進行數(shù)據(jù)處理,然后并行地進行注意力池化,再將多個注意力池化的輸出拼接,以構建最終輸出[17]。
在以往的模型預訓練過程中,多頭注意力機制的頭數(shù)h往往是固定的,但這樣會存在一定的弊端,例如當h較大時,對于特征數(shù)量較少的句子會學習到更多不重要的特征,即在信息組合時會有一定的噪聲;當h較小時,對于特征數(shù)量較多的句子,不能全面學習句子的含義。但在實際訓練過程中,長短句所需要關注的信息數(shù)量并不同,如表1所示,長句共有56個藏文音節(jié),包含的特征信息較多,需要更多頭數(shù)的注意力機制關注句子中詞與詞之間的關系,如較為明顯的時間、數(shù)詞、處所等關系信息;而短句僅有11個藏文音節(jié),包含的特征相對較少,相對長句來說較為明顯的僅有處所關系,因此當長短句共用一個注意力機制頭數(shù)時,多余的頭可能會關注標點符號等包含信息量較少的特征,對特征向量的提取過程會造成一定的干擾。因此本文針對不同詞數(shù)的句子均由相同頭數(shù)的注意力機制進行特征學習這一情況,提出根據(jù)句子的特征數(shù)量選擇注意力機制的頭數(shù),即在訓練過程中根據(jù)句子長度動態(tài)確定注意力機制頭數(shù)。
表1 藏文長短句示例
其動態(tài)多頭注意力機制具體公式如下所示,式(1)中headi表示第i個頭數(shù)對應的注意力機制運算后的結果[18],式(2)中DMA(Q、K、V) 表示將多個注意力機制head1,…,headh進行拼接再乘以矩陣Wh的結果,其中Wh為多頭注意力的權重,下標h的取值根據(jù)len_token決定,如式(3)所示
(1)
DMA(Q,K,V)=Concat(head1,…,headh)Wh
(2)
iflen_token>mh=hlelseh=hs
(3)
圖1為動態(tài)多頭注意力機制的架構。首先將輸入句子的詞向量轉化為3個矩陣(Q、K、V),再判斷句子的詞數(shù)(len_token)是否大于臨界值m,若小于m,則動態(tài)多頭注意力機制取較小的頭數(shù),再根據(jù)頭數(shù)構建hs層線性投影,然后將Q、K、V輸入至左側的路線left route進行學習,并通過hs層線性投影獲得特征向量矩陣,最后進行拼接與映射獲得輸出結果;反之,動態(tài)多頭注意力機制取較大的頭數(shù),除線性投影層數(shù)hl與路線right route之外,其余操作同理。
圖1 動態(tài)多頭注意力機制架構
為解決BERT模型參數(shù)量過大、訓練時間過長的問題,ALBERT語言模型于2019年問世,該模型的結構和BERT相似且參數(shù)量更小,本文將上述提出的動態(tài)多頭注意力機制應用于ALBERT的注意力模塊,構建了基于動態(tài)多頭注意力機制的語言模型(dynamic multi-head attention albert,DMA_ALBERT)。為了驗證改進后的模型的有效性,本文使用4.5 GB藏文通用領域數(shù)據(jù)分別訓練注意力層改進前后的模型。將動態(tài)注意力機制應用在語言模型中,動態(tài)傳遞注意力機制的頭數(shù),既可以獲得該句子的重要信息,學習句子上下文相關的雙向語義特征表示,又可以減少不重要的特征對信息整合過程的干擾。
由于預訓練模型結構較為復雜,且訓練數(shù)據(jù)量較大,因此動態(tài)多頭注意力機制的頭數(shù)選擇方式由每句的總詞數(shù)改進為每批次(batch)的總詞數(shù)。即在藏文DMA_ALBERT模型的實際訓練過程中,動態(tài)多頭注意力機制的頭數(shù)根據(jù)一個batch的總詞數(shù)獲得,當總詞數(shù)大于m與batch的乘積(m×batch)時,該批次的注意力機制頭數(shù)h取hl;反之,h取hs,如式(4)所示,其中token_Ci表示在當前批次中第i個句子的token個數(shù)
(4)
本文采用CCL2022跨語言文本分類任務提供的4.5 GB藏文語料作為語言模型的訓練數(shù)據(jù),語料主要來自維基百科、微信公眾號。同時,本文訓練SentencePiece[19]模型以構建藏文詞表及訓練語料。分詞粒度方面,選用unigram[20]對訓練語料進行子詞級分割,其原理為先初始化一個較大的詞表,再根據(jù)算法標準不斷地舍棄,直到詞表滿足預先給定的大小[21]。在藏文語言模型的訓練過程中,由于使用ALBERT預訓練模型作為實驗的基礎,因此參照ALBERT原文共選取了5個評價指標,分別是掩碼語言模型(MLM)任務的損失值(mask_loss)、預測遮掩單詞的精確度(mask_accuracy);句子順序預測(SOP)任務的損失值(sop_loss)、預測句子順序的精確度(sop_accuracy);以及MLM和SOP任務這兩部分的損失和相加所得到的總和(loss)。
由于本文使用TNCC測試語言模型的實際效果,使用精確率Precision、召回率Recall以及F1值作為文本分類任務的評價指標,具體公式如下所示
(5)
(6)
(7)
其中,首先需要計算每個類別的Precision、Recall、F1值,其中TPi表示類別i預測正確的數(shù)量;FPi表示將其它類別的樣本預測成類別i的數(shù)量;TPi+FPi表示測試集的所有文本預測成類別i的總數(shù)量;FNi表示將文本類別i預測成其它類別的數(shù)量;TPi+FNi表示真實的文本類別i的總數(shù)量。
另外該數(shù)據(jù)集是在多類別通用領域上構建的,其樣本分布并不均勻,因此采用Weighted算法對上述指標進行計算,即需要根據(jù)每個類別占比的權重計算本次分類所有類別評價指標的具體值,如式(8)~式(10)所示,其中wi表示在測試集中文本類別i在總文本中的占比比例
(8)
(9)
(10)
本文訓練tiny版本的藏文改進注意力機制前后的語言模型并進行效果對比,在訓練前需確定模型中注意力機制的頭數(shù)。其中隱藏層維度的值為384,而注意力機制的頭數(shù)需要被384整除,即可取值2、3、4、6、8等,考慮到語言模型結構的復雜性,本文選擇如表2所示的注意力機制頭數(shù)進行實驗,具體訓練參數(shù)見表3。
表2 注意力機制頭數(shù)設定
表3 預訓練模型主要參數(shù)
由表2可知,本文共設計了10組語言模型對比實驗,分別是4組原始的語言模型以及6組應用動態(tài)多頭注意力機制的語言模型。實驗環(huán)境為搭配RTX3080Ti GPU的Ubuntu服務器,顯存為12 GB。
為了更好地對比是否動態(tài)獲取注意力頭數(shù)語言模型的效果,本文將上述10個預訓練模型應用在文本分類任務上,包括長、短文本兩種分類任務,這兩個任務的句子長度分布情況如圖2所示。
圖2 TNCC數(shù)據(jù)集句子長度分布
由圖2(a)可知,長文本中各句子長度區(qū)間的分布較為均勻,綜合考慮訓練設備及預訓練模型的句子長度取值要求,該任務的pad_size取值為300;而圖2(b)中的短文本中99%的標題長度小于20,且最長不超過50,因此短文本任務的pad_size取值為50,下游實驗的主要參數(shù)見表4。
表4 下游實驗部分主要參數(shù)
首先將本文訓練的10組語言模型應用于TNCC文本分類任務,并觀察模型在長、短文本分類任務上的效果;然后使用10組預訓練語言模型分別結合卷積神經(jīng)網(wǎng)絡(CNN)[22]進行文本分類的對比實驗。
4.2.1 固定與動態(tài)頭數(shù)語言模型實驗對比結果
TNCC數(shù)據(jù)集包含藏文長文本及短文本分類語料,將10組訓練好的藏文語言模型分別應用在長/短文本分類任務上,實驗結果見表5,‘/’前后分別為長文本分類結果和短文本分類結果。在長文本下游分類任務中,使用ALBERT模型時,head取8、16時F1值分別為73.29%、72.79%,而使用融入了動態(tài)多頭注意力機制思想的語言模型時,hs、hl取8、16時實驗F1值為75.34%,與前者相比F1值分別提升了2.05%、2.55%。該結果表明:在訓練過程中,語言模型動態(tài)獲取注意力機制頭數(shù)時效果更佳,同時改進語言模型中除hs=6、hl=8的其余4組實驗均能驗證動態(tài)多頭注意力機制的有效性。但當固定頭數(shù)取6或8時F1值為74.63%、73.29%,而hs、hl動態(tài)取6、8時F1值為73.67%,較頭數(shù)直接取6時F1值下降了0.96%,取8時提升了0.38%。該情況的主要原因是應用動態(tài)多頭注意力機制時,動態(tài)選擇的兩個頭數(shù)均較小且相差不大,因此無法較好地學習長、短句的語義特征,導致模型效果提升不明顯。
在表5中的短文本分類結果表明,頭數(shù)取12時模型效果表現(xiàn)最好,其F1值為68.74%,而應用了動態(tài)多頭注意力機制思想的語言模型F1值最高為67.25%,較前者F1值低了1.49%,由此可見,動態(tài)多頭注意力機制在短文本分類上效果較為低迷,其原因為標題濃縮了一篇文章的主要內(nèi)容,且詞數(shù)不超過20的標題數(shù)量占比99%,標題中詞與詞之間的語義關系并不明確,即根據(jù)藏文長文本訓練的DMA_ALBERT模型,對標題的理解能力有限,對藏文標題分類任務的幫助較小。
4.2.2 語言模型結合卷積神經(jīng)網(wǎng)絡對比實驗結果分析
表6為固定與動態(tài)頭數(shù)的語言模型分別結合CNN模型在長/短文本分類任務上的實驗結果。長文本中,hs、hl動態(tài)取8、12時效果最好,其Weighted F1值為75.69%;在不使用動態(tài)多頭注意力機制的ALBERT模型中,head取8時效果最好,其Weighted F1值為74.80%。后者F1值降低了0.89%,該結果表明在進行長文本分類時,動態(tài)獲取其注意力機制的頭數(shù)效果優(yōu)于非動態(tài)方式。根本原因是動態(tài)多頭注意力機制可以更好地學習長、短句中的語義關系,而非動態(tài)方式由于固定了頭數(shù)的大小,直接制約了其對語義關系的學習能力,因此DMA_ALBERT模型構建的詞向量質量更高,再使用模型結構相對復雜的CNN網(wǎng)絡的卷積及池化操作可以較好地學習詞向量中的重要分類特征。與直接使用DMA_ALBERT模型相比,結合CNN模型時長文本分類效果更好,后者較前者F1值提升了0.35%。
表6 預訓練模型結合卷積神經(jīng)網(wǎng)絡在長/短文本分類任務上的實驗結果
由表6的短文本分類結果可知DMA_ALBERT與原始ALBERT在短文本分類任務上的效果相近,固定頭數(shù)取8時模型效果最好為68.67%;hs、hl動態(tài)取6、8時語言模型效果最為68.70%,兩者僅相差0.03%。該結果表明在結合CNN模型的短文本標題分類任務上,由于使用長文本訓練的語言模型對標題的學習能力有限,因此對模型結果影響甚微。
為了更好地對比本章實驗結果,將上述結果使用折線圖進行可視化展示,如圖3所示。其中,h=6表示使用固定頭數(shù)為6的注意力機制;h=6,8表示動態(tài)使用頭數(shù)為6、8的注意力機制,即曲線前后段分別為原始語言模型的結果、結合動態(tài)多頭注意力機制的語言模型的結果,上、下兩條曲線分別為長文本分類、標題分類。
由圖3可知,長文本分類任務中,兩條實驗結果曲線的后半段整體趨勢均高于前半段,表明動態(tài)獲取注意力機制的頭數(shù)效果更優(yōu)。在不結合CNN模型的短文本分類中,原始語言模型效果更好;而結合CNN模型后,曲線后半部分更穩(wěn)定,表明CNN網(wǎng)絡能較好地學習DMA_ALBERT所得到詞向量的重要分類特征。
圖3 預訓練語言模型結果對比
為了驗證本文模型的有效性,將本文訓練的語言模型與現(xiàn)有模型效果進行對比分析,其中DMA_ALBERT模型各評價指標的具體值見表7。所對比的模型分別為:哈工大訊飛實驗室發(fā)布的CINO模型、藏文TiBERT模型、安波等提出的藏文BERTCNN模型,其評價指標皆采用Macro計算方式,因此采用Macro相關指標與前人的模型在TNCC文本分類任務上進行對比。其中長、短文本分類任務對比結果分別見表8、表9。
由表8可知,DMA_ALBERT結合CNN模型效果最佳,hs、hl分別取8、12時模型F1值為73.23%,較CINO提升了4.63%;較TiBERT提升了2.29%;在表9中,DMA_ALBERT結合CNN時效果最佳,hs、hl分別取6、8時模型F1值為64.47%,較BertCNN提升了11.47%,較TiBert提升了2.75%。實驗結果再次說明了融入動態(tài)多頭注意力機制思想的語言模型的有效性。
表7 hs、hl動態(tài)取8、12時語言模型評價指標
表8 不同模型在長文本分類任務上的實驗結果對比
表9 不同模型在短文本分類任務上的實驗結果對比
本文主要針對不同詞數(shù)的句子均由相同頭數(shù)的注意力機制進行特征學習這一情況,提出了動態(tài)獲取注意力機制頭數(shù)的思想。并在TNCC數(shù)據(jù)集文本分類任務上分別進行了實驗,實驗結果表明,應用了動態(tài)多頭注意力機制的語言模型效果最優(yōu)。
與前人的模型相比,本文模型在不同任務的Macro_F1值均提升了2%以上,再次驗證了該文方法的有效性。在未來的工作中,將繼續(xù)研究注意力機制頭數(shù)與句子長度的關系,并進一步擴大語言模型訓練語料的規(guī)模,或者利用語料較多的中、英文數(shù)據(jù)檢驗本文的方法,并在權威數(shù)據(jù)上驗證其效果。