重磅!MaxCompute助力阿里開源自研語音識別模型DFSMN,準確率高達96.04%

摘要: 阿里開源語音識別模型DFSMN 在近期舉行的雲棲大會武漢峯會上,裝有DFSMN語音識別模型的「AI收銀員」在與真人店員的PK中,在嘈雜環境下準確識別了用戶的語音點單,在短短49秒內點了34杯咖啡。此外,裝備這一語音識別技術的自動售票機也已在上海地鐵「上崗」。網絡

阿里開源語音識別模型DFSMN

在近期舉行的雲棲大會武漢峯會上,裝有DFSMN語音識別模型的「AI收銀員」在與真人店員的PK中,在嘈雜環境下準確識別了用戶的語音點單,在短短49秒內點了34杯咖啡。此外,裝備這一語音識別技術的自動售票機也已在上海地鐵「上崗」。ide

著名語音識別專家,西北工業大學教授謝磊表示:「阿里這次開源的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),能夠有效地利用語音信號歷史以及將來的信息,更有利於語音的聲學建模。基於循環神經網絡的語音聲學模型相比於前饋全鏈接神經網絡能夠得到顯著的性能提高。可是循環神經網絡相比於前饋全鏈接神經網絡模型更加複雜,每每包含更多的參數,這會致使模型的訓練以及測試都須要更多的計算資源。spa

另外基於雙向循環神經網絡的語音聲學模型,會面臨很大的時延問題,對於實時的語音識別任務不適用。現有的一些改進的模型,例如,基於時延可控的雙向長短時記憶單元(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記憶模塊的編碼公式以下:

這裏

b8260f0f211d4ca657bbbf465e5b3aaf4570b49d

3c2e41c91d9221dcf133f3cd3ffc841199d3b2ab

分別表明回看(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%。

本文做者:張仕良

原文連接

相關文章
相關標籤/搜索