雷鋒網(wǎng)按;本文作者魏思,博士,科大訊飛研究院副院長,主要研究領域為語音信號處理、模式識別、人工智能等,并擁有多項業(yè)界領先的科研成果。張仕良,潘嘉,張致江科大訊飛研究院研究員。劉聰,王智國科大訊飛研究院副院長。責編:周建丁。
語音作為最自然便捷的交流方式,一直是人機通信和交互最重要的研究領域之一。自動語音識別(Automatic Speech Recognition,ASR)是實現(xiàn)人機交互尤為關鍵的技術,其所要解決的問題是讓計算機能夠“聽懂”人類的語音,將語音中傳化為文本。自動語音識別技術經(jīng)過幾十年的發(fā)展已經(jīng)取得了顯著的成效。近年來,越來越多的語音識別智能軟件和應用走人了大家的日常生活,蘋果的Siri、微軟的小娜、科大訊飛的語音輸入法和靈犀等都是其中的典型代表。本文將以科大訊飛的視角介紹語音識別的發(fā)展歷程和最新技術進展。
我們首先簡要回顧語音識別的發(fā)展歷史,然后介紹目前主流的基于深度神經(jīng)網(wǎng)路的語音識別系統(tǒng),最后重點介紹科大訊飛語音識別系統(tǒng)的最新進展。
語音識別關鍵突破回顧
語音識別的研究起源于上世紀50年代,當時的主要研究者是貝爾實驗室。早期的語音識別系統(tǒng)是簡單的孤立詞識別系統(tǒng),例如1952年貝爾實驗室實現(xiàn)了十個英文數(shù)字識別系統(tǒng)。從上世紀60年代開始,CMU的Reddy開始進行連續(xù)語音識別的開創(chuàng)性工作。但是這期間語音識別的技術進展非常緩慢,以至于1969年貝爾實驗室的約翰·皮爾斯(John Pierce)在一封公開信中將語音識別比作“將水轉(zhuǎn)化為汽油、從海里提取金子、治療癌癥”等幾乎不可能實現(xiàn)的事情。上世紀70年代,計算機性能的大幅度提升,以及模式識別基礎研究的發(fā)展,例如碼本生成算法(LBG)和線性預測編碼(LPC)的出現(xiàn),促進了語音識別的發(fā)展。
這個時期美國國防部高級研究計劃署(DARPA)介入語音領域,設立了語音理解研究計劃,研究計劃包括BBN、CMU、SRI、IBM等眾多頂尖的研究機構。IBM、貝爾實驗室相繼推出了實時的PC端孤立詞識別系統(tǒng)。上世紀80年代是語音識別快速發(fā)展的時期,其中兩個關鍵技術是隱馬爾科夫模型(HMM)的理論和應用趨于完善以及NGram語言模型的應用。
此時語音識別開始從孤立詞識別系統(tǒng)向大詞匯量連續(xù)語音識別系統(tǒng)發(fā)展。例如,李開復研發(fā)的SPHINX系統(tǒng),是基于統(tǒng)計學原理開發(fā)的第一個“非特定人連續(xù)語音識別系統(tǒng)”。其核心框架就是用隱馬爾科模型對語音的時序進行建模,而用高斯混合模型(GMM)對語音的觀察概率進行建模?;贕MM-HMM的語音識別框架在此后很長一段時間內(nèi)一直是語音識別系統(tǒng)的主導框架。上世紀90年代是語音識別基本成熟的時期,主要進展是語音識別聲學模型的區(qū)分性訓練準則和模型自適應方法的提出。這個時期劍橋語音識別組推出的HTK工具包對于促進語音識別的發(fā)展起到了很大的推動作用。此后語音識別發(fā)展很緩慢,主流的框架GMM-HMM趨于穩(wěn)定,但是識別效果離實用化還相差甚遠,語音識別的研究陷入了瓶頸。
關鍵突破起始于2006年。這一年辛頓(Hinton)提出深度置信網(wǎng)絡(DBN),促使了深度神經(jīng)網(wǎng)絡(Deep Neural Network,DNN)研究的復蘇,掀起了深度學習的熱潮。2009年,辛頓以及他的學生默罕默德(D. Mohamed)將深度神經(jīng)網(wǎng)絡應用于語音的聲學建模,在小詞匯量連續(xù)語音識別數(shù)據(jù)庫TIMIT上獲得成功。2011年,微軟研究院俞棟、鄧力等發(fā)表深度神經(jīng)網(wǎng)絡在語音識別上的應用文章,在大詞匯量連續(xù)語音識別任務上獲得突破。從此基于GMM-HMM的語音識別框架被打破,大量研究人員開始轉(zhuǎn)向基于DNN-HMM的語音識別系統(tǒng)的研究。
基于深度神經(jīng)網(wǎng)絡的語音識別系統(tǒng)
基于深度神經(jīng)網(wǎng)絡的語音識別系統(tǒng)主要采用如圖1所示的框架。相比傳統(tǒng)的基于GMM-HMM的語音識別系統(tǒng),其最大的改變是采用深度神經(jīng)網(wǎng)絡替換GMM模型對語音的觀察概率進行建模。最初主流的深度神經(jīng)網(wǎng)絡是最簡單的前饋型深度神經(jīng)網(wǎng)絡(Feedforward Deep Neural Network,F(xiàn)DNN)。DNN相比GMM的優(yōu)勢在于:1. 使用DNN估計HMM的狀態(tài)的后驗概率分布不需要對語音數(shù)據(jù)分布進行假設;2. DNN的輸入特征可以是多種特征的融合,包括離散或者連續(xù)的;3. DNN可以利用相鄰的語音幀所包含的結構信息。
圖1 基于深度神經(jīng)網(wǎng)絡的語音識別系統(tǒng)框架
語音識別需要對波形進行加窗、分幀、提取特征等預處理。訓練GMM時候,輸入特征一般只能是單幀的信號,而對于DNN可以采用拼接幀作為輸入,這些是DNN相比GMM可以獲得很大性能提升的關鍵因素。然而,語音是一種各幀之間具有很強相關性的復雜時變信號,這種相關性主要體現(xiàn)在說話時的協(xié)同發(fā)音現(xiàn)象上,往往前后好幾個字對我們正要說的字都有影響,也就是語音的各幀之間具有長時相關性。采用拼接幀的方式可以學到一定程度的上下文信息。但是由于DNN輸入的窗長是固定的,學習到的是固定輸入到輸入的映射關系,從而導致DNN對于時序信息的長時相關性的建模是較弱的。
圖2 DNN和RNN示意圖
考慮到語音信號的長時相關性,一個自然而然的想法是選用具有更強長時建模能力的神經(jīng)網(wǎng)絡模型。于是,循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)近年來逐漸替代傳統(tǒng)的DNN成為主流的語音識別建模方案。如圖2,相比前饋型神經(jīng)網(wǎng)絡DNN,循環(huán)神經(jīng)網(wǎng)絡在隱層上增加了一個反饋連接,也就是說,RNN隱層當前時刻的輸入有一部分是前一時刻的隱層輸出,這使得RNN可以通過循環(huán)反饋連接看到前面所有時刻的信息,這賦予了RNN記憶功能。這些特點使得RNN非常適合用于對時序信號的建模。而長短時記憶模塊(Long-Short Term Memory,LSTM) 的引入解決了傳統(tǒng)簡單RNN梯度消失等問題,使得RNN框架可以在語音識別領域?qū)嵱没@得了超越DNN的效果,目前已經(jīng)使用在業(yè)界一些比較先進的語音系統(tǒng)中。除此之外,研究人員還在RNN的基礎上做了進一步改進工作,如圖3是當前語音識別中的主流RNN聲學模型框架,主要包含兩部分:深層雙向RNN和序列短時分類(Connectionist Temporal Classification,CTC)輸出層。其中雙向RNN對當前語音幀進行判斷時,不僅可以利用歷史的語音信息,還可以利用未來的語音信息,從而進行更加準確的決策;CTC使得訓練過程無需幀級別的標注,實現(xiàn)有效的“端對端”訓練。
圖3 基于RNN——CTC的主流語音識別系統(tǒng)框架
科大訊飛最新語音識別系統(tǒng)
國際國內(nèi)已經(jīng)有不少學術或工業(yè)機構掌握了RNN模型,并在上述某個或多個技術點進行研究。然而,上述各個技術點單獨研究時一般可以獲得較好的結果,但是如果想將這些技術點融合在一起則會碰到一些問題。例如,多個技術結合在一起的提升幅度會比各個技術點提升幅度的疊加要小。又例如對于目前主流的雙向RNN的語音識別系統(tǒng),其實用化過程面臨一個最大的問題是:理論上只有獲得了完整的全部語音段,才能成功地利用未來的信息。這就使得其具有很大時延,只能用于處理一些離線任務。而對于實時的語音交互,例如語音輸入法,雙向RNN顯然是不適用的。再者,RNN對上下文相關性的擬合較強,相對于DNN更容易陷入過擬合的問題,容易因為訓練數(shù)據(jù)的局部不魯棒現(xiàn)象而帶來額外的異常識別錯誤。最后,由于RNN具有比DNN更加復雜的結構,給海量數(shù)據(jù)下的RNN模型訓練帶來了更大的挑戰(zhàn)。
訊飛FSMN語音識別框架
鑒于上述問題,科大訊飛研發(fā)了一種名為前饋型序列記憶網(wǎng)絡FSMN (Feed-forward Sequential Memory Network) 的新框架。這個框架可以把上述幾點很好地融合,同時各個技術點對效果的提升可以獲得疊加。值得一提的是,F(xiàn)SMN采用非循環(huán)的前饋結構,只需要180ms延遲,就達到了和雙向RNN相當?shù)男Ч?/p>
圖4(a)即為FSMN的結構示意圖,相比傳統(tǒng)的DNN,我們在隱層旁增加了一個稱為“記憶塊”的模塊,用于存儲對判斷當前語音幀有用的歷史信息和未來信息。圖4(b)畫出了雙向FSMN中記憶塊左右各記憶1幀語音信息(在實際任務中,可根據(jù)任務需要,調(diào)整所需記憶的歷史和未來信息長度)的時序展開結構。從圖中我們可以看出,不同于傳統(tǒng)的基于循環(huán)反饋的RNN,F(xiàn)SMN記憶塊的記憶功能是使用前饋結構實現(xiàn)的。這種前饋結構有兩大好處:
首先,雙向FSMN對未來信息進行記憶時,沒有傳統(tǒng)雙向RNN必須等待語音輸入結束才能對當前語音幀進行判斷的限制,它只需要等待有限長度的未來語音幀即可,正如前文所說的,我們的雙向FSMN在將延遲控制在180ms的情況下就可獲得媲美雙向RNN的效果;
其次,如前所述,傳統(tǒng)的簡單RNN因為訓練過程中的梯度是按時間逐次往前傳播的,因此會出現(xiàn)指數(shù)衰減的梯度消失現(xiàn)象,這導致理論上具有無限長記憶的RNN實際上能記住的信息很有限,然而FSMN這種基于前饋時序展開結構的記憶網(wǎng)絡,在訓練過程中梯度沿著圖4中記憶塊與隱層的連接權重往回傳給各個時刻即可,這些連接權重決定了不同時刻輸入對判斷當前語音幀的影響,而且這種梯度傳播在任何時刻的衰減都是常數(shù)的,也是可訓練的,因此FSMN用一種更為簡單的方式解決了RNN中的梯度消失問題,使其具有類似LSTM的長時記憶能力。
另外,在模型訓練效率和穩(wěn)定性方面,由于FSMN完全基于前饋神經(jīng)網(wǎng)絡,所以不存在RNN訓練中因mini-batch中句子長短不一需要補0而導致浪費運算的情況,前饋結構也使得它的并行度更高,可最大化利用GPU計算能力。從最終訓練收斂的雙向FSMN模型記憶塊中各時刻的加權系數(shù)分布我們觀察到,權重值基本上在當前時刻最大,往左右兩邊逐漸衰減,這也符合預期。更進一步,F(xiàn)SMN可和CTC準則結合,實現(xiàn)語音識別中的“端到端”建模。
圖4 FSMN結構框圖
科大訊飛DFCNN語音識別框架
FSMN的成功給了我們一個很好的啟發(fā):對語音的長時相關性建模并不需要觀察整個句子,也不一定需要使用遞歸結構,只要將足夠長的語音上下文信息進行良好的表達就可以對當前幀的決策提供足夠的幫助,而卷積神經(jīng)網(wǎng)絡(CNN)同樣可以做到這一點。
CNN早在2012年就被用于語音識別系統(tǒng),并且一直以來都有很多研究人員積極投身于基于CNN的語音識別系統(tǒng)的研究,但始終沒有大的突破。最主要的原因是他們沒有突破傳統(tǒng)前饋神經(jīng)網(wǎng)絡采用固定長度的幀拼接作為輸入的思維定式,從而無法看到足夠長的語音上下文信息。另外一個缺陷是他們只是將CNN視作一種特征提取器,因此所用的卷積層數(shù)很少,一般只有一到二層,這樣的卷積網(wǎng)絡表達能力十分有限。針對這些問題,結合研發(fā)FSMN時的經(jīng)驗,我們研發(fā)了一種名為深度全序列卷積神經(jīng)網(wǎng)絡(Deep Fully Convolutional Neural Network,DFCNN)的語音識別框架,使用大量的卷積層直接對整句語音信號進行建模,更好地表達了語音的長時相關性。
DFCNN的結構如圖5所示,它直接將一句語音轉(zhuǎn)化成一張圖像作為輸入,即先對每幀語音進行傅里葉變換,再將時間和頻率作為圖像的兩個維度,然后通過非常多的卷積層和池化(pooling)層的組合,對整句語音進行建模,輸出單元直接與最終的識別結果比如音節(jié)或者漢字相對應。 DFCNN的工作機理儼然像是一位德高望重的語音學專家,通過“觀看”語譜圖即可知道語音中表達的內(nèi)容。對于很多讀者來說,乍一聽可能以為是在寫科幻小說,但看完我們下面的分析之后,相信大家都會覺得這種架構是那么的自然。
圖5 DFCNN示意圖
首先,從輸入端來看,傳統(tǒng)語音特征在傅里葉變換之后使用各種人工設計的濾波器組來提取特征,造成了頻域上的信息損失,在高頻區(qū)域的信息損失尤為明顯,而且傳統(tǒng)語音特征為了計算量的考慮必須采用非常大的幀移,無疑造成了時域上的信息損失,在說話人語速較快的時候表現(xiàn)得更為突出。因此DFCNN直接將語譜圖作為輸入,相比其他以傳統(tǒng)語音特征作為輸入的語音識別框架相比具有天然的優(yōu)勢。其次,從模型結構來看,DFCNN與傳統(tǒng)語音識別中的CNN做法不同,它借鑒了圖像識別中效果最好的網(wǎng)絡配置,每個卷積層使用3x3的小卷積核,并在多個卷積層之后再加上池化層,這樣大大增強了CNN的表達能力,與此同時,通過累積非常多的這種卷積池化層對,DFCNN可以看到非常長的歷史和未來信息,這就保證了DFCNN可以出色地表達語音的長時相關性,相比RNN網(wǎng)絡結構在魯棒性上更加出色。最后,從輸出端來看,DFCNN還可以和近期很熱的CTC方案完美結合以實現(xiàn)整個模型的端到端訓練,且其包含的池化層等特殊結構可以使得以上端到端訓練變得更加穩(wěn)定。
在和其他多個技術點結合后,科大訊飛DFCNN的語音識別框架在內(nèi)部數(shù)千小時的中文語音短信聽寫任務上,相比目前業(yè)界最好的語音識別框架雙向RNN-CTC系統(tǒng)獲得了15%的性能提升,同時結合科大訊飛的HPC平臺和多GPU并行加速技術,訓練速度也優(yōu)于傳統(tǒng)的雙向RNN-CTC系統(tǒng)。DFCNN的提出開辟了語音識別的一片新天地,后續(xù)基于DFCNN框架,我們還將展開更多相關的研究工作,例如:雙向RNN和DFCNN都可以提供對長時歷史以及未來信息的表達,但是這兩種表達之間是否存在互補性,是值得思考的問題。
深度學習平臺
以上科大訊飛的研究都很好的語音識別的效果,同時科大訊飛也意識到這些深度神經(jīng)網(wǎng)絡需要大量的數(shù)據(jù)和計算量進行訓練。例如,兩萬小時的語音數(shù)據(jù)約有12000PFlop的計算量,如果在一顆E5-2697 v4的CPU上進行訓練,大約需要116天時間,這對語音識別技術研究來說是無法接受的。為此,科大訊飛分析算法的計算特點,搭建了一套快速的深度學習計算平臺——深度學習平臺。
圖6 深度學習平臺架構
如圖6所示,整個平臺分為四個組成部分。首先,底層基礎架構,依據(jù)語音數(shù)據(jù)量、訪問的帶寬、訪問頻度、計算量、計算特點,選擇適合的文件系統(tǒng)、網(wǎng)絡連接、計算資源。其中,文件系統(tǒng)使用并行分布式文件系統(tǒng),網(wǎng)絡使用萬兆連接,計算資源使用GPU集群,并且單獨建設了專門的機房。在此基礎之上,開發(fā)核心計算引擎,用于進行各種模型訓練和計算,如適合CNN計算的引擎、適合DNN的計算引擎以及適合FSMN/DFCNN的計算引擎等。整個計算引擎和基礎架構對使用者來說還是比較抽象,為簡化使用門檻,科大訊飛專門開發(fā)了平臺的資源調(diào)度服務和引擎的調(diào)用服務;這些工作大大減少研究院人員使用集群資源的難度,提升研究的進度。在此三個基礎工作之上,科大訊飛的深度學習平臺可以支撐整個研究相關的工作,如語音識別、語音合成、手寫識別……
科大訊飛使用GPU作為主要的運算部件,并結合算法的特點,進行了大量的GPU并行化的工作。如科大訊飛在分塊模型更新(BMUF)基礎之上設計了融合彈性平均隨機梯度下降(EASGD)算法的并行計算框架,在64 GPU上實現(xiàn)了近線性的加速比,大大提升訓練效率,加快深度學習相關應用的研究進程。
寫在最后
回顧語音識別的發(fā)展歷史和科大訊飛語音識別系統(tǒng)的最新進展后,我們可以發(fā)現(xiàn),技術的突破總是艱難而緩慢的,重要的是堅持和不斷思考。雖然近幾年深度神經(jīng)網(wǎng)絡的興起使得語音識別性能獲得了極大的提升,但是我們并不能迷信于現(xiàn)有的技術,總有一天新技術的提出會替代現(xiàn)有的技術,科大訊飛希望可以通過不斷的技術創(chuàng)新實現(xiàn)語音識別技術的進一步突破。