從聲學模型演算法總結 2016 年語音識別的重大進步丨硬創公開課
雷鋒網按:在過去的一年中,語音識別再次取得非常大的突破。IBM、微軟等多家機構相繼推出了自己的 Deep CNN 模型,提升了語音識別的準確率;Residual/Highway 網路的提出使我們可以把神經網路訓練的更加深。
而諸如 CTC、Low Frame Rate、Chain 模型等粗粒度建模單元技術使得語音識別準確率得到提升的同時,解碼速度也可以大大加快。
本期雷鋒網硬創公開課特邀供職於阿里巴巴 iDST 的語音專家薛少飛博士,從學術的角度回顧過去一段時間裡語音識別技術的發展狀況。
嘉賓介紹:
薛少飛,阿里巴巴 iDST 語音識別專家,中國科學技術大學博士。現負責阿里聲學模型研究與應用:包括語音識別聲學建模和深度學習在業務場景中的應用。博士期間的研究方向為語音識別說話人自適應,提出基於 Speaker Code 的模型域自適應方法,在語音相關的會議和期刊上發表論文十餘篇。
本期雷鋒網硬創公開課的分享主要包括三大部分:
深度神經網路聲學模型發展回顧:簡單回顧深度神經網路技術在語音識別聲學模型中的應用歷史;
前沿聲學模型技術進展:介紹近期幾個比較有意思的聲學模型技術進展,包括 Deep CNN 技術、Residual/Highway 網路技術和粗粒度建模單元技術。當然這裡並沒有把所有的新技術進展都囊括進來,比如 Attention 技術。只是以這三條線路為例看看語 音識別聲學模型技術的進展和未來的發展趨勢。
介紹紹阿里巴巴的語音識別聲學模型技術。
一、深度神經網路聲學模型發展回顧
回顧語音識別技術的發展歷史可以看到,自從上世紀 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 入門學習演算法和實踐理論知識是比較好的選擇,對於高年級研究生和具有一定年限的從業人員來講,就看自己的喜好了,大家都是殊途同歸,工具不是決定性的, 數據、演算法和模型才是。
二、前沿神學模型的技術進展
接下來介紹一下 Deep CNN 技術、Residual/Highway 網路技術和粗粒度建模 單元技術。去年有多家機構都推出了自己的 Deep CNN 模型,像 IBM、微軟等,我這裡以 IBM 的 Deep CNN 為例,一起探討一下到底哪些關鍵因素使得 Deep CNN 能夠取得這麼好的效果。
其實 CNN 被用在語音識別中已經不是一天兩天了,在 12、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
粗粒度建模單元的技術對於加快語音識別的解碼速度具有非常重要的 意義,而反過來解碼速度的提升又可以讓使用更深、更複雜神經網路建 模聲學模型成為可能。
三、阿里巴巴的語音識別聲學模型技術
最後分享一下阿里巴巴團隊在語音識別聲學模型技術方面的一些工作。
在工業界做語音識別,數據量是非常龐大的,上萬小時的語音數據是再正常 不過的,面對如此龐大的數據量,使用單機單 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),為企業在多種實際應用場景下,賦予產品「能聽、會說、懂你」式的智能人機交互體驗。 在法庭庭審方面,我們利用語音識別技術,將庭審各方在庭審過程中的語音直接轉變為文字,供各方在庭審頁面上查看,書記員簡單或不用調整即可作為庭審筆錄使用。 大家在目睹直播平台上看雲棲大會直播時,上面的實時字幕背後用的也是我們自己的語音識別技術。
參考文獻
--------------------------------------------------------------------------------------------------更多人工智慧,以及清晰PPT,請關注微信公眾號【AI科技評論】回復【薛少飛】獲取。
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。
推薦閱讀:
※對話藍馳朱天宇:移動紅利已近關閉,AI和大數據是未來的鑰匙
※【西瓜書】周志華《機器學習》學習筆記與習題探討(三)③
※CNN 入門講解:什麼是卷積
※「人工智慧入門」為什麼大家都在談論 AI?