侯俊龍,潘文林,王 璐,何翠玲,王 翠
(云南民族大學 數(shù)學與計算機科學學院,云南 昆明 650500)
語言是人類進行思想交流、情感傳達最為重要的工具,是文化傳承與發(fā)展的重要載體,而語音作為語言的聲學表現(xiàn)形式,對豐富和發(fā)展中國傳統(tǒng)文化起著至關(guān)重要的作用.近年來,隨著深度學習逐步發(fā)展成為語音識別領(lǐng)域的研究熱點,越來越多的基于深度學習的語音識別技術(shù)也得到了高速發(fā)展.百度使用的基于神經(jīng)網(wǎng)絡(luò)的端到端模型能夠高效的識別出英語或普通話[1];谷歌提出的無界交錯狀態(tài)遞歸神經(jīng)網(wǎng)絡(luò)能以92%的準確率識別出每個人的聲音[2].雖然該技術(shù)取得了先進性的進展,但到目前為止,所做的工作大多集中于漢語、英語等國際主流語言,在少數(shù)民族語言方面的研究仍屈指可數(shù),這也使得該技術(shù)距離廣泛的應(yīng)用尚存在很大差距,該文選用無本民族文字的普米語作為研究對象,開展少數(shù)民族語言的孤立詞語音高效識別研究.隨著科技的不斷發(fā)展,語言的衰退和消亡在所難免.解魯云[3]研究發(fā)現(xiàn),普米族是我國曾經(jīng)有著不斷遷徙歷史的人口較少、呈雜居分布的少數(shù)民族,該民族沒有統(tǒng)一的文字,但有其獨立的語言-普米語.其發(fā)展與傳承歷代以來均依賴于口耳相傳,并且該民族與漢族在雜居中逐漸吸收和順應(yīng)漢民族文化,使得普米語正逐步走向消亡.為更好的保護和發(fā)展正處于瀕危狀態(tài)的普米族語言,我國研究員正努力的探尋有效方法及途徑.為瀕臨滅絕的普米語建立語音語料庫,開展普米語孤立詞識別研究是解決瀕危語言問題最為有效的方法.
現(xiàn)有的普米語孤立詞識別研究工作大多是利用傳統(tǒng)的深度學習方法對普米語孤立詞進行識別,主要的研究工作有:李余芳等[4]通過建立HMM模型,然后采用Viterbi算法對普米語孤立詞進行識別,其識別精度超過了95%.胡文君等[5]為提高普米語語音識別系統(tǒng)的性能,通過引入深度學習模型對普米語語音展開研究發(fā)現(xiàn),基于深度學習的語音識別具有比其他模型更強的魯棒性.楊花等[6]對支持向量機中的懲罰參數(shù)和核函數(shù)參數(shù)使用粒子群算法進行優(yōu)化,然后將其用于普米語語譜圖識別,其實驗發(fā)現(xiàn)基于最優(yōu)參數(shù)的分類準確率達到89.8%.不難看出,普米語孤立詞識別研究取得了一定的成果,但識別精度仍相對較低,尚未達到可用程度.人們?yōu)榱颂岣咂彰渍Z孤立詞識別的性能,開始不斷的增加模型復(fù)雜度,王翠等[7]將卷積神經(jīng)網(wǎng)絡(luò)的AlexNet模型用于佤語語譜圖識別,其實驗表明利用AlexNet模型對語譜圖進行識別可有效避免清、濁音的干擾,識別精度高達96%.復(fù)雜模型固然具有更好的性能,但該模型也帶來了更多的計算資源消耗和更長的訓練時間等問題,使得神經(jīng)網(wǎng)絡(luò)的訓練成本變得越來越高,如何讓神經(jīng)網(wǎng)絡(luò)得到高效快速的訓練也逐漸地成為了語音識別領(lǐng)域亟待處理的問題.
近來麻省理工學院計算機科學與人工智能實驗室的研究人員發(fā)現(xiàn)任何1個密集的、隨機初始化的前饋神經(jīng)網(wǎng)絡(luò)都包含著稀疏的子網(wǎng)絡(luò),這些網(wǎng)絡(luò)能夠通過保留初始權(quán)重,從零開始以與原網(wǎng)絡(luò)同樣的速度進行相應(yīng)的精度訓練[8].本文為有效降低神經(jīng)網(wǎng)絡(luò)的訓練成本、加速模型訓練,選用無本民族文字的普米語作為研究對象,將卷積神經(jīng)網(wǎng)絡(luò)中的AlexNet模型利用迭代剪枝算法以逐層剪枝的方式進行修剪,然后從生成的稀疏網(wǎng)絡(luò)中探索一個具有比原網(wǎng)絡(luò)更快學習速度的剪枝網(wǎng)絡(luò)用于普米語語譜圖識別.
目前,在深度學習研究領(lǐng)域大致有2個研究派別:一派為了追求更高的模型精度,不斷的擴充神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層數(shù)[9]或神經(jīng)元數(shù)量[10],通過將模型變得更為復(fù)雜,來使得神經(jīng)網(wǎng)絡(luò)具有更高的精度.另一派則旨在將模型高效、穩(wěn)定的部署于設(shè)備.但是,隨著神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的日趨復(fù)雜,網(wǎng)絡(luò)的訓練成本也變得越來越高,這些均使得復(fù)雜模型很難在設(shè)備上有效的部署.從模型壓縮[11]與優(yōu)化加速[12]的研究工作中發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)剪枝技術(shù)能夠在保持模型精度的前提下刪除那些對模型最終輸出影響不大的參數(shù).
近年來,普遍使用的神經(jīng)網(wǎng)絡(luò)剪枝技術(shù)可以分為2類:神經(jīng)元剪枝[13-14]、權(quán)值連接剪枝[15].神經(jīng)元剪枝是選擇某種評價指標來度量神經(jīng)元的貢獻度,剪除那些對模型最終輸出貢獻度較低的神經(jīng)元或卷積核,該方法可使神經(jīng)網(wǎng)絡(luò)變得更“瘦”.其次,權(quán)值連接剪枝是通過從訓練好的網(wǎng)絡(luò)中剪除那些具有較小權(quán)重的連接,最終使神經(jīng)網(wǎng)絡(luò)變得更為“稀疏”,該方法相比于神經(jīng)元剪枝,信息丟失相對較少,對模型的精度影響不大.
在早期,剪枝算法被廣泛應(yīng)用于模型壓縮等問題,文獻[16]通過訓練網(wǎng)絡(luò)來學習網(wǎng)絡(luò)中連接的重要性,然后在不影響模型精度的前提下,修剪那些不太重要的連接,將AlexNet模型中近6 100萬的參數(shù)減少到670萬,模型被壓縮將近90%.彭冬亮教授[17]所提出的閾值剪枝算法通過訓練網(wǎng)絡(luò)和修剪較低權(quán)重連接和再訓練網(wǎng)絡(luò)可以減少GoogLeNet中近94%的參數(shù),并且經(jīng)過較少的迭代次數(shù)以后,修剪后的網(wǎng)絡(luò)具有與原網(wǎng)絡(luò)相似的精度,模型壓縮取得了較為顯著的效果.受到這些研究成果的啟發(fā),將采用迭代剪枝算法從1個隨機初始化的前饋神經(jīng)網(wǎng)絡(luò)中逐層修剪那些具有較小權(quán)重的連接,從生成的稀疏網(wǎng)絡(luò)中尋找1個具有比原網(wǎng)絡(luò)更快學習速度的稀疏網(wǎng)絡(luò),并將其用于普米語語譜圖識別,探索迭代剪枝算法在普米語孤立詞識別中的加速效果.
“迭代剪枝”用于從原始網(wǎng)絡(luò)中生成不同修剪程度的稀疏網(wǎng)絡(luò),算法具體描述如下:
Step 1 隨機初始化一個前饋神經(jīng)網(wǎng)絡(luò)f(x;θ),并構(gòu)造1個與θ相同維數(shù)的mask矩陣M=1|θ|;
Step 2 訓練神經(jīng)網(wǎng)絡(luò)f(x;θ⊙M)的參數(shù)k次直至模型收斂,保存最終權(quán)重矩陣Wk;
Step 3 將各層權(quán)重按絕對值大小進行排序,把排序后權(quán)重矩陣中的前p%參數(shù)所對應(yīng)的mask設(shè)置為0,其余(1-p)%參數(shù)所對應(yīng)的mask設(shè)置為1,更新mask矩陣M為M′;
Step 4 利用mask矩陣M′生成稀疏網(wǎng)絡(luò)權(quán)重矩陣W′=W⊙M′;
Step 5 將W′中剩余的非0參數(shù)重置為初始值并重新訓練經(jīng)剪枝生成的稀疏網(wǎng)絡(luò);
Step 6 迭代進行Step 3~Step 5,直至生成1個充分修剪的稀疏網(wǎng)絡(luò).
過參數(shù)化神經(jīng)網(wǎng)絡(luò)雖然具有很好的性能,但其應(yīng)用常因內(nèi)存消耗過大、訓練速度緩慢等情況而受到限制.剪枝作為解決這類網(wǎng)絡(luò)難以訓練等問題的一項關(guān)鍵技術(shù),能夠有效的加速模型訓練.迭代剪枝分為4個階段:首先,隨機初始化1個過參數(shù)化網(wǎng)絡(luò)并訓練直至收斂;其次,按一定比率逐層修剪較低權(quán)重;接著重新訓練經(jīng)剪枝生成的稀疏網(wǎng)絡(luò);最后反復(fù)進行上2步中的剪枝及再訓練操作,直至生成1個充分修剪的稀疏網(wǎng)絡(luò).
深度神經(jīng)網(wǎng)絡(luò)通常是密集連接的全連接網(wǎng)絡(luò)或卷積神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)中的神經(jīng)元按接受信息的先后可依次分為輸入層、隱藏層和輸出層.在未進行剪枝操作前,網(wǎng)絡(luò)中后一層的各個神經(jīng)元均與前一層的每個神經(jīng)元相連,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1(a)所示.近年來,網(wǎng)絡(luò)剪枝研究成果顯示,在密集連接的神經(jīng)網(wǎng)絡(luò)中,存在大部分連接對模型的最終輸出貢獻不大,可以在保持模型精度的前提下修剪那些對模型貢獻度不大的連接.深度神經(jīng)網(wǎng)絡(luò)經(jīng)剪枝后,原先密集連接的神經(jīng)網(wǎng)絡(luò)就變成了稀疏網(wǎng)絡(luò),生成的稀疏網(wǎng)絡(luò)結(jié)構(gòu)如圖1(b)所示,后一層的神經(jīng)元不再與前一層的各個神經(jīng)元均相連,后一層的部分神經(jīng)元甚至不再有信息輸入,這些使得網(wǎng)絡(luò)的規(guī)模得以大幅度縮減、網(wǎng)絡(luò)間的計算量大大降低,進而實現(xiàn)模型的加速訓練.
“迭代剪枝”的任務(wù)是以迭代的方式逐層的修剪網(wǎng)絡(luò)中較低的權(quán)值連接,最后從生成的稀疏網(wǎng)絡(luò)中尋找一個最佳的剪枝網(wǎng)絡(luò),我們將該問題表述為:
(W1,W2,…,Wl)*=arg minL(A(W1,W2,…,Wl).
(1)
其中A表示剪枝前網(wǎng)絡(luò),我們試圖通過迭代剪枝找到一組最佳稀疏權(quán)重(W1,W2,…,Wl)*使模型的訓練損失最小.為此,我們通過隨機初始化1個神經(jīng)網(wǎng)絡(luò)f(x;θ)并進行如下操作.
(2)
2) 模型采用隨機梯度下降法來訓練1組使R(W)最小的參數(shù)W(l).在每次梯度下降迭代中,第l層參數(shù)W(l)的學習更新方式如(式3)所示.
(3)
3) 保存模型最終訓練得到的各層權(quán)重W(l)并構(gòu)造1個與W(l)相同維數(shù)的二元mask矩陣M(l)=1|θ|,如(式4)所示.
(4)
(5)
5) 將mask矩陣M中與所選權(quán)重對應(yīng)位置的值設(shè)為0, mask矩陣變?yōu)镸′,如(式6)所示.
(6)
6) 使用mask矩陣M′生成稀疏矩陣W′,其中{wi,j|mi,j=0}被設(shè)置為0,如(式7)所示.
(7)
7) 迭代進行4)~6).
AlexNet模型是在LeNet的基礎(chǔ)上通過堆疊3個卷積層和1個匯聚層而成的第1個現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò),該模型總共有8個可訓練層,其中包含5個卷積層和3個全連接層,具有多達上千萬的待訓練參數(shù).模型中的卷積層可看成是特征提取層,而全連接層則看作是特征映射層.在模型最后1層采用softmax激活函數(shù)對普米語語譜圖進行分類,卷積層與全連接層均使用relu激活函數(shù).為加速模型收斂,還在該模型的每個卷積層之后都加入1個批量歸一化(batch normalization, BN)層,其網(wǎng)絡(luò)結(jié)構(gòu)及其參數(shù)如圖2所示.
圖中Input表示輸入層,輸入的是100×100×3的圖像;conv1表示第1個卷積層,使用96個11×11的卷積核,s=4表示步長;MaxPooling表示匯聚層,在該模型中均采用大小為3×3的最大匯聚,Flatten表示展平層,常用于將多維輸入一維化;fc表示全連接層.
在本節(jié)中,我們將驗證經(jīng)迭代剪枝生成的稀疏網(wǎng)絡(luò)在普米語語譜圖識別上的性能.第1,給出普米語孤立詞識別的流程;第2,介紹如何自建數(shù)據(jù)集;第3,對實驗設(shè)置的參數(shù)進行了說明;第4,分別在AlexNet原網(wǎng)絡(luò)與剪枝網(wǎng)絡(luò)中對普米語孤立詞進行識別;最后,比較不同的剪枝策略并說明迭代剪枝的優(yōu)勢.
普米語孤立詞識別的流程大致如圖3所示,首先通過對采集的原始聲音語料經(jīng)預(yù)處理轉(zhuǎn)換為語譜圖,然后由其組成數(shù)據(jù)集輸入到神經(jīng)網(wǎng)絡(luò)中進行模型訓練,最后給出識別結(jié)果.
1) 實驗選用無文字的普米語作為研究對象,首先從漢文詞庫中挑選600個孤立詞,由3個會說普米語的人分別在錄音棚環(huán)境下錄制語音,每個孤立詞讀8遍,得到14 400條語音語料.
2) 在錄制得到普米語孤立詞語音語料后,尚且不能直接將采集到的原始聲音語料用于模型訓練或測試,一個重要的工作是對每條語音語料進行歸類整理,最后生成600類帶標簽的孤立詞語音語料.
3) 由于聲音是隨時間變化而變化的短時平穩(wěn)信號,所以可以對普米語孤立詞語音在每個時刻連續(xù)的進行短時傅里葉變換將其轉(zhuǎn)換為短時譜(又稱語譜圖),經(jīng)變換生成的語譜圖如圖4所示,最終由這14 400張100×100×3的普米語孤立詞語譜圖組成數(shù)據(jù)集.
4) 數(shù)據(jù)集生成以后,還需將數(shù)據(jù)集劃分為訓練集、驗證集和測試集.結(jié)合對本文數(shù)據(jù)集規(guī)模大小的考慮,我們隨機選取整個數(shù)據(jù)集中每一類的50%將其標記為訓練集,20%標記為驗證集,其余的30%標記為測試集.
5) 數(shù)據(jù)集劃分完成后,為便于神經(jīng)網(wǎng)絡(luò)讀取數(shù)據(jù),將數(shù)據(jù)集及標簽分別轉(zhuǎn)化為Numpy數(shù)組文件,模型訓練時通過直接讀取生成的文件來獲取樣本特征及其標簽.
在模型開始訓練前,先將模型參數(shù)設(shè)置為:訓練輪數(shù)為1 500輪,批次大小為128,每層剪枝比率為β=15%,迭代剪枝次數(shù)為15次,選擇隨機梯度下降法(SGD)作為參數(shù)學習更新的方法,SGD中的學習率α設(shè)置為0.001 2,動量μ為0.9,模型選用交叉熵損失函數(shù),并且為了減小模型在數(shù)據(jù)集上的過擬合現(xiàn)象,模型還加入l2正則化項.
為驗證經(jīng)迭代剪枝算法生成的稀疏網(wǎng)絡(luò)在普米語語譜圖識別中的性能,利用卷積神經(jīng)網(wǎng)絡(luò)中的AlexNet模型在自建數(shù)據(jù)集上進行實驗.首先,隨機初始化1個AlexNet模型并訓練其直至收斂,然后采用上文所述的迭代剪枝算法以逐層剪枝的方式修剪網(wǎng)絡(luò)15次,每次修剪完成后都將剩余參數(shù)重置為初始值并再訓練剪枝后網(wǎng)絡(luò)相同的輪數(shù).每次剪枝生成的稀疏網(wǎng)絡(luò)在驗證集和測試集上的正確率隨剪枝次數(shù)的變化情況如圖5所示,由圖中曲線變化可見,隨著剪枝次數(shù)的增加,網(wǎng)絡(luò)中剩余的參數(shù)量逐漸減少,這將使網(wǎng)絡(luò)計算量得以大幅度地減少,網(wǎng)絡(luò)的泛化能力得到顯著提高.神經(jīng)網(wǎng)絡(luò)從隨機初始化開始至剪枝9次期間,剪枝網(wǎng)絡(luò)的準確率均達到了與原網(wǎng)絡(luò)類似的精度,后面再接著對網(wǎng)絡(luò)剪枝發(fā)現(xiàn)剪枝網(wǎng)絡(luò)在驗證集與測試集上的精度開始逐漸下降.
迭代剪枝完成后,從生成的稀疏網(wǎng)絡(luò)中尋找1個最佳的剪枝網(wǎng)絡(luò).實驗中選取剪枝7次后生成的稀疏網(wǎng)絡(luò)為最佳剪枝網(wǎng)絡(luò),這時網(wǎng)絡(luò)中剩余的參數(shù)僅占原網(wǎng)絡(luò)的32.06%.在得到最佳剪枝網(wǎng)絡(luò)后,再在訓練集上分別訓練AlexNet原始網(wǎng)絡(luò)和搜尋到的最佳剪枝網(wǎng)絡(luò),并在測試集上評估它們的性能,剪枝前后網(wǎng)絡(luò)在驗證集上的正確率及損失變化情況如圖6所示.由圖6(a)可見,AlexNet剪枝網(wǎng)絡(luò)經(jīng)過近450輪迭代訓練后開始逐漸收斂,而原網(wǎng)絡(luò)則需經(jīng)過近1300輪的迭代訓練后才逐漸收斂,并且由圖6(b)可見,剪枝后網(wǎng)絡(luò)在驗證數(shù)據(jù)集上的損失下降得比原網(wǎng)絡(luò)快.
在上述剪枝策略下,發(fā)現(xiàn)剪枝前后網(wǎng)絡(luò)的精度基本一致,但剪枝后網(wǎng)絡(luò)具有比原網(wǎng)絡(luò)更快的收斂速度.最終結(jié)果顯示,AlexNet剪枝網(wǎng)絡(luò)在測試數(shù)據(jù)集上的識別正確率(98.53%)比原網(wǎng)絡(luò)準確率(98.37%)高0.16%.
將迭代剪枝策略與傳統(tǒng)的一次性剪枝方法進行比較,迭代剪枝是對模型進行反復(fù)的訓練-修剪-再訓練操作,每次修剪較少的權(quán)重.而一次性剪枝則是一次性修剪較多的權(quán)重,最后再對生成的稀疏網(wǎng)絡(luò)進行訓練.利用AlexNet模型在這2種不同的剪枝策略下分別進行實驗.在一次性剪枝方法中,一次性修剪原網(wǎng)絡(luò)68%的參數(shù),實驗結(jié)果見表1.
表1 不同剪枝策略比較
由表中數(shù)據(jù)可知,經(jīng)迭代剪枝生成的稀疏網(wǎng)絡(luò)具有和原網(wǎng)絡(luò)類似的較高識別精度,但經(jīng)剪枝生成的網(wǎng)絡(luò)具有比原網(wǎng)絡(luò)快得多的收斂速度.此外,我們還將迭代剪枝策略與一次性剪枝方法相比較發(fā)現(xiàn),二者的收斂速度大致相同,但我們的方法具有比一次性剪枝策略更高的識別精度.在一次性剪枝實驗中出現(xiàn)部分精度損失可能的原因是一次性修剪過多的權(quán)重,對網(wǎng)絡(luò)造成了破壞,使網(wǎng)絡(luò)在后續(xù)的訓練中精度很難恢復(fù).
本文針對語音識別領(lǐng)域,神經(jīng)網(wǎng)絡(luò)學習速度慢、訓練成本高等問題,選用迭代剪枝算法對隨機初始化網(wǎng)絡(luò)以迭代的方式進行逐層修剪,并從剪枝生成的稀疏網(wǎng)絡(luò)中搜尋1個最佳的剪枝網(wǎng)絡(luò)用于普米語語譜圖識別.實驗結(jié)果表明,將經(jīng)迭代剪枝生成的AlexNet剪枝網(wǎng)絡(luò)用于普米語語譜圖識別具有和原網(wǎng)絡(luò)類似的較高識別精度,并且剪枝后網(wǎng)絡(luò)還具有比原網(wǎng)絡(luò)更快的收斂速度.對隨機初始化網(wǎng)絡(luò)進行迭代剪枝具有如下優(yōu)點:①能夠大幅度縮減網(wǎng)絡(luò)規(guī)模、有效降低網(wǎng)絡(luò)計算量,促進模型快速訓練;②可以避免神經(jīng)網(wǎng)絡(luò)中過多的參數(shù)冗余、提高模型泛化能力.然而,通過該算法來生成最佳剪枝網(wǎng)絡(luò)往往需要反復(fù)的進行模型訓練,相比于一次性剪枝,所耗費的時間較長.在接下來的工作中,將探索更為快速、有效的剪枝方法來生成最佳剪枝網(wǎng)絡(luò).