王子龍 李俊峰 張劭韡 王宏巖 王思杰
(1.國家電網有限公司營銷部 北京 100031)(2.國家電網有限公司客戶服務中心 天津 300306)(3.北京中電普華信息技術有限公司 北京 100031)
隨著算法和計算機硬件的不斷發展,使得現有研究能夠以端到端的方式訓練神經網絡[1~3]。目前,主流神經網絡訓練的交叉熵準則是對聲學數據的每個幀進行分類優化[4],而連續語音識別是以序列級轉錄準確性為性能度量[5]。文獻[6]采用基于序列級轉錄的端到端語音識別系統,結合卷積神經網絡對輸入特征進行處理,選取最佳的網絡結構。文獻[7]采用綁定的三音子作為建模單元,解決建模單元的稀疏性問題,大幅提高聲學建模的區分度和魯棒性。然而這些模型復雜度較高,有限存儲空間成為進一步訓練大規模任務的瓶頸。文獻[8]指出遞歸神經網絡模型在端到端語音識別訓練效果中明顯優于其他傳統方法,因此,本文選擇遞歸神經網絡作為語音識別系統的模型框架。
本文的目的是將盡可能多的語音替換為單個遞歸神經網絡(RNN)結構。盡管可以使用RNN或受限制的Boltzmann機器學習特征可直接轉錄原始語音波形[9],但計算成本高且性能往往比傳統的預處理更差。因此,本文選擇頻譜圖作為最小預處理方案。
頻譜圖由深度雙向長短期記憶(LSTM)網絡處理[10],該網絡具有連接時間分類(CTC)輸出層[11]。網絡直接在文本抄本上進行培訓,且不使用語音表示,因此不使用語音字典或狀態約束。此外,由于CTC整合了所有可能的輸入輸出對齊,因此不需要強制對齊來提供訓練目標。文獻[12]使用雙向LSTM和CTC的組合應用于字符級語音識別,但是最佳字符錯誤率約為20%,并不能直接應用于端對端的語音識別系統中。
本文仍然使用雙向LSTM和CTC組合的形式構造目標函數,同時,引入轉錄損耗概念對目標函數進行修正,使得訓練網絡對任意轉錄損失函數的期望最小化,直接優化單詞錯誤率,增強了語音識別系統的性能,從而降低語音識別過程中的單詞錯誤率。最后對《華爾街日報》語音語料庫的實驗表明,即使沒有語言模型或字典,該系統也能夠以合理的準確度識別單詞。
給定輸入序列x=(x1,…,xT),標準遞歸神經網絡(RNN)通過從t=1到T迭代計算隱式向量序列h=(h1,…,hT)和輸出向量序列 y=(y1,…,yT):

其中,W表示權重矩陣(例如,Wih是輸入隱式權重矩陣),b表示偏置向量(例如,bh是隱式偏置向量),Η是隱藏層激活函數。
通常Η是sigmoid函數。文獻[13]指出長短期記憶(LSTM)架構使用專門構建的內存單元存儲信息,在查找和利用長期上下文方面更為出色。圖1說明了單個LSTM內存單元。對于本文中使用的LSTM架構,Η通過以下復合函數實現:


其中,σ為邏輯sigmoid函數,i,f,o和c分別為輸入門、遺忘門、輸出門和單元激活向量,所有這些都與隱藏層向量h的大小相同,權重矩陣下標具有不同的含義,如Whi為隱式輸入門矩陣,Wxo為輸入輸出門矩陣。從單元到門向量(例如Wci)的權重矩陣是對角矩陣,因此每個門向量中的元素m只接收單元向量的元素m的輸入。為了闡述簡潔,本文省略了偏置項(添加到i,f,o和c中)。

圖1 長短期記憶單元
傳統RNN的缺點是它們只能利用以前的上下文信息。在語音識別中,所有的語言都進行同步轉錄,因此必須結合未來的上下文語境。雙向RNN(BRNN)通過使用兩個單獨的隱藏層在兩個方向上處理數據,將數據轉發到相同的輸出層可實現利用未來的上下文語境[14]。如圖2所示,BRNN通過將向后層從t=T迭代到1,將向前層從t=1迭代到T,然后更新輸出層,分別計算出向前隱式序列h、向后隱式序列h和輸出序列y:


圖2 雙向遞歸神經網絡
將BRNN與LSTM相結合可以得到了雙向LSTM,并可以在兩個輸入方向上訪問遠程上下文[15]?;旌舷到y使用了深度架構來逐步構建更高級別的聲學數據模型,通過將多個RNN隱藏層疊加在一起,來創建深度RNN,其中,前一層的輸出序列形成下一層的輸入序列,如圖3所示。

圖3 深度遞歸神經網絡
假設堆棧中所有N層都使用相同的隱藏層函數,則從n=1到N,t=1到T迭代計算隱式向量序列hn為

其中,ho=x。則網絡輸出為

通過將每個隱式序列hn替換為正向序列hn和反向序列,并確保每個隱藏層同時接收來自下一層的正向層和反向層的輸入,即可實現深度雙向RNN。如果將LSTM用于隱藏層,則完整的體系結構可構成深度雙向LSTM[16]。
神經網絡(無論是前饋網絡還是遞歸網絡)在語音識別中通常訓練為幀級分類器。這就需要每一幀都有一個單獨的訓練目標,而這又要求HMM來確定音頻和轉錄序列之間的對齊。然而,只有在分類器經過訓練后,對齊功能才發揮作用,從而導致分類和識別之間的遞歸依賴關系(在C語言中稱為Sayre悖論)。此外,對齊與大多數語音識別任務無關。CTC作為目標函數時,通過訓練RNN進行序列轉錄任務,而輸入序列和目標序列之間無需進行任何先驗對齊。
輸出層包含每個轉錄標簽(字符、音素、音符等)的單獨單元以及額外的“空白”單元,其中,“空白”對應于零發射。給定一個長度為T的輸入序列x,輸出向量 yt用SoftMax函數進行標準化處理,則在t時刻索引k發出標簽(或空白)的概率為

其中,ytk是 yt的元素k。CTC對齊a是長度為T的空白與標簽索引序列。a的概率Pr(a|x)是每個時間步長發射概率的乘積:

對于一個給定的轉錄序列,應有盡可能多的對齊,因為有不同的方法將標簽與空白分開。例如,使用“—”表示空白,對齊(a,—,b,c,—,—)和(—,—,a,—,b,c)都對應于轉錄(a,b,c)。當同一標簽出現在對齊的連續時間步驟上時,重復刪除部分,因此,(a,b,b,b,c,c)和(a,—,b,—,c,c)也對應于(a,b,c)。用 B表示刪除第一次重復標簽,然后去掉對齊空白的運算符,觀察到輸出轉錄y的總概率等于對應對齊的概率之和,因此可以寫:

這種在可能對齊上的“集成”使得網絡可以用未劃分的數據進行訓練。因此,把特定轉錄中的標簽可能出現的所有地方加起來。式(15)可以通過動態規劃算法[17]進行有效的評估和劃分。給定一個目標轉錄 y*網絡可以訓練CTC最小化目標函數:

CTC的目標函數是使序列轉錄完全正確的對數概率最大化。因此,不正確轉錄的相對概率容易被忽略。然而,在大多數情況下,在語音識別的轉錄性能中,標準度量是單詞錯誤率(WER),其定義為真實單詞序列和轉錄器發出的最可能單詞序列之間的編輯差異率。因此,本文傾向于選擇高功率轉錄比的轉錄器。為了減少目標函數和測試標準之間的差異,本文通過訓練RNN來優化輸出轉錄(如WER)上定義的任意損耗函數的預期值。網絡結構和輸出激活表示為在特定時間步長發出標簽(或空白)的概率,并與CTC保持相同。
給定輸入序列x,根據CTC定義的轉錄序列y上的分布Pr(y|x)和實值轉錄損耗函數L(x,y),可得到轉錄損耗期望值為

由于無法準確地計算出這個期望值,本文使用蒙特卡羅抽樣法來近似L及其梯度。將式(15)代入式(17)可得:

由式(14)可知,從Pr(a|x)中獨立提取每個時間步長樣本中的Pr(k,t|x),并將結果連加起來,從而可以直接近似為

為了對網絡輸出L進行微分,從式(13)中可得到:

將上式代入式(18),應用恒等式?xf(x)=f(x)?xlog f(x),得到:

這種期望值也可以用Monte-Carlo抽樣來近似[18]。由于輸出概率是內相關的,令=k,Pr(a|x)的無偏樣本ai可以轉化為Pr(a|x,at=k)的無偏樣本。因此,每個ai可以為每個Pr(k,t|x)提供一個梯度估計:


因此,給定的無偏樣本ai加上的導數等于的損失與從 Pr(k',t|x)采樣的損耗期望值之間的差,即網絡只接收一個錯誤項用于更改損耗的對齊方式。例如,如果丟失函數為“WORD ER?ROR RATE”,并且采樣對齊生成字符轉錄為“WTRDERRORRATE”,則梯度將根據輸出的第一個單詞的第二個輸出標簽更改為“O”,同時,阻止更改其他兩個輸出單詞。
為了使采樣程序有效,必須有一個合理的概率來選擇其變量接受不同損耗的對齊。從隨機初始化網絡中提取的絕大多數對手結果可能會產生完全錯誤的轉錄,通過修改單個輸出來改變損耗的可能性很小。因此,本文將損耗期望值最小化來對已經接受過CTC訓練的網絡進行再訓練。
由于采樣校準容易實現,而重新計算校準變量的損耗將帶來巨大的計算量。對于許多損耗函數(包括單詞錯誤率),只需重新計算與對齊更改相對應的那部分損耗,即可實現對其優化。在本文實驗中,每個序列采用5個樣本,則梯度估計值的方差較低,從而實現有效的訓練。
CTC網絡的解碼(即為給定的輸入序列x找到最可能的輸出轉錄y)可以通過在每個時間步長中選擇單個最可能的輸出,并返回相應的轉錄來達到近似:

使用波束搜索算法可以實現更精確的解碼,并同時形成集成語言模型。該算法類似于基于HMM系統的解碼方法,但由于網絡輸出的表示發生了變化,因此網絡輸出表示略有不同。在混合系統中,網絡輸出表示為狀態占用的后驗概率與語言模型和HMM提供的轉換概率相結合。而CTC網絡輸出則直接表示轉換概率(在HMM中,標簽激活是轉換到不同狀態的概率,空白激活是保持當前狀態的概率)。在連續的時間步長中應消除重復的標簽排序,這就需要區分以空白結束的對齊和以標簽結束的對齊。
算法1中的偽代碼描述了利用字典和語言模型集成CTC網絡的簡單波束搜索過程。將Pr-(y|x),Pr+(y|x)和Pr(y|x)分別定義為空白、非空白和輸出轉錄y部分的總概率,通過波束搜索進行求解,并假設Pr(y|x)=Pr-(y|x)+Pr+(y|x)。通過對t時刻標簽k定義 y的擴展概率Pr(k,y,t),如下所示:

其中,Pr(k,t|x)表示k在t時刻的CTC發射概率,如等式(13)所定義,Pr(k|y)表示從 y到 y+k的轉換概率,ye表示 ye中的最終標簽。最后,將 y?定義為y刪除最后一個標簽的前綴,將?定義為空序列,其中,Pr+(?,t)=0。
算法1:CTC波束搜索
初始化:B←{?};Pr-(?,0)←1
for t=1 to T do
B?←B中最可能的W 序列
B←{}
for y∈B?do
if y≠? then
Pr+(y|x)← Pr+(y|t-1)Pr(ye,t|x)
if y?∈ B?then
Pr+(y|x)← Pr+(y|t)+Pr(ye,y?,t)
Pr-(y,t)←Pr(y,t-1)Pr(-,t|x)
將 y添加到B中
for k=1 to K do
Pr-(y+k,t)←0
Pr-(y+k,t)←Pr(y,k,t)
將(y+k)添加到B中

轉換概率Pr(k|y)可用于將先驗語言信息集成到搜索中。如果標準CTC不存在,則所有Pr(k|y)都設置為1。如果(k+y)在字典中,則可以通過設置Pr(k|y)=1,來將搜索約束到字典單詞中。本文應用統計語言模型,Pr(k|y)表示標準化的標簽到標簽的轉換概率,將單詞級語言模型轉換為標簽級語言模型時,任何標簽序列 y都可以表示為y=w+p,其中,w是 y中字典單詞最長的完整序列,p是剩余單詞的前綴序列。由于w和 p可能都是空序列。因此,轉換概率可以表示為

其中,Prγ(w'|w)為歷史單詞w向單詞w'的轉移概率,p*為以p為前綴的字典單詞集,γ為語言模型權重因子。
實驗在《華爾街日報》(WSJ)語料庫上進行(選用LDC語料庫中的ldc93s6b和ldc94s13b)。RNN在14小時子集“train-si84”和完整的81小時集合上進行訓練,并使用“test-dev93”開源集合上進行驗證。對于上述兩個訓練集,RNN使用CTC網絡進行訓練,結合轉錄中的字符作為目標序列,每個序列有五個對齊樣本對RNN進行再訓練來實現最小化單詞錯誤率。
字符類型總共分為43種,包括大寫字母、標點符號和分隔單詞的空白字符。輸入數據使用py?thon工具包的“specgram”函數從原始音頻文件中提取頻譜圖,并產生254個傅立葉窗口和127個重疊幀,并且每幀包含128個輸入。
該網絡有5層雙向LSTM隱藏層,每層有500個單元,總權重約為265。采用隨機梯度下降法進行訓練,每句話更新一次權重,學習速率為10,動量為0.9。
將RNN與深度神經網絡-HMM(DNN-HMM)混合模型進行比較。DNN-HMM是基于SGMM-HMM系統的比對來創建,該系統使用Kaldi配方‘s5’和模型‘tri4b’進行訓練。使用14小時的子集來訓練深度信念網絡(DBN),每個網絡有6個隱藏層,每個隱藏層有2000個單元。輸入15幀MEL級對數濾波器組,包括1個中心幀和7個上下文幀),系數、增量和加速度共有40個。DBN和DNN分別經過分層訓練和訓練,將中央輸入幀分類為3385個三音素狀態之一。DNN采用隨機梯度下降訓練,學習率為0.1,動量為0.9。在每個時期結束時將學習速率除以2,這并不能降低開源集合上的幀錯誤率。在六次嘗試失敗后,學習率被固定。在解碼過程中,用狀態先驗的平方根除以DNN后驗。
首先對RNN進行無字典、無語言模型的解碼,利用空白字符將字符輸出劃分成單詞,從而計算WER。然后,該網絡使用146K單詞字典進行解碼,得到字母組合、雙字母組合和三元語言模型。使用Kaldi配方“s5”中實現的一些擴充規則將默認的WSJ詞典擴展為125K單詞。使用來自WSJ的數據(參見配方‘s5’中的腳本‘wsj extend dict.sh’和‘wsj train lms.sh’)構建了語言模型。針對所有實驗分別優化了語言模型的權重,對于沒有語言信息的RNN實驗和只有字典的RNN實驗,采用波束搜索算法進行解碼。對于選用語言模型的RNN實驗,是為了確保與基準系統進行公平比較,從基準DNN-HMM中提取最多300個候選轉錄的N個最佳列表,然后由RNN使用等式(16)進行重新計算。最后將RNN得分與語言模型組合來重新排列N個最佳列表,并記錄最佳結果轉錄本的WER。獲得的最佳結果是RNN評分權重為7.7,語言模型權重為16。
在81小時的訓練集中,字母組合、雙字母組合和三元語言的Oracle錯誤率分別為8.9%、2%和1.4%,而字母組合和三元語言的反Oracle錯誤率分別為45.5%和33%,即便使用更多N個最佳列表(最多N=1000)并沒有產生顯著的性能改進,因此,從中可以得出結論,足夠大的N個最佳列表可以近似得到RNN的真正解碼性能。
本文還進行了RNN和DNN聯合作用的實驗。在81小時的訓練中,“RNN-WER”的候選得分與DNN聲學模型得分混合,并用于對候選得分進行重新排序。語言模型權重為11,RNN得分權重為1,DNN得分權重為1。

表1 WSJ結果
表1中的結果表明,在完整的81小時訓練集上,當沒有語言模型時,字符級RNN的性能優于基準模型。RNN經過重新訓練將錯誤率降到最低(標記為“RNN-WER”以區別于原來的“RNN-CTC”網絡)。這是由于兩個因素引起:首先,RNN能夠學習聲學模型,從而學習到更多的聲學上下文;其次,它能夠從訓練文本中學習隱式語言模型。然而,基準系統在LM增強時超過了RNN,在這種情況下,RNN的隱式LM可能會通過干擾顯式模型來對抗RNN。盡管如此,考慮到先驗信息(音頻預處理、發音字典、狀態、強制對齊)編碼到基準系統中,因 此 ,隨 著 LM 的 增 強 ,“RNN-CTC”和“RNN-WER”之間的差異也將減小。
基準系統僅從14小時的訓練集逐步增加到81小時的訓練集,而RNN的錯誤率大幅降低。這是由于14個小時的轉錄語音不足以讓RNN學會如何“拼寫”出準確轉錄所需要的足夠多單詞,而只足以學會識別音素。
組合模型的性能明顯優于RNN或基準系統。超過基準1%絕對值的改善要比通常模型平均值的輕微改善大得多,這是由于系統之間的差異更大。
圖4給出了CTC層發出的幀級字符概率(每個字符的顏色不同,虛線表示“空白”)以及處理話語時相應的訓練錯誤。目標轉錄為”HISFRIENDS”,其中下劃線是單詞結尾的標記,因此會產生稀疏的誤差信號(如果輸出概率為1,則無法對其他任何內容進行采樣,因此即使輸出錯誤,梯度也為0)。在這種情況下,唯一的梯度來自‘S’之前的字符。常見序列中的字符(如“IS”,“RI”和“END”)會非常緊密地發出,這表明網絡將它們作為單個聲音進行學習。

圖4 網絡輸出
為了提供字符級的轉錄,所提出的方法不僅要學習如何識別語音,還要學習如何將語音轉換成字母。在沒有字典或語言模型的情況下進行解碼的示例如下。
原文:TOILLUSTRATE THE POINT A PROMI?NENT MIDDLE EAST ANALYST IN WASHINGTON RECOUNTSA CALL FROM ONE CAMPAIGN
識別:TWO ALSTRAIT THE POINT A PROMI?NENT MIDILLE EAST ANALYST IM WASHING?TONRECOUNCACALL FROMONECAMPAIGN
原文:T.W.A.ALSO PLANS TO HANG ITS BOUTIQUE SHINGLE IN AIRPORTS AT LAM?BERTSAINT
識別:T.W.A.ALSO PLANS TOHING ITS BOOTIK SINGLE IN AIRPORTS AT LAMBERT SAINT
原文:ALL THE EQUITY RAISING IN MILAN GAVE THAT STOCK MARKET INDIGESTION LASTYEAR
識別:ALL THE EQUITY RAISING IN MU?LONG GAVE THAT STACRK MARKET IN TO JUS?TIAN LASTYEAR
原文:THERE'S UNREST BUT WE'RE NOT GOINGTOLOSETHEMTODUKAKIS
識別:THERE'S UNREST BUT WERE NOT GOINGTOLOSETHEMTODEKAKIS
像所有的語音識別系統一樣,網絡也會犯語音錯誤,比如“shingle”而不是“single”,有時還會混淆“two”和“to”等同音詞。由于發音相近的單詞在拼寫上可能差異很大,因此使用語言模型很難解決。與語音系統不同,網絡也會產生詞匯錯誤,例如“boutique”和“bootik”,以及將兩者結合在一起的錯誤,例如“alstrait”和“illustrate”。
所提的網絡識別方法也能夠正確地轉錄相當復雜的單詞,如“campaign”、“analyst”和“equity”,這些單詞經常出現在金融文本中,但同時也難以理解陌生單詞的發音和拼寫,如“milan”和“dukakis”等專有名稱。這表明,詞匯表以外的單詞可能仍然是字符級識別錯誤的主要問題,即使在沒有字典的情況下也是如此。因此,所提方法能夠從訓練轉錄中推斷出重要的語言信息,從而實現真正的端到端語音識別系統。
本文通過最小化預處理和隱式語音表示的遞歸神經網絡來實現字符級語音轉錄。所構造的目標函數可以對網絡的單詞錯誤率進行直接優化,并給出了在解碼過程中將網絡輸出與語言模型集成的方法。最后通過將所提模型與基準模型相結合的方式實現了較高精度的語音識別。