重磅!MaxCompute助力阿裏開源自研語音識別模型DFSMN,準確率高達96.04%
阿裏開源語音識別模型DFSMN
在近期舉行的雲棲大會武漢峰會上,裝有DFSMN語音識別模型的“AI收銀員”在與真人店員的PK中,在嘈雜環境下準確識別了用戶的語音點單,在短短49秒內點了34杯咖啡。此外,裝備這一語音識別技術的自動售票機也已在上海地鐵“上崗”。
著名語音識別專家,西北工業大學教授謝磊表示:“阿裏此次開源的DFSMN模型,在語音識別準確率上的穩定提升是突破性的,是近年來深度學習在語音識別領域最具代表性的成果之一,對全球學術界和AI技術應用都有巨大影響。”
圖:阿裏在GitHub平臺上開源了自主研發的DFSMN語音識別模型
語音識別聲學模型
語音識別技術一直都是人機交互技術的重要組成部分。有了語音識別技術,機器就可以像人類一樣聽懂說話,進而能夠思考、理解和反饋。
近幾年隨著深度學習技術的使用,基於深度神經網絡的語音識別系統性能獲得了極大的提升,開始走向實用化。基於語音識別的語音輸入、語音轉寫、語音檢索和語音翻譯等技術得到了廣泛的應用。
目前主流的語音識別系統普遍采用基於深度神經網絡和隱馬爾可夫(Deep Neural Networks-Hidden Markov Model,DNN-HMM)的聲學模型,其模型結構如圖 1所示。聲學模型的輸入是傳統的語音波形經過加窗、分幀,然後提取出來的頻譜特征,如 PLP, MFCC 和 FBK等。而模型的輸出一般采用不同粒度的聲學建模單元,例如單音素 (mono-phone)、單音素狀態、綁定的音素狀態 (tri-phonestate) 等。從輸入到輸出之間可以采用不同的神經網絡結構,將輸入的聲學特征映射得到不同輸出建模單元的後驗概率,然後再結合HMM進行解碼得到最終的識別結果。
最早采用的網絡結構是前饋全連接神經網路(Feedforward Fully-connected Neural Networks, FNN)。FNN實現固定輸入到固定輸出的一對一映射,其存在的缺陷是沒法有效利用語音信號內在的長時相關性信息。一種改進的方案是采用基於長短時記憶單元(Long-Short Term Memory,LSTM)的循環神經網絡(Recurrent Neural Networks,RNN)。LSTM-RNN通過隱層的循環反饋連接,可以將歷史信息存儲在隱層的節點中,從而可以有效地利用語音信號的長時相關性。
圖 1. 基於DNN-HMM的語音識別系統框圖
進一步地通過使用雙向循環神經網絡(BidirectionalRNN),可以有效地利用語音信號歷史以及未來的信息,更有利於語音的聲學建模。基於循環神經網絡的語音聲學模型相比於前饋全連接神經網絡可以獲得顯著的性能提升。但是循環神經網絡相比於前饋全連接神經網絡模型更加復雜,往往包含更多的參數,這會導致模型的訓練以及測試都需要更多的計算資源。
另外基於雙向循環神經網絡的語音聲學模型,會面臨很大的時延問題,對於實時的語音識別任務不適用。現有的一些改進的模型,例如,基於時延可控的雙向長短時記憶單元(Latency Controlled LSTM,LCBLSTM )[1-2],以及前饋序列記憶神經網絡(Feedforward SequentialMemory Networks,FSMN)[3-5]。去年我們在工業界第一個上線了基於LCBLSTM的語音識別聲學模型。配合阿裏的大規模計算平臺和大數據,采用多機多卡、16bit量化等訓練和優化方法進行聲學模型建模,取得了相比於FNN模型約17-24%的相對識別錯誤率下降。
FSMN模型的前世今生
1. FSMN模型
FSMN是近期被提出的一種網絡結構,通過在FNN的隱層添加一些可學習的記憶模塊,從而可以有效地對語音的長時相關性進行建模。FSMN相比於LCBLSTM不僅可以更加方便地控制時延,而且也能獲得更好的性能,需要的計算資源也更少。但是標準的FSMN很難訓練非常深的結構,會由於梯度消失問題導致訓練效果不好。而深層結構的模型目前在很多領域被證明具有更強的建模能力。因而針對此我們提出了一種改進的FSMN模型,稱之為深層的FSMN(DeepFSMN, DFSMN)。進一步地我們結合LFR(lowframe rate)技術構建了一種高效的實時語音識別聲學模型,相比於去年我們上線的LCBLSTM聲學模型可以獲得超過20%的相對性能提升,同時可以獲得2-3倍的訓練以及解碼的加速,可以顯著地減少我們的系統實際應用時所需要的計算資源。
圖 2. FSMN模型結構以及和RNN的對比
2. FSMN到cFSMN的發展歷程
最早提出的FSMN的模型[3]結構如圖 2(a)所示,其本質上是一個前饋全連接神經網絡,通過在隱層旁添加一些記憶模塊(memory block)來對周邊的上下文信息進行建模,從而使得模型可以對時序信號的長時相關性進行建模。記憶模塊采用如圖 2(b)所示的抽頭延遲結構將當前時刻以及之前 N 個時刻的隱層輸出通過一組系數編碼得到一個固定的表達。FSMN的提出是受到數字信號處理中濾波器設計理論的啟發:任何無限響應沖擊(Infinite Impulse Response, IIR)濾波器可以采用高階的有限沖擊響應(Finite Impulse Response, FIR)濾波器進行近似。從濾波器的角度出發,如圖 2(c)所示的RNN模型的循環層就可以看作如圖 2(d)的一階IIR濾波器。而FSMN采用的采用如圖 2(b)所示的記憶模塊可以看作是一個高階的FIR濾波器。從而FSMN也可以像RNN一樣有效地對信號的長時相關性進行建模,同時由於FIR濾波器相比於IIR濾波器更加穩定,因而FSMN相比於RNN訓練上會更加簡單和穩定。
根據記憶模塊編碼系數的選擇,可以分為:1)標量FSMN(sFSMN);2)矢量FSMN(vFSMN)。sFSMN 和 vFSMN顧名思義就是分別使用標量和矢量作為記憶模塊的編碼系數。sFSMN和vFSMN記憶模塊的表達分別如下公式:
以上的FSMN只考慮了歷史信息對當前時刻的影響,我們可以稱之為單向的FSMN。當我們同時考慮歷史信息以及未來信息對當前時刻的影響時,我們可以將單向的FSMN進行擴展得到雙向的FSMN。雙向的sFSMN和vFSMN記憶模塊的編碼公式如下:
這裏
和
分別代表回看(look-back)的階數和向前看(look-ahead)的階數。我們可以通過增大階數,也可以通過在多個隱層添加記憶模塊來增強FSMN對長時相關性的建模能力。
圖 3. cFSMN結構框圖
FSMN相比於FNN,需要將記憶模塊的輸出作為下一個隱層的額外輸入,這樣就會引入額外的模型參數。隱層包含的節點越多,則引入的參數越多。研究[4]結合矩陣低秩分解(Low-rank matrix factorization)的思路,提出了一種改進的FSMN結構,稱之為簡潔的FSMN(CompactFSMN,cFSMN),是一個第l 個隱層包含記憶模塊的cFSMN的結構框圖。
對於cFSMN,通過在網絡的隱層後添加一個低維度的線性投影層,並且將記憶模塊添加在這些線性投影層上。進一步的,cFSMN對記憶模塊的編碼公式進行了一些改變,通過將當前時刻的輸出顯式地添加到記憶模塊的表達中,從而只需要將記憶模塊的表達作為下一層的輸入。這樣可以有效得減少模型的參數量,加快網絡的訓練。具體單向和雙向的cFSMN記憶模塊的公式表達分別如下:
LFR-DFSMN聲學模型
1. Deep-FSMN (DFSMN)網絡結構
如圖 4是我們進一步提出的Deep-FSMN(DFSMN)的網絡結構框圖,其中左邊第一個方框代表輸入層,右邊最後一個方框代表輸出層。我們通過在cFSMN的記憶模塊(紅色框框表示)之間添加跳轉連接(skip connection),從而使得低層記憶模塊的輸出會被直接累加到高層記憶模塊裏。這樣在訓練過程中,高層記憶模塊的梯度會直接賦值給低層的記憶模塊,從而可以克服由於網絡的深度造成的梯度消失問題,使得可以穩定地訓練深層的網絡。我們對記憶模塊的表達也進行了一些修改,通過借鑒擴張(dilation)卷積[6]的思路,在記憶模塊中引入一些步幅(stride)因子,具體的計算公式如下:
其中
表示第
層記憶模塊第t個時刻的輸出。S1和S2分別表示歷史和未來時刻的編碼步幅因子,例如S1=2則表示對歷史信息進行編碼時每隔一個時刻取一個值作為輸入。這樣在相同的階數的情況下可以看到更遠的歷史,從而可以更加有效的對長時相關性進行建模。
對於實時的語音識別系統我們可以通過靈活的設置未來階數來控制模型的時延,在極端情況下,當我們將每個記憶模塊的未來階數都設置為0,則我們可以實現無時延的一個聲學模型。對於一些任務,我們可以忍受一定的時延,我們可以設置小一些的未來階數。
相比於之前的cFSMN,我們提出的DFSMN優勢在於,通過跳轉連接可以訓練很深的網絡。對於原來的cFSMN,由於每個隱層已經通過矩陣的低秩分解拆分成了兩層的結構,這樣對於一個包含4層cFSMN層以及兩個DNN層的網絡,總共包含的層數將達到13層,從而采用更多的cFSMN層,會使得層數更多而使得訓練出現梯度消失問題,導致訓練的不穩定性。我們提出的DFSMN通過跳轉連接避免了深層網絡的梯度消失問題,使得訓練深層的網絡變得穩定。需要說明的是,這裏的跳轉連接不僅可以加到相鄰層之間,也可以加到不相鄰層之間。跳轉連接本身可以是線性變換,也可以是非線性變換。具體的實驗我們可以實現訓練包含數十層的DFSMN網絡,並且相比於cFSMN可以獲得顯著的性能提升。
從最初的FSMN到cFSMN不僅可以有效地減少模型的參數,而且可以獲得更好的性能[4]。進一步的在cFSMN的基礎上,我們提出的DFSMN,可以更加顯著地提升模型的性能。如下表是在一個2000小時的英文任務上基於BLSTM,cFSMN,DFSMN的聲學模型性能對比。
Model | BLSTM | cFSMN | DFSMN |
WER% | 10.9 | 10.8 | 9.4 |
從上表中可以看到,在2000小時這樣的任務上,DFSMN模型可以獲得比BLSTM聲學模型相對14%的錯誤率降低,顯著提高了聲學模型的性能。
2. 基於LFR-DFSMN的語音識別聲學模型
圖 5. LFR-DFSMN聲學模型結構框圖
目前的聲學模型,輸入的是每幀語音信號提取的聲學特征,每幀語音的時長通常為10ms,對於每個輸入的語音幀信號會有相對應的一個輸出目標。最近有研究提出一種低幀率(LowFrame Rate,LFR)[7]建模方案:通過將相鄰時刻的語音幀進行綁定作為輸入,去預測這些語音幀的目標輸出得到的一個平均輸出目標。具體實驗中可以實現三幀(或更多幀)拼接而不損失模型的性能。從而可以將輸入和輸出減少到原來的三分之一甚至更多,可以極大地提升語音識別系統服務時聲學得分的計算以及解碼的效率。我們結合LFR和以上提出的DFSMN,構建了如圖 5的基於LFR-DFSMN的語音識別聲學模型,經過多組實驗我們最終確定了采用一個包含10層cFSMN層+2層DNN的DFSMN作為聲學模型,輸入輸出則采用LFR,將幀率降低到原來的三分之一。識別結果和去年我們上線的最好的LCBLSTM基線比較如下表所示。
CER% | 產品線A | 產品線B |
LFR-LCBLSTM | 18.92 | 10.21 |
LFR-DFSMN | 15.00(+20.72%) | 8.04(21.25%) |
通過結合LFR技術,我們可以獲得三倍的識別加速。從上表中可以看到,在實際工業規模應用上,LFR-DFSMN模型比LFR-LCBLSTM模型可以獲得20%的錯誤率下降,展示了對大規模數據更好的建模特性。
基於多機多卡的大數據聲學模型訓練
實際的語音識別服務通常會面對非常復雜的語音數據,語音識別聲學模型一定要盡可能地覆蓋各種可能的場景,包括各種對話、各種聲道、各種噪音甚至各種口音,這就意味著海量的數據。而如何應用海量數據快速訓練聲學模型並上線服務,就直接關系到業務相應速度。
我們利用阿裏的MaxCompute計算平臺和多機多卡並行訓練工具,在使用8機16GPU卡、訓練數據為5000小時的情況下,關於LFR-DFSMN聲學模型和LFR-LCBLSTM的訓練速度如下表:
處理一個epoch需要的時間 | |
LFR-LCBLSTM | 10.8小時 |
LFR-DFSMN | 3.4小時 |
相比於基線LCBLSTM模型,每個epoch DFSMN可以獲得3倍的訓練速度提升。在2萬小時的數據量上訓練LFR-DFSMN,模型收斂一般只需要3-4個epoch,因此在16GPU卡的情況下,我們可以在2天左右完成2萬小時數據量的LFR-DFSMN聲學模型的訓練。
解碼延時、識別速度和模型大小
設計更為實用化的語音識別系統,我們不僅需要盡可能地提升系統的識別性能,而且需要考慮系統的實時性,這樣才能給用戶提供更好的體驗。此外在實際應用中我們還需要考慮服務成本,因而對於語音識別系統的功耗也有一定的要求。傳統的FNN系統,需要使用拼幀技術,解碼延遲通常在5-10幀,大約50-100ms。而去年上線的LCBLSTM系統,解決了BLSTM的整句延遲的問題,最終可以將延時控制在20幀左右,大約200ms。對於一些對延時有更高要求的線上任務,還可以在少量損失識別性能的情況下(0.2%-0.3%絕對值左右),將延遲控制在100ms,完全可以滿足各類任務的需求。LCBLSTM相比於最好的FNN可以獲得超過20%的相對性能提升,但是相同CPU上識別速度變慢(即功耗高),這主要是由模型的復雜度導致。
我們最新的LFR-DFSMN,通過LFR技術可以將識別速度加速3倍以上,進一步的DFSMN相比於LCBLSTM在模型復雜度上可以再降低3倍左右。如下表是我們在一個測試集上統計的不同的模型需要的識別時間,時間越短則表示我們所需要的計算功耗越低:
模型 | 整個測試集識別所需要的時間 |
LCBLSTM | 956秒 |
DFSMN | 377秒 |
LFR-LCBLSTM | 339秒 |
LFR-DFSMN | 142秒 |
關於LFR-DFSMN的解碼時延問題,我們可以通過減小記憶模塊濾波器向未來看的階數來減小時延。具體實驗中我們驗證了不同的配置,當我們將LFR-DFSMN的延時控制在5-10幀時,大致只損失相對3%的性能。
此外,相對於復雜的LFR-LCBLSTM模型,LFR-DFSMN模型具有模型精簡的特點,雖然有10層DFSMN,但整體模型大小只有LFR-LCBLSTM模型的一半,模型大小壓縮了50%。
本文作者:張仕良
原文鏈接
重磅!MaxCompute助力阿裏開源自研語音識別模型DFSMN,準確率高達96.04%