王 淼,丁德銳
(1 上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093;2 上海理工大學(xué) 理學(xué)院,上海 200093)
越來越多的信息以文本的形式存儲(chǔ),因此文本挖掘具有很高的商業(yè)價(jià)值。文本分類是文本挖掘的重要任務(wù),是從文本信息中提取知識(shí)的技術(shù),廣泛應(yīng)用于醫(yī)學(xué)、社會(huì)科學(xué)、商業(yè)等領(lǐng)域。而手動(dòng)設(shè)計(jì)特征的手工文本分類方法難以處理海量的文本信息,因此基于深度學(xué)習(xí)的方法越來越多的被應(yīng)用文本分類任務(wù)中[1]。
近年來,基于自注意力機(jī)制的預(yù)訓(xùn)練語言模型BERT,因其良好的準(zhǔn)確性和預(yù)訓(xùn)練-微調(diào)機(jī)制的多任務(wù)通用性,逐漸成為自然語言理解和生成領(lǐng)域的主流模型[2]。例如:采取動(dòng)態(tài)掩碼和更長序列訓(xùn)練的Roberta,結(jié)合雙流注意力機(jī)制和置換語言模型(Permutation Language Model)的自回歸語言模型XLNet,將孿生網(wǎng)絡(luò)引入BERT 網(wǎng)絡(luò)生成具有較強(qiáng)通用性的句向量的SentenceBERT,在少樣本(fewshot)、單樣本(one-shot)和零樣本(zero-shot)任務(wù)均取得了令人震驚的效果的GPT-3。
上述模型在文本分類任務(wù)中都取得了良好的效果,但由于其參數(shù)量巨大,其中GPT-3 的參數(shù)量甚至達(dá)到了1 700 億之多,且自注意力機(jī)制的計(jì)算時(shí)間復(fù)雜度與輸入序列的平方成正比,因此模型訓(xùn)練成本高昂,內(nèi)存需求和功耗巨大,預(yù)測速度慢,難以部署在移動(dòng)端[3]?,F(xiàn)實(shí)世界的移動(dòng)端或資源受限的設(shè)備,往往需要小尺寸、高精度、快速推理、低電耗的模型,嚴(yán)重限制了BERT 類模型在實(shí)際生活中的落地和發(fā)展。一些相關(guān)工作證明了BERT 類模型網(wǎng)絡(luò)權(quán)重存在參數(shù)冗余的特征,尤其是對(duì)于文本分類的自然語言理解式任務(wù),參數(shù)冗余問題就更加凸顯[4-5]。這給對(duì)BERT 類模型進(jìn)行模型壓縮提供了理論支撐。
為了壓縮模型,本文提出了一種基于自蒸餾、多目標(biāo)知識(shí)蒸餾和剪枝的小型文本分類模型SmBERT,通過二次自蒸餾逐步將原生12 層BERT模型壓縮至3 層;對(duì)得到的3 層BERT 進(jìn)行多目標(biāo)知識(shí)蒸餾,進(jìn)而通過多尺度融合學(xué)習(xí)教師模型的知識(shí);最后,通過剪枝對(duì)模型進(jìn)行縱向壓縮以得到SmBERT 網(wǎng)絡(luò)。
隨著語言模型的改進(jìn)和大規(guī)模預(yù)訓(xùn)練模型的興起,文本分類在最近幾年取得了飛速發(fā)展。但隨著模型的規(guī)模不斷擴(kuò)大,模型的訓(xùn)練成本和運(yùn)行硬件要求都日益提高,難以在計(jì)算能力有限的設(shè)備上運(yùn)行。同時(shí)大模型往往存在參數(shù)冗余的問題,面向小數(shù)據(jù)集任務(wù)時(shí),冗余問題則越發(fā)凸顯,近年來一些相關(guān)工作通過隨即丟棄、剪枝和稀疏矩陣等方法對(duì)模型進(jìn)行壓縮,探究在不損失過多精度的條件下盡可能地對(duì)模型進(jìn)行壓縮[6]。
注意力機(jī)制起源于人類在較大的感受野中利用有限注意力提取重要信息的視覺處理機(jī)制,可以快速提取全局信息的重要特征。
注意力機(jī)制最初應(yīng)用在計(jì)算機(jī)視覺的相關(guān)任務(wù),并取得了較好的結(jié)果。而在自然語言處理領(lǐng)域中,由于語言天生從左向右單向排列的特性,應(yīng)用廣泛的傳統(tǒng)的語言模型如RNN,LSTM,GRU 等均是單向自回歸語言模型,不具備并行處理能力:
(1)只能逐字輸入,效率極低;
(2)無法同時(shí)利用上下文信息,難以捕捉長距離文本的信息;
(3)存在“長期依賴”和梯度消失問題。因此嚴(yán)重限制了自然語言領(lǐng)域的發(fā)展,也限制著注意力機(jī)制在自然語言領(lǐng)域中的應(yīng)用。
2017 年,Vaswani[7]等人提出了改進(jìn)的自注意力機(jī)制(Self-Attention),通過在輸入數(shù)據(jù)內(nèi)部建立特征連接,可以并行的處理一整段文字而不是逐詞按時(shí)序處理,增強(qiáng)了長距離上下文信息的捕捉能力和對(duì)數(shù)據(jù)內(nèi)部相關(guān)性特征的提取能力,減弱了對(duì)額外信息的需求。
1989 年,LeCun Y[8]提出“最優(yōu)腦損傷”(Optimal Brain Damage)的剪枝壓縮方法,可以通過類似生物突觸剪枝的方法來緩解網(wǎng)絡(luò)“過度能力(過擬合)”的問題。
最初的模型剪枝多針對(duì)權(quán)重連接和神經(jīng)元單元的非結(jié)構(gòu)剪枝方法,在訓(xùn)練過程中剪除不重要的連接和神經(jīng)元,衡量重要性的標(biāo)準(zhǔn)多是根據(jù)參數(shù)絕對(duì)值的大小。
隨著深度學(xué)習(xí)的發(fā)展,神經(jīng)網(wǎng)絡(luò)層數(shù)不斷加深,引起了梯度消失和梯度爆炸問題,限制著深度網(wǎng)絡(luò)的發(fā)展,而針對(duì)模型層級(jí)的結(jié)構(gòu)性剪枝通過對(duì)層數(shù)的修剪,在不損失過多性能的情況下降低了深度模型的復(fù)雜度。
受啟發(fā)于人類學(xué)習(xí)的方式,2015 年Hinton[9]提出了知識(shí)蒸餾(Knowledge Distillation),核心思想是讓學(xué)生小模型模仿教師模型,從而學(xué)習(xí)大模型的通用語言知識(shí)。
本文發(fā)現(xiàn)通過基于目標(biāo)的知識(shí)蒸餾來獲得3 層的BERT 子網(wǎng)絡(luò),其模型效果甚至不如原生BERT網(wǎng)絡(luò)的前3 層子網(wǎng)絡(luò),說明了單一蒸餾方法的局限性。簡單初始化的學(xué)生網(wǎng)絡(luò)難以有效地學(xué)習(xí)教師網(wǎng)絡(luò)的知識(shí),而單一的知識(shí)蒸餾目標(biāo)難以充分的遷移教師網(wǎng)絡(luò)的知識(shí)。如果采用多目標(biāo)的知識(shí)蒸餾手段,同時(shí)利用具有較好泛化性的教師模型來完成學(xué)生網(wǎng)絡(luò)的參數(shù)初始化,上述問題可以得到一定程度的解決?;诖?,本文提出了基于自蒸餾、多目標(biāo)知識(shí)蒸餾和剪枝的SmBERT 網(wǎng)絡(luò),該網(wǎng)絡(luò)由原生12 層的BERT-base 通過兩次自蒸餾壓縮層級(jí),得到3 層的子網(wǎng)絡(luò),隨后應(yīng)用多目標(biāo)知識(shí)蒸餾再次將原生BERT 模型的知識(shí)遷移到學(xué)生模型中,最后通過面向任務(wù)的剪枝進(jìn)行注意力頭的剪枝,最終得到SmBERT 網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 SmBERT 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 SmBERT network structure
通過自蒸餾的方式,在不引入教師模型的前提下,通過不斷地用子網(wǎng)絡(luò)的模塊替換母網(wǎng)絡(luò)的相應(yīng)模塊,使子網(wǎng)絡(luò)逐漸擬合并代替母網(wǎng)絡(luò);相比于傳統(tǒng)的單目標(biāo)知識(shí)蒸餾,本文的多目標(biāo)學(xué)習(xí)學(xué)生模型從更多維度的學(xué)習(xí)教師模型的知識(shí);相比于傳統(tǒng)的基于單一任務(wù)剪枝,本文的多語言任務(wù)剪枝能使模型學(xué)習(xí)更通用的語言知識(shí)。
2018 年,Devlin 提出基于自注意力機(jī)制的BERT 模型,在GLUE 數(shù)據(jù)集和SQuAD 數(shù)據(jù)集的11個(gè)自然語言理解子任務(wù)中取得了SOTA(State-ofthe-Art)的結(jié)果,證明了基于自注意力的雙向語言模型的有效性,同時(shí)參數(shù)量巨大的BERT 模型提取了目標(biāo)文本的通用詞向量表示,從而使其網(wǎng)絡(luò)后外接面向當(dāng)前任務(wù)的分類層并微調(diào)就可以廣泛應(yīng)用于自然語言理解的不同子任務(wù)中,這使得BERT 類預(yù)訓(xùn)練-微調(diào)的模型訓(xùn)練范式日趨流行。
BERT 通過多頭自注意力機(jī)制實(shí)現(xiàn)對(duì)輸入文本所有位置字詞的相關(guān)性計(jì)算,使得每個(gè)詞的向量表征同時(shí)抽取到上下文信息。BERT 的輸入處理如公式(1)所示,通過Embedding 詞嵌入處理,得到分布式詞向量矩陣X∈
其中,input為文本。
X與3 個(gè)不同權(quán)值的嵌入矩陣WQ,WK,WV相乘,得到輸入序列對(duì)應(yīng)的Q,K,V投影矩陣,公式(2)和公式(3):
其中,dmodel為詞向量矩陣的行數(shù),head為注意力頭的數(shù)量。
為了計(jì)算輸入文本中每個(gè)位置字詞的自注意力分?jǐn)?shù),矩陣左乘K的轉(zhuǎn)置,以建立輸入序列的自注意力矩陣,除以分布的標(biāo)準(zhǔn)差以維持?jǐn)?shù)據(jù)依然保持近似的正態(tài)分布,從而維持梯度穩(wěn)定,并應(yīng)用softmax 歸一化將分?jǐn)?shù)轉(zhuǎn)化為概率。最后與V矩陣相乘,得到融合輸入序列自相關(guān)性信息的新的詞向量矩陣,為公式(4)
將每個(gè)自注意力頭得到的矩陣拼接并投影,得到最終輸出的詞向量矩陣,為公式(5)
BERT 通過自注意力機(jī)制獲得文本內(nèi)全局特征信息,在多任務(wù)中都表現(xiàn)了超越傳統(tǒng)模型的效果,啟發(fā)了一系列相關(guān)改進(jìn)和探究工作,但BERT 模型的巨大參數(shù)量、深度以及自注意力機(jī)制序列長度二次方的時(shí)間復(fù)雜度都嚴(yán)重限制了BERT 在小設(shè)備的應(yīng)用。
針對(duì)上述問題,可通過稀疏化自注意力矩陣來降低模型的時(shí)間復(fù)雜度,將自注意力機(jī)制的時(shí)間復(fù)雜度改進(jìn)為近似于序列長度的線性關(guān)系,如Longformer,Big Bird 等通過稀疏化自注意力矩陣,將自注意力機(jī)制的時(shí)間復(fù)雜度改進(jìn)為近似于序列長度的線性關(guān)系,但這種稀疏矩陣往往需要單獨(dú)建立底層運(yùn)算的稀疏運(yùn)算加速庫。與此同時(shí),諸如剪枝,知識(shí)蒸餾,權(quán)重共享及量化等模型壓縮方法越來越多的被用于改善BERT 類網(wǎng)絡(luò)的速度,從模型的深度和寬度兩個(gè)維度上對(duì)模型進(jìn)行壓縮,但權(quán)重共享只能縮小模型尺寸而無法實(shí)現(xiàn)運(yùn)行的加速,量化策略犧牲模型的精度,因此本文采用多目標(biāo)知識(shí)蒸餾,自蒸餾及剪枝同時(shí)從深度和寬度壓縮原生BERT 模型。
受忒修斯之船悖論的啟發(fā),Canwen Xu 于2019年提出BERT of Theseus 網(wǎng)絡(luò)(以下簡稱Theseus),將目標(biāo)模型分為多個(gè)模塊。通過自蒸餾的方法將6層的目標(biāo)模型壓縮至3 層。首先利用目標(biāo)模型的前3 層來初始化子模型,將母模型每兩層視為一個(gè)母模塊Prdi,每層子模型視為一個(gè)子模塊Scci,訓(xùn)練過程如圖2 所示。
圖2 Theseus 網(wǎng)絡(luò)訓(xùn)練過程Fig.2 Theseus training process
訓(xùn)練的方式有兩種:第一種固定概率蒸餾,即在訓(xùn)練的時(shí)候讓子模塊Scci以既定的替換概率P替換相對(duì)應(yīng)的母模塊Prei,子模塊在逐漸替換訓(xùn)練的過程中達(dá)到了母模塊在整體模型中的效果,在訓(xùn)練一定步長后結(jié)束蒸餾,為公式(6)所示
其中,P表示人為設(shè)定的替換率;Scci表示第i個(gè)子模塊;Prei表示第i個(gè)母模塊。
第二種是調(diào)節(jié)概率蒸餾,即在蒸餾的過程中逐漸增加替換的概率,最終替換概率達(dá)到1,為公式(7),即所有子模塊替換對(duì)應(yīng)的母模塊并組成自蒸餾后的壓縮子模型,從而將深度壓縮到原來的一半。
其中,k與b均為人為設(shè)置的超參數(shù),t表示訓(xùn)練步長。
本文采用調(diào)節(jié)概率蒸餾法。
Theseus 網(wǎng)絡(luò)采用基于具體任務(wù)的蒸餾方式,可以直觀地觀察蒸餾的有效性,但只是從深度這一單一維度上進(jìn)行壓縮,橫向依舊存在參數(shù)冗余。因此,本文采用剪枝的手段進(jìn)行寬度壓縮。
隨著深度學(xué)習(xí)的發(fā)展,復(fù)雜的大模型日益成為主流,需要大量的計(jì)算資源以便從高維冗余的語料庫中學(xué)習(xí)通用的語義知識(shí),但同時(shí)對(duì)部署設(shè)備的要求很高。為了利用大模型來提升小模型的效果,傳統(tǒng)的知識(shí)蒸餾訓(xùn)練過程分為教師模型的訓(xùn)練和學(xué)生模型的學(xué)習(xí)兩個(gè)階段。
對(duì)于分類任務(wù)而言,教師模型的訓(xùn)練大致與一般網(wǎng)絡(luò)的訓(xùn)練過程無異,只是一般神經(jīng)網(wǎng)絡(luò)通過softmax 函數(shù)計(jì)算輸出分類概率分布,其計(jì)算為公式(8)
其中,Zi是網(wǎng)絡(luò)輸出第i類的邏輯值。
但除了正標(biāo)簽外,負(fù)標(biāo)簽的分布也蘊(yùn)含著語義信息。而復(fù)雜大模型輸出的分布向量近似于正標(biāo)簽為1,負(fù)標(biāo)簽接近于0 的獨(dú)熱向量,難以從輸出概率分布中傳遞知識(shí),因此教師模型引入了溫度T 來產(chǎn)生軟化的標(biāo)簽,以改良傳統(tǒng)的softmax 函數(shù),模型新的輸出分類概率分布為公式(9),期以提高學(xué)生模型的泛化能力。
學(xué)生模型的訓(xùn)練目標(biāo)函數(shù)是結(jié)合軟標(biāo)簽和真實(shí)標(biāo)簽的交叉熵函數(shù),在學(xué)習(xí)教師模型知識(shí)的同時(shí)引入真實(shí)分布知識(shí),即學(xué)生模型既學(xué)習(xí)教師模型的預(yù)測結(jié)果,也學(xué)習(xí)樣本的真實(shí)標(biāo)簽,為公式(10)
其中,ti和si分別表示教師模型和學(xué)生模型對(duì)第i類的預(yù)測概率值;fi表示第i類的真實(shí)標(biāo)簽值;a和b是人為設(shè)定的超參數(shù),分別代表了軟標(biāo)簽和真實(shí)標(biāo)簽對(duì)損失函數(shù)的貢獻(xiàn)程度。
然而基于交叉熵?fù)p失的知識(shí)蒸餾方法只利用了網(wǎng)絡(luò)最終的輸出,沒有多維度地蒸餾網(wǎng)絡(luò)內(nèi)部知識(shí),提升效果一般。
為了多維度地學(xué)習(xí)教師模型的知識(shí),本文借鑒了DistilBERT 的蒸餾方式,采用了多目標(biāo)的蒸餾方法,除了傳統(tǒng)的交叉熵?fù)p失函數(shù)Lce外,本文也采用了其他損失函數(shù)作為學(xué)習(xí)目標(biāo),如掩碼語言模型和余弦相似度。
Lmlm是Masked Language Model(掩碼語言模型)BERT 自監(jiān)督預(yù)訓(xùn)練任務(wù)的損失函數(shù),用當(dāng)前被掩蓋詞的前后文來預(yù)測該詞,使得模型能夠有效地學(xué)習(xí)雙向編碼信息。為了從無標(biāo)簽的大數(shù)據(jù)集中獲取通用語言知識(shí),本文采用掩碼語言模型損失函數(shù)Lmlm作為損失函數(shù),計(jì)算為公式(11)
其中,m(x)表示輸入序列被掩蓋的字詞;表示未被掩蓋的字詞;表示根據(jù)輸入序列中未被掩蓋的字詞推理出真實(shí)被掩蓋字詞的概率。
為了利用教師模型的隱層知識(shí),本文還采用了教師和學(xué)生模型隱層的余弦相似度Lcos作為知識(shí)蒸餾的目標(biāo)之一,其值越大則說明學(xué)生模型和教師模型的隱層語義空間越接近,蒸餾的效果越好,來調(diào)整教師和學(xué)生模型的隱層參數(shù)方向,為公式(12)
其中,Weightteacher和Weightstudent分別表示教師模型和學(xué)生模型的隱層參數(shù)。
綜上,本文采用的多目標(biāo)知識(shí)蒸餾的損失函數(shù)為公式(13)
其中,α、β和γ均是人為設(shè)置的超參數(shù),分別代表了Lce、Lmlm和Lcos對(duì)Loss函數(shù)的貢獻(xiàn)程度。
BERT 類模型采用多頭自注意力機(jī)制,由若干個(gè)維度較低的注意力頭組成,形成多個(gè)子空間,以捕捉多層次的語義關(guān)系。而Michel[10]經(jīng)過頭剪枝消融實(shí)驗(yàn)證明了多頭注意力機(jī)制存在冗余:在每層只丟棄一個(gè)注意力頭的情況下,大部分時(shí)候模型的性能得到略微提升,說明多頭注意力機(jī)制存在注意力頭冗余的問題。
BERT 類模型還存在隱層維度不對(duì)齊的問題,例如BERT-base 的隱層維度為768,而BERT-large的隱層維度為1 024,這就限制了低維度的小模型學(xué)習(xí)高維度模型的能力,Sun[11]提出瓶頸(bottleneck)機(jī)制,即對(duì)齊大小模型的輸入輸出維度,而在隱層內(nèi)部又將中間輸出維度還原為輸入維度,從中間隱層維度的方向進(jìn)行模型壓縮。
使用目標(biāo)數(shù)據(jù)集對(duì)模型進(jìn)行訓(xùn)練,模型中絕對(duì)值越小的參數(shù)往往對(duì)當(dāng)前任務(wù)具有較少的貢獻(xiàn),因而其被剪枝的優(yōu)先級(jí)則越高,為公式(14)
其中,top表示原模型參數(shù),Topv表示絕對(duì)值大小排名前v%的參數(shù)。
本文使用哈工大訊飛實(shí)驗(yàn)室開發(fā)的Text-Pruner 程序包對(duì)模型進(jìn)行注意力頭和隱層維度的橫向壓縮。
為評(píng)估本文提出SmBERT 模型的性能,在GLUE(The General Language Understanding Evaluation)的QQP、MRPC、RTE、QNLI 和SST2 這5個(gè)子任務(wù)上進(jìn)行了測試,并與原生BERT 及其一系列衍生模型進(jìn)行了比較。計(jì)算機(jī)配置為:Intel(R)Xeon(R)CPU E5-1620 v3 @ 3.50 GHz,Nvidia GTX 1080 8 GB RAM。
在GLUE 的MNLI 數(shù)據(jù)集上對(duì)模型進(jìn)行二次自蒸餾,兩次蒸餾的參數(shù)配置見表1。
表1 兩次自蒸餾的訓(xùn)練參數(shù)Tab.1 Training parameters for two self-distillations
第一階段將原生BERT 蒸餾到6 層,并對(duì)目標(biāo)模型進(jìn)行第二階段的蒸餾,將層數(shù)降低為3 層。鑒于第一階段的母模型參數(shù)量較大,本文采用了較低的初始替換率R和較低的概率增長率K,讓子模型在蒸餾的過程中學(xué)習(xí)曲線更加平滑;與此對(duì)應(yīng)的是第二階段的蒸餾,本文采用了較大的替換率和增長率。
繼續(xù)在MNLI 數(shù)據(jù)集上進(jìn)行多目標(biāo)蒸餾,本文采用了混合精度訓(xùn)練以加速蒸餾過程,參數(shù)見表2。
表2 多目標(biāo)知識(shí)蒸餾訓(xùn)練參數(shù)Tab.2 Multi-objective knowledge distillation training parameters
在支持多語言的釋義識(shí)別對(duì)抗性數(shù)據(jù)集pawsx 上,進(jìn)行基于目標(biāo)任務(wù)分?jǐn)?shù)的參數(shù)剪枝,最終得到Smaller-BERT,期以提升模型的泛化性和多語言適配性。
最后,本文采用了哈工大訊飛實(shí)驗(yàn)室開發(fā)的Text-Pruner 工具包對(duì)模型進(jìn)行剪枝,將隱層維度從原來的3 072 降低到2 048,將注意力頭數(shù)量從原來的12 個(gè)降低到8 個(gè)。
以上就是SmBERT 的訓(xùn)練全過程。
分別在多任務(wù)自然語言理解基準(zhǔn)和分析數(shù)據(jù)集GLUE 的QQP、QNLI、SST-2、MRPC、RTE 5 個(gè)數(shù)據(jù)集上進(jìn)行測試和評(píng)估。
QQP 是判斷句對(duì)是否等價(jià)的二分類任務(wù);QNLI是判斷句對(duì)是否蘊(yùn)含的二分類任務(wù);SST-2 是單句的情感二分類任務(wù);MRPC 是判斷句對(duì)是否釋義等價(jià)的二分類任務(wù);RTE 是識(shí)別文本蘊(yùn)含的二分類任務(wù)。各個(gè)數(shù)據(jù)集樣本分布見表3。
表3 實(shí)驗(yàn)各數(shù)據(jù)集樣本分布Tab.3 Experimental sample distribution of each dataset /k
對(duì)于SST-2,QNLI,RTE 數(shù)據(jù)集的評(píng)價(jià)指標(biāo)為準(zhǔn)確率(Precision),其計(jì)算公式為(15)
其中,TP表示原樣本為正例,預(yù)測結(jié)果也為正例的樣本數(shù),F(xiàn)P表示原樣本為負(fù)例,預(yù)測結(jié)果為正例的樣本數(shù)。
召回率Recall 指正類樣本被找到的概率,式(16)。
其中,F(xiàn)N表示原樣本為正例,預(yù)測結(jié)果為負(fù)例的樣本數(shù)。
QQP 和MRPC 數(shù)據(jù)集的正樣本比例過高,因此采用F1 值作為評(píng)價(jià)指標(biāo),用于衡量分類器性能的綜合指標(biāo),其計(jì)算為公式(17)
為了驗(yàn)證SmBERT 的壓縮效果,本文選擇了BERT-base,GPT,BERT-large 在5 個(gè)數(shù)據(jù)集的測試集上與SmBERT 進(jìn)行效果對(duì)比。鑒于設(shè)備的限制,模型的最長輸入序列長度為128,而不同的模型很可能采用不同的序列長度,因此為了更客觀地探究SmBERT 的性能,本文實(shí)驗(yàn)中除了BERT-large 和GPT,其余模型均是在同一設(shè)備下進(jìn)行復(fù)現(xiàn)。具體的,各模型均采用0.000 01 的學(xué)習(xí)率和128 的最長序列長度,在相應(yīng)任務(wù)數(shù)據(jù)集上進(jìn)行微調(diào),得出結(jié)果見表4。
表4 SmBERT 與不同模型在5 個(gè)任務(wù)測試集的性能對(duì)比Tab.4 SmBERT performance comparison with different models in 5 task test sets
如表4 所示,平均指標(biāo)是模型在5 個(gè)數(shù)據(jù)集上的平均分?jǐn)?shù),在多數(shù)據(jù)集比較中更能反映模型的泛化能力。對(duì)比平均指標(biāo)可以看出,SmBERT 相比于原生的BERT-base,只用了其35%的參數(shù)量就達(dá)到了94%的平均指標(biāo),具有較高壓縮比,同時(shí)也維持了模型良好的多任務(wù)文本理解能力。當(dāng)SmBERT與GPT 模型對(duì)比時(shí),發(fā)現(xiàn)SmBERT 僅用了GPT 模型33%的參數(shù)量就達(dá)到了其99%的平均性能。SmBERT 僅用其11%的參數(shù)量就達(dá)到了其91%的平均性能
此外,SmBERT 在5 個(gè)任務(wù)上的表現(xiàn)均超越了BERT-3(即BERT 的前3 層),而SmBERT 的參數(shù)量也少于BERT,證明了本文訓(xùn)練方法的有效性,要遠(yuǎn)優(yōu)于直接在目標(biāo)數(shù)據(jù)集上微調(diào)的子網(wǎng)絡(luò)。
在5 個(gè)數(shù)據(jù)集上SmBERT 保持了94%的BERT-base 的語義能力,尤其是在小數(shù)據(jù)集MRPC 表現(xiàn)了原模型96%的能力,在RTE 數(shù)據(jù)集上甚至超過了原模型的效果,說明SmBERT 對(duì)小數(shù)據(jù)集任務(wù)更具優(yōu)勢。
為了探究模型對(duì)小數(shù)據(jù)集任務(wù)的性能和泛化能力,本文選擇了與RTE 樣本規(guī)模最接近的MRPC 任務(wù)的開發(fā)集上進(jìn)行探究,實(shí)驗(yàn)結(jié)果見表5。
表5 各模型在MRPC 開發(fā)集的F1 值Tab.5 The F1 value of each model in the MRPC development set
與BERT,DistilBERT,Theseus 及其子網(wǎng)絡(luò)對(duì)比,SmBERT 在參數(shù)最少的情況下,在MRPC 的開發(fā)集上的表現(xiàn)僅次于原生Theseus,體現(xiàn)了模型在小數(shù)據(jù)集任務(wù)上良好的泛化性。同時(shí)SmBERT 遠(yuǎn)超過同等深度的模型,體現(xiàn)了本文壓縮方法的有效性。
為了驗(yàn)證SmBERT 對(duì)推理速度的提升,本文分別應(yīng)用BERT-base 和SmBERT 對(duì)維度為32×512 的隨機(jī)矩陣進(jìn)行推理,推理時(shí)間對(duì)比見表6。
表6 推理時(shí)間對(duì)比Tab.6 Comparison of reasoning time
從表6 可以看出,SmBERT 的平均推理速度比BERT-base 快了6.1 倍,測試推理時(shí)間的標(biāo)準(zhǔn)差較小,說明模型的推理時(shí)間序列較為平滑,能反映模型正常推理速度。對(duì)比BERT-3 和SmBERT 可以發(fā)現(xiàn),隱層和注意力頭縱向的壓縮對(duì)推理速度的提升也起到了一定的推理加速作用。
綜上,SmBERT 只用了BERT 參數(shù)量的35%,在5 個(gè)數(shù)據(jù)集上表現(xiàn)了BERT 效果的94%,并在小數(shù)據(jù)集任務(wù)上表現(xiàn)了更好的分類結(jié)果,推理速度提升了6.1 倍。
本文提出了SmBERT 的輕量型BERT 類模型。首先,通過二次自蒸餾實(shí)現(xiàn)了模型的縱向壓縮一倍;通過多目標(biāo)知識(shí)蒸餾多維度地融合了大模型教師的語言知識(shí);最后,基于跨語言任務(wù)的剪枝利用,降低了模型橫向的參數(shù)冗余,提升泛化能力。
在與大模型和同類壓縮模型的對(duì)比試驗(yàn)中,SmBERT 在高度壓縮BERT 模型的同時(shí)維持了良好的通用語言能力,更在小數(shù)據(jù)集上表現(xiàn)了良好的語言理解和遷移能力。