劉想德,王蕓秋,蔣 勤,張 毅,何翔鵬
(1.重慶郵電大學(xué) 先進(jìn)制造工程學(xué)院,重慶 400065;2.重慶郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,重慶 400065)
傳統(tǒng)的語(yǔ)音識(shí)別系統(tǒng)可以分為語(yǔ)音信號(hào)預(yù)處理、特征提取、聲學(xué)模型、語(yǔ)言模型和解碼器5個(gè)部分,其中,特征提取和聲學(xué)模型對(duì)語(yǔ)音識(shí)別系統(tǒng)的效率有著關(guān)鍵性的影響。隨著大數(shù)據(jù)集的出現(xiàn)以及硬件計(jì)算能力的提升,目前聲學(xué)模型主要包括4種網(wǎng)絡(luò):深度神經(jīng)網(wǎng)絡(luò)(deep neural network, DNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long short term memory network, LSTM)和卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network, CNN)。第一個(gè)成功應(yīng)用的聲學(xué)模型是DNN,它利用受限玻爾茲曼機(jī)(restricted Boltzmann machine, RBM)進(jìn)行無(wú)監(jiān)督分層預(yù)訓(xùn)練[1-2]。然而,語(yǔ)音信號(hào)具有長(zhǎng)時(shí)相關(guān)性,DNN只能看到預(yù)先設(shè)定長(zhǎng)度的數(shù)據(jù),因此對(duì)于語(yǔ)音識(shí)別任務(wù)其表達(dá)能力有限。在DNN之后,基于RNN的聲學(xué)模型出現(xiàn)了一種對(duì)語(yǔ)音中的長(zhǎng)時(shí)依賴性進(jìn)行建模的方法,特別是基于LSTM體系結(jié)構(gòu)[3]的RNN在性能方面得到進(jìn)一步提升[4],但將RNN用于語(yǔ)音識(shí)別中存在長(zhǎng)時(shí)依賴性的問(wèn)題。
目前,受圖像領(lǐng)域的啟發(fā),大量研究人員將CNN應(yīng)用到了聲學(xué)模型中,在抗噪聲ASR中,這種模型在Aurora-4任務(wù)上實(shí)現(xiàn)了最佳性能[5]。2015年,文獻(xiàn)[6]利用CNN在語(yǔ)音識(shí)別中提取出包含MFCC-SDC特征的語(yǔ)譜圖,除了使用CNN對(duì)輸入語(yǔ)音進(jìn)行簡(jiǎn)單分類外,還用CNN為特征提取器取得了更好的性能。此外,淺層CNN的代表中值得一提的是混合神經(jīng)網(wǎng)絡(luò)(convolution-LSTM-deep neural network, CLDNN)[7],該模型利用CNN優(yōu)良的特征提取能力,用原始語(yǔ)音波形作為輸入提取到比MFCC更好的特征,但由于其采用的卷積層數(shù)很少,模型表達(dá)能力十分有限。因此,為了加深網(wǎng)絡(luò)深度,受殘差網(wǎng)絡(luò)(residual network,ResNet)[8]在圖像識(shí)別中成功應(yīng)用的啟發(fā),深度殘差卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)成功應(yīng)用到了語(yǔ)音識(shí)別中,解決了梯度消失問(wèn)題。由于該網(wǎng)絡(luò)參數(shù)量大,且需要用到大量的訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,通常其訓(xùn)練耗時(shí)較長(zhǎng)。2014年,Google提出了GoogLeNet網(wǎng)絡(luò)[9-10],其主要?jiǎng)?chuàng)新就是利用Inception思想解決過(guò)擬合以及計(jì)算量增大的問(wèn)題,Inception V3即是在此基礎(chǔ)上的改進(jìn)版本。2017年,文獻(xiàn)[11]提出的DenseNet在目標(biāo)識(shí)別基準(zhǔn)任務(wù)上有了顯著的進(jìn)步,更關(guān)鍵的是它比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)需要的參數(shù)更少,不僅有效加深了網(wǎng)絡(luò)層數(shù)而且是一種相對(duì)緊湊的網(wǎng)絡(luò)。
本文基于Inception V3非對(duì)稱卷積思想,提出了一種改進(jìn)的密集連接卷積神經(jīng)網(wǎng)絡(luò)模型,以下簡(jiǎn)稱為IV3-DenseNet模型。該模型利用密集連接塊建立不同層之間的連接關(guān)系以保存低層特征,并將卷積核的范圍擴(kuò)大后進(jìn)行整合;借鑒Inception V3的非對(duì)稱卷積思想,將稠密塊模塊中的卷積核替換為非對(duì)稱卷積結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果表明,在THCHS30數(shù)據(jù)集上該模型與經(jīng)典深度殘差卷積神經(jīng)網(wǎng)絡(luò)模型相比,語(yǔ)音識(shí)別率有2.67%的提升,與原始DenseNet相比進(jìn)一步減少了網(wǎng)絡(luò)參數(shù)量,在保證識(shí)別率的情況下,模型訓(xùn)練效率提升了約51%。
卷積神經(jīng)網(wǎng)絡(luò)早在2012年就被應(yīng)用到了語(yǔ)音識(shí)別當(dāng)中,但始終沒(méi)有較大的突破。為了減少梯度消失等問(wèn)題,傳統(tǒng)較深層的卷積神經(jīng)網(wǎng)絡(luò)使用殘差模塊構(gòu)建殘差網(wǎng)絡(luò)[12]來(lái)加深卷積神經(jīng)網(wǎng)絡(luò),其輸入輸出為
Xl=Hl(Xl-1)+Xl-1
(1)
(1)式中:Hl(·)為非線性變換函數(shù);Xl表示l層的輸出。殘差網(wǎng)絡(luò)計(jì)算效率以及特征提取如圖1所示。
圖1 殘差網(wǎng)絡(luò)計(jì)算效率
圖1可見(jiàn),殘差網(wǎng)絡(luò)將上一層的輸入通過(guò)恒等映射直接傳輸?shù)街蟮哪硨?。然而,殘差網(wǎng)絡(luò)在每一層網(wǎng)絡(luò)中都會(huì)生成大量的特征圖,導(dǎo)致參數(shù)太多,訓(xùn)練更加困難[13];另一方面,由于只將CNN作為特征提取器,卷積層數(shù)很少、最終輸出只利用了最高層次特征,因此模型的表達(dá)能力有限。
在傳統(tǒng)的深度卷積神經(jīng)網(wǎng)絡(luò)中,模型的最終輸出只利用了提取到的最高層次的特征,如圖2所示,這種方式也將增加特征參數(shù)、降低計(jì)算效率。
圖2 傳統(tǒng)CNN的特征提取
針對(duì)上述問(wèn)題,文獻(xiàn)[14]在圖像領(lǐng)域提出的DenseNet模型,加強(qiáng)了特征傳播,且其參數(shù)更少,計(jì)算效率更高。
非對(duì)稱卷積Inception V3將1個(gè)二維卷積分解為2個(gè)一維卷積核組,其結(jié)構(gòu)關(guān)系如圖3所示。在3×1卷積之后接1個(gè)1×3卷積,相當(dāng)于與3×3卷積核相同的感受量[14]。
圖3 二維卷積核和一維卷積核組
相比DenseNet中利用到的將7×7的卷積核替換為3個(gè)3×3的小卷積核可以減少11%的計(jì)算量,這種非對(duì)稱卷積核組可以減少33%的計(jì)算量。在填充(padding)相同,每步偏移為1的情況下,5×5的圖用1個(gè)3×3的卷積核卷積,需要計(jì)算5×5×9=225次,而使用3×1和1×3兩個(gè)卷積核去卷積,則需要計(jì)算5×5×3×2=150次。因此,與對(duì)稱卷積結(jié)構(gòu)相比,非對(duì)稱卷積核組能夠更好地處理特征,增加特征多樣性,同時(shí)計(jì)算量更少。
DenseNet是一種具有密集連接的CNN架構(gòu)。相比傳統(tǒng)的深度卷積神經(jīng)網(wǎng)絡(luò)模型,DenseNet通過(guò)建立前面所有層與后面層的密集連接實(shí)現(xiàn)對(duì)特征的重用,即使在更深的結(jié)構(gòu)中也能進(jìn)行很好的訓(xùn)練。對(duì)于L層的網(wǎng)絡(luò),在DenseNet中會(huì)有L(L+1)/2個(gè)連接。第L層的輸出關(guān)系如下。
xL=HL,G([x0,x1,…,xL-1])
(2)
(2)式中:HL,G(·)是復(fù)合函數(shù),即稠密塊中卷積層之間的非線性轉(zhuǎn)化函數(shù),是批量處理化(batch normalization, BN)函數(shù)、線性激活函數(shù)(rectified linear units, ReLU)和Conv的組合;G是增長(zhǎng)率(growth rate),對(duì)應(yīng)輸出特征圖的數(shù)量。
由HL,G(·)和特征圖串聯(lián)構(gòu)成了L層的稠密塊模塊,如圖4所示。
圖4 傳統(tǒng)CNN與稠密塊結(jié)構(gòu)
由圖4可見(jiàn),稠密塊模塊直接連接不同層的特征,不需要消耗時(shí)間逐層復(fù)制前面網(wǎng)絡(luò)層的狀態(tài),就可從網(wǎng)絡(luò)內(nèi)的任何層訪問(wèn)前面低層特征,更好地保存了低層網(wǎng)絡(luò)特征,從而實(shí)現(xiàn)特征重用提升網(wǎng)絡(luò)性能。
稠密塊模塊與過(guò)渡層交替串聯(lián)構(gòu)成了DenseNet結(jié)構(gòu),如圖5所示。在輸入端,傳統(tǒng)模型使用了各種人工設(shè)計(jì)的濾波器組來(lái)提取特征且不可避免地使用了幀移,從而造成了信息損失。而DenseNet直接將輸入的語(yǔ)音信號(hào)轉(zhuǎn)化為語(yǔ)譜圖,極大地減少了信息損失。并且,DenseNet由多個(gè)稠密塊組成,每個(gè)稠密塊可劃分為幾個(gè)密集連接的卷積層,每層卷積之后均輸出G個(gè)特征圖。
圖5 DenseNet結(jié)構(gòu)圖
稠密塊之間的復(fù)合函數(shù)一般采用的結(jié)構(gòu)為:BN+ReLU+1×1 Conv+BN+ReLU+3×3Conv。其中,BN+ReLU+1×1 Conv是附加的瓶頸層。在本文中,該層Conv設(shè)置為(1,4G),輸出固定為4G個(gè)特征圖。此外,在每個(gè)稠密塊之間都連接過(guò)渡層,由1×1的卷積和2×2的平均池構(gòu)成,用于降維、減少計(jì)算量,從而提升計(jì)算效率。
在傳統(tǒng)DenseNet網(wǎng)絡(luò)中每個(gè)稠密塊采用相同的多個(gè)1×1+3×3卷積核組,本文針對(duì)語(yǔ)音識(shí)別的特性,在DenseNet網(wǎng)絡(luò)基礎(chǔ)上,將所有3×3卷積核替換為3×1和1×3的非對(duì)稱卷積結(jié)構(gòu)。在DenseNet中,每個(gè)稠密塊都使用相同數(shù)量的3×3卷積核,因此,很難得到不同尺度的周期性特征[15]。為了提取到語(yǔ)音序列中的長(zhǎng)期和短期周期特征,本文將卷積核范圍擴(kuò)大,并將所有長(zhǎng)度的周期性特征進(jìn)行整合,以此獲得不同尺度的周期性特征,得到更多抽象特征來(lái)提高分類精度。
本文中,每一個(gè)稠密塊表示為稠密塊(L,G),每個(gè)密集塊采用不同尺度的感受野,即每個(gè)稠密塊中的卷積層數(shù)L不同。上層的稠密塊中的感受野相對(duì)大一些,可以生成更多特征映射來(lái)提取中長(zhǎng)期特征。稠密塊的卷積層數(shù)依次遞減,在最下層的稠密塊中采用3層3×1和1×3的小卷積核得到更細(xì)致的短期特征。在稠密塊之間連接過(guò)渡層,即用1×1的卷積層減少特征圖數(shù)量,然后使用平均池降低維度。
本文設(shè)計(jì)的語(yǔ)音識(shí)別IV3-DenseNet網(wǎng)絡(luò)如表1所示。網(wǎng)絡(luò)第一層是3×3的卷積,步長(zhǎng)為1,其后是不同尺度的密集卷積塊,每層都將利用密集連接使得上一層的特征圖與本層新生成的特征圖合并,每層特征圖的數(shù)量以增長(zhǎng)率G增加。除了最后一個(gè)稠密塊模塊,其他稠密塊模塊后都連接一個(gè)過(guò)渡層;過(guò)渡層參數(shù)代表通道輸出縮小的倍數(shù),取值為0到1,本文設(shè)置為0.5。網(wǎng)絡(luò)最后為一個(gè)全局平均池化層,將softmax函數(shù)作為損失函數(shù)。
表1 用于語(yǔ)音識(shí)別的IV3-DenseNet網(wǎng)絡(luò)
本文使用THCHS30清華中文語(yǔ)音數(shù)據(jù)集進(jìn)行測(cè)試,該數(shù)據(jù)集在安靜的辦公環(huán)境下錄取,采樣頻率為16 kHz,采樣大小為16 bits。表2為數(shù)據(jù)集的詳細(xì)說(shuō)明。
表2 THCHS30數(shù)據(jù)集
數(shù)據(jù)集樣本量太小,難以獲得更好的模型性能。為此,本文對(duì)數(shù)據(jù)集進(jìn)行了擴(kuò)展,包括隨機(jī)裁剪、隨機(jī)翻轉(zhuǎn)、變灰、添加噪聲點(diǎn)[16]等,最終得到約430 h的數(shù)據(jù)集。實(shí)驗(yàn)采用TensorFlow完成所提出的網(wǎng)絡(luò)模型的構(gòu)建和訓(xùn)練,實(shí)驗(yàn)平臺(tái)的架構(gòu)如表3所示。在本文識(shí)別過(guò)程中,性能指標(biāo)為字錯(cuò)誤率(word error rate, WER),以此檢驗(yàn)識(shí)別結(jié)果的準(zhǔn)確性。
表3 實(shí)驗(yàn)平臺(tái)架構(gòu)
為了驗(yàn)證模型的有效性,本文將模型與文獻(xiàn)[17]中的DCNN-CTC模型和原始DenseNet模型作了比較。各模型參數(shù)如表4所示。模型1采用了殘差網(wǎng)絡(luò)的結(jié)構(gòu),其相關(guān)參數(shù)為:設(shè)定幀長(zhǎng)為20 ms,幀移為10,幀長(zhǎng)不足20 ms的在其后補(bǔ)0,窗函數(shù)為漢明窗。模型1進(jìn)行MFCC特征提取,得到39維語(yǔ)音特征。模型2和模型3(本文模型)均采用了稠密塊模塊,模型深度均為42,輸入均為語(yǔ)譜圖,設(shè)定幀長(zhǎng)為20 ms,幀移為10,窗函數(shù)為漢明窗,每一幀的能量譜密度的維度是514,將多幀拼接為1個(gè)514×16的語(yǔ)譜圖作為輸入。本文選擇的語(yǔ)言模型均為N-gram模型。
表4 模型參數(shù)
本文使用標(biāo)準(zhǔn)的反向傳播訓(xùn)練IV3-DenseNet模型,優(yōu)化器為Adam,學(xué)習(xí)速率為10-4,批量大小(batch size)為50,使用softmax交叉熵?fù)p失函數(shù)。模型分兩步訓(xùn)練。第一步,在輸出層使用softmax函數(shù)將輸出映射到[0,1]內(nèi),表達(dá)式為
(3)
(3)式中:zi表示第i個(gè)神經(jīng)元的輸入;Si表示第i個(gè)神經(jīng)元的輸出;k=1,2,…,i。
第二步,使用交叉熵?fù)p失函數(shù)來(lái)表示實(shí)際輸出值與真實(shí)值之間的誤差,表達(dá)式為
(4)
為了驗(yàn)證IV3-DenseNet模型的識(shí)別精度和性能,本文將3種模型分別在訓(xùn)練集上訓(xùn)練,然后在測(cè)試集上測(cè)試,記錄訓(xùn)練過(guò)程中的損失函數(shù)值變化以及測(cè)試集上的語(yǔ)音識(shí)別正確率,以此觀察添加了殘差結(jié)構(gòu)的CNN、添加了密集塊的CNN與本文模型的差別。3種模型對(duì)訓(xùn)練集和測(cè)試集的識(shí)別精度如圖6所示。
圖6 模型詞錯(cuò)率對(duì)比
由圖6可以看出,隨著網(wǎng)絡(luò)迭代次數(shù)的增加,WER不斷減小并趨于平穩(wěn)。將模型1與模型3對(duì)比,在將殘差結(jié)構(gòu)替換為稠密塊之后,模型的WER明顯降低,且收斂速度明顯提升,這表明添加稠密塊的卷積神經(jīng)網(wǎng)絡(luò)相較于添加殘差結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)更易訓(xùn)練,具有計(jì)算量更小、收斂速度更快的優(yōu)點(diǎn)。另一方面,對(duì)比模型2與模型3,收斂時(shí)的迭代次數(shù)相差不大,但模型3的收斂速度更快且識(shí)別率高于模型2,由此可看出非對(duì)稱卷積結(jié)構(gòu)的優(yōu)勢(shì)。
在上述3種模型中,隨著迭代次數(shù)的增加,模型的損失值趨于穩(wěn)定,如圖7所示。
圖7 模型損失函數(shù)對(duì)比
由圖7可見(jiàn),模型1的損失值在迭代次數(shù)大約為260時(shí)收斂,模型2和本文模型3在迭代次數(shù)大約為240時(shí)收斂。相較于模型1和模型2,模型3的收斂值更低。表5列出了3種模型的識(shí)別率和參數(shù)量。
表5 各模型實(shí)驗(yàn)參數(shù)
由表5可以看出,相較DCNN-CTC模型,IV3-DenseNet模型識(shí)別率提升了2.67%。DCNN-CTC模型的參數(shù)量,遠(yuǎn)大于原始DenseNet模型IV3-DenseNet模型,大約為后2種模型的3倍。另一方面,由于利用了Inception V3非對(duì)稱卷積網(wǎng)絡(luò)思想,本文提出的IV3-DenseNet模型相較原始DenseNet模型,在保證了識(shí)別率的同時(shí),參數(shù)量減少了1 079 057。
為進(jìn)一步驗(yàn)證模型的性能優(yōu)勢(shì),本文設(shè)置了第二組實(shí)驗(yàn)。每訓(xùn)練完500條數(shù)據(jù),用測(cè)試集測(cè)試4次,取平均值得到此時(shí)的識(shí)別率。記錄3種模型在識(shí)別率分別達(dá)到30%、60%、80%以及最終收斂時(shí)的訓(xùn)練時(shí)長(zhǎng)。圖8為3種模型的訓(xùn)練時(shí)長(zhǎng)對(duì)比。
由圖8可以看出,與傳統(tǒng)深度殘差卷積神經(jīng)網(wǎng)絡(luò)相比,加入稠密塊模塊的網(wǎng)絡(luò)模型極大地縮短了模型訓(xùn)練時(shí)間,且識(shí)別率更高。對(duì)比模型2和模型3可以看出,模型3在達(dá)到相同識(shí)別率時(shí)所用時(shí)間更短。最終收斂時(shí),模型3訓(xùn)練時(shí)長(zhǎng)約為385 h,模型2訓(xùn)練時(shí)長(zhǎng)約為788 h。因此,模型3在保證了識(shí)別率的情況下,訓(xùn)練效率比原始DenseNet模型提高約51%。由此可以證明,本文IV3-DenseNet模型比原始DenseNet模型的性能更優(yōu)。
圖8 訓(xùn)練時(shí)長(zhǎng)對(duì)比
本文成功地將DenseNet模型應(yīng)用于語(yǔ)音識(shí)別,將原始DenseNet模型的卷積核范圍擴(kuò)大的同時(shí)根據(jù)Inception V3 的核心思想,利用非對(duì)稱卷積改進(jìn)原始DenseNet模型中的稠密塊模塊,進(jìn)一步優(yōu)化原始DenseNet模型,最后對(duì)傳統(tǒng)的DCNN-CTC模型、原始DenseNet模型以及IV3-DenseNet模型進(jìn)行訓(xùn)練和測(cè)試,探討其對(duì)語(yǔ)音識(shí)別性能的影響。
實(shí)驗(yàn)結(jié)果表明,原始DenseNet網(wǎng)絡(luò)相較于傳統(tǒng)深度殘差卷積神經(jīng)網(wǎng)絡(luò)識(shí)別率更高且參數(shù)量明顯減少,解決了傳統(tǒng)DCNN-CTC模型參數(shù)量大、訓(xùn)練困難的問(wèn)題。IV3-DenseNet模型識(shí)別率相較于原始DenseNet模型在保證了識(shí)別率的情況下,網(wǎng)絡(luò)參數(shù)量減少、模型訓(xùn)練效率提高,這一性能優(yōu)勢(shì)有助于在一些算力較弱的環(huán)境中部署語(yǔ)音識(shí)別模型。由于提取語(yǔ)音頻譜圖的過(guò)程比起傳統(tǒng)語(yǔ)音特征提取過(guò)程相對(duì)耗時(shí),下一步將在該模型上優(yōu)化語(yǔ)音特征提取。為了學(xué)習(xí)到判別度更高的特征,接下來(lái)將在模型最后的輸出端改進(jìn)損失函數(shù),探究不同損失函數(shù)對(duì)模型最終效果的影響。