天天看點

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

機器之心對百度語音技術部識别技術負責人,同時也是 Deep Speech 中文研發負責人李先剛博士進行了獨家專訪,李先剛博士詳細解讀了 Deep CNN 中的各項技術以及研究思路,并表示此次語音識别技術的提升将在接下來用于語音搜尋産品。而百度正在努力推進 Deep Speech 3 ,這項研究不排除将會是 Deep Speech 3 的核心組成部分。以下是采訪内容:

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?
點選檢視原視訊

機器之心:能先大體介紹一下 Deep CNN 嗎?

李先剛:百度這次利用深層卷積神經網絡技術(Deep CNN)應用于語音識别聲學模組化中,将其與基于長短時記憶單元(LSTM)和連接配接時序分類(CTC)的端對端語音識别技術相結合,大幅度提升語音識别産品性能。該技術相較于工業界現有的 CLDNN 結構(CNN+5LSTM+DNN)的語音識别産品技術,錯誤率相對降低 10% 。該技術借鑒了圖像識别在近些年的成果,以及語音與圖像在利用 CNN 模型訓練的共通性,是在端對端語音識别技術的革新之後取得的新的技術突破。

其實最早 CNN 在語音領域是有應用的,這兩年語音研究專注的主要是 RNN ,而圖像領域專注的 CNN 。在語音領域的研究者把 LSTM 和 RNN 做的很好之後,發現 CNN 的發展在語音領域是可以借鑒和有所幫助的。

比如從 ImageNet 競賽中就可以看出深層卷積神經網絡方面的進展。這些網絡結構有一個明顯的發展趨勢,就是越來越深的卷積神經網絡層級(CNN):從最初的 8 層網絡,到 19 層,22 層,乃至 152 層的網絡結構。ImageNet競賽的錯誤率也從 12 年的 16.4% 逐漸降到了 3.57% 。

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

在這個背景下,深層 CNN 成為今年語音領域前沿研究中最火的東西,很多公司都在做這方面研究。而我們這次做 CNN 有個很好的點是有個 baseline ,這是基于 Deep Speech 2 端對端基礎上,進一步通過引入 CNN 來實作更好效果,這是我們的研究背景。

在這個情況下,我們做了一些非常有意思的實驗和希望得到最好性能的工作。為什麼說最好性能呢?因為我們做的工作都是大資料,調參時有上萬小時,做産品時甚至有 10 萬小時。我們希望通過這些來驗證,Deep CNN 是真的可以發揮作用,因為你會發現,現在很多基于資料集做的算法在大資料時可能就沒用了,但我們發現它是有用的,在端到端架構下也是有用的,這可能算是我們的一個突破點和貢獻。

機器之心:微軟最近也公布了一項語音識别的突破,能對比一下這兩項研究嗎?

李先剛:微軟這次研究更加學術,是在一些标準資料庫上做的,是一個口語資料庫,叫做 switchboard ,資料庫隻有 2,000 小時。這個工作是微軟研究院做的,他們的關注點是基于這樣一個資料庫最終能做到什麼樣的性能。而我們的關注點是我們的語音技術能夠深入到大家的日常應用中,去把語音識别服務做到更好,我們的資料是數萬小時。

機器之心:這項研究涉及的過程和具體技術工作有哪些?

李先剛:在 ImageNet 競賽得到廣泛關注的 DeepCNN 結構,包括 VGGNet ,GoogleNet 和 ResNet 等。其中 ResNet ,可以通過 Residual 連接配接,訓練得到一百多層的 CNN 網絡,這樣的網絡雖然能夠顯著提升性能,由于其無法實作實時計算,使得其難以在産品模型得到應用。但是我們可以借鑒 Residual 連接配接的思想,訓練一個數 10 層的包含 Residual 連接配接的 DeepCNN ,以用于工業産品中。

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?
百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?
百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

從上至下為 VGGNet 、GoogleNet 和 ResNet

是以,百度做了以下的對比試驗:1)HMM 架構中基于 VGGNet 結構的聲學模型;2)在 HMM 架構中包含 Residual 連接配接的 CNN 網絡結構的聲學模型;3)在 CTC 架構中使用純 VGGNet 實作端對端模組化;4)在 CTC 架構中,在 CLDNN(CNN+5LSTM+DNN)結構中的 CNN 借鑒圖像領域的研究成果,嘗試 VGGNet ,包含 Residual 連接配接的深層 CNN 等結構。

我們發現,深層 CNN 結構,不僅能夠顯著提升 HMM 語音識别系統的性能,也能提升 CTC 語音識别系統的性能。僅用深層 CNN 實作端對端模組化,其性能相對較差,是以将如 LSTM 或 GRU的 循環隐層與 CNN 結合是一個相對較好的選擇。可以通過采用 VGG 結構中的 3*3 這種小 kernel ,也可以采用 Residual 連接配接等方式來提升其性能,而卷積神經網絡的層數、濾波器個數等都會顯著影響整個模型的模組化能力,在不同規模的語音訓練資料庫上,百度需要采用不同規模的 DeepCNN 模型配置才能使得最終達到最優的性能。

是以,我們認為:1)在模型結構中,DeepCNN 幫助模型具有很好的在時頻域上的平移不變性,進而使得模型更加魯棒(抗噪性);2)在此基礎上,DeepLSTM 則與 CTC 一起專注于序列的分類,通過 LSTM 的循環連接配接結構來整合長時的資訊。3)在 DeepCNN 研究中,其卷積結構的時間軸上的感受野,以及濾波器的個數,針對不同規模的資料庫訓練的語音識别模型的性能起到了非常重要的作用。4)為了在數萬小時的語音資料庫上訓練一個最優的模型,則需要大量的模型超參的調優工作,依托多機多 GPU 的高性能計算平台,才得以完成工作。5)基于 DeepCNN 的端對端語音識别引擎,也在一定程度上增加了模型的計算複雜度,通過百度自研的硬體,也使得這樣的模型能夠為廣大語音識别使用者服務。

機器之心:CNN 适用于語音識别的原理是什麼,是如何帶來效果的大幅提升的?

李先剛:語音識别模組化是需要對語音信号和文字内容間的關系模組化。通常情況下,語音識别都是基于時頻分析後的語音譜完成的,而其中語音時頻譜是具有結構特點的。要想提高語音識别率,就是需要克服語音信号所面臨各種各樣的多樣性,包括說話人的多樣性(說話人自身、以及說話人間),環境的多樣性等。卷積神經網絡,由于其局部連接配接和權重共享的特點,使得其具有很好的平移不變性。将卷積神經網絡的思想應用到語音識别的聲學模組化中,則可以利用卷積的不變性來客服語音信号本身的多樣性。從這個角度來看,則可以認為是将整個語音信号分析得到的時頻譜當作一張圖像一樣來處理,采用圖像中廣泛應用的深層卷積網絡對其進行識别。

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

Deep CNN語音識别的模組化過程

2013 年過後,語音領域開始做 RNN ,圖像領域做 CNN 。卷積操作是一種相較于全連接配接更加通用的計算形式,在 2013 年之後有很多進展,從 ImageNet 就可以看出來,首先發現 VGG 模型很有用,這種結構使用的是 3*3 這種小 kernel ; 此外 GoogleNet 結構,裡面設計了一個 Inception 子產品,也是基于 CNN 來實作的;比較有趣的是,微軟 2015 年做的殘差網絡直接把十幾層一下拉到 152 層,但 100 多層在工業上肯定沒法用,因為算不過來。但這告訴大家,通過這種方式可以非常簡單直接的提升性能,也就是提出了 residual 連接配接。

從這幾個方面來看,CNN 在語音領域都沒得到充分的研究,但大家能意識到這是我們可以探索的一個方向。有了這個出發點之後,我們就有好幾個點可以做,比如說 VGGNet 裡的 3*3 的 kernel 在語音領域應該怎麼做;residual 連接配接怎麼融合進來。我們在語音識别最早用的 CLDNN 結構是一層卷積,我把其做到 10 層,變成 VGG 結構,再加上一些殘差連接配接,通過做一些大量實驗模型的結構調整,最終得到性能提升。

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

語譜圖

從另外一個角度來看,如果你把語音當成一個圖像,把語音視訊信号分析過後就是一張圖像,是以圖像和語音是可以互相借鑒的。

機器之心:能否介紹一下 CTC 端對端學習?

李先剛:在深度學習興起以前,機器感覺算法(如語音識别,說話人識别,圖像識别,等)通常都會包含以下幾個部分:特征提取及學習,模式分類等。研究者們發現,在這樣的級聯系統裡面,特征學習起到了非常關鍵的作用。在深度學習中,特征學習和模式分類兩個子產品則通常聯合起來優化,進而使得通常意義下,深度學習的模型至少有兩層。進而也帶來了一個新的研究趨勢:減少流水線中的子產品,使用一個單獨的學習算法來完成從任務的輸入端到輸出端的所有過程,也就是所謂的端對端學習的興起。

端對端學習使用一個算法将輸入和輸出聯系了起來,通常采用的是一個深層的神經網絡。端對端學習推崇更少的人工特征設計,更少的中間單元。端對端學習的系統包括:基于 CTC 的語音識别,基于注意機制的機器翻譯,都已經在工業界得到了應用。

機器之心:Warp-CTC 、Stanford CTC 和 TensorFlow 等在使用上有什麼明顯差別麼?

李先剛:我對 Stanford CTC 了解不多,但不管是哪種,我相信都是對 CTC 這種算法的功能實作,都是加速的問題。TensorFlow 不太一樣,它是深度學習架構,不是針對 CTC 來做,客觀來說,它的好處是友善研究者做實驗預研。但壞處是速度慢。你可以在實驗室裡很快的嘗試一個新的網絡結構,做個 100 小時的實驗,但如果規模上去了,TensorFlow 是不夠的。

機器之心:語言模型采用 n-gram models 的主要好處是什麼?

李先剛:n 元文法技術相對較老,但它可以很好的把規模弄上去,百度是一個文本大資料公司,在這樣的背景下,你會發現基于大資料做一個很好的 n 元文法是很容易的,而且性能很好。通過這樣一個大模型,通過海量資料,加上工程師做解碼器的特别優化,使得系統在很好的實時性下的情況去達到很好的識别率。

說到語言模型,還有一個研究比較多的是神經網絡語言模型。對于神經網絡語言模型,我們也希望能做到 first-pass decoding ,神經網絡語言模型還有一些工程上的東西需要突破,我們都是把它放在第二遍 second-pass rescoring 上。總之,兩者相比的話,神經網絡語言模型的計算量特别大,優勢是性能好。這個需要做很多工程方面的工作。

機器之心:訓練資料裡的「模拟語音資料」和 10 萬小時的精準标注語音資料對最後性能提升的貢獻各有什麼樣的價值?如何擷取「精準标注」資料?

李先剛:訓練模型的根本還是精确标注的資料,這是決定整個性能的基礎。一般來說可以有這樣的結論:資料增加十倍,性能提升10%,這是針對精準人工标注的資料。一般情況下,在擷取什麼樣的精确标注資料的問題上,我們也會結合主動學習的思想,去收集那些對識别率影響更加直接的資料拿來人工精标。那為什麼還要用模拟資料呢?所謂的模拟資料就是在精準标注的基礎上做些信号變化,加一點背景噪聲、混響的沖擊響應,加上這些資料以後,會使模型能夠見過更加多樣的資料,這樣對于模型的推廣性和性能有一定程度的幫助,這算是一個保證模型具有更強能力的方法。是以,從根本上來說還是那 10 萬小時。

機器之心:百度自主研發的硬體技術對計算效率有多少貢獻?

李先剛:百度開源了 Warp-CTC ,CTC 算法本質是一個前向後向算法在裡面,要實作它的并行化還是比較難的,Warp-CTC 在這方面做的比較好。我們在做實驗時發現,有了 Warp-CTC 這樣一個高速的算法,還有我們自己内部有一個非常高效的多機訓練的平台。使得我們整個模型訓練的規模性比較好,當我們從一台機器擴充到十台機器,我們訓練速度上的提升基本可以接近線性。有了這樣的平台,才能使我們的近十萬小時的模型才能做實驗。否則連實驗也做不了。

此外,基于百度自主研發的硬體,才使得這樣的計算複雜度更好的 Deep CNN 技術得以成為線上的服務。隻有這些硬體技術的不斷更新,才給了我們聲學模組化研究更大的空間。

機器之心:CNN 是目前語音領域的最新研究進展,你能介紹一下深度學習以來語音領域出現過的其他突破性研究嗎?

李先剛:大約是在 2011、2012 年開始将深度學習用于語音研究,最早是用最簡單的前饋 DNN 模型,發現比 GMM 有 30% 的提升,大家就意思到這是一個劃時代的突破。2013 年,研究者開始嘗試做一些激活函數(例如ReLU,Maxout),其中的 Maxout 發現對 low-resource 的任務有幫助,對真實的大資料庫不一定有顯著幫助;2013-2014 年,大家開始做 CNN ,而非深層的;2014 年開始做 RNN ,尤其是 LSTM 。2014 年底 2015 年初,Hinton 的博士後 Alex Graves ,把以前做手寫體識别的 LSTM 加 CTC 的系統應用在了語音識别領域,在 TIMIT 上做了結果。緊接着谷歌認為這個很有前途,就開始把這些技術推廣在大資料上面。LSTM 和 CTC 引入進來之後,相較于之前的 DNN ,LSTM 能夠更好的幫助模型來捕捉輸入中的重要的點,CTC 打破了隐馬爾科夫的假設,把整個模型從靜态分類變成了序列分類,這是很重要的。百度在 2015 年中期開始做,年底 LSTM 和 CTC 上線。現在的 Deep CNN 是在我們整個研究架構中把 CNN 的潛力挖掘的更徹底。其實 CNN 和 LSTM 有相通也有不一樣的地方,如果 CNN 在時間上做卷積的話,和 LSTM 有很多相似之處。而不同在于 LSTM 擅長做整個時間域資訊的整合,而 CNN 要想達到同樣效果做的配置就要更加複雜。但 CNN 有很強的平移的不變性,對于整個語音識别任務來說,要獲得更好的魯棒性,CNN 比 LSTM 做的好。

機器之心:這次 Deep CNN 帶來的提升會應用在哪些産品中?

李先剛:這項技術會在搜尋産品,如手機百度的語音搜尋先使用,然後再推廣到其他産品。近一年來,手機百度上的語音識别的準确率提升了 20% 以上,效果感覺完全不一樣。這次會帶來效果的再次提升。

機器之心:你提到,現在做的技術研究都是要和産品相結合。對于整個語音識别行業來說,識别率一直在提升,但目前語音識别産品還沒有被大範圍使用,這裡的原因是識别準确度還沒有達到一個臨界點?還是說産品層面的原因?

李先剛:有各方面的問題,首先,識别率如果從現在的 97% 達到 99% ,那肯定會不一樣。其次,産品上也有很多問題,你要做好一個輸入法,或者語音搜尋,是要把很多方面結合在一起的。像我們的語音搜尋很早也具備了語音糾錯功能,語音糾錯對整個語音輸入和搜尋非常關鍵,僅僅做好一個識别率還不錯,怎麼樣讓你的産品體驗更好,還有很多事情要做。是以,一方面是從研究的角度提高準确度,另一個是從産品角度提升使用者體驗。還有一個是使用者習慣的養成,我們發現小孩對語音輸入的接受程度很高。此外,之前百度矽谷人工智能實驗室和斯坦福合作過一篇論文,在實驗中,相比于在手機螢幕上打字,人類能夠語音識别能更快、更準确的組織文本消息。

機器之心:能否介紹一下百度目前整體的語音技術研究,這次 Deep CNN 對百度語音研究有着怎樣的意義?

李先剛:此前,百度語音每年的模型算法都在不斷更新,從 DNN ,到區分度模型,到 CTC 模型,再到如今的 Deep CNN 。基于 LSTM-CTC 的聲學模型也于 2015 年底已經在所有語音相關産品中得到了上線。比較重點的進展如下:1)2013 年,基于美爾子帶的 CNN 模型;2)2014年,Sequence Discriminative Training(區分度模型);3)2015 年初,基于 LSTM-HMM 的語音識别 ;4)2015 年底,基于 LSTM-CTC 的端對端語音識别;5)2016 年,Deep CNN 模型。

百度語音識别技術負責人李先剛:如何利用Deep CNN大幅提升識别準确率?

百度語音識别技術每年疊代算法模型

在識别精度提升方面,通常在海量資料庫上穩定提升 10% 以上就可以稱作顯著進步(significant improvement),這次我們就達到了這樣一個效果。舉個例子,我們語音技術部最開始用 CTC 提升了 15% ,這次用 Deep CNN 又提升了 10% 。

我們正在努力推進 Deep Speech 3 ,這項研究不排除将會是 Deep Speech 3 的核心組成部分。而在工程領域,我們一直在做一些語音識别應用,手機百度和輸入法要提升性能。我們希望在未來的幾年内,将語音識别的準确率在某些任務上做到 99% ,從現在來看是有希望的。同時還有一些周邊技術也在研究,包括說話人切分、遠場語音識别應用等。

©本文由機器之心原創,轉載請聯系本公衆号授權。