從聲學模型算法總結 2016 年語音識別的重大進步丨硬創公開課

https://zhuanlan.zhihu.com/p/24979135html

 

雷鋒網按:在過去的一年中,語音識別再次取得很是大的突破。IBM、微軟等多家機構相繼推出了本身的 Deep CNN 模型,提高了語音識別的準確率;Residual/Highway 網絡的提出使咱們能夠把神經網絡訓練的更加深。算法

而諸如 CTC、Low Frame Rate、Chain 模型等粗粒度建模單元技術使得語音識別準確率獲得提高的同時,解碼速度也能夠大大加快。網絡

本期雷鋒網硬創公開課特邀供職於阿里巴巴 iDST 的語音專家薛少飛博士,從學術的角度回顧過去一段時間裏語音識別技術的發展情況。架構

嘉賓介紹:

薛少飛,阿里巴巴 iDST 語音識別專家,中國科學技術大學博士。現負責阿里聲學模型研究與應用:包括語音識別聲學建模和深度學習在業務場景中的應用。博士期間的研究方向爲語音識別說話人自適應,提出基於 Speaker Code 的模型域自適應方法,在語音相關的會議和期刊上發表論文十餘篇。框架

本期雷鋒網硬創公開課的分享主要包括三大部分:iphone

  • 深度神經網絡聲學模型發展回顧:簡單回顧深度神經網絡技術在語音識別聲學模型中的應用歷史;函數

  • 前沿聲學模型技術進展:介紹近期幾個比較有意思的聲學模型技術進展,包括 Deep CNN 技術、Residual/Highway 網絡技術和粗粒度建模單元技術。固然這裏並無把全部的新技術進展都囊括進來,好比 Attention 技術。只是以這三條線路爲例看看語 音識別聲學模型技術的進展和將來的發展趨勢。工具

  • 介紹紹阿里巴巴的語音識別聲學模型技術。性能

1、深度神經網絡聲學模型發展回顧

回顧語音識別技術的發展歷史能夠看到,自從上世紀 90 年代語音識別聲學模型的區分性訓練準則和模型自適應方法被提出之後,在很長一段內語音識別的 發展是比較緩慢的,語音識別錯誤率的那條線一直沒有明顯的降低。直到 2006 年 Hinton 提出深度置信網絡(DBN),促使了深度神經網絡(DNN)研究的復甦。學習

2009 年,Hinton 將 DNN 應用於語音的聲學建模,在 TIMIT 上得到了當時最好的結果。2011 年末,微軟研究院的俞棟、鄧力兩位老師又把 DNN 技術應用在了大詞彙量連續語音識別任務上,大大下降了語音識別錯誤率。今後之後基於 DNN 聲學模型技術的研究變得異常火熱。微軟去年 10 月發佈的 Switchboard 語音識別測試中,更是取得了 5.9%的詞錯誤率,第一次實現了和人類同樣的識別水平,這是一個歷史性突破。

那麼什麼是 DNN 的?其實標準的 DNN 一點也不神祕,它和傳統的人工神經 (ANN)在結構上並無本質的區別,只是 ANN 一般只包含一個隱層,而 DNN 則是一般包含至少 3 層以上的隱層,經過增長隱層數量來進行多層的非線性變換,大大的提高了模型的建模能力。

這是基於 DNN 的語音識別系統框架,相比傳統的基於 GMM-HMM 的語音識別系統,其最大的改變是採用 DNN 替換 GMM 模型對語音的觀察機率進行建模。

相比傳統 GMM 模型我以爲有兩點是很是重要的:

  • 1.使用 DNN 不須要對語 音數據分佈進行假設。

  • 2. DNN 的輸入能夠是將相鄰語音幀拼接造成的包含時序結構信息的矢量。

當時訓練 DNN 的廣泛作法是先進行無監督的預訓練,然後進行有監督的調整,後來人們發現當數據量很是大的時候無監督的預訓練並非必要的,固然這是後話了。

促使 DNN 的研究在那時從新興起還有一個很是重要, 而且我我的認爲是最核心的因素,就是計算能力的提高。

之前要在 CPU 上訓練 DNN 是很是慢的,作一個實驗可能須要好幾周甚至幾個月,這是不能忍受的,隨着 GPU 的出現這種狀況發生了變化,GPU 很是適合對矩陣運算進行加速,而 DNN 的訓練最終均可以被拆解成對矩陣的操做,二者自然和諧。

而今隨着 GPU 技術的不斷髮展和進步,咱們可以訓練數據量更大、網絡更深、結構更復雜的模型,這纔有了深度神經網絡技術的迅速發展。

LSTM 模型相信你們都不陌生,它一種特殊的循環神經網絡(RNN)。語音識別原本就是一個時序建模問題,因此很是適合用 RNN 來進行建模。

可是簡單 的 RNN 受限於梯度爆炸和梯度消散問題,比較難以訓練。而 LSTM 經過輸入門、 輸出門和遺忘門能夠更好的控制信息的流動和傳遞,具備長短時記憶能力,並在必定程度上緩解 RNN 的梯度消散和梯度爆炸問題。固然它也有不足之處,計算複雜度相比 DNN 大幅增長,而且因爲遞歸鏈接的存在難以很好的並行。

BLSTM 進一步提高了該類模型的建模能力,相比 LSTM 還考慮了反向時序信息的影響,也即「將來」對「如今」的影響,這在語音識別中也是很是重要的。

固然這種能力的代價就是模型計算複雜度進一步加大,而且一般須要整句進行訓 練:GPU 顯存消耗增大->並行度下降->模型訓練更慢,另外在實際應用中還存在實時性問題。

CTC 技術在過去的一段時間內也很是的火熱,首先要說明的是 CTC 並非模型的變化,而是優化的目標函數發生了改變,DNN、LSTM、CNN 均可以和 CTC 相結合。

傳統的深度神經網絡聲學模型的訓練過程須要先對訓練數據文本序列作 Alignment 獲得分類的「硬判決」,以後以這種「硬判決」的分類爲目標訓練 神經網絡,網絡優化的目標並非最終要識別的結果。和傳統的深度神經網絡聲 學模型相比 CTC 的優化目標是一種所見即所得的優化目標,你要訓練的目標就 是你想要獲得的結果。

傳統的深度神經網絡聲學模型建模單元一般是 state 級的,而 CTC 的建模單元則是 phone 一級甚至是 character 的,state 級反而很差,這種建模粒度的 變化帶來一個好處就是語音數據的冗餘度增長了,相鄰的語音幀原本就會很像並 可能來自於同一個 phone,那麼如今就不須要這麼多幀數據來建模一個句子。

經過拼幀降採樣的方法能夠下降數據的總幀數,在不影響識別準確率的狀況下加快網絡計算的速度。CTC 的另外一個很是重要的貢獻是引入了「Blank」空白,空白的 引入避免了易混淆幀的「強制」對齊。而且使得訓練後的網絡輸出呈現「尖峯」狀 態,大段的 Blank 使得解碼時經過 beam 的靈活調整,能夠加快解碼速度。

語音識別領域有很是多的開源工具,傳統的語音識別開源工具像 CMU SPHINX 系統,是基於統計學原理開發的第一個「非特定人連續語音識別系統」; 劍橋語音識別組推出的 HTK 工具包是 GMM-HMM 時代最爲流行的語音識別工具,我剛接觸語音識別就是從 HTK 開始的。

幾年前推出的 kaldi 嚴格來說並不十 分「傳統」,也是比較新而且在不斷更新的開源工具,目前應該也是使用人數最多的語音識別開源工具。

近兩年來許多深度學習開源框架涌現了出來,像 Theano、 CNTK、TensorFlow 等,接下來我會對傳統的語音識別工具和新的深度學習開源框架作一個對比,那麼我就簡單從幾個我比較關心的維度來拋磚引玉看看 kaldi、CNTK 和 TensorFlow 的異同。

在拓撲基礎方面,kaldi 的 nnet1 和 nnet2 是以層設計爲基礎的,也即當你新增長一種神經網絡層時須要本身定義它的結構,都有哪些變量,正向怎麼算, 反向偏差怎麼傳播等等,而且過於複雜的鏈接方式很難支持。

而 kaldi 的 nnet3 和 CNTK 以及 TensorFlow 都是以圖結構爲基礎的,經過配置文件實現對網絡鏈接方式的定義,數據就像流水同樣在你定義的網絡圖中游走,並本身實現偏差的 反向傳播,它的優勢是你能夠專一網絡拓撲結構的設計,而不用爲網絡計算的細 節而費心,特別是偏差的反向傳播。

但這也帶來一個問題,尤爲是對初學者而言, 會形成只是在設計網絡長成什麼樣子,但並不清楚其中的實現細節。初學者最好多推推公式,對打下一個堅實的基礎絕對有好處。

在語音識別其它工具支持方面,kaldi 有全套的語音識別工具,包括解碼器、 創建決策樹、GMM 訓練等等,而 CNTK 和 TensorFlow 在這方面並無特別的支持,值得一提的是 CNTK 裏提供了把 kaldi 數據處理成爲 CNTK 數據格式的工具,使的用 kaldi 的人也能夠很快上手 CNTK,你們不妨試一下。

最後一個我比較關心的因素就是是否支持多機多卡,由於隨着數據量和模型複雜度的不斷攀升,僅僅用一個 GPU 很難知足模型訓練的須要,必須使用多個 GPU 來加速訓練。在這方面目前 kaldi、CNTK、TensorFlow 都已經支持。

最後個人建議是對於語音識別的初學者和低年級的研究生來說,用 kaldi 入門學習算法和實踐理論知識是比較好的選擇,對於高年級研究生和具備必定年限的從業人員來說,就看本身的喜愛了,你們都是異曲同工,工具不是決定性的, 數據、算法和模型纔是。

2、前沿神學模型的技術進展

接下來介紹一下 Deep CNN 技術、Residual/Highway 網絡技術和粗粒度建模 單元技術。去年有多家機構都推出了本身的 Deep CNN 模型,像 IBM、微軟等,我這裏以 IBM 的 Deep CNN 爲例,一塊兒探討一下到底哪些關鍵因素使得 Deep CNN 可以取得這麼好的效果。

其實 CNN 被用在語音識別中已經不是一天兩天了,在 十二、13 年的時候 Ossama Abdel-Hamid 就將 CNN 引入了語音識別中。

那時候的卷積層和 pooling 層是交替出現的,而且卷積核的規模是比較大的,CNN 的層數也不是特別的多, 主要是用來對特徵進行進一步的加工和處理,使其能更好的被用於 DNN 的分類。

後來隨着 CNN 技術在圖像領域的發展,狀況慢慢出現了變化,人們在圖像領域 的研究中發現多層卷積以後再接 pooling 層,減少卷積核的尺寸可使得咱們可以訓練更深的、效果更好的 CNN 模型。相應的方法被借鑑到了語音識別中,並 根據語音識別的特色進行了進一步的優化。

IBM 的研究人員在 16 年的 ICASSP 上發表文章,稱使用 3x3 的小卷積核和 多層卷積以後再接 pooling 的技術能夠訓練出 14 層(包含全鏈接)Deep CNN 模型。

在 Switchboard 數據集上相比傳統的 CNN 使用方法能夠帶來相對約 10.6%WER 降低。小尺寸的卷積核和多層卷積以後再接 pooling 的技術是使 Deep CNN 可以成功的關鍵點。

接下來介紹一下 Residual/Highway 網絡以及它們目前在語音識別中的應用狀況。

Residual 網絡會這麼出名得益於 MSRA 的 152 層讓人「瘋狂」的深度神經網絡,憑藉着它 MSRA 在 2015 ImageNet 計算機識別挑戰賽中以絕對優點得到圖像分類、圖像定位以及圖像檢測所有三個主要項目的冠軍。

在公開的論文當中, 做者詳細解讀了他們的「心路歷程」。

研究人員發如今深度神經網訓練過程當中老是會出現」Degration Problem」,即當網絡深度達到必定程度之後,隨着網絡深度的 增長 training error 將不降反增,而且這不是因爲過擬合引發的。

通常來說咱們 認爲一個淺層網絡 A 疊加幾層成爲網絡 B,若是疊加的幾層權重都是單位矩陣,那麼 B 的性能至少不會比 A 差,但現實並不是如此,網絡本身很難學習到這種變換。

而相比與學習目標函數而言殘差更容易學習,因而提出了一種 residual learning 的結構,增長了一個越層的短鏈接。個人理解是這種短鏈接一方面避免了前向計算中非線性變換對數據的過分加工,另外一方面在偏差反向傳播時經過直 連通路,可讓偏差有路徑直接回傳,抑制梯度消散。

大約稍早,Srivastava 在 arxiv 上傳了他的 Highway 網絡工做,在 Highway 網絡中一個隱層節點的輸出再也不單單是輸入經過非線性變換後的數值,而是變成 了經過 Transform gate 和 Carry gate 對非線性變換後的數值和輸入進行加權獲得的結果。Residual 網絡能夠被當作是 Highway 網絡的一種不額外增長參數量的特例。

Residual/Highway 網絡這麼有效果,語音識別領域的研究人員固然也會關注並使用。我來舉幾個例子,在「Highway Long Short-Term Memory RNNs for Distant Speech Recognition」中做者提出 Highway LSTM 結構,引入了一種 carry gate,Carry gate 控制當前層 cell 狀態計算有多少來自於前一層的 cell 狀態, carry gate 的計算又取決於當前層的輸入、當前層前一時刻的 cell 狀態和前一層當前時刻的 cell 狀態。經過這種模型結構實現了信息在模型內部更好的跨層流動。

在 」Multidimensional Residual Learning Based on Recurrent Neural Networks for Acoustic Modeling」中做者將 Residual 的概念應用到 LSTM 模型 中,並在 TIMIT 和 HKUST 兩個數據集上驗證了實驗效果。

在 」Renals.Small-footprint Deep Neural Networks with Highway Connections for Speech Recognition」中做者對比了 Residual DNN 和 Highway DNN 在語音識別上的效果,獲得的結論是:」 residual networks are more powerful to train deeper networks compared to plain DNNs, particular with ReLU activation functions which reduce the optimisation difficulty. However, highway networks are more flexible with the activation functions due to the two gating functions that control the follow of information.」

下面是粗粒度建模單元技術,Low frame rate 技術我會放到後面結合阿里巴巴的聲學模型技術進行說明,先來看一下 Chain 模型。Chain 模型是 kaldi 的做者 Daniel Povey 近期力推的工做,它使用的也是 DNN-HMM 架構,表中我列出了 chain 模型和傳統的神經網絡聲學模型建模的不一樣點。

在建模單元方面,傳統神經網絡聲學模型的建模單元通常是 3 狀態或者 5 狀態的 CD phone,而 chain 模型的建模單元則是 2 狀態,其中 sp 是最主要用來表徵該 CD phone 的狀態,而 sb 則是該 CD phone 的「Blank」空白,空白的概念 其實和 CTC 中的很類似,只是在 chain 模型中每個建模單元都有本身的空白。

在訓練方法上,傳統神經網絡聲學模型須要先進行 Cross-Entropy 訓練,後進行區分性準則訓練。而 chain 模型直接進行 Lattice-Free MMI 訓練,固然其後還可 以接着進行區分性準則訓練,可是從目前的報道來看,這部分的提高是比較小的。

在解碼幀率方面因爲 chain 模型使用的是拼幀而後降採樣的方法,解碼的幀率只有傳統神經網絡聲學模型的三分之一,而識別準確率方面相比傳統模型會有很是明顯的提高。 總結一下我認爲將來深度神經網絡聲學模型主要有三個發展方向。

1.更 Deep 更復雜的網絡

相似MSRA152 層 ResNet 的技術,雖然以目前的計算能力在語音識別 的實際應用中這種複雜網絡結構的模型暫時還不能落地,可是持續不斷 的研究和探索能夠爲咱們明確咱們努力的方向和能力所能達到的上界。

2. End to End 的識別系統

End to End 的識別系統一直是近年來比較火的研究方向,如 CTC、 Attention 等都是在這方面很是有意義的工做,在海量規模的語音數據上 創建計算速度快、識別準確率高的 End to End 的識別系統會是將來的 一個重要課題。

3. 粗粒度的建模單元 state->phone->character

粗粒度建模單元的技術對於加快語音識別的解碼速度具備很是重要的 意義,而反過來解碼速度的提高又可讓使用更深、更復雜神經網絡建 模聲學模型成爲可能。

3、阿里巴巴的語音識別聲學模型技術

最後分享一下阿里巴巴團隊在語音識別聲學模型技術方面的一些工做。

在工業界作語音識別,數據量是很是龐大的,上萬小時的語音數據是再正常 不過的,面對如此龐大的數據量,使用單機單 GPU 或者單機多 GPU 進行模型 的訓練是遠遠不能知足需求的,必須具備多機多 GPU 進行模型訓練的能力。

咱們使用的基於 Middleware 的多機多卡方案。GPU Middleware 提供了 API 接口使得咱們能夠經過對訓練工具(kaldi、caffe 等)的簡單修改實現並行訓練。而且能夠自主管理任務隊列、數據分發、通訊、同步等,是咱們可以更多的專一於算法自己。採用 Master-slave 模式,支持 MA / SGD / ASGD 等。

這是 Model Averaging 的一個示例:

表格裏給出的是在 5000h 小時訓練數據狀況下訓練 DNN 模型的加速效果, 能夠看到使用 8 個 GPU 的狀況下大約能夠取得 7.2 倍的加速,使用 16 個 GPU 的狀況下大約能夠取得 14.3 倍的加速。咱們目前使用的是 Latency-control BLSTM 模型,這裏面有從 BLSTM 到 CSC-BLSTM 再到 LC-BLSTM 的發展歷程。

咱們知道 BLSTM 能夠有效地提高語音識別的準確率,相比於 DNN 模型,相對性能提高能夠達到 15%-20%。

但同時 BLSTM 也存在兩個很是重要的問題:

1. 句子級進行更新,模型的收斂速度一般較慢,而且因爲存在大量的逐幀計算,沒法有效發揮 GPU 等並行計算工具的計算能力,訓練會很是耗時;

2. 因爲須要用到整句遞歸計算每一幀的後驗機率,解碼延遲和實時率沒法獲得有效保證,很難應用於實際服務。對於這兩個問題,前 MSRA lead researcher,目前已是阿里巴巴 iDST 語 音團隊負責人的鄢志傑和他當時在微軟的實習生一塊兒首先提出 ContextSensitive-Chunk BLSTM ( CSC-BLSTM)的 方法加 以解決。

而此後文獻 (Zhang2015, MIT)又提出了 Latency Controlled BLSTM(LC-BLSTM)這一改進版本,更好、更高效的減輕了這兩個問題。咱們在此基礎上採用 LC-BLSTM-DNN 混合結構配合多機多卡、16bit 量化等訓練和優化方法進行聲學模型建模。完成了業界第一個上線的 BLSTM-DNN hybrid 語音識別聲學模型。

這兩張是 LC-BLSTM 的示意圖,訓練時每次使用一小段數據進行更新,數據由中心 chunk 和右向附加 chunk 構成,其中右向附加 chunk 只用於 cell 中間狀態的計算,偏差只在中心 chunk 上進行傳播。時間軸上正向移動的網絡,前一 個數據段在中心 chunk 結束時的 cell 中間狀態被用於下一個數據段的初始狀態, 時間軸上反向移動的網絡,每個數據段開始時都將 cell 中間狀態置爲 0。

該方法能夠很大程度上加快網絡的收斂速度,並有助於獲得更好的性能。解碼階段的數據處理與訓練時基本相同,不一樣之處在於中心 chunk 和右向附加 chunk 的維 度能夠根據需求進行調節,並沒必要須與訓練採用相同配置。

進一步,咱們又在 LC-BLSTM 上進行了改進,首先提出一種改進的 FABDIBLSTM 模型,它和 LC-BLSTM 的不一樣在於時間軸上反向移動的網絡,cell 中間狀態是由 feed-forward DNN 計算獲得的,而不是原來採用的遞歸方式,這樣在 儘量保證識別準確率的同時,下降了模型的計算量。

咱們還提出一種改進的 FABSR-BLSTM 方法,用簡單 RNN 替代時間軸上反向移動的 LSTM,以加快這部分的計算速度。

表裏面給出的是咱們的實驗結果,在 Switchboard 數據集上的實驗代表在損失少許精度的狀況下,咱們的改進版模型相比標準的 LC-BLSTM 能夠取得 40%- 60%的解碼加速。這部分工做已經被 ICASSP 2017 接收,即將於今年三月份發表。

Low frame rate(LFR)是咱們上線的又一新技術,LFR 是在 Interspeech 2016 會議上由谷歌的研究人員提出的,在論文中研究人員宣稱 CTC 技術只有在 4 萬 小時以上的數據量下才有更好的效果,而 LFR 經過使用單狀態的 CD-Phone、 拼幀並降幀率、soft label、CE 初始化、Output Delay 等技術可讓傳統神經網 絡識別模型取得和 CTC 近似或更好的效果。

咱們借鑑了論文中的方法並將其成功應用在 LC-BLSTM 上,在咱們的一個上萬小時數據的任務上。

LFR-LC-BLSTM 能夠取得和 LC-BLSTM 差很少的識別 錯誤率,而且有約 3.6 倍的解碼加速。據咱們所知(to the best of our knowledge), 咱們也是目前業界惟一一家落地 LFR 技術的公司。

在模型的魯棒性方面,咱們也作了很是多的工做。模型的魯棒性一直是困擾 業界和研究人員的一個問題,好比用安靜環境下的語音數據訓練的模型在噪聲環境下識別準確率就不好,用新聞播報的語音數據訓練的模型去識別激情的體育解說,識別準確率也會不好。

那麼如何克服不一樣的信道、噪聲、應用場景的差別,使聲學模型具備更好的魯棒性呢,最好的辦法固然是收集更多真實場景下的語音 數據,可是若是一時之間作不到呢?

怎麼利用現有的語音數據去儘量的提高模 型的噪聲魯棒性?能不能利用現有數據去「造」和目標場景很相似的數據?

這是一個頗有意思的研究課題。算法層面的改進這裏暫且不提,說一下咱們在「造」數 據上的一些工做,咱們設計了一套完整的數據分析、數據篩選和數據加工流程。

從應用場景分析開始,咱們會去分析信道狀況、噪聲狀況、語境狀況等等。而後根據對應用場景的分析自動篩選適合的訓練數據。再根據不一樣的場景狀況, 進行加噪、加快語速等處理。最後訓練模型進行測試,再根據對結果的分析反饋咱們應用場景的分析。

這一整套流程開始時由人爲設計的,如今正逐步往自動化流程上推,依託阿里 MaxCompute 高效計算平臺咱們能夠快速的完成海量數據的加工處理,這大大解放咱們的算法人員,讓你們有更多的經歷投入到技術上的優化,而不是爲數據煩惱。 最後是咱們語音識別技術應用的一些案例,像是內部的智能質檢和智能電話 客服,阿里雲年會上實時語音識別挑戰金牌速記員。

最後是咱們語音識別技術應用的一些案例,好比阿里巴巴內部的智能質檢和智能電話客服,從去年開始,阿里集團與螞蟻客服每接聽一個電話,都會馬上啓動一個叫風語者的系統,它就是自動語音識別技術,將語音轉變成文字,千分之三的人工抽檢能夠瞬間升級爲100%的自動質檢。除此應用場景以外,阿里YunOS、阿里小蜜以及手淘,如今都已經應用到阿里雲的語音識別系統。

阿里雲在 2016年 會上公開展現實時語音識別技術,並現場挑戰世界速記大賽亞軍得主。據現場最終評測,機器人在準確率上以 0.67%的微弱優點打敗第50 屆國際速聯速記大賽全球速記亞軍姜毅。 對外服務上咱們開放了智能語音交互的能力(data.aliyun.com),爲企業在多種實際應用場景下,賦予產品「能聽、會說、懂你」式的智能人機交互體驗。 在法庭庭審方面,咱們利用語音識別技術,將庭審各方在庭審過程當中的語音直接轉變爲文字,供各方在庭審頁面上查看,書記員簡單或不用調整便可做爲庭審筆錄使用。 你們在目擊直播平臺上看雲棲大會直播時,上面的實時字幕背後用的也是咱們本身的語音識別技術。

參考文獻

--------------------------------------------------------------------------------------------------

相關文章
相關標籤/搜索