2017年12月4日 星期一

.科大訊飛最新語音辨識系統和框架深度剖析

專注人工智能17 做出4億中國人用的語音輸入法 超越搜狗百度 



leiphone CSDN

按:本文作者魏思,博士,中國科大訊飛研究院副院長,主要研究領域為語音信號處理、模式辨識、人工智慧等,並擁有多項業界領先的科研成果。張仕良、潘嘉、張致江科大訊飛研究院研究員。劉聰,王智國科大訊飛研究院副院長。責編:周建丁。

語音作為最自然便捷的交流方式,一直是人機通信和交互最重要的研究領域之一。自動語音辨識(Automatic Speech Recognition,ASR)是實現人機交互尤為關鍵的技術,其所要解決的問題,是讓電腦能夠「聽懂」人類的語音,將語音中傳化為文本。

自動語音辨識技術經過幾十年的發展,已經取得了顯著的成效。近年來,越來越多的語音辨識智慧軟體和應用走入了大家的日常生活,蘋果的Siri、微軟的小娜、科大訊飛的語音輸入法和靈犀等,都是其中的典型代表。本文將以科大訊飛的視角介紹語音辨識的發展歷程和最新技術進展。

我們首先簡要回顧語音辨識的發展歷史,然後介紹目前主流的基於深度神經網路的語音辨識系統,最後重點介紹科大訊飛語音辨識系統的最新進展。

語音辨識關鍵突破回顧
語音辨識的研究起源於上世紀50年代,當時的主要研究者是貝爾實驗室。早期的語音辨識系統是簡單的孤立詞辨識系統,例如1952年貝爾實驗室實現了十個英文數位辨識系統。

從上世紀60年代開始,CMU的Reddy開始進行連續語音辨識的開創性工作。但是這期間語音辨識的技術進展非常緩慢,以至於1969年貝爾實驗室的約翰·皮爾斯(John Pierce)在一封公開信中,將語音辨識比作「將水轉化為汽油、從海裡提取金子、治療癌症」等幾乎不可能實現的事情。

上世紀70年代,電腦性能的大幅度提升,以及模式辨識基礎研究的發展,例如碼本生成算法(LBG)和線性預測編碼(LPC)的出現,促進了語音辨識的發展。

這個時期美國國防部,高級研究計劃署(DARPA)介入語音領域,設立了語音理解研究計劃,研究計劃包括BBN、CMU、SRI、IBM等眾多頂尖的研究機構。

IBM、貝爾實驗室相繼推出了即時的PC端孤立詞辨識系統。上世紀80年代是語音辨識快速發展的時期,其中兩個關鍵技術是隱馬爾科夫模型(HMM)的理論和應用趨於完善,以及NGram語言模型的應用。

此時語音辨識開始從孤立詞辨識系統,向大詞彙量連續語音辨識系統發展。例如,李開復研發的SPHINX系統,是基於統計學原理開發的第一個「非特定人連續語音辨識系統」。

其核心框架就是用隱馬爾科模型,對語音的時序進行建模,而用高斯混合模型(GMM)對語音的觀察概率進行建模。基於GMM-HMM的語音辨識框架,在此後很長一段時間內,一直是語音辨識系統的主導框架。

上世紀90年代是語音辨識基本成熟的時期,主要進展是語音辨識聲學模型的區分性訓練準則,和模型自適應方法的提出。這個時期劍橋語音辨識組推出的HTK工具包,對於促進語音辨識的發展,起到了很大的推動作用。此後語音辨識發展很緩慢,主流的框架GMM-HMM趨於穩定,但是辨識效果離實用化還相差甚遠,語音辨識的研究陷入了瓶頸。

關鍵突破起始於2006年。這一年辛頓(Hinton)提出深度置信網路(DBN),促使了深度神經網(Deep Neural Network,DNN)研究的復甦,掀起了深度學習的熱潮。

2009年,辛頓以及他的學生默罕默德(D. Mohamed)將深度神經網路應用於語音的聲學建模,在小詞彙量連續語音辨識數據庫TIMIT上獲得成功。

2011年,微軟研究院俞棟、鄧力等發表深度神經網路在語音辨識上的應用文章,在大詞彙量連續語音辨識任務上獲得突破。從此基於GMM-HMM的語音辨識框架被打破,大量研究人員開始轉向基於DNN-HMM的語音辨識系統的研究。

基於深度神經網路的語音辨識系統
基於深度神經網路的語音辨識系統,主要採用如圖1所示的框架。相比傳統的基於GMM-HMM的語音辨識系統,其最大的改變是採用深度神經網路,替換GMM模型對語音的觀察概率進行建模。

最初主流的深度神經網路,是最簡單的前饋型深度神經網路(Feedforward Deep Neural Network,FDNN)。DNN相比GMM的優勢在於:

1. 使用DNN估計HMM的狀態的後驗概率分布,不需要對語音數據分布進行假設;

2. DNN的輸入特徵可以是多種特徵的融合,包括離散或者連續的;

3. DNN可以利用相鄰的語音幀所包含的結構資訊。

干货:科大讯飞最新语音识别系统和框架深度剖析
1 基於深度神經網路的語音辨識系統框架

語音辨識需要對波形進行加窗、分幀、提取特徵等預處理。訓練GMM時候,輸入特徵一般只能是單幀的信號,而對於DNN可以採用拼接幀作為輸入,這些是DNN相比GMM可以獲得很大性能提升的關鍵因素。

然而,語音是一種各幀之間,具有很強相關性的複雜時變信號,這種相關性主要體現在,說話時的協同發音現象上,往往前後好幾個字,對我們正要說的字都有影響,也就是語音的各幀之間具有長時相關性。

採用拼接幀的方式,可以學到一定程度的上下文訊息。但是由於DNN輸入的窗長是固定的,學習到的是固定輸入,到輸入的映射關係,從而導致DNN對於時序訊息的長時相關性的建模是較弱的。

干货:科大讯飞最新语音识别系统和框架深度剖析
2 DNNRNN示意圖

考慮到語音信號的長時相關性,一個自然而然的想法是選用具有更強長時建模能力的神經網路模型。於是,循環神經網路(Recurrent Neural Network,RNN)近年來逐漸替代傳統的DNN成為主流的語音辨識建模方案。

如圖2,相比前饋型神經網路DNN,循環神經網路在隱層上增加了一個反饋連接,也就是說,RNN隱層當前時刻的輸入有一部分是前一時刻的隱層輸出,這使得RNN可以透過循環回饋連接,看到前面所有時刻的訊息,這賦予了RNN記憶功能。這些特點使得RNN非常適合用於對時序信號的建模。

而長短時記憶模組 (Long-Short Term Memory,LSTM) 的引入解決了傳統簡單RNN梯度消失等問題,使得RNN框架可以在語音辨識領域實用化,並獲得了超越DNN的效果,目前已經使用在業界一些比較先進的語音系統中。

除此之外,研究人員還在RNN的基礎上做了進一步改進工作,如圖3是當前語音辨識中的主流RNN聲學模型框架,主要包含兩部分:深層雙向RNN和序列短時分類(Connectionist Temporal Classification,CTC)輸出層。

其中雙向RNN對當前語音幀進行判斷時,不僅可以利用歷史的語音訊息,還可以利用未來的語音訊息,從而進行更加準確的決策;CTC使得訓練過程無需幀級別的標注,實現有效的「端對端」訓練。

干货:科大讯飞最新语音识别系统和框架深度剖析
3 基於RNN——CTC的主流語音辨識系統框架

科大訊飛最新語音辨識系統
國際上已經有不少學術或工業機構掌握了RNN模型,並在上述某個或多個技術點進行研究。然而,上述各個技術點單獨研究時一般可以獲得較好的結果,但是如果想將這些技術點融合在一起則會碰到一些問題。

例如,多個技術結合在一起的提升幅度會比各個技術點提升幅度的疊加要小。又例如對於目前主流的雙向RNN的語音辨識系統,其實用化過程面臨一個最大的問題是:理論上只有獲得了完整的全部語音段,才能成功地利用未來的訊息。這就使得其具有很大時延,只能用於處理一些離線任務。

而對於即時的語音交互,例如語音輸入法,雙向RNN顯然是不適用的。再者,RNN對上下文相關性的擬合較強,相對於DNN更容易陷入過擬合的問題,容易因為訓練數據的局部不魯棒現象,而帶來額外的異常辨識錯誤。最後,由於RNN具有比DNN更加複雜的結構,給海量數據下的RNN模型訓練,帶來了更大的挑戰。

訊飛FSMN語音辨識框架
鑒於上述問題,科大訊飛研發了一種名為前饋型序列記憶網路FSMN (Feed-forward Sequential Memory Network) 的新框架。這個框架可以把上述幾點很好地融合,同時各個技術點對效果的提升可以獲得疊加。值得一提的是,FSMN採用非循環的前饋結構,只需要180ms延遲,就達到了和雙向RNN相當的效果。

圖4(a)即為FSMN的結構示意圖,相比傳統的DNN,我們在隱層旁增加了一個稱為「記憶塊」的模組,用於儲存對判斷當前語音幀有用的歷史訊息和未來訊息。圖4(b)畫出了雙向FSMN中記憶塊左右各記憶1幀語音訊息(在實際任務中,可根據任務需要,調整所需記憶的歷史和未來信息長度)的時序展開結構。從圖中我們可以看出,不同於傳統的基於循環回饋的RNN,FSMN記憶塊的記憶功能是使用前饋結構實現的。這種前饋結構有兩大好處:

首先,雙向FSMN對未來訊息進行記憶時,沒有傳統雙向RNN必須等待語音輸入結束,才能對當前語音幀進行判斷的限制,它只需要等待有限長度的未來語音幀即可,正如前文所說的,我們的雙向FSMN在將延遲控制在180ms的情況下就可獲得媲美雙向RNN的效果;

其次,如前所述,傳統的簡單RNN因為訓練過程中的梯度是按時間逐次往前傳播的,因此會出現指數衰減的梯度消失現象,這導致理論上具有無限長記憶的RNN,實際上能記住的訊息很有限,然而FSMN這種基於前饋時序,展開結構的記憶網路,在訓練過程中梯度沿著圖4中記憶塊,與隱層的連接權重往回傳給各個時刻即可,這些連接權重,決定了不同時刻輸入對判斷當前語音幀的影響,而且這種梯度傳播在任何時刻的衰減都是常數的,也是可訓練的,因此FSMN用一種更為簡單的方式,解決了RNN中的梯度消失問題,使其具有類似LSTM的長時記憶能力。

另外,在模型訓練效率和穩定性方面,由於FSMN完全基於前饋神經網路,所以不存在RNN訓練中因mini-batch中句子長短不一需要補0,而導致浪費運算的情況,前饋結構也使得它的並行度更高,可最大化利用GPU計算能力。

從最終訓練收斂的雙向FSMN模型記憶塊中,各時刻的加權系數分布我們觀察到,權重值基本上在當前時刻最大,往左右兩邊逐漸衰減,這也符合預期。更進一步,FSMN可和CTC準則結合,實現語音辨識中的「端到端」建模。

干货:科大讯飞最新语音识别系统和框架深度剖析
4 FSMN結構框圖

科大訊飛DFCNN語音辨識框架
FSMN的成功給了我們一個很好的啓發:對語音的長時相關性建模,並不需要觀察整個句子,也不一定需要使用遞歸結構,只要將足夠長的語音上下文訊息,進行良好的表達就可以對當前幀的決策提供足夠的幫助,而卷積神經網路(CNN)同樣可以做到這一點。 

CNN早在2012年就被用於語音辨識系統,並且一直以來都有很多研究人員,積極投身於基於CNN的語音辨識系統的研究,但始終沒有大的突破。最主要的原因是他們沒有突破傳統前饋神經網路,採用固定長度的幀拼接,作為輸入的思維定式,從而無法看到足夠長的語音上下文訊息。

另外一個缺陷是,他們只是將CNN視作一種特徵提取器,因此所用的卷積層數很少,一般只有一到二層,這樣的卷積網路表達能力十分有限。針對這些問題,結合研發FSMN時的經驗,我們研發了一種名為深度全序列卷積神經網路(Deep Fully Convolutional Neural Network,DFCNN)的語音辨識框架,使用大量的卷積層,直接對整句語音信號進行建模,更好地表達了語音的長時相關性。

DFCNN的結構如圖5所示,它直接將一句語音轉化成一張圖像作為輸入,即先對每幀語音進行傅里葉變換,再將時間和頻率作為圖像的兩個維度,然後透過非常多的卷積層和池化(pooling)層的組合,對整句語音進行建模,輸出單元直接與最終的辨識結果,比如音節或者漢字相對應。

 DFCNN的工作機理,儼然像是一位德高望重的語音學專家,透過「觀看」語譜圖,即可知道語音中表達的內容。對於很多讀者來說,乍一聽可能以為是在寫科幻小說,但看完我們下面的分析之後,相信大家都會覺得這種架構是那麼的自然。


干货:科大讯飞最新语音识别系统和框架深度剖析
5 DFCNN示意圖

首先,從輸入端來看,傳統語音特徵在傅里葉變換之後,使用各種人工設計的濾波器組來提取特徵,造成了頻域上的信息損失,在高頻區域的信息損失尤為明顯,而且傳統語音特徵為了計算量的考慮,必須採用非常大的幀移,無疑造成了時域上的訊息損失,在說話人語速較快的時候表現得更為突出。

因此DFCNN直接將語譜圖作為輸入,相比其他以傳統語音特徵作為輸入的語音辨識框架相比,具有天然的優勢。

其次,從模型結構來看,DFCNN與傳統語音辨識中的CNN做法不同,它借鑒了圖像辨識中效果最好的網路配置,每個卷積層使用3x3的小卷積核,並在多個卷積層之後再加上池化層,這樣大大增強了CNN的表達能力,與此同時,透過累積非常多的這種卷積池化層對,DFCNN可以看到非常長的歷史和未來訊息,這就保證了DFCNN可以出色地表達語音的長時相關性,相比RNN網路結構在魯棒性上更加出色。

最後,從輸出端來看,DFCNN還可以和近期很熱的CTC方案完美結合以實現整個模型的端到端訓練,且其包含的池化層等特殊結構,可以使得以上端到端訓練變得更加穩定。

在和其他多個技術點結合後,科大訊飛DFCNN的語音識別框架在內部數千小時的中文語音短信聽寫任務上,相比目前業界最好的語音識別框架雙向RNN-CTC系統獲得了15%的性能提升,同時結合科大訊飛的HPC平台和多GPU並行加速技術,訓練速度也優於傳統的雙向RNN-CTC系統。DFCNN的提出開闢了語音識別的一片新天地,後續基於DFCNN框架,我們還將展開更多相關的研究工作,例如:雙向RNN和DFCNN都可以提供對長時歷史以,及未來訊息的表達,但是這兩種表達之間是否存在互補性,是值得思考的問題。

深度學習平台
以上科大訊飛的研究都很好的語音辨識的效果,同時科大訊飛也意識到這些深度神經網路,需要大量的數據和計算量進行訓練。例如,兩萬小時的語音數據約有12000PFlop的計算量,如果在一顆E5-2697 v4的CPU上進行訓練,大約需要116天時間,這對語音辨識別技術研究來說是無法接受的。為此,科大訊飛分析算法的計算特點,搭建了一套快速的深度學習計算平台——深度學習平台。

干货:科大讯飞最新语音识别系统和框架深度剖析
6 深度學習平台架構

如圖6所示,整個平台分為四個組成部分。首先,底層基礎架構,依據語音數據量、訪問的頻寬、訪問頻度、計算量、計算特點,選擇適合的文件系統、網路連接、計算資源。

其中,文件系統使用並行分布式文件系統,網路使用萬兆連接,計算資源使用GPU集群,並且單獨建設了專門的機房。在此基礎之上,開發核心計算引擎,用於進行各種模型訓練和計算,如適合CNN計算的引擎、適合DNN的計算引擎,以及適合FSMN/DFCNN的計算引擎等。

整個計算引擎和基礎架構,對使用者來說還是比較抽象,為簡化使用門檻,科大訊飛專門開發了平台的資源調度服務,和引擎的調用服務;這些工作大大減少研究院人員使用集群資源的難度,提升研究的進度。在此三個基礎工作之上,科大訊飛的深度學習平台,可以支撐整個研究相關的工作,如語音辨識、語音合成、手寫辨識……

科大訊飛使用GPU作為主要的運算部件,並結合算法的特點,進行了大量的GPU並行化的工作。如科大訊飛在分塊模型更新(BMUF)基礎之上設計了融合彈性平均隨機梯度下降(EASGD)算法的並行計算框架,在64 GPU上實現了近線性的加速比,大大提升訓練效率,加快深度學習相關應用的研究進程。

寫在最後
回顧語音辨識的發展歷史,和科大訊飛語音辨識系統的最新進展後,我們可以發現,技術的突破總是艱難而緩慢的,重要的是堅持和不斷思考。

雖然近幾年深度神經網路的興起,使得語音辨識性能獲得了極大的提升,但是我們並不能迷信於現有的技術,總有一天新技術的提出會替代現有的技術,科大訊飛希望可以透過不斷的技術創新,實現語音辨識技術的進一步突破。
                                                                                                                                                                                                                 

沒有留言:

張貼留言