王智超,徐 及,張鵬遠,顏永紅,2
(1.中國科學院 語言聲學與內(nèi)容理解重點實驗室,北京 100190;2.中國科學院 新疆理化技術研究所新疆民族語音語言信息處理實驗室,烏魯木齊 830011)
近年來,深度神經(jīng)網(wǎng)絡(deep neutal network, DNN)模型在語音識別領域中的應用帶來了識別精度的大幅提升[1-6]。相比于傳統(tǒng)的混合高斯模型(Gaussian mixture model, GMM),DNN擁有更出色的信息表達和分類能力,可以對發(fā)音狀態(tài)的后驗概率給出更加準確地預測。
神經(jīng)網(wǎng)絡作為一種鑒別性的分類模型,其結構多種多樣,其中卷積神經(jīng)網(wǎng)絡(convolutional neural networks, CNN)由于對網(wǎng)絡輸入特征具有高度的抗形變能力而被廣泛應用于在圖像識別和計算機視覺領域[7-9]。CNN通常是在網(wǎng)絡前端加入一個或者多個卷積結構,每個卷積結構由一個卷積層(convolutional layer)和一個采樣層(pooling layer)組成,卷積層和采樣層的共同作用使得CNN對輸入信號的平移、比例縮放等形變具有高度容忍性。同時,CNN采用權值共享的方式,大大降低了模型參數(shù)量。意味著相比于非權值共享網(wǎng)絡,卷積神經(jīng)網(wǎng)絡減少了對訓練數(shù)據(jù)量的需求。基于這些優(yōu)點,CNN逐漸被引入到語音識別領域,在多個英文識別任務中的識別精度都超過DNN[10-13]。
盡管CNN帶來了識別精度的提升,但其結構復雜變量多,卷積層數(shù)、卷積濾波器個數(shù)和參數(shù)都會影響其性能,且卷積結構計算慢,不易加速,這些也是將CNN應用于語音識別時所面臨的挑戰(zhàn)。針對這些問題,本文首先將CNN應用于一個中文大規(guī)模連續(xù)電話語音識別任務,詳細分析了卷積層數(shù)、卷積濾波器個數(shù)以及濾波器的窗長對識別性能的影響;同時提出了卷積層矢量化的方法對卷積計算進行加速。卷積層矢量化是在結構上對卷積計算進行優(yōu)化,而不進行任何假設和近似,因此不會造成CNN聲學模型在識別精度上的損失,可大大提高CNN的實用性。
CNN是一種特殊結構的神經(jīng)網(wǎng)絡,由一組或多組卷積層和采樣層以及若干全連接層構成[14]。其中的卷積層對輸入語音信號進行局部卷積操作,抽取特征信息,用于建模,這種建模方式更加符合語音信號的實際分布特性,因此,可獲得比DNN更好的建模效果。
CNN應用于聲學建模時,其輸入層是一個二維語音特征圖,如圖1所示??v軸表示頻域,以fbank特征為例,該維度為語音信號經(jīng)時-頻變換之后所保留下來的頻帶數(shù);橫軸表示時域,由當前幀與其前后若干幀特征并聯(lián)構成。由于差分特征可對靜態(tài)特征進行信息補充,所以在特征圖的時域維通常會加入特征的一階和二階差分來提高特征圖包含的信息量。
圖1 卷積神經(jīng)網(wǎng)絡示意圖Fig.1 Diagram of convolutional neural network
圖1中,輸入層之后是卷積層。卷積層的作用是利用卷積濾波器不斷地在輸入特征圖上沿時間軸和頻率軸平移,逐步對語音的各個局部特征進行觀察,并通過卷積運算抽取有用的特征信息,得到卷積特征圖。卷積運算的過程中共享同一組濾波器參數(shù),可以大大減少網(wǎng)絡的參數(shù)量。但是一個卷積濾波器的參數(shù)有限,所能抽取的信息也較為單一,因此,會使用多個參數(shù)不同的卷積濾波器從不同視角上進行觀察,得到更加豐富的信息。卷積操作的計算公式為
(1)
(1)式中:hj,k表示第j個卷積濾波器第k次卷積操作后的輸出神經(jīng)元;s表示卷積濾波器窗的大?。粀b,j表示第j個濾波器的權值參數(shù);vb+k-1表示第k次卷積的輸入特征矢量;aj表示網(wǎng)絡偏置;θ(x)是非線性激活函數(shù),本文中采用的是sigmoid函數(shù)。
語音信號中存在一些局部特性,不同的音素會在不同的頻率范圍內(nèi)產(chǎn)生共振峰,反映在頻譜圖中就是不同音素的能量集中在不同的頻帶范圍中。我們可以通過語音信號的局部頻譜特性來區(qū)分不同音素,然而背景噪聲等環(huán)境因素會對音素的頻譜能量分布產(chǎn)生影響。同一個音素根據(jù)不同的說話人所顯現(xiàn)出的發(fā)音特性也會不同,甚至同一個說話人在不同的語句中對同一個音素的發(fā)音也不同。這些情況導致語音信號的局部特性在一定的頻帶范圍內(nèi)產(chǎn)生波動,給識別任務增加困難。而CNN中的采樣層可以有效地解決這個問題。如圖1所示,每個卷積層之后是一個采樣層,它會對卷積層的輸出進行降采樣,采樣的方法包括最大值采樣、隨機采樣以及p-范數(shù)采樣等[15]。本文采用最大值采樣,選取采樣窗內(nèi)神經(jīng)元節(jié)點中的最大值作為采樣層的輸出。通過采樣層的處理,可以保證即使一個音素產(chǎn)生的共振峰在一定的頻率范圍內(nèi)發(fā)生波動,其采樣層的輸出結果保持不變,有效提高了模型魯棒性。同時,采樣層的存在大大降低了神經(jīng)元節(jié)點的數(shù)目,進一步縮小了模型參數(shù)量。最大采樣函數(shù)為
(2)
(2)式中:Sj,m是采樣層對第j個卷積特征圖進行第m次采樣后的輸出節(jié)點;r表示采樣窗的大??;n表示采樣窗的平移步長;可以通過控制n來調(diào)整采樣率(n 通過卷積層和采樣層的局部信息抽取,我們已經(jīng)得到了多個相互之間獨立的卷積特征圖。在采樣層之后添加全連接層可以對不同特征圖信息進行綜合整理,最后通過網(wǎng)絡的輸出層對特征信息進行分類判決,得到語音特征的后驗概率。 神經(jīng)網(wǎng)絡聲學模型在語音識別領域的成功應用使得識別準確率得到了顯著提高。與此同時,其巨大的運算量導致模型訓練周期和解碼時間較長,達不到實際的應用需求。因此,如何加速神經(jīng)網(wǎng)絡的計算成為一個熱門的研究課題。在文獻[16]中詳細介紹了對DNN計算進行加速的方法。本文將其中的定點量化和SSE(streaming single instruction multiple data extensions)指令并行計算的加速方法應用于CNN進行加速。 定點量化是將網(wǎng)絡各層的輸入輸出和權重從浮點型變量量化為字符型變量,再結合SSE指令集一次對多個變量進行乘加操作,從而起到加速的效果。但是CNN中特有的卷積運算,其計算過程較為復雜,大大降低了定點量化和SSE指令的加速效率,卷積運算示意圖如圖2所示。主要原因有2點:①卷積運算過程中需要卷積濾波器在輸入特征圖上進行不斷地平移,導致運算過程中的循環(huán)控制成本很高;②與DNN的集成化矩陣乘加運算不同,卷積運算由大量的微型乘加運算組成,而SSE指令集采用16字節(jié)對齊的模式進行運算加速,導致在卷積運算過程中產(chǎn)生大量的冗余計算,且卷積運算中的輸入在內(nèi)存中并不是連續(xù)存儲的,這也降低了SSE指令的讀取效率。 圖2 卷積運算示意圖Fig.2 Diagram of convolution operation 針對上文提到的卷積計算復雜度高的問題,我們對卷積結構進行優(yōu)化,提出了將卷積層進行矢量化展開的方法對卷積運算進行簡化,以提高定點量化和SSE指令對卷積運算的加速效率。卷積層矢量化的目的是將卷積運算轉換為全連接矩陣乘法,減少卷積運算過程中循環(huán)控制消耗的時間,同時降低SSE指令產(chǎn)生的冗余計算。本文采用了2種方法對卷積層進行矢量化:權值矩陣矢量化和輸入矩陣矢量化。 2.2.1 權值矩陣矢量化 權值矩陣矢量化首先將卷積層的輸入視為一維向量,然后對卷積濾波器的權值矩陣按照輸入向量進行矢量化展開并在相應的位置補零,如圖3所示。權值矩陣中的一列對應一次卷積操作的卷積濾波器參數(shù)。 通過權值矩陣矢量化可以提高集成化計算程度,減少循環(huán)控制操作,提高運算效率。但是從圖3中可看出權值矩陣矢量化后會產(chǎn)生大量零權值,導致新的冗余計算產(chǎn)生,矢量化后零權值數(shù)量的計算公式為 (3) (3)式中:N0表示零權值數(shù)量;NI表示卷積輸入向量長度;NW表示卷積濾波器參數(shù)量;c表示卷積運算次數(shù)。從(3)式中可看出卷積輸入向量長度與濾波器參數(shù)量之間的差值越大,矢量化后零權值數(shù)量越多,新產(chǎn)生的冗余計算量越大,矢量化后的加速效果越差。 圖3 權值矩陣矢量化Fig.3 Vectorization of weight matrix 為降低零權值帶來的負面效果,我們進一步采用稀疏計算的方式,在運算過程中加設了控制位直接跳過16字節(jié)全零的權值,這樣可減少部分冗余計算。 2.2.2 輸入矩陣矢量化 輸入矩陣矢量化是將濾波器權值矩陣視為一維向量,將卷積的輸入矩陣按照權值矩陣進行矢量化展開,整理為與權值矩陣相匹配的連續(xù)輸入,如圖4所示。矢量化后輸入矩陣的一行代表一次卷積運算的輸入??梢钥闯?,輸入矩陣矢量化后結構更加緊湊,不增加新的冗余計算,加速效率更高。 圖4 輸入矩陣矢量化Fig.4 Vectorization of input matrix 由于卷積層的輸出神經(jīng)元節(jié)點數(shù)量較大,導致激活函數(shù)的運算量很大。針對這個問題,考慮到sigmoid激活函數(shù)是單調(diào)遞增函數(shù),在最大采樣之后進行激活函數(shù)的運算并不影響最終的輸出結果,而經(jīng)過采樣后的神經(jīng)元節(jié)點數(shù)大大減少了,可以通過激活函數(shù)后移的方式來降低激活函數(shù)的計算量,進一步起到加速的效果。 在文獻[17]中,詳細描述了CNN在小規(guī)模數(shù)據(jù)集(TIMIT)和淺層網(wǎng)絡結構中(3個隱層)的性能表現(xiàn)。本實驗主要研究在漢語大規(guī)模數(shù)據(jù)集和深層結構下卷積層數(shù)、濾波器個數(shù)和采樣窗的大小對CNN性能的影響。實驗在漢語普通話大詞表非特定人電話自然口語對話識別任務上進行,訓練數(shù)據(jù)為美國語言數(shù)據(jù)聯(lián)盟LDC提供的漢語普通話數(shù)據(jù):Call-Home和Call-HKUST,共100 h。測試集為2個:其中,測試數(shù)據(jù)HDev04是由香港大學2004年采集的電話自然口語對話數(shù)據(jù),它包含了24個電話對話,全集長度大約4 h。我們從中隨機選取出了1 h的數(shù)據(jù)用于測試。測試數(shù)據(jù)86305是國家863組織的語音識別評測在2005年的測試集,時長為48 min[18]。識別評判標準為字符錯誤率CER(character error rate)。CNN的輸入特征為39維的filterbank特征,連同其一階、二階差分,以及前后各6幀進行拼接,擴展得到39×39的二維輸入特征圖。網(wǎng)絡的輸出為6 245個3因子音素狀態(tài)。對比基線系統(tǒng)為擁有5個全連接隱層結構的DNN,每個隱層2 048個神經(jīng)元節(jié)點。CNN和DNN均采取交叉熵準則進行訓練。訓練過程中學習率的調(diào)整策略為:每一次訓練數(shù)據(jù)迭代完畢后計算開發(fā)集的幀正確率,若增幅小于設定閾值(本文為0.5%),則在之后的每次迭代中學習率減半,當開發(fā)集上幀正確率的增幅第3次小于設定閾值時停止訓練。 3.2.1 CNN與DNN性能對比 表1給出了在一個卷積層和4個全連接隱層的結構下,卷積濾波器個數(shù)對CNN模型識別精度的影響,并給出了與基線DNN的識別對比結果。在實驗過程中,為了保持CNN與DNN參數(shù)量的一致,在調(diào)整卷積濾波器個數(shù)的同時,會隨之調(diào)整卷積濾波器和采樣窗的大小,全連接層的節(jié)點數(shù)與基線DNN保持一致,都為2 048。表1中的第一列為模型結構,CNN-32代表卷積層采用32 個卷積濾波器??梢钥闯?,采用一個卷積層的CNN,隨著卷積濾波器個數(shù)從32逐步增加到80,識別字錯誤率下降較為顯著。這是由于卷積濾波器的權值共享機制在減少參數(shù)量的同時也導致了其信息抽取局限性,因此,當卷積濾波器個數(shù)較少時,卷積層所抽取的特征信息量不夠豐富,以致識別性能不好。在少于64個卷積濾波器時CNN的性能不如基線DNN。另一方面,在卷積濾波器個數(shù)由80增加到128時,CNN性能提升不明顯。說明卷積濾波器個數(shù)在80個時其抽取的信息量已經(jīng)基本達到飽和,再增加濾波器個數(shù)并不能帶來明顯地識別性能的提高,反而會由于計算量的增加而導致模型訓練時間增加。由此看出,選取合適的濾波器個數(shù)對于CNN的建模性能具有重要意義。 表1 單卷積層不同濾波器個數(shù)的CNN與DNN識別字錯誤率對比Tab.1 Word error rate comparisons between DNN and CNN with one convolution layer 在單卷積層實驗中,最優(yōu)的CNN結構相比于DNN在識別字錯誤率上得到平均絕對0.5%的下降,性能提升有限。根據(jù)CNN在圖像處理中應用的經(jīng)驗,適當增加卷積層數(shù)可以提高其性能,因此接下來采用2個卷積層和3個全連接層的CNN結構進行實驗,表2 給出了實驗對比結果。為保持各模型間參數(shù)量的一致,CNN參數(shù)配置為第1層采用128個卷積濾波器,窗為7×7,采樣窗為3×3;第2層采用256個卷積濾波器,窗為4×4,采樣窗為2×2;全連接層仍為每層2 048個節(jié)點。結果表明,2個卷積層的CNN得到了最優(yōu)的識別結果,在2個測試集上相對于基線DNN在識別字錯誤率上性能穩(wěn)定的提高了絕對1.2%,表明CNN在中文大數(shù)據(jù)量下的建模性能要優(yōu)于DNN。 表2 兩卷積層CNN與DNN識別字錯誤率對比Tab.2 Word error rate comparisons between DNN and CNN with two convolution layer 3.2.2 卷積層矢量化實驗 在CNN加速實驗中,為突出矢量化方法的加速效果,我們降低了全連接層在整個神經(jīng)網(wǎng)絡中所占的比重。實驗采取了2個卷積層和一個全連接層的結構,同時適當減少濾波器的數(shù)量,每個卷積層使用64個卷積濾波器,以減少第2卷積層的輸出節(jié)點,進一步減少全連接的權重數(shù)量。第1層卷積濾波器的窗為7×7,采樣窗為3×3;第2層卷積濾波器的窗為4×4,采樣窗為2×2;全連接層的節(jié)點數(shù)為1 024。采用上文提到86 305作為測試集,依據(jù)在測試集上解碼時模型的前向計算時間來評判加速方法的有效性(進行3次解碼,取平均時間),表3給出了實驗對比結果。 表3 卷積矢量化加速實驗結果Tab.3 Experiment results of convolution vectorization 表3中的第1行為本實驗的基線系統(tǒng),采用浮點型和循環(huán)方式進行卷積計算,第2行為直接采用定點量化和SSE指令對CNN進行加速的實驗結果,網(wǎng)絡的前向計算時間相對基線減少799 s,速度提升只有12%,加速效率較低;第3行表示只對第2個卷積層的權值矩陣進行矢量化,第3行表示對2個卷積層的權值矩陣都進行矢量化??梢钥闯?,僅第2個卷積層進行權值矩陣矢量化帶來了卷積運算速度的大幅提升,使前向計算時間由5 835 s減少到3 128 s,而對第一個卷積層也進行權值矩陣矢量化后并沒有帶來卷積運算速度的提升,前向計算時間反而由3 128 s增加到3 221 s。這是由于首層的輸入為特征,其維度遠大于濾波器權值向量的維度,導致權值矩陣矢量化后新增的零權值過多,產(chǎn)生的量冗余計算抵消了加速效果相,正如我們在第2.2.1節(jié)所分析的為降低權值矩陣矢量化產(chǎn)生的冗余計算量,進一步采用稀疏計算的方式提高加速效率。稀疏計算是在調(diào)用SSE指令時直接跳過16字節(jié)全零的權值。表3中第4行表示采用稀疏計算后,網(wǎng)絡的前向計算時間,由3 221 s減少到1 635 s。最終權值矩陣矢量化結合稀疏計算,使卷積計算速度提高至基線系統(tǒng)的4倍。 表3中最后一行表示采用輸入矩陣矢量化方法對卷積運算進行加速。由于該方法不產(chǎn)生新的冗余計算,因此,加速效率最高,網(wǎng)絡的前向計算速度是基線系統(tǒng)的6.4倍。 3.2.3 激活函數(shù)后移 由于卷積層的輸出神經(jīng)元數(shù)量較大,經(jīng)測試發(fā)現(xiàn)激活函數(shù)運算所消耗的時間已經(jīng)占據(jù)前向計算總時間的近50%。為減少不必要的計算量,采取激活函數(shù)后移的方式,在采樣層之后進行激活函數(shù)計算。表4給出了激活函數(shù)后移的實驗效果。權值矩陣矢量化結合激活函數(shù)后移的方法,網(wǎng)絡前向計算時間由1 635 s進一步降至1 241 s;輸入矩陣矢量化結合激活函數(shù)后移的方法,網(wǎng)絡前向計算時間由1 041 s降至653 s。 表4 激活函數(shù)后移實驗結果Tab.4 Experiment Results of activation backward 本文將卷積神經(jīng)網(wǎng)絡應用于漢語普通話大詞表電話自然口語對話識別任務中進行聲學建模,分析研究了卷積層數(shù)、卷積濾波器個數(shù)和參數(shù)對于CNN模型性能的影響。最終使得最優(yōu)結構下的CNN聲學模型相比DNN模型在識別字錯誤率上下降絕對1.2%。針對CNN網(wǎng)絡卷積結構計算復雜,常規(guī)的定點量化和SSE指令加速效率低的問題,我們提出了2種卷積結構優(yōu)化的方法:權值矩陣矢量化和輸入矩陣矢量化方法來提高卷積運算的效率。最終通過輸入矩陣矢量化結合激活函數(shù)后移的方法,使得卷積運算速度相比定點量化、SSE指令后再次提高8.9倍。由于卷積結構優(yōu)化的方法不會改變卷積的運算結果,因此不會對模型帶來性能的損失,大大提高了CNN的實用性。 參考文獻: [1] HINTON G, DENG L, YU D, et al. Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups[J]. Signal Processing Magazine, IEEE, 2012, 29(6): 82-97. [2] DAHL G E, YU D, DENG L, et al. Context-dependent pre-trained deep neural networks for large-vocabulary speech recogni-tion[J]. IEEE Transactions on Audio, Speech, and Language Processing,2012,20(1):30-42. [3] JAITLY N, NGUYEN P, SENIOR A W, et al. Application of pre-trained deep neural networks to large vocabulary speech recogni-tion[C]//International Speech Communication Association. Portland, USA: IEEE, 2012: 2578-2581. [4] SAINATH T N, KINGSBURY B, RAMA-BHADRAN B, et al. Making deep belief networks effective for large vocabulary continuous speech recognition[C]//IEEE Workshop on Automatic Speech Recognition and Understanding (ASRU). Hawaii: IEEE, 2011: 30-35. [5] GRAVE A, MOHAMED A, HINTON G. Speech recognition with deep recurrent neural networks[C]//IEEE International conference on Acoustics, speech and signal processing.Vancouver,Canada:IEEE,2013:6645-6649. [6] SCHMIDHUBER J. Deep learning in neural networks: An overview[J]. Neural Networks, 2015, 61(1): 85-117. [7] ALAM M M, PATIL P, HAGAN M T, et al. A computational model for predicting local distortion visibility via convolutional neural network trained on natural scenes[C]//IEEE International Conference on Image Processing (ICIP). Quebec, Canada: IEEE, 2015: 3967-3971. [8] KAINZ P, PFEIFFER M, URSCHLER M. Semantic segmentation of colon glands with deep convolutional neural networks and total variation segmentation[OL]. (2015-11-21) [2016-11-14]. http://arxiv.org/abs/1511.06919. [9] TAIGMAN Y, YANG M, RANZATO M A, et al. Deepface: Closing the gap to human-level performance in face verification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Columbus, USA: IEEE pree, 2014: 1701-1708. [10] ABDEL-HAMID O, MOHAMED A, JIANG H, et al. Applying convolutional neural networks concepts to hybrid NN-HMM model for speech recognition[C]//IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). Kyoto, Japan: IEEE, 2012: 4277-4280. [11] SAINATH T N, MOHAMED A, KING-SBURY B, et al. Deep convolutional neural networks for LVCSR[C]//IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). Vancouver, Canada: IEEE, 2013: 8614-8618. [12] SERCU T, PUHRSCH C, KINGSBURY B, et al. Very deep multilingual convolutional neural networks for LVCSR[OL]. (2016-01-23) [2016-11-14]. http://arxiv.org/abs/1509.08967. [13] SAINATH T N, KINGSBURY B, SAON G, et al. Deep convolutional neural networks for large-scale speech tasks[J]. Neural Networks, 2015, 64(1): 39-48. [14] LECUN Y, BENGIO Y. Convolutional networks for images, speech, and time series[J]. The handbook of brain theory and neural networks, 1995, 3361(10): 255-258. [15] SAINATH T N, KINGSBURY B, MOHAMED A, et al. Improvements to deep convolutional neural networks for LVCSR[C]//IEEE Workshop on Automatic Speech Recognition and Understanding (ASRU). Olomouc, Czech Republic: IEEE, 2013: 315-320. [16] VANHOUCKE V, SENIOR A, MAO M Z, et al. Improving the speed of neural networks on CPUs[C]//Deep Learning and Unsupervised Feature Learning NIPS Workshop. Granada, Spain: IEEE, 2011, 1. [17] 張晴晴,劉勇,潘接林,等.基于卷積神經(jīng)網(wǎng)絡的連續(xù)語音識別[J].工程科學學報,2015,37(9):1212-1217. ZHANG Qingqing, LIU Yong, PAN Jielin, et al. Research on continuous Speech Recognition by Convolutional neural networks[J]. Chinese Journal of Engineering, 2015, 37(9): 1212-1217. [18] ZHANG Qingqing, CAI Shang, PAN Jielin, et al. Improved acoustic models for conversational telephone speech Recognition[C]//International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery. Chongqing, China: IEEE, 2012.2 CNN的結構優(yōu)化和加速計算
2.1 神經(jīng)網(wǎng)絡的加速計算
2.2 卷積結構優(yōu)化
2.3 激活函數(shù)后移
3 實驗與分析
3.1 實驗條件
3.2 實驗結果
4 結束語