胡章芳,蹇 芳,唐珊珊,明子平,姜博文
重慶郵電大學 光電工程學院,重慶400065
在語音識別發(fā)展領(lǐng)域,研究學者們致力于將語音信息盡量完整準確地轉(zhuǎn)化成文本信息。語音識別的關(guān)鍵在于聲學模型和語言模型兩部分。在深度學習興起應用到語音識別領(lǐng)域之前,聲學模型已經(jīng)有了非常成熟的模型體系,并且也有了被成功應用到實際系統(tǒng)中的案例。比如經(jīng)典的高斯混合模型(Gaussian mixed model,GMM)和隱馬爾可夫模型(hidden Markov model,HMM)[1]等。神經(jīng)網(wǎng)絡(luò)和深度學習興起以后,循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[2-3]、長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)[4]、注意力機制(attention)[5-6]等基于深度學習的聲學模型和語言模型將此前各項基于傳統(tǒng)聲學模型和傳統(tǒng)語言模型的識別案例錯誤率降低了一個級別。近年來,也有很多學者嘗試建立端到端語音識別系統(tǒng),比如百度提出了一種可以識別英語和普通話的端到端的深度學習方法[7],胡章芳等將殘差網(wǎng)絡(luò)與雙向長短時期記憶網(wǎng)絡(luò)相結(jié)合,構(gòu)建端到端語音識別系統(tǒng)[8]。
在聲學模型領(lǐng)域,Zhang等提出了新一代語音識別模型前饋序列記憶神經(jīng)網(wǎng)絡(luò)(feedforward sequential memory networks,F(xiàn)SMN)[9],緊湊前饋序列記憶神經(jīng)網(wǎng)絡(luò)(compact FSMN,CFSMN)[10]以及深度前饋序列記憶神經(jīng)網(wǎng)絡(luò)(deep FSMN,DFSMN)[11]。其中FSMN 是在標準的隱含層中使用類的內(nèi)存塊前饋神經(jīng)網(wǎng)絡(luò),并在語言建模任務上的實驗結(jié)果表明FSMN 可以有效地學習長期歷史;CFSMN是在FSMN基礎(chǔ)上增加了投影矩陣,在語音識別交換機任務中,所提出的CFSMN 結(jié)構(gòu)可以使模型規(guī)??s小60%,學習速度提高7 倍以上,而在基于框架級交叉熵準則的訓練和基于mini 的序列訓練方面,該模型仍能顯著優(yōu)于目前流行的雙向LSTMs;而DFSMN在CFSMN的基礎(chǔ)上增加了跳躍連接(skip connection),在中文語音識別任務上達到了85%的識別準確率。在語言模型領(lǐng)域中,Ashish等提出了基于注意力機制的新模型Transformer,并在英語數(shù)據(jù)集上進行了驗證,結(jié)果顯示比Attention 模型效果更好[12];Zhou 等研究了將音節(jié)和音素作為Transformer 模型的建模單元,在序列到序列語音識別系統(tǒng)上進行實驗驗證并得出基于音節(jié)的Transformer 模型優(yōu)于基于ci 音素的對應模型,且與基于CTC-attention 的聯(lián)合編解碼網(wǎng)絡(luò)的字符錯誤率不相上下[13]。
本文以DFSMN作為聲學模型,引入Transformer作為語言模型建立語音識別系統(tǒng)。在該系統(tǒng)中,將采用CNN 來提取80 維的Fbank 特征,并將CTC loss[14]作為DFSMN 模型訓練的損失函數(shù),采用Adam(adaptive moment estimation)優(yōu)化器進行優(yōu)化。在語言模型模塊,將以文獻[15]中的Transformer 模型作為基礎(chǔ)模型,研究Transformer 不同參數(shù)對其模型性能的影響,針對Transformer 計算量大的問題進行改進,訓練出最優(yōu)的Transformer模型與DFSMN模型相結(jié)合進行識別任務。
語音識別系統(tǒng)包括聲學模型和語言模型,在傳統(tǒng)的語音識別系統(tǒng)中,通常采用DFSMN 作為聲學模型,N-gram作為語言模型。
在CFSMN 結(jié)構(gòu)中,因為每個CFSMN 層中包含了較多的子層,一個層中包含了4 個CFSMN 子層,2 個DNN 層的CFSMN 網(wǎng)絡(luò)總共需要12 層結(jié)構(gòu)。若通過直接增加CFSMN 層的方法來設(shè)計更深的CFSMN 網(wǎng)絡(luò),網(wǎng)絡(luò)可能會出現(xiàn)梯度消失的問題。
基于上述問題,DFSMN 被提了出來。DFSMN 在CFSMN 的記憶模塊之間添加了跳層連接,使低層的記憶可以直接流入高層的記憶模塊中。在反向傳播的過程當中,高層的梯度也會直接流入低層的記憶模塊中。因此即使使用了更深的層數(shù),也避免了梯度消失的情況。在特征提取上,DFSMN 結(jié)合低幀率LFR(low frame rate)[16],使得模型尺寸更小,延遲也更低。實驗結(jié)果表明DFSMN 是用于聲學模型的BLSTM[17]強有力替代方案。DFSMN的結(jié)構(gòu)如圖1所示。
圖1 DFSMN結(jié)構(gòu)Fig.1 DFSMN structure
DFSMN的參數(shù)更新公式為:
N-gram 是傳統(tǒng)語音識別中最常用到的語言模型[18-19]。N-gram指文本中連續(xù)出現(xiàn)的n個語詞。n元語法模型是基于(n-1)階馬爾可夫鏈的一種概率語言模型,通過n個語詞出現(xiàn)的概率來推斷語句的結(jié)構(gòu)。
當n=1時,一個一元模型(Unigram model)表示為:
當n=2 時,一個二元模型(Bigram model)表示為:
當n=3 時,一個三元模型(Trigram model)表示為:
對于N-gram模型而言,可以表示為:
其中,C(w1,w2,…,wn)表示N-gram 中w1,w2,…,wn在訓練語料中出現(xiàn)的次數(shù),m是語料庫的總字數(shù)。
已知一段語音信號,處理成聲學特征向量后表示為X=[x1,x2,x3,…],其中xi表示一幀特征向量,可能的文本序列表示為W=[w1,w2,w3,…],其中wi表示一個詞。語音識別的目的就在于求出。P(W|X)表示為:
其中,P(X|W)稱之為聲學模型(acoustic model),P(W)稱之為語言模型(language model),二者對語音語言現(xiàn)象刻畫得越深刻,識別結(jié)果越準確。所以大多數(shù)研究都把語音識別分為聲學模型和語言模型兩部分,然而在傳統(tǒng)語音識別系統(tǒng)中,往往將注意力集中在聲學模型的改進上,忽略了語言模型N-gram存在詞條語義相似性,參數(shù)n過大導致計算量太大等問題。因此本文引入強語言模型Transformer,結(jié)合DFSMN 構(gòu)建中文語音識別系統(tǒng),系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 引入Transformer的中文語音識別系統(tǒng)結(jié)構(gòu)Fig.2 Chinese speech recognition system architecture with Transformer
Transformer 能學習到輸入序列與輸出序列之間的對應關(guān)系,其結(jié)構(gòu)包括編碼器和解碼器兩個主要模塊,編碼器編碼時間序列,解碼器結(jié)合編碼器輸出和上一時間步長的輸出來生成下一時間步長的輸出,直到生成結(jié)束符為止。Transformer模型結(jié)構(gòu)如圖3所示。
圖3 Transformer模型結(jié)構(gòu)Fig.3 Transformer model structure
在進入編碼器之前,要先進行位置編碼字符向量嵌入和字符位置向量嵌入,將兩向量相加得到相同維度的向量作為輸入,目的在于給輸入添加字符順序信息,讓模型能夠?qū)W習到字符順序關(guān)系。編碼器旨在對原始信息進行編碼表示,編碼表示能夠較完全地體現(xiàn)出該字符序列的語義信息。編碼器由N個編碼單元組成,每個編碼單元具有完全相同的結(jié)構(gòu)。編碼器包括多頭自注意力層(multi-headed attention)、求和與歸一化(add &normalization)、前饋神經(jīng)網(wǎng)絡(luò)(feed-forward)三個基本組件。其中,多頭自注意層利用多個自注意力,從不同的信息維度上來提取字符的向量表示。
2.1.1 位置編碼
由于Transformer 不包含遞歸和卷積,為了讓模型利用序列的順序,必須注入一些關(guān)于序列中記號的相對或絕對位置的信息。因此在編碼器和解碼器堆棧底部的輸入嵌入中添加“位置編碼”。位置編碼與嵌入具有相同的模型維數(shù),因此兩者可以相加。位置編碼采用不同頻率的正弦和余弦函數(shù),表示為:
在上式中,pos是位置,i是維數(shù)。位置編碼的每一維對應一個正弦信號。波長以幾何級數(shù)的形式從2π增長到10 000·2π。
2.1.2 縮放點積注意力機制
在注意力函數(shù)的使用中,乘性函數(shù)和加性函數(shù)在理論上復雜度相同,然而實際應用中,乘性函數(shù)得益于高度優(yōu)化的矩陣乘法代碼的計算,使得乘性函數(shù)計算速度更快,更節(jié)省空間。縮放點積注意如圖4所示。
圖4 縮放點積注意力機制Fig.4 Scaling dot product attention mechanism
輸入由維度為dk的查詢向量q和鍵向量k以及維度為dv的值v組成。接著計算查詢與所有鍵的點積,再除以,并應用softmax 函數(shù)來獲得這些值的權(quán)重。在實踐中,將同時計算一組查詢的注意力函數(shù),這些查詢被打包到一個矩陣Q中,鍵和值也被打包到矩陣K和V中。計算輸出矩陣表示為:
對于較大維度的值v,點積的大小也會變大,從而使softmax函數(shù)陷入具有極小梯度的區(qū)域。為了抵消這個影響,故在式(11)中需要除以。
2.1.3 多頭注意力機制
多頭注意力機制如圖5所示。在該步驟中,將對每一個投射模塊中的查詢、鍵和值并行執(zhí)行注意力函數(shù),生成dv維的輸出值。它們被連接起來并再次投射,從而得到最終的值。
圖5 多頭注意力機制Fig.5 Multi-headed attention mechanism
多頭注意力機制使模型能夠在不同的表示子空間中,在不同的位置共同關(guān)注信息。如果只有一個注意力頭,則會抑制這種情況。多頭注意力機制表示為:
2.1.4 前饋神經(jīng)網(wǎng)絡(luò)
在編碼器和解碼器的子層中,還包括前饋神經(jīng)網(wǎng)絡(luò)層。該層包括矩陣線性變化Linear 層和Relu 非線性激活。該層網(wǎng)絡(luò)可表示為:
2.1.5 殘差連接和歸一化
每一個子層之后都會接一個殘差連接和歸一化層。其中,殘差連接層避免了梯度消失的問題,而歸一化層通常采用BN(batch normalization)。BN 的思路在于對每一層的每一小批數(shù)據(jù)上進行歸一化,把輸入轉(zhuǎn)化為均值為0 方差為1 的數(shù)據(jù),防止經(jīng)過多層前向計算后數(shù)據(jù)偏差過大,造成梯度問題。
在多頭自注意力層、求和與歸一化層、前饋神經(jīng)網(wǎng)絡(luò)這三個不同層的結(jié)合下,最終得到編碼器的輸出。
解碼器與編碼器的結(jié)構(gòu)類似,但是比編碼器多了一個掩蓋多頭自注意力層。這個層包括了第一層掩蓋多頭自注意力層和第二層多頭自注意力層。第一層使用掩蓋多頭自注意力層的原因是在預測句子的時候,當前時刻是無法獲取到未來時刻信息的。在該層中,q是來自于上一位置Decoder 的輸出,而k和v則來自于編碼器。編碼器可以并行計算,但是解碼器類似于RNN 網(wǎng)絡(luò),需要一步一步去解碼,最終輸出對應位置的輸出詞的概率分布。
針對Transformer計算復雜度高,且在訓練過程中存在過擬合的問題,本文提出一種基于Hadamard 矩陣濾波的注意力權(quán)值計算方法。該方法應用于softmax 層,通過設(shè)置閾值對經(jīng)過softmax歸一化的注意力權(quán)值矩陣進行濾波,低于閾值的權(quán)值,由于對輸出影響較弱,強制置為0,而高于閾值的分數(shù)則不予以改動。在多頭注意力的計算過程中,該方法能夠有效降低后續(xù)計算的參數(shù)量,從而減少模型的訓練時間,增加解碼速度,并且在訓練不同的數(shù)據(jù)時,不同的參數(shù)丟棄后訓練的模型會增加網(wǎng)絡(luò)的泛化能力。Hadamard矩陣濾波位置如圖6所示。
圖6 Hadamard矩陣濾波位置Fig.6 Hadamard matrix filtering position
在圖5中,每個單詞創(chuàng)建三個向量,并通過詞嵌入和每個向量對應的權(quán)重矩陣相乘所得。即:
得到q、k、v的值后,則要拿每個查詢向量q去對每個鍵向量k做注意力,計算上下文對當前字符的注意力初始分數(shù),即:
增加Hadamard矩陣濾波后,公式表示為:
公式(11)更新為:
改進后自注意力計算流程如圖7 所示,在該圖中,矩陣H是由矩陣A經(jīng)過閾值篩選后生成的Hadamard矩陣,矩陣A中值大于等于閾值T則矩陣H中相對應位置處的值為1,而A中值小于閾值T則H中相對應位置處的值為0。
圖7 改進后自注意力計算流程Fig.7 Improved self-attention calculation process
3.1.1 聲學模型參數(shù)
聲學模型使用的輸入是具有16 kHz 采樣率的單聲道音頻數(shù)據(jù),結(jié)合低幀率LFR,通過一個固定的10 ms幀位移的25 ms漢明窗口進行分析,并利用80個mel濾波器組提取80 維的log mel fbank 特征。在卷積層中,根據(jù)輸入的音頻數(shù)據(jù)對其進行卷積操作,整個卷積包括1個卷積層和3個CNN層,以作為DFSMN層的輸入。在DFSMN結(jié)構(gòu)中,一共有6層網(wǎng)絡(luò),模型深度為512維,學習率為1E-4,dropout 為0.5。使用CTC 作為損失函數(shù),對于一對輸入輸出(X,Y)來說,CTC的目標是將下式概率最大化:
在對模型進行預測時,本文采用了Beam search 算法,并將寬度參數(shù)設(shè)置為10,即在每個時間t輸出時,不同于貪婪算法只找概率最高的,而是找最高的10 個概率作為下一次的輸入,依次迭代。對于優(yōu)化器的選擇,本文采用了Adam 優(yōu)化器作為模型優(yōu)化器,Adam 優(yōu)化器本質(zhì)上是帶有動量項的RMSprop(root mean square prop)優(yōu)化器,它利用梯度的一階矩估計和二階矩估計動態(tài)調(diào)整每個參數(shù)的學習率。Adam的優(yōu)點主要在于經(jīng)過偏置校正后,每一次迭代學習率都有個確定范圍,使得參數(shù)比較平穩(wěn)。
3.1.2 語言模型參數(shù)
在Transformer 語言模型結(jié)構(gòu)中,將以特征維度為256,批處理大小為40,多頭注意力數(shù)為8,隱藏節(jié)點為512,學習率為1E-3,dropout 為0.3 作為初始參數(shù)設(shè)定。在進行訓練時,采用標簽平滑化處理(label smothing)以防止過擬合,表示為:
其中,y′為標簽平滑操作后的樣本標簽,ε為平滑因子,u是人為引入的一個固定分布,并且由參數(shù)ε控制相對權(quán)重。
語言模型的損失函數(shù)則為預測結(jié)果與平滑值的交叉熵。表示為:
3.1.3 數(shù)據(jù)集
為了防止模型過擬合,提高模型的泛化能力,對于識別任務,本文采用的數(shù)據(jù)集包括Aishell-1[20]、Aidatatang、Magicdata、Thchs30[21]這四個中文數(shù)據(jù)集,總計1 163 h,包括995 452條語句,其中訓練集863 845條,驗證集50 694 條,測試集80 913 條,訓練集與驗證集及測試集的比例為86∶5∶9。
Aishell-1 數(shù)據(jù)集是北京希爾貝殼科技有限公司出版的中文語言公開語料庫,由來自中國不同口音地區(qū)的400 人參加錄音,總共178 h。Aidatatang 數(shù)據(jù)集是北京大唐科技有限公司提供的免費中文普通話語料庫,該語料庫包含200 h 的聲學數(shù)據(jù),由來自中國不同口音地區(qū)的600 人參加錄制,數(shù)據(jù)庫分為訓練集、驗證集和測試集,比例為7∶1∶2。Magicdata 數(shù)據(jù)集包含755 h 的語音數(shù)據(jù),其中大多數(shù)是移動記錄的數(shù)據(jù),邀請來自中國不同口音地區(qū)的1 080 名演講者參加錄制,該數(shù)據(jù)庫訓練集、驗證集和測試集的比例為51∶1∶2。Thchs30是清華大學語言技術(shù)中心(CSLT)發(fā)布的開放式中文語音數(shù)據(jù)庫,總時長超過30 h。
針對本文提出的DFSMN結(jié)合語言模型Transformer的語音識別系統(tǒng),實驗圍繞Transformer的影響因素、改進后的Transformer模型及語音識別系統(tǒng)的驗證三方面展開。在針對Transformer 的實驗中,訓練語料為相應開源語音的抄本及對應中文拼音,CER指的是拼音轉(zhuǎn)漢字結(jié)果的字符錯誤率;在針對語音識別系統(tǒng)的實驗中,CER指的是語音轉(zhuǎn)寫為中文的字符錯誤率。
3.2.1 Transformer的影響因素
對于Transformer 模型結(jié)構(gòu)會受到哪些因素的影響,本文首先做了以下工作:以初始參數(shù)化的Transformer結(jié)構(gòu)作為基礎(chǔ)結(jié)構(gòu),分別以學習率lr、批處理大小batch_size、多頭的數(shù)目num_heads以及num_block4 個參數(shù)作為變量進行實驗測試,采用控制變量法對比不同參數(shù)取值對準確率和解碼速度的影響。其中,學習率參數(shù)以L表示,批處理大小batch_size以B表示,多頭的數(shù)目num_heads以H 表示,num_block以K 表示。不同參數(shù)取值的Transformer結(jié)構(gòu)如表1所示。
表1 不同參數(shù)取值下的Transformer結(jié)構(gòu)Table 1 Transformer structure for different parameter values
在表1 中,Transformer 表示未經(jīng)改動的初始參數(shù)模型,Transformer_B、Transformer_H、Transformer_K、Transformer_L 表示在初始參數(shù)模型基礎(chǔ)上分別對批處理大小、多頭的數(shù)目、num_block以及學習率進行了改變。對上述幾個不同結(jié)構(gòu)的Transformer進行訓練,并在Aishell-1、Aidatatang、Magicdata、Thchs30 四個中文數(shù)據(jù)集上測試字符錯誤率及解碼時間,實驗結(jié)果如表2所示。
從表2可以看出,對比初始參數(shù)下的Transformer測試結(jié)果,可以得出以下結(jié)論:
表2 不同結(jié)構(gòu)下Transformer的測試時間及CERTable 2 Test time and CER for Transformer with different configurations
(1)減小batch_size會使得測試時間增長,解碼速度變慢,但是字符錯誤率平均降低了1.1%;增加batch_size不僅使測試時間減少,解碼速度變快,并且字符錯誤率也平均降低了2.6%。
(2)減少多頭的數(shù)目會使測試時間增長,解碼速度變慢,在字符錯誤率上并無明顯變化;增加多頭的數(shù)目會使測試時間增長,解碼速度變慢,但是字符錯誤率平均降低了2%。
(3)減少num_block會使測試時間減少,解碼速度變快,并且字符錯誤率平均降低了1.8%;增加num_block會使測試時間增長,解碼速度變慢,但是字符錯誤率平均降低了1.1%。
(4)增加學習率會使測試時間增長,解碼速度變慢,并且字符錯誤率平均提高了2.0%了;減少學習率會使測試時間增長,解碼速度變慢,但是字符錯誤率平均降低了1.4%。
由上述實驗可知,學習率lr、批處理大小batch_size、多頭的數(shù)目num_heads以及num_block這4 個參數(shù)對Transformer模型的解碼速度及識別準確率都有一定的影響。其中,在模型訓練的過程中,特征維度通常取多頭數(shù)目的立方。
3.2.2 改進后的Transformer
基于上述實驗結(jié)果,選取學習率lr=0.000 03,批處理batch_size=60,多頭數(shù)目num_heads=10,num_block=2作為改進前Transformer模型參數(shù)。為了與原始Transformer模型進行區(qū)分,將該模型記為Transformer_BHKL,表示在原始Transformer 模型上對四個參數(shù)都進行了變動。經(jīng)過在4 個數(shù)據(jù)集上大量實驗后,發(fā)現(xiàn)在閾值分別為T1=1E-7,T2=1E-6,T3=1E-5時實驗效果最好。將閾值為T1、T2、T3時的Transformer模型分別記為Transformer_BHKLT1、Transformer_BHKLT2、Transformer_BHKLT3進行實驗對比分析,實驗結(jié)果如表3所示。
表3 改進后Transformer在數(shù)據(jù)集上的測試時間及CERTable 3 Test time and CER of improved Transformer on dataset
在表3中,Transformer_BHKL的實驗結(jié)果驗證了上述對Transformer模型的影響因素分析;對比Transformer_BHKL和增加閾值后的Transformer模型實驗結(jié)果,當閾值為1E-6 時,改進后Transformer 模型在各個數(shù)據(jù)集上的識別錯誤率和識別速率都達到了最優(yōu),驗證了對Transformer增加參數(shù)丟棄層后,模型的識別速率及識別錯誤率都有所降低。
3.2.3 語音識別系統(tǒng)的驗證
為了驗證改進Transformer 模型在語音識別系統(tǒng)中的性能,將4 個數(shù)據(jù)集分別在DFSMN 結(jié)合初始Transformer 模型,DFSMN 結(jié)合Transformer_BHKLT 模型上進行實驗驗證,測試結(jié)果如圖8所示。
圖8 4個數(shù)據(jù)集在模型改進前與改進后的結(jié)果Fig.8 Results for 4 datasets before and after model improvement
由圖8 中4 種不同數(shù)據(jù)集的驗證結(jié)果表明,本文構(gòu)建的Transformer 結(jié)合DFSMN 語音識別系統(tǒng)在不同的數(shù)據(jù)集上都有良好的性能,在改進Transformer模型后,4種不同數(shù)據(jù)集上的字符錯誤率都有所降低,體現(xiàn)了該系統(tǒng)識別結(jié)果中字符錯誤率較低的同時也有較強的泛化能力。
為了驗證聲學模型DFSMN 結(jié)合改進語言模型Transformer 的語音識別系統(tǒng)的優(yōu)越性,將該系統(tǒng)與BLSTM系統(tǒng)、ResNet-BLSTM-CTC系統(tǒng)、CFSMN-3gram系統(tǒng)、DFSMN-3gram 系統(tǒng)做對比,對比實驗結(jié)果如表4所示。
表4 不同語音識別系統(tǒng)的CERTable 4 CER of different speech recognition models
在表4中的數(shù)據(jù)表明,本文提出將聲學模型DFSMN結(jié)合語言模型Transformer構(gòu)建的語音識別系統(tǒng)相較于其他語音識別系統(tǒng),在識別準確率上展現(xiàn)了一定的優(yōu)越性,經(jīng)過改進語言模型Transformer 后構(gòu)建的語音識別系統(tǒng)較未改進前在識別準確率上也有所提高。
本文引入強語言模型Transformer,將其和強聲學模型DFSMN相結(jié)合,建立了CNN-DFSMN-CTC-Transformer新型語音識別系統(tǒng),并針對Transformer計算復雜度高,容易過擬合及泛化能力不足的問題提出了一種基于Hadamard 矩陣濾波的注意力計算方法。實驗結(jié)果表明,新型語音識別系統(tǒng)總體性能優(yōu)于某些現(xiàn)有語音識別系統(tǒng),改進后的Transformer解碼速度有明顯提升。