胡 黎, 黃洪全, 梁 超, 宋悅陽(yáng), 陳延明
(廣西大學(xué) 電氣工程學(xué)院,廣西 南寧 530003)
21世紀(jì)初,最先進(jìn)的語(yǔ)音識(shí)別技術(shù)通常是基于隱馬爾可夫模型的高斯混合模型(Gaussian mixture model-hidden Markov model,GMM-HMM)[1]。隨著時(shí)代的發(fā)展,GMM-HMM由于網(wǎng)絡(luò)層級(jí)相對(duì)較淺,參數(shù)訓(xùn)練會(huì)存在嚴(yán)重不足的情況,使其無(wú)法滿足實(shí)際的建模和實(shí)用化要求。2011年后,深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)因能更好利用語(yǔ)音幀的上下文信息等特點(diǎn)逐漸取代了GMM,DNN和HMM結(jié)合的語(yǔ)音識(shí)別模型,很大程度上降低了語(yǔ)音識(shí)別的錯(cuò)誤率[2]。DNN-HMM模型的成功啟發(fā)了一批卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)和長(zhǎng)短期記憶(long short-term memory,LSTM)[3]網(wǎng)絡(luò)等神經(jīng)網(wǎng)絡(luò)模型在語(yǔ)音識(shí)別之中的深入運(yùn)用。
作為一種能進(jìn)行深層局部連接的網(wǎng)絡(luò)結(jié)構(gòu),CNN在許多連續(xù)語(yǔ)音識(shí)別任務(wù)中都取得了優(yōu)于DNN模型的成績(jī)。文獻(xiàn)[4]將CNN應(yīng)用于大型詞匯連續(xù)語(yǔ)音識(shí)別任務(wù),相比于DNN模型取得了巨大的精度提升;文獻(xiàn)[5]通過(guò)完全卷積層模型實(shí)驗(yàn)驗(yàn)證了非常深的CNN在語(yǔ)音識(shí)別中的優(yōu)異性能。文獻(xiàn)[6]論述了CNN相對(duì)于DNN在提取語(yǔ)音特征方面的優(yōu)勢(shì)和在大規(guī)模中文語(yǔ)音識(shí)別任務(wù)上的出色表現(xiàn)。
在傳統(tǒng)淺層CNN模型中會(huì)存在特征提取不足導(dǎo)致語(yǔ)音識(shí)別精度相對(duì)不高的問(wèn)題,常用的解決辦法是通過(guò)不斷加深網(wǎng)絡(luò)深度來(lái)獲取更多的特征信息,但由此會(huì)引入?yún)?shù)量巨大、梯度消失等新的問(wèn)題。
本文通過(guò)分析CNN原理,提出了一種可行的學(xué)習(xí)更多特征的方法,即雙通路卷積神經(jīng)網(wǎng)絡(luò)(double-path CNN,DPCNN)。通過(guò)DPCNN子網(wǎng)絡(luò)對(duì)同一語(yǔ)音輸入進(jìn)行特征提取,全連接層對(duì)子網(wǎng)絡(luò)進(jìn)行特征融合,并利用級(jí)聯(lián)Attention-CTC方法訓(xùn)練得到了語(yǔ)音到拼音的端到端語(yǔ)音識(shí)別模型。
CNN的基本結(jié)構(gòu)由輸入層(input layer)、卷積層(con-volutional layer,Conv)、池化層(pooling layer)、全連接層(fully connected layers,FC)和輸出層(output layer)構(gòu)成。
在CNN的一層卷積層中,多個(gè)神經(jīng)元排列組成了特征圖,每個(gè)神經(jīng)元都只與其部分鄰層神經(jīng)元相連接,位于同一特征圖中的所有神經(jīng)元共享權(quán)值,即卷積核。卷積核通過(guò)減少CNN各層之間的連接,降低了網(wǎng)絡(luò)的參數(shù)數(shù)量,從而降低了模型過(guò)擬合的風(fēng)險(xiǎn)。卷積層可以計(jì)算為
池化層也叫下采樣層。池化操作相當(dāng)于對(duì)池化層輸入進(jìn)行了空間維度縮減,并增大了感受野,同時(shí)減少模型計(jì)算量和參數(shù)數(shù)量。在一定程度上池化層也防止了模型過(guò)擬合,利于模型的優(yōu)化。池化的方法有多種,通常用到的池化操作有最大池化(max-pooling)和平均池化(mean-pooling)。
CNN一般采用多層卷積層和池化層交替設(shè)置,即一個(gè)或多個(gè)卷積層連接一個(gè)池化層,池化層后再連接一個(gè)或多個(gè)卷積層,通過(guò)卷積層和池化層的相互配合來(lái)學(xué)習(xí)特征。CNN中的全連接層相當(dāng)于一個(gè)多分類神經(jīng)網(wǎng)絡(luò),全連接層也能進(jìn)一步收集更多的特征以滿足特征提取的要求,最終通過(guò)SoftMax函數(shù)得到整個(gè)網(wǎng)絡(luò)的輸出。CNN通過(guò)經(jīng)典的誤差反向傳播算法來(lái)調(diào)整參數(shù),完成卷積核和全連接層權(quán)值的更新。
為解決傳統(tǒng)淺層CNN模型特征提取能力不足的問(wèn)題。本文在保持一定深度的CNN的基礎(chǔ)上適當(dāng)增大了CNN自身的寬度,提出了DPCNN。DPCNN整體結(jié)構(gòu)由兩個(gè)相同的子網(wǎng)絡(luò)“并行”組成,子網(wǎng)絡(luò)結(jié)構(gòu)參考全序列CNN[6]設(shè)計(jì),結(jié)構(gòu)如圖1所示。
圖1 DPCNN結(jié)構(gòu)
Conv3—32代表卷積層卷積核為3×3,通道數(shù)為32。Maxpool代表2×2的最大池化。每通路子網(wǎng)絡(luò)由多個(gè)卷積層和池化層組成,兩個(gè)子網(wǎng)分別進(jìn)行特征提取和池化,維度拼接后輸入到全連接層進(jìn)行融合并訓(xùn)練,最后使用SoftMax函數(shù)輸出網(wǎng)絡(luò)的分類結(jié)果。DPCNN通過(guò)增大CNN的寬度使得模型能夠從語(yǔ)音信號(hào)中提取和學(xué)習(xí)到更多的數(shù)據(jù)特征,從而提高模型的識(shí)別性能。
為了進(jìn)一步提高網(wǎng)絡(luò)識(shí)別精度和泛化性能,在每層卷積層后加入批量歸一化(batch normalization,BN)層,加入BN層可以使得網(wǎng)絡(luò)在較大學(xué)習(xí)率時(shí)不受梯度消失的影響,加快網(wǎng)絡(luò)的收斂速度,同時(shí)BN層在一定程度上可以防止過(guò)擬合。在全連接層使用Dropout,按照丟棄率隨機(jī)使部分神經(jīng)元失活,從而進(jìn)一步防止模型過(guò)擬合并增強(qiáng)模型泛化性能。
在一般的序列學(xué)習(xí)任務(wù)中,傳統(tǒng)的序列相關(guān)神經(jīng)網(wǎng)絡(luò)模型需要預(yù)先對(duì)輸入序列和輸出序列進(jìn)行預(yù)處理,明確輸入數(shù)據(jù)和輸出標(biāo)簽之間的對(duì)應(yīng)關(guān)系。在語(yǔ)音識(shí)別任務(wù)中,語(yǔ)音數(shù)據(jù)是通過(guò)錄制等方式將模擬信號(hào)轉(zhuǎn)為數(shù)字信號(hào)而得到的,很難獲取到包含輸入語(yǔ)音到輸出標(biāo)簽之間一一對(duì)齊的大規(guī)模訓(xùn)練樣本。鑒于這一點(diǎn),本文采用的是由Graves A等人[7]提出連接時(shí)序分類(connection timing classification,CTC)方法。CTC語(yǔ)音識(shí)別模型與傳統(tǒng)的基于HMM的模型最大的不同在于它不需要事先建立輸入語(yǔ)音特征和輸出標(biāo)簽之間的對(duì)齊關(guān)系,可以讓模型直接對(duì)輸入語(yǔ)音特征進(jìn)行端到端學(xué)習(xí),并輸出預(yù)測(cè)序列的概率。
CTC假設(shè)對(duì)給定輸入而言,每個(gè)輸出之間都是條件獨(dú)立的,所以,對(duì)于給定長(zhǎng)度為T的輸入語(yǔ)音特征x,計(jì)算輸入x生成一條正確路徑為π的條件概率是十分簡(jiǎn)單的
CTC引入了一個(gè)很特別“blank”標(biāo)簽,在輸出標(biāo)簽的首尾和標(biāo)簽之間都需要插入“blank”,用以表示空白,匹配路徑時(shí)需要去掉輸出中連續(xù)重復(fù)的符號(hào)和空白。由于“blank”可以插入目標(biāo)標(biāo)簽任何位置,所以在每個(gè)時(shí)間步,對(duì)于相同的目標(biāo)標(biāo)簽,可以存在許多對(duì)匹配路徑。
例如
式中 “-”為插入的blank標(biāo)簽,Β為多對(duì)一映射函數(shù),即:對(duì)于不同路徑(a,-,-,bb,-,c),(-,aa,-,b,-,c) 和(a,-,b,-,-,c)等候選序列都映射到相同的目標(biāo)標(biāo)簽(a,b,c)。
CTC通過(guò)對(duì)所有可能的路徑πi的概率求和來(lái)獲得目標(biāo)標(biāo)簽l的概率
p(l|x)=∑p(πi|x)
(4)
CTC的損失函數(shù)定義為每個(gè)訓(xùn)練樣本正確標(biāo)記的負(fù)對(duì)數(shù)概率之和
LCTC=-lnp(l|x)
(5)
由于CTC損失函數(shù)可微,因此,可通過(guò)前向—后向動(dòng)態(tài)規(guī)劃算法有效地計(jì)算方程通過(guò)不斷降低CTC損失值達(dá)到網(wǎng)絡(luò)訓(xùn)練的目的,使得預(yù)測(cè)序逐漸逼近真實(shí)標(biāo)簽。
整個(gè)CTC網(wǎng)絡(luò)可以通過(guò)最佳路徑解碼:直接將對(duì)應(yīng)最高概率的標(biāo)簽串聯(lián)起來(lái)同時(shí)合并重復(fù)項(xiàng)標(biāo)簽、刪除空白標(biāo)簽,從而得到最終的輸出序列。
由于CTC中存在的假設(shè):網(wǎng)絡(luò)所有輸出之間條件獨(dú)立,在實(shí)際語(yǔ)音環(huán)境中并不成立,從而制約了CTC網(wǎng)絡(luò)性能的進(jìn)一步提升。為了解決CTC方法的條件獨(dú)立性假設(shè)問(wèn)題,同時(shí)為了從輸入語(yǔ)音特征中獲取更多的信息,本文在全連接層中引入了注意力(attention)機(jī)制,組成級(jí)聯(lián)Attention-CTC結(jié)構(gòu),全連接層中的Attention機(jī)制如圖2所示。
圖2 Attention機(jī)制
Attention得分情況如下
ehi=tanh(wThi+b)
(6)
C=AH
(8)
等式(6)中,hi為CNN提取到的高維特征,wT和b為權(quán)重矩陣和偏置矩陣,其值由模型訓(xùn)練得來(lái)。利用雙曲正切函數(shù)tanh得到代表當(dāng)前輸入特征的Attention得分ehi。為了得到每一個(gè)輸入特征相應(yīng)的權(quán)重需要對(duì)所有的Attention得分進(jìn)行指數(shù)歸一化,等式(7)中αi即為對(duì)應(yīng)特征的Attention權(quán)重。等式(8)中,A為αi組成的Attention權(quán)重矩陣,通過(guò)輸入特征矩陣和權(quán)重矩陣之間的逐元素乘積,Attention機(jī)制最終輸出C被輸入到CTC損失函數(shù)以指導(dǎo)模型的訓(xùn)練過(guò)程。Attention機(jī)制可以通過(guò)對(duì)與當(dāng)前輸出相關(guān)的關(guān)鍵特征賦予更高的權(quán)重的方式在一定程度上削弱了CTC中條件獨(dú)立性假設(shè)的約束,減少在模型訓(xùn)練階段了序列的不規(guī)則對(duì)準(zhǔn)[8],從而改善CTC端到端設(shè)計(jì)方法的建模能力。
通過(guò)級(jí)聯(lián)Attention-CTC,本文構(gòu)建了完整的DPCNN-Attention-CTC模型。模型結(jié)構(gòu)如圖3所示。
圖3 DPCNN-Attention-CTC模型
本實(shí)驗(yàn)在GPU服務(wù)器中完成,GPU為NVIDIA Tesla P100,顯存16G。利用Keras框架搭建模型并完成相應(yīng)訓(xùn)練和測(cè)試。
實(shí)驗(yàn)采用的語(yǔ)音數(shù)據(jù)為清華大學(xué)開源的中文普通話語(yǔ)料Thchs30,該語(yǔ)料庫(kù)訓(xùn)練集時(shí)長(zhǎng)25 h共10 000句發(fā)音,驗(yàn)證集時(shí)長(zhǎng)19 h共893句發(fā)音,測(cè)試集時(shí)長(zhǎng)624 h共2 495句發(fā)音。模型首先對(duì)時(shí)域的語(yǔ)音信號(hào)進(jìn)行傅里葉變換得到語(yǔ)音的語(yǔ)譜圖,語(yǔ)譜圖綜合了頻譜圖和時(shí)域波形的特點(diǎn)[9],利用語(yǔ)譜圖作為輸入,可以避免頻域和時(shí)域兩個(gè)維度的信息損失[6],模型能更加全面地學(xué)習(xí)語(yǔ)音信號(hào)所包含的各項(xiàng)特征。
本文設(shè)置了6組對(duì)比實(shí)驗(yàn),對(duì)CNN-CTC,DPCNN-CTC和DPCNN-Attention-CTC三種網(wǎng)絡(luò)結(jié)構(gòu)在卷積層為8層和10層時(shí)分別進(jìn)行了模型訓(xùn)練及測(cè)試。三種網(wǎng)絡(luò)中卷積池化層都為兩層3×3卷積層和一層2×2最大池化層重復(fù)堆疊,8層和10層卷積層的每層卷積核個(gè)數(shù)分別為16-16-32-32-64-64-128-128和16-16-32-32-64-64-128-128-256-256。全連接層都為2層,其輸出維度分別為512和1 024。采用中文拼音作為模型建模單元,模型最終的輸出分類數(shù)為1 423。
模型的激活函數(shù)選用的是修正線性單元(rectified linear unit,ReLU)函數(shù)。ReLU激活函數(shù)可以有效地進(jìn)行梯度下降以及反向傳播。因?yàn)楫?dāng)輸入大于0時(shí)Relu函數(shù)梯度始終為1,小于等于0時(shí)始終為0,所以能很好地克服網(wǎng)絡(luò)訓(xùn)練過(guò)程中的梯度消失問(wèn)題,同時(shí)也可以緩解過(guò)擬合現(xiàn)象,加快訓(xùn)練速度,使得模型取得更好的效果。
實(shí)驗(yàn)采用帶動(dòng)量的隨機(jī)梯度下降優(yōu)化器,初始學(xué)習(xí)率大小設(shè)置為0.01,動(dòng)量為0.9。
在Keras框架搭建相應(yīng)的模型,并在訓(xùn)練集上完成模型訓(xùn)練。使用編輯距離作為模型誤差度量。在測(cè)試集上隨機(jī)選取100句語(yǔ)音測(cè)試對(duì)應(yīng)模型的識(shí)別錯(cuò)誤率,每個(gè)模型測(cè)試進(jìn)行5次,最終錯(cuò)誤率取5次測(cè)試的平均值。六種網(wǎng)絡(luò)結(jié)構(gòu)在Thchs30數(shù)據(jù)集上的訓(xùn)練測(cè)試。
六種網(wǎng)絡(luò)模型8層CNN-CTC,10層CNN-CTC,8層DPCNN-CTC,10層DPCNN-CTC,8層DPCNN-Attention-CTC,10層DPCNN-Attention-CTC的錯(cuò)誤率分別為28.2 %,27.4 %,24.2 %,23.8 %,22.9 %,23.3 %??梢钥闯觯?)10層CNN-CTC相較于8層CNN-CTC錯(cuò)誤率減小0.8 %,表明增加CNN深度有助于提高語(yǔ)音識(shí)別系統(tǒng)的準(zhǔn)確率;2)8層DPCNN-CTC相比于8層CNN-CTC和10層CNN-CTC錯(cuò)誤率分別降低了4 %和3.2 %,表明DPCNN在各子網(wǎng)絡(luò)模型深度較淺時(shí),能得到相比更深的單通路CNN相同甚至更好的效果,從而驗(yàn)證了DPCNN能夠通過(guò)增加模型的寬度從而提高整體的語(yǔ)音識(shí)別性能;3)8層DPCNN-Attention-CTC在6種結(jié)構(gòu)中獲得了最低的錯(cuò)誤率,達(dá)到了22.9 %,其相較于8層CNN-CTC和8層DPCNN-CTC錯(cuò)誤率相對(duì)降低了18.8 %和5.4 %,Attention機(jī)制的加入使得模型的識(shí)別效果進(jìn)一步增強(qiáng),證明了DPCNN-Attention-CTC模型的有效性。在Thchs30數(shù)據(jù)集上的訓(xùn)練結(jié)果可知,10層DPCNN-Attention-CTC相較于8層DPCNN-Attention-CTC錯(cuò)誤率上升了0.4 %,這是因?yàn)殡S著模型的層數(shù)加深,模型復(fù)雜度增大,模型在訓(xùn)練集上的擬合效果增強(qiáng),反而導(dǎo)致其在測(cè)試集上的錯(cuò)誤率上升,即模型的泛化能力下降。
圖4為卷積層為8的三種網(wǎng)絡(luò)結(jié)構(gòu)在訓(xùn)練階段的訓(xùn)練集損失值變化曲線。圖4中標(biāo)記了三種網(wǎng)絡(luò)結(jié)構(gòu)損失值到達(dá)穩(wěn)定階段所需的訓(xùn)練輪次和相應(yīng)的損失值。DPCNN-Attention-CTC在24輪次時(shí)其損失值基本穩(wěn)定在了12.8左右。相反,DPCNN-CTC和CNN-CTC就要慢得多,損失值到達(dá)穩(wěn)定階段分別需要36和42輪次,同時(shí)穩(wěn)定的損失值也大于DPCNN-Attention-CTC模型。可以分析出訓(xùn)練效果的加速來(lái)自于級(jí)聯(lián)Attention-CTC模塊。Attention機(jī)制可以被視為消除了CTC解碼器中不必要路徑的預(yù)對(duì)齊操作。同時(shí),CTC保證語(yǔ)音幀和拼音標(biāo)簽之間的單調(diào)對(duì)齊,這有助于引導(dǎo)Attention機(jī)制將注意力集中在順序相關(guān)的特征和標(biāo)簽上。因此,模型將生成較少無(wú)關(guān)的語(yǔ)音標(biāo)簽,從而導(dǎo)致觀察到的加速效果。
圖4 模型損失值變化曲線
本文基于DPCNN實(shí)現(xiàn)了一種語(yǔ)音到拼音的端到端語(yǔ)音識(shí)別模型。通過(guò)在中文語(yǔ)音數(shù)據(jù)集的實(shí)驗(yàn)證明了所提出DPCNN-Attention-CTC模型的有效性。通過(guò)增加CNN的寬度從語(yǔ)音信號(hào)中提取更多有用的特征用于模型訓(xùn)練,避免了網(wǎng)絡(luò)深度加深造成的梯度消失、訓(xùn)練困難等問(wèn)題。并利用Attention機(jī)制改進(jìn)CTC端到端方法,加快模型訓(xùn)練的同時(shí)進(jìn)一步降低了模型的識(shí)別錯(cuò)誤率。
未來(lái)的研究主要包括以下幾個(gè)方向:1)使用更多的語(yǔ)音數(shù)據(jù),研究該模型在大數(shù)據(jù)集上的表現(xiàn);2)通過(guò)多通路神經(jīng)網(wǎng)絡(luò)提取多種語(yǔ)音特征用于模型訓(xùn)練,從而獲得更加全面的語(yǔ)音信息;3) 引入語(yǔ)言模型,進(jìn)一步改善CTC網(wǎng)絡(luò)性能。