周孝青,段湘煜,俞鴻飛,張 民
(蘇州大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
機(jī)器翻譯包括統(tǒng)計機(jī)器翻譯和神經(jīng)機(jī)器翻譯。近年來,神經(jīng)機(jī)器翻譯(neural machine translation,NMT)系統(tǒng)[1-5]取得了巨大成功,成為機(jī)器翻譯的主流方法。神經(jīng)機(jī)器翻譯模型的性能在很大程度上受限于神經(jīng)網(wǎng)絡(luò)參數(shù)規(guī)模。神經(jīng)機(jī)器翻譯模型參數(shù)過多也會存在一些問題,例如,模型的存儲空間要求變高、優(yōu)化時間變長等。這種情況限制神經(jīng)機(jī)器翻譯系統(tǒng)在手機(jī)等小型設(shè)備上的應(yīng)用。
模型壓縮是解決此類問題的一種有效方案?,F(xiàn)有的壓縮方法有剪枝、量化、低精度和知識蒸餾等。剪枝是通過移除對目標(biāo)函數(shù)影響小的權(quán)重[6],或者對隱藏層單元進(jìn)行閾值處理[7]。知識蒸餾是通過引入教師網(wǎng)絡(luò)(teacher network)的相關(guān)知識或信息優(yōu)化學(xué)生網(wǎng)絡(luò)(student network)的訓(xùn)練[8],其中教師網(wǎng)絡(luò)模型復(fù)雜但性能優(yōu)越,學(xué)生網(wǎng)絡(luò)精簡且復(fù)雜度低。目前神經(jīng)網(wǎng)絡(luò)壓縮工作包括模型參數(shù)壓縮和模型存儲壓縮兩類,前者的目標(biāo)是減少模型參數(shù),后者是減少存儲。模型參數(shù)壓縮有剪枝、量化、降低精度和知識蒸餾等方法。在深度神經(jīng)網(wǎng)絡(luò)壓縮方法中,剪枝是基于一定的準(zhǔn)則對權(quán)重或神經(jīng)元進(jìn)行剪枝;剪枝準(zhǔn)則主要包括近似海森權(quán)重剪枝[6]和基于值的大小剪枝[9];以及移除神經(jīng)元的方法[10-11]。深度神經(jīng)網(wǎng)絡(luò)壓縮的其它方法包括稀疏正則化[12]、權(quán)重矩陣的低秩分解[13-16]、權(quán)重共享[17-18]和權(quán)重的二值化[19]。在機(jī)器翻譯領(lǐng)域中,See等人提出基于權(quán)重的幅值進(jìn)行修剪或按權(quán)重的類別進(jìn)行剪枝[12];Kim等人提出知識蒸餾[20];林野等人對比了剪枝、量化、低精度三種模型壓縮方法在Transformer和遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)兩種模型上的效果[21]。
本文提出半知識蒸餾方法來壓縮模型。半知識蒸餾方法將已訓(xùn)練的教師模型的部分知識,通過權(quán)重賦值直接傳遞給學(xué)生網(wǎng)絡(luò),學(xué)生網(wǎng)絡(luò)以此為起點(diǎn)開始訓(xùn)練,對于壓縮權(quán)重采用高斯分布初始化。為了使得整個模型完全被壓縮,可以遞進(jìn)式運(yùn)用半知識蒸餾方法來壓縮另外一部分的權(quán)重,將當(dāng)前的學(xué)生網(wǎng)絡(luò)充當(dāng)新的教師網(wǎng)絡(luò),將新的知識傳遞給更小參數(shù)規(guī)模的學(xué)生網(wǎng)絡(luò)。本方法可以應(yīng)用到常見的端到端模型,本文以Transformer[5]模型結(jié)構(gòu)為例使用此方法。首先,通過劃分Transformer參數(shù)為兩個部分,壓縮和未壓縮部分,然后壓縮和未壓縮的部分通過中間映射的權(quán)重作為壓縮兼容性矩陣,以保證壓縮的權(quán)重可與其他未壓縮權(quán)重兼容,從而不需要添加新的參數(shù),實現(xiàn)壓縮整個模型參數(shù)的目標(biāo)。
本文進(jìn)行了充分的實驗,實驗結(jié)果顯示,遞進(jìn)式知識蒸餾得到的全壓縮模型和半壓縮模型均比相應(yīng)的基準(zhǔn)模型有顯著的性能改善。半知識蒸餾可以將Transformer模型壓縮成更小的學(xué)生模型,其性能甚至超過教師模型的性能。通過現(xiàn)有工作(詞級別和句子級別的知識蒸餾[21])和本文提出的方法進(jìn)行對比,在中英任務(wù)上,本文與詞級別和句子級別的知識蒸餾性能可比,并且在日英任務(wù)上,本文方法獲得了比詞級別和句子級別知識蒸餾更好的性能。在日英翻譯和中英翻譯實驗中,最佳性能比相應(yīng)的基準(zhǔn)模型分別提高了2.16個BLEU值和0.72個BLEU值。
Transformer是機(jī)器翻譯中最成功的NMT系統(tǒng)之一,同時也是一個典型的NMT系統(tǒng),具有多層結(jié)構(gòu)且有大規(guī)模參數(shù)的特點(diǎn),在許多基于端到端序列建模任務(wù)中表現(xiàn)出色。因此,選擇它作為基準(zhǔn)模型進(jìn)行模型壓縮具有代表性和一般性。與其他基于遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[1-3]和卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[4]的翻譯系統(tǒng)相比,Transformer僅基于注意力機(jī)制進(jìn)行序列建模。其結(jié)構(gòu)如圖1所示。
圖1 Transformer 模型架構(gòu)
編碼器由L個相同的層堆疊組成,每個層包含兩個子層: 多頭自注意層和前饋神經(jīng)網(wǎng)絡(luò)層。每個子層通過殘差連接(residual connection)[19]進(jìn)行連接,然后是層規(guī)范化[20](layer normalization)。可以由layernorm(h +sublayer(h))表示,其中l(wèi)ayernorm(·)表示層規(guī)范化函數(shù)的輸出和sublayer(h)表示子層的輸出;h表示當(dāng)前子層輸入的隱藏層狀態(tài)。Transformer的層與層之間采用殘差連接,因此模型子層輸入的尺寸和子層輸出的維度相同。
解碼器同樣由L個相同的層堆疊組成。與編碼器不同的是每個層包含三個子層。每一層比編碼器多一個子層,該子層是對編碼器最后一層的輸出進(jìn)行注意力權(quán)重計算。其余與編碼器一樣,子層與子層之間應(yīng)用殘差連接和層規(guī)范化。
模型在給定原文句子序列X=(x1,…,xn)以及目標(biāo)語言序列Y=(y1,…,ym)下,第i個目標(biāo)詞的優(yōu)化目標(biāo)如式(1)所示。
其中,H是所有可能候選翻譯的集合,P(yi|Y
注意力機(jī)制是式(2)的一個統(tǒng)稱,描述的是一個查詢項(Query,Q)以及一組鍵值對(Key-Value,K-V)之間進(jìn)行映射得到注意力結(jié)果。
其中,Q、K、V分別表示查詢項、鍵和值。Q、K、V在進(jìn)行注意力機(jī)制計算前,均會經(jīng)過一個線性映射,得到的注意力結(jié)果最終也會經(jīng)過一個線性映射得到注意力層的輸出。線性映射可以表示為式(3):
(3)
其中,he∈Rn×d,hd∈Rm×d分別表示編碼器的輸出及解碼器當(dāng)前層的隱層輸入;WQ,WK,WV∈Rd×q表示線性映射的權(quán)重,q表示變換后的維度信息,d表示模型維度信息。
神經(jīng)機(jī)器翻譯模型可以看作是在樣本為(X,Y)的數(shù)據(jù)集上的一個具有詞表大小V類的多分類,訓(xùn)練目標(biāo)是在訓(xùn)練集上最小化負(fù)極大似然損失(negative likelihood loss,NLL)函數(shù),如式(4)所示。
(4)
其中,I(·)表示指示函數(shù),I(y=v)當(dāng)y等于v時返回1,否則返回0;p(y=v|X;θ)是模型輸出的概率分布。
知識蒸餾是模型壓縮方法中的一類方法,表示精簡的神經(jīng)網(wǎng)絡(luò)(學(xué)生),在具有更大規(guī)模的、性能更好的神經(jīng)網(wǎng)絡(luò)(教師)的指導(dǎo)下進(jìn)行訓(xùn)練更新[8]。
知識蒸餾的目標(biāo)函數(shù)是讓學(xué)生網(wǎng)絡(luò)擬合教師網(wǎng)絡(luò)輸出的概率分布,使得學(xué)生模型的輸出與教師模型的輸出概率q(y|X;θt)更加接近[9],知識蒸餾的目標(biāo)函數(shù),如式(5)所示。
(5)
其中,LKD(θs;θt)表示知識蒸餾的目標(biāo)函數(shù),θs表示學(xué)生網(wǎng)絡(luò)的參數(shù),θt表示教師網(wǎng)絡(luò)的參數(shù)。
詞級別的知識蒸餾是一種標(biāo)準(zhǔn)的知識蒸餾方法,在原有的最小化LNLL(θ)的基礎(chǔ)上,新增一個目標(biāo)函數(shù)LKD(θs;θt),并通過一個超參數(shù)α來平衡LNLL(θ)和LKD(θs;θt)兩者對訓(xùn)練的重要程度,表示如式(6)所示。與詞級別知識蒸餾方法不同的是,本文提出的方法在訓(xùn)練期間不需要計算教師網(wǎng)絡(luò)的輸出概率分布,讓學(xué)生網(wǎng)絡(luò)的概率與之接近,而是通過教師網(wǎng)絡(luò)的權(quán)重信息指導(dǎo)學(xué)生網(wǎng)絡(luò),讓學(xué)生網(wǎng)絡(luò)的學(xué)習(xí)起點(diǎn)更高,縮短優(yōu)化時間。
L(θs;θt)=(1-α)LNLL(θs)+αLKD(θs;θt)
(6)
其中,θs表示學(xué)生模型的參數(shù),θt表示教師模型的參數(shù)。
句子級別的知識蒸餾是用教師網(wǎng)絡(luò)生成的翻譯結(jié)果,與訓(xùn)練數(shù)據(jù)的原文構(gòu)成新的平行句對進(jìn)行訓(xùn)練。與句子級別的知識蒸餾不同,本文方法進(jìn)行知識蒸餾是把教師模型的權(quán)重信息傳遞給學(xué)生網(wǎng)絡(luò),而不改變訓(xùn)練數(shù)據(jù)集。
遞進(jìn)式半知識蒸餾方法總體概覽圖如圖2所示,圖中的三個精簡架構(gòu)是Transformer的略縮圖,圖中虛線是編碼器和解碼器的分割線;箭頭代表壓縮前和壓縮后的模型尺寸變化的對應(yīng)關(guān)系;圖中采用陰影填充的模塊表示被壓縮維度后的權(quán)重,未填充的結(jié)構(gòu)表示未被壓縮維度的權(quán)重。遞進(jìn)式半知識蒸餾方法是通過應(yīng)用半知識蒸餾兩次,實現(xiàn)遞進(jìn)式壓縮模型。第一次壓縮: 由圖2左側(cè)模型架構(gòu)應(yīng)用一次半知識蒸餾方法得到中間模型架構(gòu)。第二次壓縮是把上一次壓縮的模型(即圖2中間的模型架構(gòu))作為新的教師模型,進(jìn)行第二次半知識蒸餾,得到最終的全壓縮網(wǎng)絡(luò)(即圖2中右側(cè)的網(wǎng)絡(luò)架構(gòu))。
對于學(xué)生網(wǎng)絡(luò),學(xué)生模型中未被壓縮的參數(shù),其維度和教師模型相同,模型被壓縮的權(quán)重矩陣變成縮小的維度。遞進(jìn)式壓縮兩次,交替壓縮模型的不同部分的參數(shù)(編碼器和解碼器),從而實現(xiàn)模型完整壓縮,即如圖2右側(cè)的帶陰影填充的全壓縮模型。
圖2 遞進(jìn)式知識蒸餾概覽
在不引入新參數(shù)的同時保證半知識蒸餾方法完美兼容Transformer,本節(jié)對Transformer的結(jié)構(gòu)劃分進(jìn)行說明。從模型壓縮的層面來劃分,模型可以分為兩個部分: 壓縮和不壓縮部分。從Transformer結(jié)構(gòu)上來劃分,前面提到由于Transformer采用殘差連接,編碼器的所有層的輸入輸出的維度信息要保持一致,解碼器同樣如此,故將Tansformer劃分為編碼器(左邊)和解碼器(右邊),其中在解碼器中對編碼器的輸出的注意力機(jī)制層中的映射權(quán)重作為劃分的共享部分或稱為中間部分(即每次壓縮,均需要改變維度,以配合兼容編碼器和解碼器的對應(yīng)關(guān)系)。如圖1所示,左側(cè)框內(nèi)為編碼器,右側(cè)框內(nèi)為解碼器,同時將源端詞嵌入矩陣和編碼器作為模型左側(cè)參數(shù),目標(biāo)端詞嵌入(word embedding)和解碼器則作為模型右側(cè)參數(shù)部分。
中間部分是編碼器的輸出和解碼器隱藏單元數(shù)不同而能兼容的關(guān)鍵。中間部分由解碼器中每一個多頭注意力層中輸入處的線性投影(linear projection)的權(quán)重WQ、WK、WV∈Rd×q組成,如式(3)中表示。
半知識蒸餾方法每次壓縮模型的一部分權(quán)重。學(xué)生網(wǎng)絡(luò)的非壓縮部分直接利用教師模型的參數(shù)信息進(jìn)行初始化,作為訓(xùn)練的起點(diǎn);而學(xué)生網(wǎng)絡(luò)的被壓縮權(quán)重采用高斯分布初始化。網(wǎng)絡(luò)參數(shù)θ劃分成左邊半部分參數(shù)θl和右邊半部分參數(shù)θr,教師模型參數(shù)和學(xué)生模型參數(shù)分別用θt和θs表示。在遞進(jìn)式壓縮方法中,對于先壓縮左邊半部分參數(shù)θl和先壓縮右邊半部分參數(shù)θr,在前期試驗中發(fā)現(xiàn)影響不大。本文統(tǒng)一默認(rèn)使用先壓縮右半部分參數(shù)θr再壓縮左半部分參數(shù)θl。 壓縮參數(shù)和非壓縮參數(shù)統(tǒng)一構(gòu)成了比前者小的新模型(即學(xué)生模型,參數(shù)用θs表示),劃分后學(xué)生網(wǎng)絡(luò)的目標(biāo)函數(shù)如式(7)所示。
左半部分則是一個知識蒸餾的過程,作為當(dāng)前的學(xué)生模型,從未壓縮的教師模型中獲得訓(xùn)練所需要的知識,加快模型收斂,如式(9)所示。
對源語言和目標(biāo)語言的詞嵌入矩陣的處理,將源語言和目標(biāo)語言的詞嵌入矩陣同樣劃分到模型左右部分中,即每次模型左(右)半部分壓縮的同時,將源語言(目標(biāo)語言)詞嵌入矩陣進(jìn)行壓縮。
在兩個廣泛使用的中英和日英數(shù)據(jù)集上進(jìn)行實驗。這兩個翻譯數(shù)據(jù)集是不同規(guī)模和不同領(lǐng)域的語料庫,分別包含125萬句對和32萬句對,這有助于驗證模型在不同規(guī)模訓(xùn)練數(shù)據(jù)上的性能。
對于日英翻譯任務(wù),數(shù)據(jù)集來自公開語料Kyoto Free Translation Task(1)http://www.phontron.com/kftt。我們使用預(yù)處理的訓(xùn)練集作為訓(xùn)練數(shù)據(jù),其中預(yù)處理后的訓(xùn)練數(shù)據(jù)過濾了句長小于1和大于40的句子,有關(guān)數(shù)據(jù)處理的更多細(xì)節(jié)可以在官方網(wǎng)站上查閱。處理后包括33萬個平行句對用于訓(xùn)練,對語料采用字符編碼進(jìn)行聯(lián)合字符編碼處理[21],字符編碼切分規(guī)則大小設(shè)為30k。最后,隨機(jī)打亂訓(xùn)練集并生成詞匯表。
中英翻譯任務(wù)的語料是由語言數(shù)據(jù)聯(lián)盟(linguistic data consortium, LDC)提供,選用美國國家標(biāo)準(zhǔn)與技術(shù)研究院2002年發(fā)布的數(shù)據(jù),其中訓(xùn)練數(shù)據(jù)由1.25M句子對組成;NIST02、NIST03、NIST04、NIST05和NIST08分別作為一個測試集,共5個測試集,每個測試集包含4個參考譯文;NIST06作為開發(fā)集。對英文語料進(jìn)行切分(tokenized)和對中文數(shù)據(jù)進(jìn)行分詞處理,將源端句子和目標(biāo)譯文的最大句子長度均限制為50個詞,并將中英文詞匯表的大小限制為3萬,統(tǒng)計前30萬個詞作為高頻詞,其余詞作為低頻詞統(tǒng)一替換成特殊字符
4.2.1 基礎(chǔ)設(shè)置
將基準(zhǔn)(Base)模型的注意力機(jī)制的維度、源端和目標(biāo)端統(tǒng)一設(shè)置為512,將前饋網(wǎng)絡(luò)層的維度設(shè)置為2 048。為充分驗證比較應(yīng)用方法,本文在表1中準(zhǔn)備了幾個不同大小的基準(zhǔn)模型,其中,不同維度的基準(zhǔn)模型分別用不同的標(biāo)簽(Base、R、SR、S)標(biāo)注,“ATT”表示注意力機(jī)制的維度信息,“FFN”表示前饋神經(jīng)網(wǎng)絡(luò)的維度信息。
表1 不同基準(zhǔn)模型的維度信息
在編碼器和解碼器的各個層中的多頭注意力機(jī)制均使用了8個頭。在訓(xùn)練期間,標(biāo)簽平滑(label smoothing)參數(shù)=0.1,神經(jīng)元的隨機(jī)失活率(dropout)設(shè)為0.1。
關(guān)于解碼參數(shù)設(shè)置,使用集束搜索(beam search)算法并設(shè)置束大小(beam size)B=4。 使用Adam優(yōu)化器[22],其中優(yōu)化器參數(shù)為β1=0.9,β2=0.98,ε=10-9,學(xué)習(xí)率使用熱啟動(warm-up)更新策略[5],其中warmup_steps=4 000的策略。本文實驗均在開源的代碼THUMT(2)https://github.com/THUNLP-MT/THUMT上進(jìn)行開發(fā)實現(xiàn)。
4.2.2 訓(xùn)練設(shè)置
因為中英和日英語料規(guī)模不同,因此日英和中英的具體參數(shù)設(shè)置有所不同。
日英模型將句長接近的句子放到一起,以至于一個批次(mini-batch)的數(shù)據(jù)的句子長度接近,每一個批次6 250個詞,訓(xùn)練2萬步,模型間隔1 500步保存一次模型,模型中的解碼器的詞嵌入權(quán)重矩陣和解碼器中輸出映射到詞表的權(quán)重矩陣之間共享參數(shù)。
在中英翻譯實驗中,訓(xùn)練設(shè)置將句子對按長度組合在一起,每批具有6 025個詞。最大訓(xùn)練步數(shù)設(shè)置為20萬,并且以間隔1 000個訓(xùn)練步保存模型。中英翻譯模型在解碼器的詞嵌入權(quán)重矩陣和目標(biāo)端映射到詞表的權(quán)重矩陣之間均不共享參數(shù)。
關(guān)于模型評估,在日語到英語的翻譯評估中,采用不區(qū)分大小寫的機(jī)器雙語互譯評估[23](BLEU)得分來評估模型的翻譯質(zhì)量,使用multi-bleu.perl(3)https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/multi-bleu.perl計算BLEU值。對保存的最后五個模型進(jìn)行平均。
中文到英文的模型評估,采用不區(qū)分大小寫的BLEU評分機(jī)制,并使用單個模型進(jìn)行評估。
4.2.3 參數(shù)設(shè)置細(xì)節(jié)
詞級別知識蒸餾超參數(shù)設(shè)置α=0.5,采用基準(zhǔn)(Base)模型作為教師模型。
句子級別的知識蒸餾,以基準(zhǔn)(Base)模型作為教師模型獲取翻譯結(jié)果,獲取翻譯結(jié)果的參數(shù)設(shè)置參照Kim等人文章[17]中的參數(shù)設(shè)置,日英翻譯任務(wù)設(shè)置束大小(beam size)為B=5;中英翻譯任務(wù)運(yùn)行集束搜索并設(shè)置束大小B=5和B=1兩種參數(shù)配置,分別返回B個候選翻譯譯文,最終選擇具有更高的BLEU分?jǐn)?shù)序列作為新的最終的翻譯結(jié)果。此外,如果返回的B個候選翻譯譯文中有空行,則跳過該句子,以此保證句子級別知識蒸餾提供給學(xué)生模型的訓(xùn)練語料質(zhì)量。
中英翻譯結(jié)果如表2所示,其中Seq-KD(B=1)[20]和Seq-KD(B=5)[20]分別表示束大小為1和5的情況下的句子級別的知識蒸餾;+Seq-KD(B=1)[20]和+Seq-KD(B=5)[20]分別表示半知識蒸餾和句子級別的知識蒸餾的結(jié)合;MT02,…,MT08 分別對應(yīng)測試集NIST02,…,NIST08;AVG表示測試集的平均得分;BLEU差值表示當(dāng)前模型平均得分與基準(zhǔn)模型得分的差值。表2的結(jié)果包含了運(yùn)用了兩次遞進(jìn)式壓縮,從512維的基準(zhǔn)(Base)模型進(jìn)行遞進(jìn)式壓縮得到256維的全壓縮模型,然后進(jìn)一步進(jìn)行遞進(jìn)式壓縮,得到128維的全壓縮模型。根據(jù)表2的結(jié)果顯示,本文方法性能優(yōu)于基準(zhǔn)模型,在與句子級別知識蒸餾方法結(jié)合后,能進(jìn)一步提升性能。
表2 各模型在中英語料上的翻譯性能
表3是日英翻譯的實驗結(jié)果,表中,Word-KD代表詞級別的知識蒸餾方法[20];Seq-KD代表句子級別的知識蒸餾方法[20];Our work 代表半知識蒸餾方法;BLEU差值代表模型翻譯結(jié)果與模型相應(yīng)基準(zhǔn)模型的差值,其中加號(+)表示提升,空(-)表示基準(zhǔn)模型自身;*表示模型與相應(yīng)基準(zhǔn)模型之間顯著性檢驗[24],p<0.05,檢驗工具為開源工具。
三種不同的壓縮方法都取得了顯著性優(yōu)于基準(zhǔn)系統(tǒng)的結(jié)果,其中如表3第7~10行,本文提出的方法壓縮成最終模型后,超過基準(zhǔn)模型2.16個BLEU值,并且超過其他兩種知識蒸餾方法,其中超過詞級別的知識蒸餾1.15個BLEU值,超過句子級別的知識蒸餾0.28個BLEU值。
表3 日英翻譯壓縮率與翻譯性能
圖3顯示各方法在日英數(shù)據(jù)集上的BLEU值從第0個訓(xùn)練步均穩(wěn)步上升,在0~5 000步,本文方法高于其他三個基準(zhǔn)模型,從與詞級別知識蒸餾和句子級別知識蒸餾的曲線對比可以看出,本文方法在前期學(xué)習(xí)能力明顯高于其他模型。本文方法的曲線在10 000步時開始趨于穩(wěn)定,且處于其他三條曲線的上方。對比表明,本文方法能加速模型收斂,并有效改善模型泛化性能。
圖3 驗證集上BLEU值隨訓(xùn)練步數(shù)變化曲線
首先,為了公平地衡量詞級別和句子級別的時間消耗,表4統(tǒng)計了各方法在日英數(shù)據(jù)集上的訓(xùn)練時間和新增數(shù)據(jù)處理的時間,其中,數(shù)據(jù)代表新增的數(shù)據(jù)處理時間,單位: 分鐘;訓(xùn)練代表訓(xùn)練時長,單位: 分鐘;GPU表示GPU數(shù)目;kw/s表示千詞每秒。默認(rèn)的數(shù)據(jù)預(yù)處理是相同的,因此未在表中體現(xiàn),主要以增加的時間作為對比依據(jù)。
表4 模型時間消耗和速度統(tǒng)計表
其中句子級別的知識蒸餾,需要教師模型進(jìn)行翻譯訓(xùn)練語料,從得到的翻譯文本中挑選BLEU最高的句子作為學(xué)生模型的訓(xùn)練語料,此處統(tǒng)計的時間僅為教師模型翻譯花費(fèi)的時間,未包括挑選處理的時間。此外,關(guān)于GPU數(shù)量,在實現(xiàn)詞級別的時候,需要計算教師模型的輸出概率分布,由于實驗室設(shè)備有限,無法在一個GPU上訓(xùn)練,故用了2個GPU,盡管可能對本文提出的方法并不公平,本文的方法總時間消耗明顯小于詞級別和句子級別的知識蒸餾,在訓(xùn)練階段的時間消耗,本文方法與句子級別幾乎持平,且小于詞級別的時間消耗。在訓(xùn)練速度上,本文方法與句子級別的知識蒸餾持平,且高于詞級別的訓(xùn)練速度。
本文提出了半知識蒸餾方法,該方法從教師模型中提取權(quán)重分布,然后賦值給學(xué)生網(wǎng)絡(luò),從而優(yōu)化學(xué)生模型的訓(xùn)練,加速學(xué)生模型的收斂并改善其泛化性能,達(dá)到知識蒸餾的效果。與詞級別的知識蒸餾相比,本文方法不需要對每次獲取教師模型的輸出概率進(jìn)行擬合,減少了計算量;與句子級別的知識蒸餾相比,由從教師模型產(chǎn)生的句子中學(xué)習(xí)變?yōu)橹苯訌慕處熌P偷臋?quán)重中獲取知識。在進(jìn)行充分實驗后,中英翻譯實驗結(jié)果表明,本文方法最佳性能高于基準(zhǔn)模型0.72個BLEU值,優(yōu)于詞級別的知識蒸餾0.6個 BLEU值,并達(dá)到和句子級別知識蒸餾可比的翻譯性能。日英翻譯實驗結(jié)果表明,本文方法比基準(zhǔn)模型高2.16個BLEU值。此外本文方法高于詞級別的知識蒸餾1.15個BLEU值和高于句子級別的知識蒸餾0.28個BLEU值。