重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

阿里技術發表於2019-01-16

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

阿里妹導讀:語音識別技術作為人工智慧技術中的重要組成部分,成為影響人機互動的核心元件之一,從各種智慧家用IoT裝置的語音互動能力,到公共服務、智慧政務等場合的應用,語音識別技術正在影響著人們生活的方方面面。

本文將全面介紹阿里雲語音識別技術中的重要模型端技術,希望和業界同仁交流探討。

聲學模型、語言模型和解碼器可以看作是現代語音識別系統最核心的三個組成部分。雖然最近有一些研究者嘗試構建End2end的語音識別系統,但包含聲學模型、語言模型和解碼器的現代語音識別系統依然是當前最主流和使用最廣泛的系統。在這其中,聲學模型主要用來構建輸入語音和輸出聲學單元之間的概率對映關係;語言模型用來描述不同字詞之間的概率搭配關係,使得識別出的句子更像自然文字;解碼器負責結合聲學單元概率數值和語言模型在不同搭配上的打分進行篩選,最終得到最可能的識別結果。

隨著近幾年深度學習的火熱,語音識別領域也紛紛投入深度學習的大潮之中。將傳統HMM-GMM聲學模型替換成HMM-DNN聲學模型後,可以獲得超過20%的相對提升,在傳統N-Gram語言模型基礎上疊加NN-LM語言模型也可以獲得進一步的提高。

在這過程中,聲學模型由於更適合採用深度神經網路模型,從而受到研究者更多的關注。本文主要介紹阿里雲語音識別技術中採用的聲學模型技術和語言模型技術,包括LC-BLSTM聲學模型、LFR-DFSMN聲學模型和NN-LM語言模型,其中LC-BLSTM是對傳統BLSTM模型的一種改進,在保持了高準確率的同時,提供了低延時的特性;而DFSMN是一種新穎的非遞迴結構的神經網路卻可以像RNN一樣對訊號的長時相關進行建模,同時可以獲得更穩定的訓練效果和更好的識別準確。NN-LM語言模型是近年來在傳統N-Gram語言模型基礎上獲得的進一步改進。

Latency-Controlled BLSTM模型 

DNN(即fully connected DNN)模型的優點在於通過增加神經網路的層數和節點數,擴充套件了網路對於複雜資料的抽象和建模能力,但同時DNN模型也存在一些不足,例如DNN中一般採用拼幀來考慮上下文相關資訊對於當前語音幀的影響,這並不是反映語音序列之間相關性的最佳方法。自迴歸神經網路(RNN)在一定程度上解決了這個問題,它通過網路節點的自連線達到利用序列資料間相關性的目的。進一步有研究人員提出一種長短時記憶網路(LSTM-RNN),它可以有效減輕簡單RNN容易出現的梯度爆炸和梯度消散問題,而後研究人員又對LSTM進行了擴充套件,使用雙向長短時記憶網路(BLSTM-RNN)進行聲學模型建模,以充分考慮上下文資訊的影響。

BLSTM模型可以有效地提升語音識別準確率,相比於DNN模型,相對效能提升可以達到15%-20%。但同時BLSTM模型也存在兩個非常重要的問題:

  1. 句子級進行更新,模型的收斂速度通常較慢,並且由於存在大量的逐幀計算,無法有效發揮GPU等平行計算工具的計算能力,訓練會非常耗時;

  2. 由於需要用到整句遞迴計算每一幀的後驗概率,解碼延遲和實時率無法得到有效保證,很難應用於實際服務。

對於這兩個問題,學術界首先提出Context-Sensitive-Chunk BLSTM(CSC-BLSTM)的方法加以解決,而此後又提出了Latency Controlled BLSTM(LC-BLSTM)這一改進版本,更好、更高效地減輕了這兩個問題。我們在此基礎上採用LC-BLSTM-DNN混合結構配合多機多卡、16bit量化等訓練和優化方法進行聲學模型建模,取得了相比於DNN模型約17-24%的相對識別錯誤率下降。 

典型的LSTM節點結構由3個gate組成:input gate、forget gate、output gate和一個cell組成,輸入、輸出節點以及cell同各個門之間都存在連線;inputgate、forget gate同cell之間也存在連線,cell內部還有自連線。這樣通過控制不同門的狀態,可以實現更好的長短時資訊儲存和誤差傳播。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

LSTM可以像DNN一樣逐層堆積成為DeepLSTM,為了更好地利用上下文資訊,還可以使用BLSTM逐層堆積構造Deep BLSTM,其結構如下圖所示,網路中沿時間軸存在正向和反向兩個資訊傳遞過程,每一個時間幀的計算都依賴於前面所有時間幀和後面所有時間幀的計算結果,對於語音訊號這種時序序列,該模型充分考慮了上下文對於當前語音幀的影響,能夠極大提高音素狀態的分類準確率

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

然而由於標準的BLSTM是對整句語音資料進行建模,訓練和解碼過程存在收斂慢、延遲高、實時率低等問題,針對這些弊端我們採用了Latency Controlled BLSTM進行解決,與標準的BLSTM使用整句語音進行訓練和解碼不同,Latency Control BLSTM使用類似truncated BPTT的更新方式,並在cell中間狀態處理和資料使用上有著自己的特點,如下圖所示,訓練時每次使用一小段資料進行更新,資料由中心chunk和右向附加chunk構成,其中右向附加chunk只用於cell中間狀態的計算,誤差只在中心chunk上進行傳播。

時間軸上正向移動的網路,前一個資料段在中心chunk結束時的cell中間狀態被用於下一個資料段的初始狀態,時間軸上反向移動的網路,每一個資料段開始時都將cell中間狀態置為0。該方法可以很大程度上加快網路的收斂速度,並有助於得到更好的效能。解碼階段的資料處理與訓練時基本相同,不同之處在於中心chunk和右向附加chunk的維度可以根據需求進行調節,並不必須與訓練採用相同配置。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

LFR-DFSMN模型 

FSMN是近期被提出的一種網路結構,通過在前饋全連線神經網路(Feedforward Fully-connectedNeural Networks,FNN)的隱層新增一些可學習的記憶模組,從而可以有效地對訊號的長時相關性進行建模。

FSMN相比於LCBLSTM不僅可以更加方便的控制時延,而且往往也能獲得更好的效能,需要的計算資源也更少。但是標準的FSMN很難訓練非常深層的結構,由於梯度消失問題導致訓練效果不好。而深層結構的模型目前在很多領域被證明具有更強的建模能力。因而針對此我們提出了一種改進的FSMN模型,稱之為深層的FSMN(Deep FSMN, DFSMN)。

進一步的我們結合低幀率(Low Frame Rate,LFR)技術構建了一種高效的實時語音識別聲學模型,相比於去年我們上線的LFR-LCBLSTM聲學模型可以獲得超過20%的相對效能提升,同時可以獲得2-3倍的訓練以及解碼的加速,可以顯著的減少我們的系統實際應用時所需要的計算資源。 

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

最早提出的FSMN的模型結構如上圖(a)所示,其本質上是一個前饋全連線神經網路,通過在網路的某些隱層旁新增一些記憶模組(memory block)來對當前時刻周邊的上下文資訊進行建模,從而使得模型可以對時序訊號的長時相關性進行建模。記憶模組採用如上圖(b)所示的抽頭延遲結構將當前時刻以及之前 N 個時刻的隱層輸出通過一組係數編碼得到一個固定的表達。 

FSMN的提出是受到數字訊號處理中濾波器設計理論的啟發:任何無限響應衝擊(Infinite Impulse Response, IIR)濾波器可以採用高階的有限衝擊響應(FiniteImpulseResponse, FIR)濾波器進行近似。 

從濾波器的角度出發,如上圖(c)所示的RNN模型的迴圈層就可以看作如上圖(d)的一階IIR濾波器。而FSMN採用的採用如上圖(b)所示的記憶模組可以看作是一個高階的FIR濾波器。從而FSMN也可以像RNN一樣有效的對訊號的長時相關性進行建模,同時由於FIR濾波器相比於IIR濾波器更加穩定,因而FSMN相比於RNN訓練上會更加簡單和穩定。

根據記憶模組編碼係數的選擇,可以分為: 

  • 標量FSMN(sFSMN)

  • 向量FSMN(vFSMN)

 sFSMN 和 vFSMN 顧名思義就是分別使用標量和向量作為記憶模組的編碼係數。 

以上的FSMN只考慮了歷史資訊對當前時刻的影響,我們可以稱之為單向的FSMN。當我們同時考慮歷史資訊以及未來資訊對當前時刻的影響時,我們可以將單向的FSMN進行擴充套件得到雙向的FSMN。

FSMN相比於FNN,需要將記憶模組的輸出作為下一個隱層的額外輸入,這樣就會引入額外的模型引數。隱層包含的節點越多,則引入的引數越多。研究結合矩陣低秩分解(Low-rank matrix factorization)的思路,提出了一種改進的FSMN結構,稱之為簡潔的FSMN(Compact FSMN,cFSMN)。下圖是一個第l個隱層包含記憶模組的cFSMN的結構框圖。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

對於cFSMN,通過在網路的隱層後新增一個低維度的線性投影層,並且將記憶模組新增在這些線性投影層上。進一步的,cFSMN對記憶模組的編碼公式進行了一些改變,通過將當前時刻的輸出顯式的新增到記憶模組的表達中,從而只需要將記憶模組的表達作為下一層的輸入。這樣可以有效的減少模型的引數量,加快網路的訓練。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

上圖是我們進一步提出的Deep-FSMN(DFSMN)的網路結構框圖,其中左邊第一個方框代表輸入層,右邊最後一個方框代表輸出層。我們通過在cFSMN的記憶模組(紅色框框表示)之間新增跳轉連線(skip connection),從而使得低層記憶模組的輸出會被直接累加到高層記憶模組裡。這樣在訓練過程中,高層記憶模組的梯度會直接賦值給低層的記憶模組,從而可以克服由於網路的深度造成的梯度消失問題,使得可以穩定的訓練深層的網路。

相比於之前的cFSMN,DFSMN優勢在於,通過跳轉連線可以訓練很深的網路。對於原來的cFSMN,由於每個隱層已經通過矩陣的低秩分解拆分成了兩層的結構,這樣對於一個包含4層cFSMN層以及兩個DNN層的網路,總共包含的層數將達到13層,從而採用更多的cFSMN層,會使得層數更多而使得訓練出現梯度消失問題,導致訓練的不穩定性。

我們提出的DFSMN通過跳轉連線避免了深層網路的梯度消失問題,使得訓練深層的網路變得穩定。需要說明的是,這裡的跳轉連線不僅可以加到相鄰層之間,也可以加到不相鄰層之間。跳轉連線本身可以是線性變換,也可以是非線性變換。具體的實驗我們可以實現訓練包含數十層的DFSMN網路,並且相比於cFSMN可以獲得顯著的效能提升。 

從最初的FSMN到cFSMN不僅可以有效的減少模型的引數,而且可以獲得更好的效能。進一步的在cFSMN的基礎上,我們提出的DFSMN,可以更加顯著的提升模型的效能。如下表是在一個2000小時的英文任務上基於BLSTM,cFSMN,DFSMN的聲學模型效能對比。

Model

BLSTM

cFSMN

DFSMN

WER%

10.9

10.8

9.4

從上表中可以看到,在2000小時這樣的任務上,DFSMN模型可以獲得比BLSTM聲學模型相對14%的錯誤率降低,顯著提高了聲學模型的效能。

傳統的聲學模型,輸入的是每幀語音訊號提取的聲學特徵,每幀語音的時長通常為10ms,對於每個輸入的語音幀訊號會有相對應的一個輸出目標。最近有研究提出一種低幀率(Low Frame Rate,LFR)建模方案:通過將相鄰時刻的語音幀進行繫結作為輸入,去預測這些語音幀的目標輸出得到的一個平均輸出目標。具體實驗中可以實現三幀(或更多幀)拼接而不損失模型的效能。

從而可以將輸入和輸出減少到原來的三分之一甚至更多,可以極大的提升語音識別系統服務時聲學得分的計算以及解碼的效率。我們結合LFR和以上提出的DFSMN,構建了基於LFR-DFSMN的語音識別聲學模型,經過多組實驗我們最終確定了採用一個包含10層cFSMN層+2層DNN的DFSMN作為聲學模型,輸入輸出則採用LFR,將幀率降低到原來的三分之一。識別結果和去年我們上線的最好的LCBLSTM基線比較如下表所示。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

通過結合LFR技術,我們可以獲得三倍的識別加速。從上表中可以看到,在實際工業規模應用上,LFR-DFSMN模型比LFR-LCBLSTM模型可以獲得20%的錯誤率下降,展示了對大規模資料更好的建模特性。

NN-LM語言模型

語言模型,顧名思義,對語言進行建模的模型。語言表達可以看作一串字元序列,不同的字元序列組合代表不同的含義,字元的單位可以是字或者詞。語言模型的任務,可以看作是給定字元序列,如何估計該序列的概率,或者說,如何估計該序列的合理性。

P(上海 的 工人 師傅 有 力量)>P(上海 的 工人 食腐 有 力量) 

拿這句話做個例子。比如到底應該是“工人師傅有力量”,還是“工人食腐有力量”,哪句話更“合適”。我們容易判斷左邊這句的概率大一點。於是我們希望通過語言模型的建模,可以給出符合人類預期的概率分配。就像這句,“工人師傅”的概率,大於“工人食腐”的概率。

基於統計詞頻的傳統N元文法模型,通過馬爾可夫假設簡化了模型結構和計算,通過計數的方式計算,通過查詢的方式使用。擁有估計簡單、效能穩定、計算快捷的優勢,有超過三十年的使用歷史。然而其馬爾科夫假設強制截斷建模長度,使得模型無法對較長的歷史建模;基於詞頻的估計方式也使得模型不夠平滑,對於低詞頻詞彙估計不足。隨著神經網路(Neural Networks,NNs)的第三次崛起,人們開始嘗試通過NN來進行語言模型建模。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

 一個典型的建模結構是遞迴神經網路(recurrentneural networks,RNNs),其遞迴的結構理論上可以對無窮長序列進行建模,彌補了N元文法對於序列長度建模的不足;同時其各層間的全向連線也保證了建模的平滑。此外為了提升模型的效能,研究者們還嘗試了通過長短時記憶(Long Short-Term Memory,LSTM)結構來提升基本RNN本身建模能力的不足,進一步提升模型效能。 

NN用於大規模語言建模的系統中,需要面對一些問題,例如大詞表帶來的儲存和計算增加。實際線上系統的詞表往往比較大,而隨著詞表的增加,基本RNN結構的儲存和計算量都會幾何級數爆炸式增長。

為此,研究者們進行了一些嘗試,壓縮詞典尺寸成了一個最直接的解決方案,一個經典的方法是詞表聚類。該方法可以大幅壓縮詞表尺寸,但往往也會帶來一定的效能衰減。更直接的一個想法是直接過濾掉低頻詞彙,這樣依然會帶來一定的效能衰減,據此有一個改進策略,我們發現真正制約速度效能的主要是輸出層節點,輸入層節點大,藉助projection層可以很好解決,於是輸入層採用大辭典,而僅對輸出層詞表進行抑制,這樣不僅儘可能地降低了損失,同時過濾掉過低的詞頻,也有利於模型節點的充分訓練,效能往往還會略有提升。

詞表的壓縮可以提升建模效能,降低計算量和儲存量,但僅限於一定的量級,不可以無限制壓縮,如何繼續降低計算量依然是一個問題。一些方法被提了出來。例如LightRNN,通過類似聚類的方式,利用embedding的思想,把詞表對映到一個實值矩陣上,實際輸出只需要矩陣的行加矩陣的列,計算量大概也能開個方。和節點數多一起造成計算量大的一個原因就是softmax輸出,需要計算所有的節點求個和,然後得到分母。若是這個分母能保持一個常數,實際計算的時候就只算需要的節點,在測試環節就快的多了。

 於是就有了正則項相關的方法,Variance Regularization,如果訓練速度可以接受的話,這種方法在基本不損失模型正確性的情況下可以大幅提升前向計算速度;如果訓練的時候也想提速,還可以考慮基於取樣,sampling的方法,比如NCE、Importance Sampling、Black Sampling等,本質上就是說,在訓練的時候不計算全部節點,只計算正樣本(也就是標籤為1的節點),以及部分通過某種分佈取樣的到的負樣本,避免高輸出造成的計算緩慢。速度上提升還是很明顯的。 

阿里雲獲得開發者模型定製能力

想象一個做智慧電話客服或是智慧會議系統的開發者,需要為他的系統接入語音識別(將語音轉寫為文字)的能力。擺在他面前的會是這樣一個尷尬的局面:

一個選擇是自己從零開始學做語音識別,這可能要花費大量的時間和金錢。畢竟人工智慧這種事情,各大網際網路巨頭投入大量的人力、物力、財力,也要花較長的時間才能積累下技術;

第二個選擇是用上述巨頭們在網際網路上提供的開箱即用的、one size fits all的語音識別介面,時間是省下了,但語音轉文字的準確率嘛,只能碰碰運氣,畢竟巨頭們也很忙,沒有精力為你關注的場景進行優化。

那麼問題來了:有沒有一種手段能夠以最小的投入獲得業務上最佳的語音識別效果呢?答案是肯定的。

阿里雲依託達摩院業界領先的語音互動智慧,打破傳統語音技術提供商的供給模式,在雲端計算時代讓普通開發者也能夠通過阿里雲提供的語音識別雲端自學習技術,獲得定製優化自己所關心的業務場景的成套手段。阿里雲讓廣大的開發者站在巨頭的肩膀上,通過自主可控的自學習,在短時間內實現對語音識別系統應用從入門到精通,並在開發者關心的場景下輕鬆擁有業界頂尖的語音識別準確率。這就是雲端計算時代的語音識別技術全新的供給模式。

與其它人工智慧技術一樣,語音識別技術的關鍵在於演算法、算力和資料三個方面。阿里雲依託達摩院語音互動智慧,近年來持續在世界前沿進行“演算法”演進,近期還將最新的研究成果DFSMN聲學模型開源,供全世界的研究者復現目前最佳的結果並進行持續提升。

在“算力”方面自不用說,這本身就是雲端計算的天然強項。基於阿里雲ODPS-PAI平臺,我們構建了專為語音識別應用優化的CPU/GPU/FPGA/NPU訓練和服務混布平臺,每天服務於阿里雲上巨量的語音識別請求。在“資料”方面,我們提供通過海量資料訓練的、開箱即用的場景模型,包括電商、客服、政務、手機輸入等等。

同時應該看到,在具體的落地場景下往往會有一些非常特殊、領域相關的“說法”需要被識別,很多時候類似於“碎屑岩巖性地層”、“海相碳酸鹽巖”這種特定說法對於通用場景模型的識別率提出了挑戰。要獲得開發者關心的具體場景下最佳的準確率,開箱即用的模型一般還需要一定的定製優化工作才可以達到。傳統上,這樣的定製是通過語音技術服務提供商來完成的,在成本、週期、可控性等方面都存在明顯不足。

阿里雲提供的語音定製“自學習”平臺服務,可以提供多種手段,在很短的時間內、以較低的成本,讓開發者完全掌控模型定製優化及上線的工作。阿里雲創新工具平臺及服務技術,依託強大的基礎設施,使得在雲端計算的大背景下進行大規模定製化語音服務成為可能。而開發者完全無需關心後臺的技術和服務,只需要使用阿里雲提供的簡單易用的“自學習”工具,利用場景知識和資料,就可以獲得該特定場景下最優的效果,並按需要持續迭代提升。

阿里雲的智慧語音自學習平臺具備以下優勢: 

  • 易:智慧語音自學習平臺顛覆性地提供一鍵式自助語音優化方案,極大地降低進行語音智慧優化所需要的門檻,讓不懂技術的業務人員也可以來顯著提高自身業務識別準確率

  • 快:自學習平臺能夠在數分鐘之內完成業務專屬定製模型的優化測試上線,更能支援業務相關熱詞的實時優化,一改傳統定製優化長達數週甚至數月的漫長交付弊端。

  • 準:自學習平臺優化效果在很多內外部合作伙伴和專案上得到了充分驗證,很多專案最終通過自學習平臺不光解決了效果可用性問題,還在專案中超過了競爭對手使用傳統優化方式所取得的優化效果。

舉例來說,開發者可以使用下述多種“自學習”手段來定製自己關心領域的模型:

 a)業務熱詞定製 

在許多特定場所,要求快速對特定詞的識別能力進行加強(注:包括兩種模式,模式一為其他詞易被識別成特定詞;模式二為特定詞易被識別成其他詞),採用實時熱詞載入技術,可以在實時場景下,通過設定不同的檔位,能夠實現熱詞識別能力的加強。

b)類熱詞定製

很多時候,相同的發音相同的屬性在不同上下文上會需要不同的識別效果。聯絡人和地名就是典型的案例,對於不同人的好友,“張陽”和“章揚”我們就必須能準確地識別出相應的名字。同樣,相隔千里的安溪跟安西如果識別錯誤會給導航帶來大麻煩。智慧語音自學習平臺相信“每個人都值得被尊重”,提供聯絡人類和地名類的定製能力,“讓天下沒有難識的路”。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

c)業務專屬模型定製

 使用者通過輸入對應領域的相關文字,如行業或公司的基本介紹、客服聊天記錄、領域常用詞彙和專有名詞等,即可快速自行生成該行業下的定製模型,整個定製過程無需使用者人工干預。

重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來

通過這些手段,阿里雲使得開發者不必關心語音技術的演算法和工程服務細節,專注於他們擅長的垂直領域的知識和資料收集,實現全新的語音技術雲端供給模式,造福於廣大的開發者及其業務結果。

相關文章