基於DNN-HMM的語音識別技術


基於DNN-HMM的語音識別聲學模型結構如下圖所示,與傳統的基於GMM-HMM的聲學模型相比,唯一不同點在於用DNN替換了GMM來對輸入語音信號的觀察概率進行建模。DNN與GMM相比具有如下優點:

  • DNN不需要對聲學特征所服從的分布進行假設;
  • DNN的輸入可以采用連續的拼接幀,因而可以更好地利用上下文的信息;
  • DNN的訓練過程可以采用隨機優化算法來實現,而不是采用傳統的批優化算法,因此當訓練數據規模較大時也能進行非常高效的訓練,顯然,訓練數據規模越大,所得到的聲學模型就越精確,也就越有利於提高語音識別的性能;
  • 在發音模式分類上,DNN這種區分式模型也要比GMM這種產生式模型更加合適。
    DNN的輸入是傳統的語音波形經過加窗、分幀,然后提取出來的頻譜特征,如MFCC、PLP或更底層的濾波器組(filter bank,FBK)聲學特征等。FBK特征多利用Mel濾波器組在功率譜上進行濾波並計算對數能量,然后采用其規整值來表示。目前,FBK特征獲得了廣泛的成功,證明了原始語音頻率對於基於DNN的語音識別技術的重要性。與傳統的GMM采用單幀特征作為輸入不同,DNN將相鄰的若干幀進行拼接來得到一個包含更多信息的輸入向量。研究表明,采用拼接幀作為輸入是DNN相比GMM能獲得明顯性能提升的關鍵因素之一。

e6Qj6s.jpg

DNN輸出向量的維度對應HMM中狀態的個數,通常每一維輸出對應一個綁定的triphone狀態。訓練時,為了得到每一幀語音在DNN上的目標輸出值(標准值),需要通過事先訓練好的GMM-HMM識別系統在訓練語料上進行強制對齊。即要訓練一個DNN-HMM聲學模型,首先需要訓練一個GMM-HMM聲學模型,並通過基於Viterbi算法的強制對其方法給每個語音幀打上一個HMM狀態標簽,然后以此狀態標簽,訓練一個基於DNN訓練算法的DNN模型。最后用DNN模型替換HMM模型中計算觀察概率的GMM部分,但保留轉移概率和初始概率等其他部分。

早期的DNN一般采用前饋神經網絡結構,其本質上是一個包含多個隱層的多層感知機。它采用層級的結構,分為輸入層、隱層和輸出層。相鄰層的神經元節點采用全連接的方式,而在同一層的節點之間則不存在連接。隱層神經元節點的輸出(激活值)是前一層輸出向量和當前層網絡權重的線性加權和,再通過非線性激活函數得到。對於包含L個隱層的DNN,假設其輸入為\(h^0=o_t\),則各隱層的輸出向量\(h^l\)可如下計算

\[\begin{eqnarray*} & a^l & =W^lh^{l-1}+b^l,1 \leq l \leq L+1\tag{1-1}\\ & h^l & =f(a^l),1 \le l \le L\tag{1-2} \end{eqnarray*} \]

其中\(W^l\)\(b^l\)分別表示網絡第\(l\)層的權重和偏置向量。\(f(.)\)表示隱層節點的非線性激活函數。傳統的DNN普遍采用\(Sigmoid()\)激活函數,其函數表達式如下

\[f(a)=\frac{1}{1+e^{-a}}\tag{1-3} \]

DNN的輸出層通常采用\(Softmax()\)函數對輸入觀察樣本的后驗概率分布進行建模,其第\(i\)維輸出為

\[y_i=P(i|o_t)=h_i^{L+1}=\frac{e^{-a_i^{L+1}}}{\mathop{\sum}_je^{-a_i^{L+1}}}\tag{1-4} \]

DNN的優化目標函數常采用最小交叉熵(cross-entropy,CE)准則和最小均方誤差(mean square error,MSE)准則等。在語音識別中采用CE准則更加普遍,它可以表示為如下的優化問題

\[\theta^*=\mathop{argmax}_\theta[-\mathop{\sum}_tlog \ y_{s(t)}]\tag{1-5} \]

其中,\(\theta=\{W^l,b^l|l=1,2,\cdots,L+1\}\),表示DNN中左右參數的集合,\(s(t)\)是聲學特征向量\(o_t\)所對應的HMM狀態標簽。該優化問題是高維且非凸的,通常采用基於隨機梯度下降的BP算法來進行優化。BP算法的核心思想是通過鏈式求導法則,計算出相對於目標函數的每層輸出的反向傳播誤差信號,然后進一步得到網絡參數的梯度。

研究發現,對上述神經網絡采用BP算法直接進行訓練往往效果不佳,這也導致了早期基於ANN的混合聲學模型未能得到成功應用。究其原因在於:

  • 多層神經網絡參數優化是一個高維非凸優化問題,常收斂到較差的局部解,尤其是在使用隨機初始化的權重參數作為學習起點的情況下,這種現象表現得更加突出;
  • 梯度消失問題。BP算法計算出的誤差會從輸入層開始向下呈指數衰減,這樣計算出的各層梯度也會隨着深度的變化而顯著下降,導致靠近輸出層的隱層能夠訓練的比較好,而靠近輸入層的隱層則幾乎不能得到有效訓練。
    基於以上兩點,有研究者提出了若干無監督的逐層預訓練算法來進行網絡參數的初始化,這相當於在權重參數空間尋找一個相對合理的點來作為學習過程的起點,以此來減少算法陷入局部最優的可能性。預訓練步驟完成后,可以用其權重參數來對一個標准前饋DNN進行初始化,之后就可以用BP算法對DNN網絡的權重參數進行精細調整。這樣的與訓練方法包括基於深度置信網的方法和基於深度自編碼器神經網的方法等。下面着重介紹一下基於深度自編碼器神經網的方法。

基於深度自編碼器神經網的預訓練方法

深度自編碼器神經網也是一種無監督模型,其輸出向量與輸入向量同維,訓練目標是使其目標值等於輸入值,即嘗試逼近一個恆等函數。這樣就可以將其隱層激活值看作為對原始數據的壓縮標志或有效編碼。通常也采用逐層貪婪訓練方法來訓練深度自編碼器神經網。每次采用基於隨機梯度下降的BP算法來訓練僅一個隱層的自編碼神經網,然后將其堆疊在一起構成深度網絡。這樣的深度自編碼網絡也被稱為棧式自編碼神經網絡。其訓練過程如下:先利用原始輸入數據訓練一個單隱層自編碼器網絡,學習其權重參數,從而得到第一個隱層。然后將其隱層神經元激活值組成的向量作為輸入,繼續訓練一個新的單隱層自編碼器網絡,從而得到第二個隱層及其權重參數,以此類推。同樣,最后增加一個Softmax層作為輸出。這樣也能構成一個自下而上的前饋深層且具有區分性的DNN,並能得到其網絡參數的一個有效初值,可以對其進行進一步的基於BP算法的有監督精調訓練。
對DNN首先進行無監督的預訓練,然后進行有監督的調整是DNN-HMM聲學模型能夠成功應用於語音識別任務,並在性能上超越GMM-HMM的主要原因之一。無監督預訓練避免了有監督訓練時常常過擬合與泛化能力很差的局部極值點的問題,而逐層的貪婪訓練彌補了梯度消失問題帶來的影響。然而深度學習技術發展迅猛,從今年的研究進展看,預訓練的重要性日益降低,原因大致有以下幾點:

  • 使用海量數據進行訓練能有效避免過擬合問題,Dropout等隨機優化算法的出現,也極大地提高了DNN模型的泛化能力;
  • 采用整流線性單元(ReLU)作為激活函數,以及采用卷積神經網絡,這種深度網絡結構也成功的減小了梯度消失問題的影響。下面將簡要介紹一下ReLU和CNN。

ReLU

相關的研究表明,采用基於ReLU()激活函數的DNN與采用基於Sigmoid()激活函數的DNN相比,不僅可以獲得更好的性能,而且不需要進行預訓練,可以直接采用隨機初始化。其函數表達式如下:

\[f(a)=max(0,a)\tag{1-6} \]

CNN

近年來的研究顯示,基於CNN的語音聲學模型與傳統的DNN的模型相比,可以獲得更好的性能,究其原因在於:

  • CNN具有局部連接和權重共享的特點,以及很好的平移不變性。因而將卷積神經網絡的思想應用到語音識別的聲學模型中,就可以利用卷積的不變性來克服語音信號本身的多樣性,如說話人多樣性(說話人自身及說話人之間)、環境的多樣性等,從而增強聲學模型的頑健性。
  • CNN也是一個更適合對大數據進行建模的深度網絡結構,尤其是近幾年來,以ResNet和Highway網絡為代表的深度CNN的研究工作,對語音識別的研究起到了很好的作用。
    CNN是一種經典的前饋神經網絡,是受生物學上感受野機制啟發而來。它本質上是一種基於監督學習的數學模型,由多個卷積層和池化層交替出現構成整個網絡的前端,用於特征提取和表示,在后端由多個全連接層用於對提取到的局部特征進行全局上的整合與變換。網絡最終輸出會根據任務的不同而動態調整。與傳統的DNN網絡結構相比,CNN能夠從大量的訓練數據中提取有效且泛化能力強的特征,因而非常適合於分類任務。
    一個典型的CNN網絡結構如下圖所示,其中卷積層是整個網絡最為核心的部分,它通過卷積核對輸入進行卷積操作以獲取輸出。這里可以將卷積操作理解為線性加權運算,卷積層的輸出稱之為特征圖。一般會采用多個卷積核來學習不同層次的特征,這樣便會得到多個特征圖。不同於全連接網絡,卷積層的卷積核只會與輸入中的某些局部區域相連接,這樣不僅能有效降低網絡的連接數量,而且也可以獲得豐富的局部特征。此外,同一層之間相同的卷積核會共享參數,這進一步降低了需要訓練的網絡參數的規模。在卷積層,特征圖也要通過激活函數進行非線性處理,在CNN中一般也采用ReLU作為激活函數。
    ebXEnI.png
    池化層又稱為下采樣層,他主要對上一層得到的特征圖進行壓縮。在實際應用中以最大池化和均勻池化最為常見。最大池化會對池化域內的特征點取最大值,而均勻池化則對池化域內的特征點取平均值。池化操作不僅能顯著壓縮數據規模,減少訓練參數,更重要的是他能是網絡獲得某種不變性,以增強自身的頑健性。就語音識別而言,它能夠使識別系統對因噪音帶來的頻率偏移,以及不同說話方式帶來的平移有一定的容錯能力。
    全連接層就是普通的前饋網。CNN在完成卷積或者池化后一般需要接入全連接層,但在此之前需要完成光柵化操作。所謂光柵化是指將最后輸出的特征圖依次展開,重新構造成一個特征向量。全連接層能夠將卷積和池化操作后提取到的局部特征在更高的維度上進行全局的信息整合。
    CNN也是一種前饋神經網絡,它的訓練算法也是基於鏈式法則求梯度,然后用隨機梯度下降方法求優。計算梯度的過程與傳統的BP算法十分類似,即首先前向計算誤差項,然后再進行誤差的反向傳播。只不過由於池化層通過下采樣操作對輸入數據進行了壓縮,因此需要在誤差的反向傳播過程中,采用上采樣函數將誤差矩陣還原至壓縮之前,並重新對誤差進行分配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM