趙小芬,張開生
(陜西科技大學(xué)電氣與控制工程學(xué)院,陜西 西安 710021)
語音識別技術(shù)作為當今人工智能時代的熱點然而也是難點問題,廣受國內(nèi)外專家學(xué)者關(guān)注[1-2]。隨著科技的不斷進步,動態(tài)編程技術(shù)飛速發(fā)展、設(shè)備性能快速提高。傳統(tǒng)的語音聲學(xué)系統(tǒng),如高斯混合模型[3](Gaussian Mixture Model,GMM)以及隱馬爾科夫模型[4](Hidden Markov Models,HMM)正在被深度學(xué)習(xí)模型所替代[5]。學(xué)者們[6-8]對深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)在語音識別聲學(xué)建模進行了研究,并取得一定的效果。在2015年ILSRVC挑戰(zhàn)賽中DNN被證明在分類任務(wù)中表現(xiàn)卓越,但是這種優(yōu)越性是以高計算復(fù)雜度為代價[9],因此,如何降低訓(xùn)練參數(shù)規(guī)模、減少內(nèi)存消耗、提升訓(xùn)練效率,從而提高語音識別率就尤為重要。
據(jù)相關(guān)專家考證[10-13],卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)在聲學(xué)方面優(yōu)于DNN。ZHANG Q等[14]提出的基于卷積神經(jīng)網(wǎng)絡(luò)的連續(xù)語音識別,針對連續(xù)語音識別的問題,根據(jù)卷積神經(jīng)網(wǎng)絡(luò)在圖像處理任務(wù)中具有平移不變性的特點;另外,通過在標準語料庫TIMIT上驗證,其研究結(jié)果表明,與DNN相比,CNN對于神經(jīng)網(wǎng)絡(luò)模型尺寸的減小具有顯著的作用,與此同時也可以獲得更佳的識別精度。黃玉蕾[15]等提出的MFSC系數(shù)特征局部有限權(quán)重共享CNN語音識別,輸入形式采用語音信號的二維陣列映射,并引入卷積神經(jīng)網(wǎng)絡(luò),根據(jù)語音信號的局部特征構(gòu)建出有限局部權(quán)重共享卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,從而達到識別的目的。YOSHIOKA T等[16]充分利用CNN中的卷積能力,將CNN用于遠場語音識別,對語音特征向量的短時相關(guān)性進行建模,并與全連通DNN進行比較,結(jié)果證明CNN的性能優(yōu)于全連通DNN。
如何優(yōu)化CNN在語音識別中的性能,進一步提升語音識別率,依然是CNN應(yīng)用于語音識別時所面臨的挑戰(zhàn),因此仍需進一步地研究[17]。本文結(jié)合語音識別技術(shù)對CNN的結(jié)構(gòu)展開研究,提出一種三層結(jié)構(gòu)優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò),并將其應(yīng)用于語音識別,旨在為解決傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)存在梯度消失、識別精度不高的缺陷,以及進一步提升語音識別率提供有效的方法。
CNN一般包含輸入層、卷積層、池化層(采樣層)、全連接層和輸出層。結(jié)構(gòu)呈現(xiàn)堆疊狀,前一層的輸出作為后一層的輸入,一般與最后一層連接的為分類器,輸出得到最終結(jié)果。CNN具有共享權(quán)值及局部連接的特點,與其它神經(jīng)網(wǎng)絡(luò)相比其參數(shù)更少,并且因其具有良好的平移不變性,可以更好地克服非平穩(wěn)信號的時變性,因此被廣泛地應(yīng)用于圖像處理、語音識別領(lǐng)域等。圖1所示為典型的CNN體系結(jié)構(gòu)圖。
圖1 CNN體系結(jié)構(gòu)圖
CNN中每個卷積層由若干卷積單元組成,每個卷積單元的參數(shù)都是通過反向傳播算法優(yōu)化得到的。卷積運算的目的是采用局部連接和權(quán)值共享的方式提取輸入的不同特征。
卷積層中一般有5種激活函數(shù),其中Sigmoid函數(shù)的倒數(shù)為非零值,運算起來比較容易,故被廣泛使用,但是Sigmoid函數(shù)存在梯度消失的問題。神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)還有ReLU函數(shù),其特點是當輸入值大于0時,倒數(shù)不為0,從而允許基于梯度的學(xué)習(xí),但是當輸入為負值的時候,其學(xué)習(xí)速率下降,有可能造成神經(jīng)元無效的情況。ReLU激活函數(shù)中還包括ELU函數(shù),ELU函數(shù)的特點是當輸入值小于0時,增添一個非0輸出,這樣做的目的是防止出現(xiàn)靜默神經(jīng)元,使倒數(shù)可以收斂到零,進而使學(xué)習(xí)率得到提高。SoftPlus函數(shù)也是神經(jīng)網(wǎng)絡(luò)的激活函數(shù),其倒數(shù)非零并且連續(xù),故能夠防止出現(xiàn)靜默神經(jīng)元,但是由于它具有不對稱性,并不以0為中心,會出現(xiàn)干擾網(wǎng)絡(luò)學(xué)習(xí)的現(xiàn)象,并且可能出現(xiàn)梯度消失的問題。Tanh函數(shù)解決了Sigmoid關(guān)于零均值化的輸出問題,其導(dǎo)數(shù)范圍變大,在(0,1)之間,而Sigmoid在(0,0.25)之間,梯度消失問題有所緩解,但是由于其冪運算的計算方式致使計算成本代價大,并且依然存在梯度消失的問題。
為了改善上述激活函數(shù)存在的缺陷,本文引入文獻18中新型log函數(shù)作為卷積層的激活函數(shù),log激活函數(shù)依據(jù)生物神經(jīng)元特性,若輸入進神經(jīng)元的特征值為負的時候,log激活函數(shù)便會將其輸出值進行強制轉(zhuǎn)化為0值。當輸入值為正時,其輸出值便隨輸入值的增大而增大,這與生物神經(jīng)元的特性是相符的,從而能更好地緩解梯度消失的問題。
池化層也叫采樣層,位于連續(xù)的卷積層之間,可以用于壓縮數(shù)據(jù)及參數(shù)的數(shù)量,減小過擬合。其基本操作與卷積層比較類似,但是其矩陣間數(shù)據(jù)計算的規(guī)則是不同的,卷積層通過最大池化或者平均池化操作的方式,并且不必經(jīng)過反向傳播的修改。
通常池化操作的方法有最大池化和平均池化兩種方式,最大池化的過程及時選出最大數(shù)值作為輸出矩陣相應(yīng)元素值,這種方法可以使具有代表性的特征點盡可能的保留。另一種池化操作方法為平均池化方法,就是將每個小窗口的4個數(shù)字計算平均值作為輸出矩陣的相應(yīng)元素值。
一般來說,提取特征時其誤差主要來源于估計值方差增大,這種現(xiàn)象往往是由鄰域大小受到一定的限制造成的,另一種誤差主要來源于在估計均值的時候存在估計偏移。平均池化操作主要是降低前者所造成的誤差,最大池化可降低后者產(chǎn)生的誤差,但是各自都有不足,都無法準確地提取池化域特征。本文借鑒何鑫等[19]研究的方法,結(jié)合二者的優(yōu)勢和互補特性,采用中間池化方法(middle-pooling),從而減小特征提取的誤差和增強穩(wěn)定性。優(yōu)化后的函數(shù)表示為:
Pij=(T+2a2)/2,
(1)
(2)
上式中Fij表示輸入語音特征域大小,池化大小為s×s,s表示每次移動的步長,a2為偏差大小,max表示最大池化操作。
全連接層將池化處理后的語音特征進行全連接,通常出現(xiàn)在整個網(wǎng)絡(luò)的最后幾層,對上一層輸入的特征的求加權(quán)和,全連接中每一個神經(jīng)元都與上一層的神經(jīng)元進行全連接,但是實際應(yīng)用中發(fā)現(xiàn)全連接層可由卷積實現(xiàn)。對于傳統(tǒng)的CNN(即包含全連接層)輸入的語音信號大小要求是固定的,這就要求全連接層與上層連接時,參數(shù)數(shù)量要預(yù)先設(shè)定好,這會使網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,且模型的泛化能力降低。卷積層與全連接層具有相同的特點,二者都是由上一層輸出與參數(shù)矩陣相乘而得到下一層的輸入,故將卷積層代替全連接層,不僅可降低模型復(fù)雜度,增強其可移植性,而且可以有效地解決全連接層的缺陷。
由于CNN在時間和空間上具有平移不變性的特點,而語音信號本身具有多樣性,所以本文利用CNN卷積不變特性來克服說話人多樣性。CNN用于識別時網(wǎng)絡(luò)的輸入方式類似于圖像識別,其輸入形式如圖2所示。首先將聲學(xué)特征轉(zhuǎn)換為二維矩陣,其中時域表示一個維度,頻域表示一個維度。假設(shè)一段輸入語音信號被分為n幀,這n幀語音信號的包含3種形式,分別是靜態(tài)形式、一階差分與二階差分。
圖2 語音信號二維映射形式
將經(jīng)過三層優(yōu)化之后的CNN用于語音識別,其網(wǎng)絡(luò)模型如圖3所示,包含輸入層、卷積層1、卷積層2、卷積層3、全連接層以及輸出層。本文CNN結(jié)構(gòu)的全連接層使用卷積層來代替。
圖3 優(yōu)化后的CNN結(jié)構(gòu)示意圖
(1)輸入層。輸入層為二維語音特征矩陣。
(2)卷積層1。第2層為卷積層。該層卷積層采用5×5大小的卷積核作為采樣窗口,使用改進的對數(shù)函數(shù)作為激活函數(shù),能夠更好地模擬生物神經(jīng)元特性,緩解梯度消失的情況。
(3)卷積層2。第3層仍為卷積層,采用5×5的卷積核,對第二層特征圖進行二次卷積,并提取相應(yīng)的特征,同樣采用新型對數(shù)函數(shù)作為激活函數(shù)。
(4)卷積層3。第4層采用4×4大小的卷積核,并增大其步長,進一步提取語音特征。
(5)全連接層。采用卷積層代替?zhèn)鹘y(tǒng)的全連接層,降低網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜度,增強特征信息。
輸出層。通過Softmax實現(xiàn)特征分類,得到最終的結(jié)果輸出。本文CNN結(jié)構(gòu)參數(shù)設(shè)置見表1。
表1 CNN結(jié)構(gòu)參數(shù)設(shè)置
為保證實驗可靠性,本文選取TIMIT英文語音數(shù)據(jù)集[20]及ST-CMDS中文語音數(shù)據(jù)集兩種語音數(shù)據(jù)集[21]作為實驗數(shù)據(jù)來源,其中,TIMIT數(shù)據(jù)庫包含630個不同說話人信息,為評價說話人識別系統(tǒng)中最權(quán)威的語音數(shù)據(jù)庫。本文選取430個說話人語音作為訓(xùn)練集,選取60個說話人語音作為測試集,并且訓(xùn)練集與測試集間無重疊。中文語音數(shù)據(jù)集選用ST-CMDS數(shù)據(jù)集,該中文語音數(shù)據(jù)集是由一家AI數(shù)據(jù)公司北京沖浪科技發(fā)布的中文語音數(shù)據(jù)集,其中包含10萬條語音文件,100 h以上的語音數(shù)據(jù),數(shù)據(jù)內(nèi)容以平時的網(wǎng)上語音聊天和智能語音控制語句為主,855個不同說話者,同時有男聲和女聲,適合多種場景下使用。再選取其中450個不同說話者的900條語音作為訓(xùn)練集,120條語音作為數(shù)據(jù)集,且訓(xùn)練集與測試集間無交疊。
本文采用3-gram模型作為實驗的語言統(tǒng)計模型。語音的特征參數(shù)選用文獻22中所述的FBANK聲學(xué)特征[22],該語音特征幀間關(guān)聯(lián)性較強,改善傳統(tǒng)MFCC特征提取時能量值發(fā)生偏置造成的提取不準確從而對識別結(jié)果產(chǎn)生的影響。實驗分別采用詞錯率(Word Error Rate,WER)以及模型損失值作為算法的評價指標,其中WER的表達式為
(3)
上式中,S為語音解碼時,連續(xù)語音與人工標注統(tǒng)計出的替換詞的個數(shù),D為刪除詞的個數(shù),I為插入詞的個數(shù),N為語音庫中正確詞的總數(shù)量。
上述模型的損失值可以有效反映模型與實際數(shù)據(jù)之間的差距,通過模型損失值可以更直觀地進行不同模型之間的比較。
為了更好地反映本文算法的有效性,本文選擇目前常用的隱馬爾科夫模型(HMM)、深度神經(jīng)網(wǎng)絡(luò)(DNN)和傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(CNN)用于語音識別作為對照組,與本文優(yōu)化后的CNN網(wǎng)絡(luò)結(jié)構(gòu)進行性能比較,當然目前也存在其它的網(wǎng)絡(luò)應(yīng)用于語音識別,相對來說并不十分成熟,缺乏一套完善或者公認的量化指標去進行評價,因此這里并未選其作為對照組。具體方式根據(jù)上述2種評價指標,其中采用HMM進行語音識別時,其本質(zhì)為最大概率的計算。根據(jù)訓(xùn)練集數(shù)據(jù)計算出模型的參數(shù)后,依據(jù)Viterbi算法,取概率最大的為識別結(jié)果。
DNN實現(xiàn)語音識別時,先構(gòu)造一定數(shù)量隱含層的深度神經(jīng)網(wǎng)絡(luò),一般采用Sigmoid函數(shù)或者Tanh函數(shù)作為激活函數(shù);再利用反向傳播算法對網(wǎng)絡(luò)進行訓(xùn)練,建立目標函數(shù)。實驗對不同聲學(xué)模型的詞錯誤率進行多次統(tǒng)計,隨機取其中10組結(jié)果,其中在TIMIT語音數(shù)據(jù)集下結(jié)果見表2,在STCMDS中文數(shù)據(jù)集下的結(jié)果見表3。
表2 TIMIT數(shù)據(jù)集下不同模型詞錯誤率 單位:%
表3 ST-CMDS數(shù)據(jù)集下不同模型詞錯誤率 單位:%
由表2、表3可以看出,兩種數(shù)據(jù)集下WER值的變化趨勢基本一致。3種神經(jīng)網(wǎng)絡(luò)模型相對于傳統(tǒng)HMM模型,錯誤率顯著降低??傮w來說,本文改進CNN相對于對比模型,錯誤率均降低。在TIMIT數(shù)據(jù)集下,相對于HMM模型、DNN模型、傳統(tǒng)CNN模型其平均錯誤率分別下降31.52%、16.43%、12.87%。在ST-CMDS數(shù)據(jù)集下,相對于HMM模型、DNN模型以及傳統(tǒng)CNN模型,其平均錯誤率分別下降30.58%、19.80%、14.76%。可見,本文經(jīng)過三層結(jié)構(gòu)優(yōu)化后的CNN語音識別率明顯提升。
由表2和表3還可以看出:本文算法無論是在英文語音數(shù)據(jù)集還是中文語音數(shù)據(jù)集,其語音識別率均得到有效的提高。
圖4為4種模型的損失變化曲線。整體上看,HMM、DNN、傳統(tǒng)CNN、改進DNN的損失值呈現(xiàn)下降的狀態(tài)。隨著訓(xùn)練數(shù)據(jù)量的上升,各個聲學(xué)模型逐漸趨于收斂,最終損失值趨于一個固定的值。其中HMM趨于35,DNN趨于33、傳統(tǒng)CNN趨于30而改進后的CNN最終損失值趨于18,可見損失值明顯減小,有助于訓(xùn)練更深層次模型。
圖4 不同訓(xùn)練模型損失值的比較
另外,本文還對改進后模型訓(xùn)練及測試時間進行了統(tǒng)計,隨機取10組其訓(xùn)練時間見表4。
表4 改進CNN模型訓(xùn)練及測試時間
(1)本文提出了三層結(jié)構(gòu)優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)的語音識別,通過分析CNN結(jié)構(gòu)的特點,據(jù)此分別對卷積層、池化層以及全連接層進行改進。
(2)針對傳統(tǒng)CNN卷積層的激活函數(shù)容易出現(xiàn)梯度消失的問題,將一種更符合生物神經(jīng)元特性的新型對數(shù)函數(shù)作為激活函數(shù);結(jié)合平均池化及最大池化各自的優(yōu)勢改進池化層;使用卷積層代替全連接層,降低模型的復(fù)雜度。
(3)將改進后的算法與HMM、DNN、傳統(tǒng)CNN聲學(xué)建模方式分別在TIMIT英文語音數(shù)據(jù)集及STCMDS中文語音數(shù)據(jù)集下進行對比實驗。結(jié)果顯示,在TIMIT數(shù)據(jù)集下相較于對比方法,詞錯誤率分別降低31.52%、16.43%以及12.87%;在ST-CMDS數(shù)據(jù)集下,詞錯誤率分別降低30.58%、19.80%及14.76%;模型損失度明顯減小,在一定程度上提升了模型的泛化能力。