王龍鋼,劉世杰,馮珊珊,李宏偉
中國地質(zhì)大學(武漢)數(shù)學與物理學院,武漢430074
序列數(shù)據(jù)處理是機器學習中一個極具挑戰(zhàn)性的問題,而循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Networks,RNN)對序列數(shù)據(jù)的處理是強有力的,它廣泛應用于機器翻譯[1-2]、語音識別[3]、圖像標注[4]等自然語言處理和計算機視覺領(lǐng)域。
基于循環(huán)神經(jīng)網(wǎng)絡的語言模型通常包含詞嵌入層、循環(huán)網(wǎng)絡層和全連接層等。這些網(wǎng)絡層次通常包含大量的參數(shù)。例如,在機器翻譯模型中,參數(shù)可能會有數(shù)百萬乃至上千萬個[1-2]。如此龐大的參數(shù)規(guī)模將消耗較多的存儲資源。在這種情形下,將這種參數(shù)規(guī)模龐大的模型應用于移動電話或嵌入式設(shè)備是一個比較困難的任務[5-7]。
為了減小模型參數(shù)規(guī)模與內(nèi)存成本之間的矛盾,模型的參數(shù)通常需要被有效的壓縮。壓縮深度神經(jīng)網(wǎng)絡參數(shù)需要在網(wǎng)絡參數(shù)規(guī)模和網(wǎng)絡性能之間的保持平衡,即在盡可能保持網(wǎng)絡性能的基礎(chǔ)上壓縮參數(shù)規(guī)模。
深度神經(jīng)網(wǎng)絡參數(shù)的壓縮目前已有多種思路。文獻[8]用二進制數(shù)代替神經(jīng)網(wǎng)絡參數(shù)來減小參數(shù)規(guī)模。文獻[9]通過訓練軟目標來代替硬目標,實現(xiàn)將較大的參數(shù)規(guī)模壓縮成較小的參數(shù)規(guī)模。由于張量分解可以用較少的參數(shù)表示張量而只損失較少的信息,不少文獻將張量分解用于壓縮深度神經(jīng)網(wǎng)絡。文獻[5,10]分別將張量列(Tensor Train,TT)分解用于循環(huán)神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)的壓縮。文獻[11]提出了神經(jīng)網(wǎng)絡壓縮的新思路。它將卷積神經(jīng)網(wǎng)絡壓縮分為3個過程,首先對網(wǎng)絡進行裁剪,保留重要的連接,使權(quán)矩陣變得稀疏;然后對權(quán)矩陣進行聚類,屬于同一類的共用一套權(quán)值;最后再用Huffman Coding進行壓縮。該方法可以將網(wǎng)絡壓縮數(shù)倍且基本保持網(wǎng)絡的性能。低秩方法也是網(wǎng)絡參數(shù)壓縮的方法之一。文獻[6,12]采用低秩的權(quán)矩陣代替原始權(quán)矩陣,用較少的參數(shù)表示網(wǎng)絡且不使網(wǎng)絡性能下降明顯。
與卷積神經(jīng)網(wǎng)絡相比,循環(huán)神經(jīng)網(wǎng)絡處理的數(shù)據(jù)通常含有時序特性。因此,壓縮循環(huán)神經(jīng)網(wǎng)絡時考慮數(shù)據(jù)的時序特性,將有可能提高壓縮效果。受文獻[6-7]的啟發(fā),本文在低秩壓縮方法的基礎(chǔ)上,通過構(gòu)建基于時間誤差的重構(gòu)函數(shù)來進行壓縮。該誤差重構(gòu)函數(shù)在低秩誤差重構(gòu)的基礎(chǔ)上,增加了時間誤差重構(gòu)項,并引入了長短時記憶(Long Short-Term Memory,LSTM)網(wǎng)絡[13]中的門限激活機制。最小化該誤差重構(gòu)函數(shù),可以提升模型壓縮后的性能。該方法在多個數(shù)據(jù)集上取得了較好的實驗結(jié)果。
設(shè)W∈Rm×n,rank(W)=r,則存在一個分解使得:
其中U∈Rm×r、V∈Rn×r是正交矩陣,Σ=diag{σ1,σ2,…,σr}∈Rr×r是對角矩陣,且σ1,σ2,…,σr為矩陣W的奇異值,σ1≥σ2≥…≥σr≥0。
其中P=US∈Rm×r,Q=VS∈Rn×r。
式(2)中,P和Q一共有( )m+n r個參數(shù),W有mn個參數(shù)。當r較小時,將有( )m+n r<mn,式(2)說明可用較少參數(shù)的矩陣P和Q來表示一個參數(shù)較多的矩陣W,從而實現(xiàn)對矩陣W的壓縮。
步驟1對矩陣W進行奇異值分解,得到U,S,V。
步驟2令S~表示矩陣S的前k列(k<r,(m+n)k<mn)
步驟3將和作為式(4)的初值,最小化式(4),保留優(yōu)化后的P~和Q~。
步驟4,用來近似W,即用來表示W(wǎng)。
基于循環(huán)神經(jīng)網(wǎng)絡的語言模型是一個概率模型,它可表示為[14-16]:
對語言模型的壓縮即是對LSTM網(wǎng)絡參數(shù)的壓縮。LSTM網(wǎng)絡的定義如下[13]:
其中,xt和ht表示時刻t網(wǎng)絡的輸入和狀態(tài)。it、ft、ot分別表示時刻t網(wǎng)絡的三個門限:輸入門、遺忘門、輸出門。jt表示時刻t網(wǎng)絡的輸入信息。ct表示時刻t網(wǎng)絡的內(nèi)部狀態(tài)。W和b分別表示權(quán)重矩陣和偏置向量。σ為sigmoid激活函數(shù),tanh表示雙曲正切激活函數(shù), 表示矩陣或向量按元素相乘。輸入門it決定網(wǎng)絡可以輸入的信息,遺忘門ft決定網(wǎng)絡可以保留的信息,內(nèi)部狀態(tài)jt表示網(wǎng)絡內(nèi)部存儲的信息,輸出門ot決定網(wǎng)絡可以輸出的信息,ht表示網(wǎng)絡的最終輸出(網(wǎng)絡的狀態(tài))。
LSTM模型的參數(shù)包含輸入門、輸入信息、遺忘門、輸出門對應的權(quán)重矩陣W1、W2、W3、W4,且Wi∈R(embed_size+hidden_size)×hidden_size,i=1,2,3,4
其中embed_size(用es表示)為詞向量的維度,hidden_size(用hs表示)為隱層節(jié)點個數(shù)。
這四個矩陣低秩重構(gòu)函數(shù)如下:
選取滿足條件的k,將式(12)按照式(4)的形式表示為:
循環(huán)神經(jīng)網(wǎng)絡通常和數(shù)據(jù)時序性有關(guān),隨著網(wǎng)絡在時間軸上的不斷循環(huán)傳遞,長序列信息會隨權(quán)重的擾動而被破壞[6]。而LSTM的權(quán)矩陣通常是滿秩的,因此k的選取會小于矩陣Wi的秩,這也會使得Wi和W~i有一定的誤差。并且,誤差會在時間軸上不斷的累計,從而使得模型壓縮的性能大幅下降。在對循環(huán)神經(jīng)網(wǎng)絡使用低秩重構(gòu)壓縮壓縮時,若能考慮時間軸上的誤差,則可能會提升壓縮后模型的性能。因此,本文提出新的誤差重構(gòu)函數(shù),即在低秩誤差重構(gòu)函數(shù)的基礎(chǔ)上增加時間項,考慮時間誤差來解決這一問題。
誤差重構(gòu)函數(shù)為:
其中,‖‖·2表示向量的2-范數(shù),λ為一個懲罰參數(shù);f是一個非線性函數(shù):i=1,3,4時,f為sigmoid函數(shù);i=2時,f為tanh函數(shù)。T為序列數(shù)據(jù)的長度。xt,ht-1分別表示LSTM網(wǎng)絡在時刻t的輸入和狀態(tài)。
式(14)的誤差重構(gòu)函數(shù)分為兩部分。第一部分與LRRC一樣,使矩陣Wi和它的低秩近似W~i之間盡可能接近。第二部分則減小時間軸上的誤差。它采用LSTM中的輸入激活機制,模擬LSTM網(wǎng)絡中的激活功能,使得壓縮后的權(quán)矩陣盡可能接近。
與低秩重構(gòu)壓縮相比,該誤差重構(gòu)函數(shù)以添加時間誤差項的形式來減少時間誤差,從而提升模型壓縮后的性能。
用P~和Q~來表示矩陣W,式(14)又可表示為:
對于滿足條件的k,當k越小時,模型壓縮的程度越深,模型所需的參數(shù)越少。
基于時間誤差的低秩重構(gòu)壓縮(Low Rank Reconstruction Compression based on Time-Error,LRRC-TE)算法如下:
輸入:訓練數(shù)據(jù)X,整數(shù)k,迭代次數(shù)N,學習率η;
初始化:n=0;使用X訓練好LSTM網(wǎng)絡,保留訓練好的參數(shù)W1、W2、W3、W4和
1.對Wi進行奇異值分解,取Si的前k列得到初始值,i=1,2,3,4;
3.n=n+1;
4.當n>N時迭代中止。
為了驗證LRRC-TE算法的壓縮性能,在IMDB情感分析數(shù)據(jù)集和Penn Treebank(PTB)數(shù)據(jù)集進行了對比實驗,并探究了懲罰參數(shù)對壓縮效果的影響。
首先介紹數(shù)值實驗中用到的相關(guān)指標。壓縮比(Compression Ratio,CR)的定義如下:
其中,N表示需壓縮部分在壓縮前的參數(shù)個數(shù),N0表示需壓縮部分在壓縮后的參數(shù)個數(shù)。壓縮比大于1為有效壓縮,壓縮比越大表示模型待壓縮部分的壓縮程度越大。
分類模型中準確率(Accuracy)的定義為:
其中,right_num表示分類準確的樣本個數(shù),all_num表示所有的樣本個數(shù)。在同一壓縮比下,準確率越高,實驗效果越好。
復雜度(Perplexity,PPL)是用來衡量一個語言模型性能高低的一個標準。復雜度越低,代表模型的預測性能越好。它的定義如下:
其中X表示文本序列{ }x1,x2,…,xN。實際計算時,采用的公式如下:
IMDB情感分析數(shù)據(jù)集是一個包含5萬條電影評論的二分類數(shù)據(jù)集,正負影評各占一半。本文選取3萬條影評(正負影評各占一半)作為訓練集,其余作為測試集,在單詞級水平上訓練LSTM語言模型進行分類。LSTM語言模型的隱層節(jié)點設(shè)置為128,學習率0.001,詞嵌入的維數(shù)設(shè)置為300,進行多輪訓練,選取測試集精度最高的一組實驗結(jié)果進行模型壓縮。測試集分類準確率達0.861。
在使用LSTM對IMDB數(shù)據(jù)集進行分類時,LSTM網(wǎng)絡中的權(quán)重矩陣W1、W2、W3、W4,Wi∈R428×128i=1,2,3,4。在對其進行LRRC-TE時,采用Adam算法進行優(yōu)化,懲罰參數(shù)λ=0.5。本實驗中壓縮比為:
CR=428×128 k(428+128 )
取有效壓縮比k≤98,從98逐步遞減,比較LRRC-TE和LRRC在不同壓縮比下的分類準確率。
實驗結(jié)果如圖1所示。圖1中橫軸表示壓縮比,縱軸表示分類準確率。圖中實線和虛線分別表示LRRC和LRRC-TE(懲罰參數(shù)λ=0.5)分類準確率隨壓縮比的變化情況。LRRC-TE分類準確率在不同壓縮比下均高于LRRC,特別是在高壓縮比的情形下分類準確率遠遠高于LRRC的結(jié)果。當壓縮比為50時,LRRC分類的準確率為0.736,而LRRC-TE分類的準確率有0.846,遠遠高于LRRC,也很接近未壓縮時的準確率0.861。從實驗結(jié)果可得,在IMDB數(shù)據(jù)集中,即使在高壓縮比的情形下,有時間誤差的LRRC-TE,保持模型性能的能力優(yōu)于LRRC。
圖1 LRRC-TE和LRRC在IMDB數(shù)據(jù)集上的壓縮效果
PTB是一個常用于語言模型的數(shù)據(jù)集。整個數(shù)據(jù)集由10 000個不同的單詞組成,數(shù)據(jù)集約包含百萬個單詞,包含訓練集、驗證集、測試集。本文建立基于PTB數(shù)據(jù)集的LSTM單詞級語言生成模型。LSTM語言模型的隱層節(jié)點設(shè)置為128,詞嵌入的維數(shù)設(shè)置為160,進行多輪訓練,選取測試集復雜度最低的一組實驗結(jié)果進行模型壓縮,測試集的復雜度為110.263。
對訓練好的LSTM語言模型分別進行LRRC和LRRC-TE。在對其進行LRRC-TE時,采用Adam算法進行優(yōu)化,懲罰參數(shù)λ=0.7。本實驗中壓縮比為:CR=288×128 k(288+128)
其中k的有效范圍為k≤88。
實驗結(jié)果如圖2所示。圖2中橫軸表示壓縮比,縱軸表示復雜度。圖中實線和虛線分別表示LRRC和LRRC-TE(懲罰參數(shù)λ=0.7)復雜度隨壓縮比的變化情況。從圖2可以看到,在同一壓縮比下,LRRC-TE的復雜度要低于LRRC,并且隨著壓縮比的增大,LRRC-TE與LRRC之間復雜度的差距逐漸增大。在PTB數(shù)據(jù)集上,添加了時間誤差的LRRC-TE的壓縮效果優(yōu)于未添加時間誤差的LRRC。
圖2 LRRC-TE和LRRC模型在PTB數(shù)據(jù)集上的壓縮效果
為了研究懲罰參數(shù)對壓縮效果的影響,在實驗2基礎(chǔ)上,對LRRC-TE選取多種懲罰參數(shù)進行對比實驗。懲罰參數(shù)分別選取{0,0.7,1,5},比較在不同壓縮比下的壓縮效果。實驗結(jié)果如圖3所示。
圖3 不同懲罰參數(shù)在PTB數(shù)據(jù)集上的壓縮效果
圖3橫軸表示壓縮比,縱軸表示復雜度。實線表示LRRC在壓縮比逐步增大時的復雜度。虛線表示LRRCTE選取不同懲罰參數(shù),復雜度隨壓縮比的變化情況。
從圖3中可得,當λ=0時,即忽略式(15)中的第一項,只保留時間誤差重構(gòu)項。隨著壓縮比的增大,它的復雜度逐漸地大于其他懲罰參數(shù)的情形,甚至大于LRRC。即λ=0時的壓縮效果是比較差的。這說明了LRRC-TE中保留第一項(LRRC)的必要性。
此外,從圖3中可以看到,隨著壓縮比的逐步增大,取值較大懲罰參數(shù)的壓縮效果差于取值較小的懲罰參數(shù)。即實際壓縮時懲罰參數(shù)不宜取值較大。
本文提出了一種新的應用于LSTM的低秩壓縮算法,LRRC-TE。LRRC-TE在LRRC的基礎(chǔ)上增加時間誤差來進行誤差重構(gòu),減小壓縮LSTM引起的在時間軸上的誤差。與LRRC相比,在添加了時間誤差項后,該壓縮算法在IMDB數(shù)據(jù)集和PTB數(shù)據(jù)集上表現(xiàn)出更好的壓縮性能。下一步考慮將LRRC-TE用于深層LSTM和其他循環(huán)神經(jīng)網(wǎng)絡的壓縮。