王潤周,張新生,王明虎
(西安建筑科技大學 管理學院,陜西 西安 710055)
文本分類是自然語言處理(Natural Language Processing,NLP)領域的一個重要任務,旨在將文本文檔分為不同的類別或標簽,幫助用戶能夠從文本資源中提取關鍵信息[1]。這一任務在多個領域中發(fā)揮著重要作用,包括情感分析、垃圾郵件過濾、金融文本挖掘和新聞分類等[2-4]。隨著互聯網的不斷發(fā)展,網絡新聞、社交媒體評論等數據源導致可用的文本數據量急劇增加。這些數據不僅在數量上龐大,而且在多樣性方面非常豐富,包括來自不同領域、不同語言以及不同文本風格的內容。這種多樣性使文本分類的復雜性增加,因為需要適應不斷變化的數據背景和多種文本表達方式。此外,文本數據通常需要經過復雜的預處理過程,如分詞、去除停用詞、詞干提取和將文本轉化為向量表示,以此獲取關鍵信息[5]。這些預處理步驟既耗費時間又需要大量計算資源,尤其是在應對大規(guī)模數據集時。因此,在應對復雜、龐大的數據集時,尋求精準、快速且低資源消耗的文本分類方法變得至關重要。
目前,大型語言模型通過在大規(guī)模文本數據上進行預訓練,在多種自然語言處理任務中表現出卓越的性能。然而,這些大型模型的復雜性和計算成本逐漸增加,限制了它們在資源有限環(huán)境下的廣泛應用[6]。知識蒸餾的出現緩解了這些問題,其將大型語言模型的知識傳遞給具有輕量化參數的小型模型,使得小型模型學習到大部分大型模型的知識,這不僅可以實現高效、快速的預測,并且不會顯著降低模型的性能[7]。通常,知識蒸餾采用“師-生模型”訓練模式,通過一個預訓練好的大型教師模型的輸出,輔助新的小型學生模型訓練[8]。由于單教師知識蒸餾通常只依賴一個大型教師模型來傳遞知識,且這個教師模型可能受限于特定任務、數據領域或訓練數據,導致其無法提供全面性和多樣性的知識。為此,“師-生-師模型”的多教師訓練模式開始出現。多教師知識蒸餾允許整合來自多個教師模型的知識,這些教師模型經過在不同任務和數據領域上進行專門訓練,提供了更廣泛、全面的知識[9]。這保證了學生模型可以獲得更豐富和多元的知識,提高了學生模型在多個任務和領域的性能?;谏鲜鎏匦?知識蒸餾為解決文本分類任務中的資源消耗和效率問題提供了一種有效途徑,同時保持了高分類性能。
盡管知識蒸餾在文本分類任務中的研究已經十分豐富,并且取得了良好的分類效果,但仍然存在一些不足: 首先,當前知識蒸餾的方法主要關注模型在最后一層的輸出,較少同時結合多個教師模型的性能與其在不同特征層的語義信息。這不僅會忽略模型其他層之間的豐富信息,影響學生模型的特征表示能力,而且當最后一層的特征層受到噪聲干擾時,學生模型的學習效果更容易受到干擾。再者,知識蒸餾過程需要傳輸大量長度不等的文本數據信息,現有的蒸餾過程通過全局填充引入大量冗余信息,不能動態(tài)關注數據中關鍵信息的變化。
因此,本文提出了一種融合動態(tài)掩碼注意力機制與多教師多特征知識蒸餾模型,并將其應用于文本分類任務。通過結合多種教師模型的強大性能、不同特征層的語義信息來大幅度提升學生模型的預測性能,并采用動態(tài)掩碼注意力機制實現動態(tài)截斷數據,使得蒸餾過程更加關注有效信息,減少無效信息的干擾。本文的主要貢獻如下:
(1) 提出了一種同時結合多種大型教師模型與多種特征層語義信息的知識蒸餾方法,使得輕量化的學生模型可以學習多元化知識與多種特征表示。
(2) 在知識蒸餾過程中提出了動態(tài)掩碼注意力機制,其可以在知識蒸餾過程中動態(tài)屏蔽無效輸入信息,減少冗余信息干擾,保證模型盡可能關注關鍵信息。
(3) 多種對比實驗結果表明,經過本文方法的蒸餾后,學生模型TinyBERT不僅取得了比其他基準蒸餾方法更佳的性能,而且只用了大型教師模型1/10的參數量、約1/2的運行時間就取得了與教師模型相當的預測結果。
本節(jié)主要介紹文本分類的常用方法以及知識蒸餾在文本分類模型中的應用。我們對現有研究方法進行總結,將目前文本分類的方法分為四類: 即基于傳統(tǒng)機器學習、基于深度學習、基于預訓練模型以及基于知識蒸餾的方法。
基于傳統(tǒng)機器學習方法的文本分類依賴于特征提取和模型訓練。文本數據首先經過特征提取過程,將文本轉化為機器學習算法可以處理的數值特征。因此,特征提取成為了文本分類的關鍵步驟,在這一階段,文本數據的特性主要基于詞袋模型或TF-IDF值將文本轉化為數值特征向量[10]。結合詞頻、詞語的重要程度,一些常用的機器學習如樸素貝葉斯[11]、支持向量機(Support Vector Machine, SVM)[12]、隨機森林(Random Forest, RF)[13]等方法被廣泛用在了文本分類任務中。然而,在處理大規(guī)模、復雜的自然語言處理任務時,傳統(tǒng)機器學習方法依賴于手工設計的特征,而這些特征難以準確表示大量的文本數據[14]。更重要的是,傳統(tǒng)機器學習中的特征提取方法主要基于詞語的詞頻和重要性,忽略了詞語之間的語義關系。
隨著深度學習的發(fā)展,神經網絡方法與詞嵌入技術不斷在文本分類任務中得到應用。在這一階段,依據Word2Vec方法,文本數據可以被轉化為包含文本數據語義相關性的詞嵌入向量[15]。這減輕了特征工程的負擔,使得模型更加通用和適應不同類型的文本數據。并且,深度學習方法還可以自動提取文本中的語義信息,學習詞語、短語和文本之間的復雜語義關系。例如,卷積神經網絡(Convolutional Neural Networks, CNN)可以捕獲文本中的局部特征,通過卷積層和池化層,識別文本中的重要模式[16]。循環(huán)神經網絡(Recurrent Neural Network, RNN)、長短時記憶網絡(Long Short Term Memory Network, LSTM)可以在文本分類中用于捕獲文本的上下文信息[17-18]。隨后,基于CNN、RNN、LSTM的混合深度學習模型也被用在了文本分類任務中,并達到了較優(yōu)的預測性能[19-20]。然而,基于深度學習的分類方法通常需要用大規(guī)模標記的文本數據來進行訓練,以達到良好的性能,這導致訓練一個性能較好的深度學習模型需要大量的數據與機器資源。因此,如何設計一種自身就具有豐富語言知識,并將其遷移到不同的任務的模型就成為了焦點。
基于預訓練模型的方法的核心思想是在大規(guī)模文本數據上預訓練一個深度學習模型,然后將該模型微調到特定任務。因此,在訓練開始前,預訓練模型就已經具備在大規(guī)模文本數據上獲取豐富語義能力。它們可以遷移到不同的文本分類任務,即使在小規(guī)模標記數據上也能表現出色。于是預訓練模型如BERT、RoBERTa、Electra等模型成為了提取文本語義信息的重要一環(huán),并結合一些深度學習方法取得了更加優(yōu)秀的預測性能[21-23]。但是,大多數預訓練模型具有大量參數,因此在訓練和推理時需要大量計算資源,包括高性能的GPU或TPU。這可能使得在資源受限的環(huán)境中難以使用這些模型。
基于知識蒸餾的方法緩解了預訓練模型的問題,其允許將大型預訓練模型的知識傳遞給小型模型,以獲得更輕量、高效的模型,同時保持高性能。這使得知識蒸餾成為在文本分類任務中提供輕量、高效預測模型的有力工具。例如,一些學者將12層網絡的BERT模型蒸餾到6層網絡的淺層模型,得到的學生模型推理速度提高近一倍[24]。此后,一些研究人員將復雜的混合教師模型蒸餾到輕量化的雙向門控循環(huán)單元網絡中,達到了與BERT-Base模型相當的文本分類效果[25]。Zhang等人基于多教師模型的知識蒸餾將知識從多教師模型轉移到學生模型,其方法在多個公開數據集上表現出更少參數和更少推理時間[26]。Guo等人在蒸餾過程中引入注意力圖來構建知識蒸餾的樣本相關性,保證蒸餾過程中能最大程度地關注有效信息[27]。因此,本文基于上述研究提出了一種融合動態(tài)掩碼注意力機制與多教師多特征知識蒸餾的方法,使得得到的輕量化學生模型在文本分類任務上易于部署,并達到更精準、高效的預測結果。
傳統(tǒng)的多教師知識蒸餾策略主要考慮多個教師模型與學生模型最后一層輸出之間的關系。即教師模型在最后一層網絡輸出各個類別的概率分布,而學生模型則嘗試在相同數據上擬合這些概率分布,這導致在知識蒸餾過程中忽略其他特征層的影響。再者,在引入注意力階段,傳統(tǒng)的知識蒸餾過程未能考慮到文本數據長度的不一致性,通常采用固定長度進行注意力機制的掩碼操作,這也為蒸餾過程帶來更多的無效信息。
本文提出了一種融合動態(tài)掩碼注意力機制與多教師多特征的知識蒸餾方法。該方法旨在讓學生模型整合多個教師模型的強大語義能力,同時將多個教師模型的不同特征層的輸出與學生模型結合。并且,引入了動態(tài)掩碼注意力機制來動態(tài)地關注不同教師模型的特征層,使得模型可以更好地選擇和集成有效的知識。下面對用到的理論方法進行簡單闡述。
多教師多特征的知識蒸餾是一種進階的知識蒸餾技術,其目標是通過將多種教師模型(Teacher Model)的知識以及多種特征表示傳遞給一個輕量化的學生模型(Student Model)。與傳統(tǒng)的知識蒸餾方法相比,多教師多特征知識蒸餾結合多種教師模型的強大語義能力,并深入學習到每個教師模型在不同特征層的豐富表征,使預測性能與抗噪聲能力大幅度提升[28]。
多教師多特征知識蒸餾過程涉及以下概念: 軟標簽(Soft Label, SL)、軟輸出(Soft Output, SO)、硬輸出(Hard Output, HO)和硬標簽(Hard Label, HL),各概念的含義如表1所示。
表1 不同的輸出標簽
軟標簽與軟輸出的計算如式(1)所示,其中i表示第i個類別的標簽,zi為教師模型的輸出概率,vi為學生模型的輸出概率,T為溫度參數。
(1)
在蒸餾過程中,溫度參數T主用于控制教師模型和學生模型的輸出分布,即模型在進行預測時生成的概率分布。較高的溫度參數會使輸出分布更加平緩,負類標簽攜帶的信息會被相對地放大,學生模型從教師模型中學到的知識信息會更加豐富,如圖1所示。
圖1 硬標簽與經過蒸餾后的軟標簽
具體而言,在沒有蒸餾的情況下,教師模型的輸出通常是硬化的,即它們對于每個類別只能選擇一個概率為1的類別,而其他類別的概率為0。經過蒸餾后,輸出結果會得到每一個類別的概率表示,因此帶有更豐富的知識表示。
通常,知識蒸餾的輸出損失函數通常需要考慮教師模型與學生模型之間輸出的損失誤差。而多教師知識蒸餾的輸出損失(Lpre)由學生模型的軟輸出與不同教師模型軟標簽之間的損失(Lsoft)、學生模型的硬輸出與硬標簽之間的損失(Lhard)組成。具體如式(2)~式(4)所示。
另外,多教師多特征知識蒸餾的過程還要關注不同特征層的輸出,因此需要加入不同特征層之間的損失。多教師多特征知識蒸餾在不同層的損失可綜合表示為式(5):
(5)
其中,Tm與Sm表示教師模型與學生模型的第m層,M表示模型的總層數。Lhid表示不同特征層的損失。
最終,多教師多特征知識蒸餾模型的損失函數需整合每一個特征層的損失與最后一層的蒸餾損失。整體損失如式(6)所示。
(6)
RoBERTa是一種在BERT(Bidirectional Encoder Representations from Transformers)基礎上進行改進的自然語言處理領域的預訓練模型。因此RoBERTa的模型框架也基于Transformer結構,它通過大規(guī)模的無監(jiān)督訓練來學習語言表示,包括豐富的語法和語義知識[29]。其運行過程如圖2所示。
圖2 RoBERTa模型框架圖
RoBERTa的運行結構主要包含Embedding獲取與12層Transformer模型兩個部分。第一部分利用位置嵌入、分割嵌入和符號嵌入來獲取文本的語義嵌入向量。第二個部分是模型架構,它主要由12層Transformer模型的編碼器部分構成,編碼器層部分包括自注意力機制、前饋神經網絡和殘差連接。其中,Mask LM是一種預訓練任務,用于獲取詞語級別的上下文依賴關系,其通過對輸入文本中的一部分Token進行掩碼,然后讓模型去預測這些被遮蓋的部分。
Electra是一種用于自然語言處理任務的預訓練模型,其構建了一種稱為生成器-判別器(Generator-Discriminator)的架構[30]。生成模型產生假的文本片段,而判別模型則試圖區(qū)分真實文本和生成的文本,這加強了模型對單詞之間相互關系的理解。另外,Electra在預訓練過程中引入了“替代分類任務”,模型只需要計算被替換的詞的損失,而不是計算整個句子中所有詞的損失。這使得Electra在相同的計算資源下可以訓練得更快,更適合在資源受限的環(huán)境中使用。具體流程如圖3所示。
圖3 Electra模型框架圖
TinyBERT模型是一種輕量級的變種BERT模型,其采用了精細的剪枝和量化技術,通常僅為4層或6層Transformer結構,因而在資源受限的環(huán)境中運行更高效[31]。
如圖4所示,TinyBERT的訓練過程通常分為兩個關鍵階段: 通用蒸餾和特定任務蒸餾。在通用蒸餾階段,TinyBERT的教師模型是大型的預訓練模型,而學生模型(TinyBERT)在通用領域的語料庫上進行蒸餾來模仿教師模型的行為。在特定任務蒸餾階段,使用微調過的BERT模型作為教師模型,隨后對增強任務數據集進行蒸餾。
圖4 TinyBERT訓練框架圖
在自然語言處理任務中,輸入序列的長度可能不一致,為了對齊序列,會在較短的序列中使用填充符號。當數據量不斷增多時,填充的無效信息也會變多,這會干擾模型的輸出結果。為了減少冗余信息的干擾,掩碼機制被用在了注意力計算中[32]。傳統(tǒng)的掩碼機制主要根據全局最大長度(Global Max Length)來對文本數據進行截斷或填充。這種方法雖然易于實現,但忽略了不同批次數據之間的區(qū)別,導致在文本填充時加入無效信息。
因此,本文構建了一種動態(tài)掩碼機制用于注意力計算過程,可以實現對無效位置的屏蔽,確保模型只關注有效的輸入信息,從而提升模型的準確性和泛化能力。具體過程如下:
Step1:根據每個批次大小中的最大長度(Batch Max Length)來截斷和填充文本。傳統(tǒng)的全局處理設置固定的全局最大長度處理數據,批次處理則根據不同Batch中的最大長度處理數據。這樣做的目的是在整個訓練過程中保留每個批次中原有文本的語義特征,而不添加多余的掩碼符號[PAD]。處理過程如圖5所示。
圖5 全局長度處理與批次長度處理
Step2:構建掩碼矩陣,對不同批次的填充位置進行掩碼。在進行批次長度大小截斷或填充后便可獲得原始數據位置與填充位置。隨后,對原始數據的位置填充標簽1,即原始位置數值保持不變。將填充位置上的數值變?yōu)樨摕o窮(-inf)。這是由于在注意力機制打分時采用 Softmax 函數分配注意力權重,填充位置上的數值越小,分配的注意力權重越小。Softmax函數計算如式(7)所示。
(7)
其中,xi為輸入序列x的第i個值,xj為數據x中除掉xi的其他序列,K為序列x的維度。
Step3:計算動態(tài)掩碼注意力得分,注意力機制輸出的是原始數據與動態(tài)掩碼矩陣的乘積,如圖6所示。
圖6 掩碼矩陣構建
最終,動態(tài)多頭注意力掩碼機制的整體計算如式(8)所示。
(8)
在知識蒸餾過程中,教師模型需要具有強大的性能和知識源,而學生模型通常具有相對輕量級的參數量。為此,我們選取RoBERTa-wwm-ext和Electra-base作為教師模型,選擇TinyBERT作為學生模型。具體模型的特點如表2所示。
表2 教師模型與學生模型
本文提出了一種融合動態(tài)掩碼注意力機制與多教師多特征知識蒸餾的策略。各蒸餾策略的主要參數設置如表3所示,其中,軟標簽SL、軟輸出SO、硬輸出HO的計算公式見2.1節(jié)。
表3 蒸餾參數設置
在進行最終輸出層的損失計算時,選擇交叉熵損失作為損失函數衡量兩個概率分布之間的差異,量化學生模型的預測分布與教師模型的軟標簽之間的距離。這是由于當學生模型的預測結果與教師模型的軟標簽之間存在較大的差異時,交叉熵損失會賦予這些差異較高的損失值,從而有效地引導學生模型更好地逼近教師模型的輸出[33]。其計算流程如式(9)所示。
(9)
其中,P(i)是真實概率分布P中第i個類別的概率,Q(i)是預測概率分布Q中第i個類別的概率。
另外,在進行特征層、注意力層的損失計算時,本文選用均方誤差(Mean Square Error,MSE)作為損失函數。MSE一般用來檢測模型的預測值和真實值之間的偏差,可以度量學生模型在特征層與教師模型之間的特征表示的相似性。
(10)
經過該蒸餾方法的學生模型具有以下優(yōu)勢:
(1) 知識融合: 學生模型能夠從多個教師模型中提取并融合有用的知識。這種綜合性的知識傳遞有助于提高學生模型的泛化能力,使其能夠應對多樣化的輸入數據。
(2) 多層次特征抽取: 教師模型的多個特征層對應著不同層次的特征抽取。結合多個特征層可以提供豐富的特征表示,有助于學生模型更好地理解和捕捉輸入數據中的信息。
(3) 減少冗余信息干擾: 動態(tài)掩碼注意力機制有助于減少模型學習不相關或冗余的知識。通過動態(tài)屏蔽重要的信息,模型可以更高效地學習有效知識,提高模型的效率和性能。
蒸餾運行過程如圖7所示。
圖7 融合動態(tài)掩碼注意力機制與多教師多特征的蒸餾
Step1: 數據輸入。數據同時傳入到RoBERTa (Teacher模型1)、Electra (Teacher模型2),TinyBERT (Student模型)訓練。
Step2: 前向傳播計算特征層損失。對于每個教師模型與學生模型對應的特征層,分別計算其特征層對應的輸出損失。由于RoBERTa、Electra以及TinyBERT模型在結構上具有很強的相似性,即教師模型RoBERTa、Electra均由12層Transformer結構組成,學生模型TinyBERT由4層Transformer組成。因此,本文采用一種特征層相互對應的知識蒸餾策略,即將教師模型的特定層與學生模型的對應層進行匹配。
具體蒸餾層數對應如表4所示。由于在特征提取層最上端加入Embedding層,因此Embedding編號為0,特征層的對應編號從1開始,模型共計M層(共計13層,包括Embedding層)。這種設置充分考慮了模型性能和模型復雜性之間的平衡。根據對應的特征層設置,知識蒸餾過程中可以充分利用多個教師模型在不同特征層的知識。再者,將教師模型的所有特征層的知識都傳遞給學生模型,可能導致學生模型變得復雜,參數量變多,因此選擇將特定層的知識傳遞給對應的學生模型層以保持模型的輕量級。
表4 特征層對應的網絡層
由于TinyBERT模型的維度為312維,還需要引入線性變換向量使其與教師模型的維度保持相同。結合對應特征層設置,蒸餾過程中特征層損失的計算如式(11)、式(12)所示。
其中,We為學生模型在Embedding層的線性變換向量,保證學生模型與多個教師模型的數據維度相同。同理,WS為學生模型在特征層的線性變換向量。
Step3: 前向傳播計算注意力損失。由于在不同特征層中引入了動態(tài)掩碼注意力機制,因此在計算特征層的損失時,還需考慮后續(xù)注意力損失的變化。其主要考慮不同教師模型與學生模型之間的注意力權重關系,其層數設置如表5所示。注意力損失的計算如式(13)所示。
表5 注意力層對應的網絡層
Latt,i=MSE(ATim,ASm)
(13)
其中,動態(tài)掩碼注意力機制階段不包含Embedding層,因此注意力層數的編號從0開始。
Step4: 特征融合和知識傳遞。使用注意力權重將不同教師模型的特征融合到學生模型中,得到學生模型的多層特征表示,并將結果傳遞至下一層網絡。
Step5: 計算最后一層的蒸餾損失。輸入數據在經過兩個教師模型訓練后,在最后一層網絡輸出不同的軟標簽。同時,輸入數據經過學生模型在最后一層網絡后產生軟輸出。由于知識蒸餾過程中加入了新的教師模型,因此,知識蒸餾的輸出損失計算需要引入新加入的教師模型的蒸餾損失。
蒸餾損失(Lpre)由多個教師模型的軟標簽與學生模型的軟輸出之間的損失(Lsoft)、學生模型的硬輸出與硬標簽之間的損失(Lhard)組成。具體如式(14)~式(16)所示。
最終,整合特征層損失、注意力機制損失、最后一層的蒸餾損失,得到整個蒸餾過程的損失函數如下: 其中Llayer表示對應蒸餾層的整體損失,Lmodel表示蒸餾過程的整體損失。
(18)
Step6: 反向傳播和參數更新。使用反向傳播算法來計算梯度,并根據梯度更新學生模型的參數,以減小損失函數的值。
Step7: 循環(huán)訓練。重復上述步驟多次,學生模型在不同層次和多個教師模型的指導下逐漸提升其性能,以確保經過知識蒸餾后的學生模型性能達到最優(yōu)。
本節(jié)實驗采用的是Windows 10 64位操作系統(tǒng)。采用的處理器是AMD Ryzen 7 5800H,帶有Radeon Graphics,運行速度為3.20 GHz。NVIDIA GeForce GTX 3 070為系統(tǒng)提供16 GB GPU加速內存。
本文選取四種廣泛使用的文本分類數據集進行實驗,以此驗證融合動態(tài)掩碼注意力機制與多教師多特征知識蒸餾的文本分類效果。各數據集的詳細劃分信息如表6所示。
Weibo[34]: 帶情感標注新浪微博,情感類別為兩類。評論數據總量為119 988條,正向評論59 993條,負向評論59 995條。數據集劃分按照6∶2∶2的比例處理為訓練集、驗證集及測試集。
Waimai: 外賣平臺收集的用戶評價,評論分為積極、消極2個類別。評論總數為11 987條,積極評論為4 000條,消極評論為7 897條。數據集劃分按照6∶2∶2的比例處理為訓練集、驗證集及測試集。
今日頭條: 今日頭條應用中抽取約38萬條新聞數據,包括民生、文化、娛樂、體育、財經、房產、汽車、教育、科技、軍事、旅游、國際、證券、農業(yè)、電競共15個類別。數據集劃分參照孫紅等人[35]對數據集的處理方法。
THUCNews[36]: 清華NLP組提供的THUCNews新聞文本分類數據集的子集,包含經濟、房產、股票、教育、科學、社會、時政、體育、游戲、娛樂10種類別。
本文分別采用準確率(Accuracy,ACC)、精確率(Precision,PRE)、召回率(Recall)和F1值作為對模型分類性能的評價指標。其中TP(True Positive)為正確的正例;FN(False Negative)為錯誤的反例;FP(False Positive)為錯誤的正例;TN(True Negative)為正確的反例。
其中,準確率(ACC)為所有預測中預測正確的比例;精確率(PRE)為正確預測為正的占全部預測為正的比例;召回率(Recall)為正確預測為正的占全部實際為正的比例;F1值是精確率和召回率的調和平均,為的是平衡準確率和召回率的影響,較為全面地評價分類效果。
本部分主要檢驗在未開始進行知識蒸餾前各基準模型的性能,包括經過Fine-tune后的教師模型以及經過TinyBERT(通用蒸餾)的預測性能。主要使用四種數據集劃分的訓練集、驗證集。此階段主要包含教師模型訓練以及對學生模型的通用蒸餾。
教師模型訓練: 教師模型分別設為RoBERTa與Electra模型,在進行知識蒸餾前需對這些模型加載預訓練權重,然后在訓練集上進行Fine-tune處理,以保證Teacher模型性能達到最優(yōu)。
學生模型訓練: 學生模型TinyBERT的整體蒸餾過程與傳統(tǒng)蒸餾策略有所區(qū)別,因為TinyBERT并不是根據訓練好的教師模型在特定任務中直接蒸餾。相反,它采用了一種模仿教師模型訓練過程的方法,這個蒸餾過程可以分為兩個關鍵步驟: 通用蒸餾和特定任務蒸餾。
(1) 通用蒸餾是模仿大型預訓練模型在大規(guī)模語料庫進行訓練,其目標是在不丟失語義理解能力的情況下將教師模型的通用知識傳遞給TinyBERT,從而得到一個基礎的學生模型。
(2) 特定任務蒸餾則是在特定的任務數據集上進行分類訓練,以適應特定任務的需求。此過程使用的教師模型是在特定任務上經過Fine-tune的預訓練模型,并基于Fine-tune的教師模型進行下一階段學生模型的知識蒸餾。
綜上,設置未蒸餾前基準模型的初始的超參數如表7所示。
表7 知識蒸餾的超參數設置
最終,在經過多輪周期性的訓練后,各基準模型成功地將損失值降至最小,以學生模型TinyBERT(通用蒸餾)在多個周期內的損失變化為例,其在四種數據集上的損失值最終分別為4.371、5.143、4.126、7.382。學生模型在訓練集上的損失變化如圖8所示。
圖8 未蒸餾前學生模型TinyBERT在訓練集上的損失變化
這表明模型在大規(guī)模的數據集訓練中取得了較小的損失值。此外,模型的損失誤差在更新過程中穩(wěn)步下降,沒有明顯的波動,表明模型在訓練過程中具有出色的穩(wěn)定性。因此,我們的模型在訓練集上展現出了出色的性能。
在訓練集上經過多輪訓練后,RoBERTa (Fine-tune)、Electra (Fine-tune)、TinyBERT(通用蒸餾)作為基準模型學習到通用的語義知識。隨后在各數據集的驗證集上檢驗訓練效果,其在驗證集對比實驗中的各模型分類性能統(tǒng)計結果如表8所示。
表8 未蒸餾前基準模型在驗證集上的對比實驗 (單位: %,1M=1百萬)
由表8可得,教師模型RoBERTa、Electra在經過Fine-tune后,均在四種數據集上取得了較優(yōu)的分類性能,而經過通用蒸餾后的學生模型TinyBERT則在這個階段的預測性能較低。
具體而言,RoBERTa模型在四種數據集上的平均準確率、平均F1值分別可達到84.87%、81.91%。Electra模型在四種數據集上的平均準確率、平均F1值分別可達到84.12%、81.98%。深入分析可得,兩種教師模型在Weibo、Waimai數據集上的預測性能最高,RoBERTa模型在這兩種數據集上的準確率分別可達到86.37%、85.21%。Electra模型同樣在這兩種數據集上的預測性能最高,分別為85.74%、86.31%。并且Waimai數據集的平均句子長度要遠遠高于Weibo數據集,長句子通常包含更多的冗余信息和文本噪聲,這會干擾模型對關鍵信息的識別和捕獲。但這對兩種教師模型產生的影響較小,相比于Weibo數據集,RoBERTa模型在Waimai數據集上的準確率僅僅下降1.34%,而Electra模型的預測性能相對增加了0.66%。因此,較長的文本長度(40個詞左右)對兩種教師模型的預測性能影響較小,這也表明兩種教師模型在長文本、短文本中的預測性能均較為穩(wěn)定。
隨后,兩種教師模型在THUCNews、今日頭條數據集中也取得了較優(yōu)異的性能,RoBERTa模型在這兩種數據集上的準確率分別可達到83.35%、82.67%。同時,Electra模型在這兩種數據集上也分別達到了較高的準確率,分別為82.65%、81.77%。相比于前兩種數據集上的預測性能,兩種教師模型在THUCNews、今日頭條數據集上的表現均有所下滑。這是由于當前的兩種數據集在分類類別上為10類、15類,遠高于Weibo、Waimai數據集的類別。隨著分類類別的增多,模型需要更好地理解每個類別的特征和差異,不同類別之間的區(qū)分難度通常會增加。但總體而言,兩種教師模型在四種數據集上都具有較好的預測性能,并且在四種數據集上具有較高的魯棒性,為后續(xù)的知識蒸餾過程奠定了基礎。
最后,經過通用蒸餾的學生模型TinyBERT表現出整體較低的預測性能,其平均準確率為66.11%,平均F1值為64.67%。具體在四種數據集上的準確率分別為69.37%、68.41%、63.92%、62.73%,F1值分別為68.60%、66.59%、62.28%、61.22%。盡管性能較差,但TinyBERT模型的參數量僅為11M,僅占用教師模型的10.78%。這意味著雖然模型的性能目前不高,但其輕量級的特性為后續(xù)優(yōu)化和應用提供了潛在的空間。
本節(jié)對學生模型TinyBERT進行特定任務蒸餾,為了更好地檢驗本文提出的蒸餾策略的性能,我們還設置了另外三種基準知識蒸餾策略,用于進行消融試驗。具體策略分別為:
① 蒸餾策略1:單教師單特征知識蒸餾策略
單教師單特征知識蒸餾是一種基本的知識傳遞技術,其蒸餾過程主要考慮教師模型與學生模型在最后一層的輸出層之間的關系。(教師模型: RoBERTa)
② 蒸餾策略2:多教師單特征知識蒸餾[26]
多教師單特征知識蒸餾結合了多個教師模型的知識信息,但只傳遞最后一層的特征輸出給學生模型。由于其結合了多個教師模型的知識,從而可以提供更豐富的信息,有助于提升學生模型的綜合性能。(教師模型: RoBERTa、Electra)
③ 蒸餾策略3:多教師多特征知識蒸餾[38]
多教師多特征知識蒸餾結合了多個教師模型的知識,但不僅僅限于傳遞最后一層的特征輸出,而是結合了不同層的特征輸出,讓學生模型進行學習。因此,教師模型從淺層到深層的特征表示都被傳遞給學生模型。(教師模型: RoBERTa、Electra,對應特征層查閱3.3節(jié))
④ 蒸餾策略4:本文提出的蒸餾策略
融合動態(tài)掩碼注意力機制與多教師多特征的知識蒸餾。該方法整合多個教師模型的強大語義能力,同時將多個教師模型的不同特征層的輸出與學生模型結合。并且,引入了動態(tài)掩碼注意力機制來動態(tài)地關注不同教師模型的特征知識。(教師模型: RoBERTa、Electra)
經過多輪測試,學生模型TinyBERT在經過知識蒸餾后,各蒸餾策略在測試集上的預測性能如表9 所示。
表9 各蒸餾策略在測試集上的對比實驗 (單位: %,1M=1百萬)
結合表8與表9可以直接看出,與教師模型的預測性能進行比較,上述4種經過蒸餾策略的 TinyBERT 模型的預測能力還是要較低于教師模型RoBERTa、Electra的預測性能,但其參數量僅為11M,遠遠小于兩種教師模型。與通用蒸餾后的學生模型性能進行比較,TinyBERT在經過不同蒸餾策略后,其預測性能遠高于通用蒸餾階段的模型性能。
具體而言,與表8中的通用蒸餾的學生性能相比,蒸餾策略1學習了單個教師模型最后一層的知識輸出,其在四種數據集上平均準確率提升了7.56%,平均F1值相對增加了5.52%,模型的預測性能取得了較大幅度的提升。但此時學生模型的預測性能仍然較低,平均準確率和平均F1值分別僅為71.12%、68.24%。隨后,蒸餾策略2引入了新的教師模型,這使得學生模型可以同時整合、學習兩種教師模型的知識,并且學生模型可以更好地泛化到新領域或者不同類型的數據。因此,相對于蒸餾策略1,蒸餾策略2在四種數據集上的平均準確率、平均F1值分別提升了3.91%,5.69%。由于蒸餾策略2主要關注兩種教師模型最后一層的知識輸出,而忽視了不同特征層之間的關聯,因此提出了蒸餾策略3。蒸餾策略3不僅引入了多個教師模型,還關注了教師模型中不同特征層之間的知識變化,這一方面保證學生模型可以整合不同抽象層次的信息,挖掘從底層的特征到高層的語義信息。另一方面,考慮多個特征層可以增強學生模型的魯棒性。其預測性能相比于蒸餾策略2,平均準確率、平均F1值分別增加5.45%,5.75%,增加的幅度也更加穩(wěn)定。
蒸餾策略4在四種蒸餾策略中表現出了最佳的預測性能,平均準確率達到了81.32%,平均F1值達到了80.03%。這一結果歸功于蒸餾策略4的獨特優(yōu)勢。首先,蒸餾策略4綜合了多教師和多特征層次的知識源,從不同層次獲取信息,使得模型能夠更全面地理解和利用教師模型的知識。其次,蒸餾策略4引入了動態(tài)掩碼注意力機制,該機制有助于模型聚焦在不同特征層的關鍵信息上,并減少了冗余信息的干擾,提高了模型的性能。與蒸餾策略3相比,蒸餾策略4在四種數據集上的表現明顯更出色,平均準確率提高了4.35%,平均F1值增加了4.93%。這一結果進一步驗證了本文提出的融合動態(tài)掩碼注意力機制與多教師多特征蒸餾策略的有效性。通過更好地整合多種知識源、多層次特征,關注關鍵信息,降低冗余干擾,蒸餾策略4為文本分類任務帶來了顯著的性能提升。
最后,我們還比較了蒸餾策略4與兩種教師模型RoBERTa、Electra的輸出結果。蒸餾策略4的預測性能相對于RoBERTa模型的平均準確率僅下降4.18%,平均F1值僅下降2.30%。相對于Electra模型的預測性能,蒸餾策略4的平均準確率僅下降3.33%,平均F1值僅下降2.38%。值得注意的是,此時學生模型的參數量卻遠遠小于兩種教師模型,其使用教師模型10.78%的參數量就獲得了略低于教師模型的預測性能。這表明學生模型以更加輕量級的模型大小取得了接近于教師模型的預測性能。
知識蒸餾過程中的時間延遲是指在知識蒸餾過程中,教師模型的知識是逐漸傳遞給學生模型,而不是立即傳遞全部知識。因此,時間延遲策略允許逐步引入教師模型的知識,以幫助學生模型逐漸改進性能。
為此我們設置一種溫度提升策略來驗證蒸餾過程中的時間延遲,即設置初始溫度為接近0的值,然后逐漸升高溫度,升溫間隔為0.5,直至達到最終的目標溫度(T=3)。這將溫度變化轉變?yōu)閷臅r間步數,通過比較學生模型TinyBERT在不同時間步驟的性能,驗證在時間推移下引入更多知識對輸出性能的影響。具體結果如圖9所示。
圖9 TinyBERT在不同溫度值下的預測準確率
由圖9可知,隨著蒸餾過程中溫度的升高,學生模型TinyBERT整體的預測性能也在不斷提升。但在溫度較低時,學生模型性能提升較小,直至溫度提升至2時,預測準確率發(fā)生了較大幅度提升。當溫度提升至最佳溫度T=3時,在四種數據集的準確率達到最佳,相比于T=0.5時的準確率,TinyBERT在最佳溫度時的準確率在四種數據上相對提升14.26%、13.62%、10.77%、10.36%。
這表明雖然教師模型在每個時間步驟都會生成完整的概率分布,但教師模型和學生模型之間的知識傳遞是延遲的或分布在不同的時間步驟中。例如,本次蒸餾過程中的知識傳遞主要發(fā)生在溫度大于1.5之后。這是由于在蒸餾初始時溫度較低,此時教師模型的軟標簽輸出的概率分布較為集中,因此帶有其他類別標簽的知識較少。隨著時間推移,蒸餾溫度不斷提升,此時教師模型的輸出更加均勻,輸出結果引入了更多類別的知識信息,也讓學生模型逐漸獲取到更多知識。另外,結合表9中不同階段的蒸餾策略也可看出,蒸餾過程中的知識是逐漸被學生模型學習的,例如蒸餾策略2僅學習兩種教師模型最后一層的軟輸出,而當蒸餾策略3引入中間層特征后,其學生模型的預測效果大幅度提升。
為了進一步驗證本文提出的蒸餾策略的輕量化程度,我們進行了兩種教師模型(Fine-tune)與經過蒸餾策略4(本文的蒸餾策略)后學生模型的運行效率對比實驗。在這部分實驗中,我們主要檢驗了教師模型RoBERTa、Electra以及學生模型TinyBERT(蒸餾策略4)在四種數據集的測試集上的運行時間。實驗結果如表10所示。
表10 教師模型與學生模型運行時間的對比實驗 (單位: 秒/s,1M=1百萬)
根據表10可以清晰地看出,經過蒸餾策略4的學生模型在四種不同數據集上都表現出最短的運行時間。RoBERTa和Electra在四種數據集上的平均運行時間分別為12.98s、12.50s,而TinyBERT的平均運行時間僅為7.1s。其平均推理時間僅為兩種教師模型平均運行時間的54.70%與56.80%。具體分析結果顯示,與RoBERTa和Electra模型相比,TinyBERT在Weibo、Waimai、THUCNews和今日頭條這四個數據集上的運行時間分別減少了約42.76%和39.16%、46.34%和46.99%、49.12%和46.79%、44.44%和42.42%??傮w來看,在經過本文的蒸餾策略后,TinyBERT的運行時間僅耗費兩種教師模型1/2的運行時間。因此,本文的蒸餾策略顯著提高了學生模型的運行效率。
在上述實驗中,在引入動態(tài)掩碼注意力機制后,學生模型的預測性能取得了明顯提升。為了理解動態(tài)掩碼注意力機制的工作原理及其對模型性能的影響,本節(jié)繪制了經過知識蒸餾后的學生模型TinyBERT對應層的注意力得分熱度圖,以深入了解TinyBERT模型在不同層次和頭部的注意力分布。
由于TinyBERT的結構包括4個Transformer層,每層又包含12個注意力頭。因此,注意力得分的輸出具有四維形狀,分別為批次大小、句子長度、注意力層數、注意力頭數。以輸入文本數據“我今天吃了火鍋,非常高興”為例,在添加通用的[CLS]和[SEP]符號后,模型的輸出注意力分數的維度為(1, 14, 4, 12)。具體的注意力熱度圖如圖10、圖11 所示,其中每一行代表每一層的注意力得分,每一列代表每個注意力頭的得分。在熱度圖中,顏色越亮,表示兩個字符之間的相關性越高。
圖10 TinyBERT在所有特征層的注意力熱度圖
圖11 TinyBERT在第一層特征層的注意力熱度圖
一方面,從圖10中可以看出,在四層的注意力得分中,許多字符與[SEP]的關聯性較高,這意味著動態(tài)掩碼注意力機制用[SEP]向量表達了句子中的部分字符特征,而句子的結尾通常包含對句子總結或結論的關鍵信息。同時也表明,動態(tài)掩碼注意力機制使得模型關注于句子的末尾部分,這使得模型在處理文本數據時可以理解從頭部到尾部的文本含義。并且,[SEP]符號是句子的結束標志,因此模型可能會將其視為句子的邊界,以便正確處理單句任務,這說明模型具備正確識別句子結束的能力。
另一方面,從圖11中可以看出,每個字符不僅與其自身的相關性最高,而且與其前后的不同字符也有一定程度的相關性。例如,“今天”和“吃”、“吃”和“火鍋”等都具有較高的相關性。這表明在引入動態(tài)掩碼注意力機制后,模型可以同時關注一個單詞與其周圍的單詞之間的關系,從而更好地捕捉上下文中的語義關系。
結合上述動態(tài)掩碼注意力機制對關鍵信息的打分優(yōu)勢,經過本文知識蒸餾后的學生模型TinyBERT可以關注文本數據的尾部關鍵信息與上下文相關信息,因而保證模型取得了最優(yōu)的預測性能。
隨著深度學習的不斷發(fā)展,模型的規(guī)模和參數數量也不斷膨脹,這導致在訓練和推理階段需要更多的計算資源和耗費時間。本文提出了一種融合動態(tài)掩碼注意力機制與多教師多特征的知識蒸餾方法,通過在四種數據集上的廣泛實驗,驗證了這一方法的性能與效率,并得出以下關鍵結論:
(1) 本文提出的蒸餾方法不僅引入多種教師模型,同時還兼顧不同教師模型的多個特征層。通過融合多種教師的性能與多層特征的語義表示,經過本文蒸餾策略的學生模型在四種數據集上均取得了最佳預測性能,平均準確率與平均F1值可達到81.32%、80.03%。
(2) 經過蒸餾后的學生模型不僅在四種數據集上的性能達到最優(yōu),其僅采用教師模型10.78%的參數量就取得略低于教師模型的預測結果。同時,學生模型具有更高的運行效率,其平均推理時間僅為兩種教師模型平均運行時間的54.70%與56.80%。
(3) 本研究還提出一種動態(tài)掩碼注意力機制作用于整個知識蒸餾過程,用于關注不同特征層上的有效信息,忽視無效信息的干擾。實驗結果表明,加入動態(tài)掩碼注意力機制后,學生模型在四種數據集上的平均準確率與平均F1值分別提高4.35%與4.93%。此外,由注意力得分熱度圖可得,該機制使得模型更加關注數據的尾部關鍵信息與上下文信息。
在后續(xù)研究中,我們將嘗試引入多模態(tài)的方法與數據,構造基于多教師多特征多模態(tài)形式的知識蒸餾策略,以保證模型適用于多元化數據。