雖然過去的一年中,我們聽到更多的是地平線關(guān)于圖像、芯片方面的研究,但據(jù)機器之心了解,地平線在創(chuàng)立之初(2015年)就擁有了一支十分強大的語音團隊,很早就在進行語音方面的研究,積累起獨特的技術(shù)優(yōu)勢。
在近日,機器之心對地平線聯(lián)合創(chuàng)始人、算法副總裁黃暢博士以及首席語音算法工程師牛建偉進行了專訪,從公司的整體戰(zhàn)略、語音技術(shù)兩個角度揭開地平線語音的神秘面紗。
黃暢博士,地平線機器人技術(shù)聯(lián)合創(chuàng)始人、算法副總裁。深度學(xué)習(xí)專家,前百度主任架構(gòu)師(T10)。長期從事計算機視覺、機器學(xué)習(xí)、模式識別和信息檢索方面的研究,作為相關(guān)學(xué)術(shù)界和工業(yè)界的知名專家,發(fā)表的論文被引用超過3350次,擁有多項國際專利。他開發(fā)的人臉檢測技術(shù),創(chuàng)造了世界上首次計算機視覺技術(shù)被大規(guī)模應(yīng)用的成功范例,占領(lǐng)80%數(shù)碼相機市場,并且被蘋果iPhoto等諸多圖像管理軟件所采用。
牛建偉,地平線機器人技術(shù)首席語音算法工程師、語音識別團隊負責(zé)人。牛建偉畢業(yè)于西北工業(yè)大學(xué)語音識別專業(yè)。曾任百度語音技術(shù)部資深工程師,在百度期間研發(fā)了國內(nèi)第一個采用深度學(xué)習(xí)技術(shù)的大規(guī)模商用語音識別系統(tǒng),并建立了一套國內(nèi)領(lǐng)先的離線語音識別系統(tǒng)。牛建偉2015年加入地平線后,主導(dǎo)搭建了地平線的語音識別系統(tǒng)。
地平線的語音戰(zhàn)略
機器之心:請黃暢博士介紹一下地平線在語音方面所做的工作?
黃暢:請容許我首先介紹一下我在語音方面的同事牛建偉。牛建偉在加入地平線之前就職于百度語音技術(shù)部,是國內(nèi)語音行業(yè)中最早一批接觸并運用深度學(xué)習(xí)算法的人,至今從事語音方面的研發(fā)工作已經(jīng)7年有余。事實上,地平線從創(chuàng)立伊始就開始語音技術(shù)的研發(fā),原因很簡單——萬物智能意味著人機交互需要變得更加自然,而語音正是其中最重要的手段之一。在家居場景中,各種智能終端上的語音技術(shù)與手機上的相比,會復(fù)雜很多,具體表現(xiàn)為:語音的獲取從近場變?yōu)檫h場、對交互響應(yīng)時間的要求更為苛刻、需要對接的服務(wù)種類更加繁雜。這些特點決定了智能終端不能簡單沿用手機上的語音技術(shù)架構(gòu)。
為了更好地處理遠場語音問題,我們開展了語音信號處理(包括麥克風(fēng)陣列)相關(guān)的算法和硬件研發(fā);為了降低交互響應(yīng)時間,我們采用了云端+嵌入式的語音識別架構(gòu);在嵌入式端,受限于計算資源,我們僅僅運行信號處理、喚醒、命令詞和小規(guī)模通用語音識別模型,以保證低延時的交互響應(yīng)以及網(wǎng)絡(luò)條件不好情況下的用戶體驗;而在云端我們可以采用更大規(guī)模的聲學(xué)模型、更復(fù)雜的解碼器和語言模型,在網(wǎng)絡(luò)條件良好的情況下確保更好的用戶體驗;最終,通過語義理解、知識庫和對話系統(tǒng),做出決策并對智能設(shè)備進行有效的控制,將用戶和廣泛的服務(wù)對接起來。
機器之心:現(xiàn)在的語音團隊大約發(fā)展到了多少人?
黃暢:除了北京,我們還在南京設(shè)立了語音研發(fā)中心,整個團隊加起來正式員工有20多人。
機器之心:國內(nèi)也有一批語音方面的人工智能創(chuàng)業(yè)公司,比如思必馳、云知聲等,我們和他們比起來有什么不同?
黃暢:我們的角度是不一樣的。首先據(jù)我所知,他們還是非常偏重云端的。地平線的語音則一開始就強調(diào)云端+嵌入式。語音信號處理、喚醒、命令詞以及語音小模型放在嵌入式端,以保證實時性和網(wǎng)絡(luò)不佳條件下的必要功能,而將語音大模型和語義理解放在云端,以提供更佳的性能并能對接服務(wù),這種云端+嵌入式端的整體方案,可以提供更好的用戶體驗。
我們注重的是語音全自然交互的解決方案,也就是前端語音信號處理與后端語音識別、語義理解相結(jié)合。
語音信號處理、語音識別、語義理解這三個環(huán)節(jié)組成了一個完整的解決方案,尤其需要注意的是前端語音信號處理,它發(fā)揮了很重要的作用。舉個簡單例子,在語音識別環(huán)節(jié)很重要的就是對數(shù)據(jù)進行擾動、加噪。那么加噪怎么加?加多少?這其實跟音頻信號處理關(guān)系是非常大的。如果只專注于語音識別這件事情而不做音頻前端的信號處理、優(yōu)化,就會導(dǎo)致在具體產(chǎn)品上出現(xiàn)性能不好,或者成本過高等問題。
最后,我們在軟硬件配合方面做了大量工作。硬件體現(xiàn)在兩方面,一方面是在前端信號處理上的麥克風(fēng)陣列,另一方面是在中間的語音識別,尤其在嵌入式的語音識別,需要我們設(shè)計專用的、針對深度學(xué)習(xí)優(yōu)化的計算架構(gòu)芯片。
所以我們認為語音交互這件事情,首先是云端+嵌入式;其次是語音信號處理、語音識別、語義理解三個環(huán)節(jié)都要做;最后,你要軟硬結(jié)合。這三個維度缺一不可。
機器之心:地平線之前推出的雨果平臺、安徒生平臺上面使用到的語音交互解決方案也都是我們自己的?
黃暢:雨果1.0平臺是一個基于FPGA的平臺,它主要面對的是汽車市場。安徒生平臺面向的是智能家居。現(xiàn)階段,車載語音暫時還沒有放在我們的工作范疇之內(nèi),我們專注的是智能家居的語音應(yīng)用。所以說我們的語音目前主要是在安徒生平臺上的應(yīng)用。
這其實也反映了另外一個問題。表面上看車載語音和家居語音都是語音應(yīng)用,但實際上因為場景不同,可以接受的功耗和成本不一樣,這導(dǎo)致你所采用的技術(shù)方法的差距非常大。
所以在研究方面我們要把信號處理、語音識別和語義理解三個環(huán)節(jié)都做。但在其他的維度上,比如在具體應(yīng)用場景中,我們要有所收斂。因為畢竟我們不可能像一個大公司一樣,投入非常多的資源在所有的維度上。
機器之心:地平線之前一直在做圖像識別方面的研究,也有語音識別方面的研究。如果兩者部署到同一個平臺,比如說同一個機器人平臺上,它們是相互促進?還是彼此獨立的存在?
黃暢:這恰恰是我們努力在做的。表面上看語音和圖像好像是是兩個不同的東西,但實際在交互的過程中我們追求的是一種多模態(tài)的交互。
舉個簡單的例子,我們通常說語音是比較自然的交互,但是在有些場景中你會發(fā)現(xiàn)手勢、人臉這些來自于圖像的信號也能夠很好的輔助你進行交互。尤其是在復(fù)雜的場景中,比如說開party,你會發(fā)現(xiàn)在嘈雜的聲音中把語音分離出來是很難的。
針對這種復(fù)雜場景中的問題,雖然我們有增強的方法,但是你一開始甚至不知道應(yīng)該往哪個方向進行增強。所以我們可以結(jié)合一些來自于圖像的indicator,比如說手勢識別,比如說類似前段時間DeepMind做的唇語識別。它(指DeepMind的LipNet)是個很有意思的應(yīng)用,也是在做語音識別,但它不是靠語音信號而是靠圖像信號,而且準(zhǔn)確率十分驚人。
這就說明一個很有趣的問題:如何讓機器所感知的信息,像人機交互一樣,也是一種多模的交互?從邏輯上來講,是把語音和圖像的交互結(jié)合起來。從執(zhí)行上來講,你必須把兩個東西放在一套系統(tǒng)里面,非常完美地同時運行這兩個東西。
再往深處去挖,圖像和語音發(fā)展到現(xiàn)在,在計算模式上已經(jīng)有了非常大的相似性,這使得我們可以設(shè)計一套對這兩種問題通用的計算架構(gòu),這也是我們之所以非常看重專用的芯片架構(gòu)設(shè)計的原因。因為我們相信用一套專門設(shè)計的新架構(gòu),能夠做好包括語音、圖像、決策在內(nèi)的很多人工智能問題的運算。
機器之心:把語音技術(shù)部署到產(chǎn)品上面接下來有什么計劃嗎?
黃暢:前期主要是在智能家居方面,比如說跟科沃斯的合作,將語音識別技術(shù)用于智能掃地機器人上。此外我們也在跟其它家電廠商研發(fā)基于語音識別的技術(shù)應(yīng)用。
地平線認為2017年是語音識別廣泛應(yīng)用的關(guān)鍵年。所以我們在這一年會非常重視整個語音的技術(shù)研發(fā)和產(chǎn)品推廣,包括市場拓展,這是今年公司最重要的方向之一。
地平線的語音技術(shù)
機器之心:兩位能從技術(shù)角度講解下地平線的語音研究嗎?模型與算法?
牛建偉:前面也講到了,地平線在很多方面都有一些工作:音頻信號處理、語音識別、語義理解、語音合成等。
具體到其中的「語音識別」,它包括兩大模型:在語言模型上我們現(xiàn)在用的是n-gram結(jié)合RNN的模型;識別模型在嵌入式端主要用CNN和DNN模型,服務(wù)器上采用CLDNN模型結(jié)構(gòu)。
我們在算法上做的提升包括:一個是前端音頻信號處理,我們正在做一套完整的前端模塊或者說是算法套件。有了前端的提升之后,我們的識別系統(tǒng)對強噪聲干擾、人聲干擾就會有更好的魯棒性。
另一個提升是針對語音識別場景的打磨。因為掃地機器人或者是空調(diào),都有一些本體噪聲。我們需要模型能夠適應(yīng)這種本體噪聲。此外,就是一些建模方法、模型結(jié)構(gòu)上的改變或者改進,比如DeepCNN模型、LSTM模型以及進一步引入CTC準(zhǔn)則。
剛才提到的LSTM模型、CLDNN模型,在一些數(shù)據(jù)集上我們都已經(jīng)能夠驗證效果,并將逐步將算法移植到我們自己的芯片上。
語音合成上,我們現(xiàn)在用的是基于BLSTM模型的一套參數(shù)合成系統(tǒng),現(xiàn)在也在追蹤WaveNet。
黃暢:現(xiàn)在很多學(xué)術(shù)界或者業(yè)界的新發(fā)展,基本上都是基于大規(guī)模的服務(wù)器、GPU去完成的。我們在跟蹤這些最新的方法同時,非常關(guān)注哪些更加適合部署在嵌入式平臺,部署在低成本、低功耗的通用處理器以及我們設(shè)計的專用芯片架構(gòu)上。
機器之心:這整套方法的準(zhǔn)確率大約在多少呢?有沒有測試出一個結(jié)果?
牛建偉:根據(jù)我們的內(nèi)部評測結(jié)果,在1000小時的數(shù)據(jù)上,CLDNN+CTC模型相比于之前公司的DCNN模型性能大概提升了15%~20%。
機器之心:在語音合成方面剛才你提到的追蹤WaveNet,能補充說明一下嗎?
牛建偉:我們現(xiàn)在已有的是一個相對來說比較主流的技術(shù)框架。文本處理前端就是利用NLP相關(guān)算法、資源進行文本的規(guī)整,提取詞法和語法信息。后端主要集中在參數(shù)合成,這一環(huán)節(jié)比較容易放到嵌入式的端上面進行,因為它的資源量比較小。這樣的話TTS系統(tǒng)只需要占用幾十MB的空間,對計算的要求也可控。后端我們用的就是一個相對主流的BLSTM模型,這基本上也是各家都在用的。
至于WaveNet,它相對來說提高了合成語音的自然度,還有舒適度,但是它存在一個問題就是計算量很大。語音是16K采樣,一秒鐘它就要預(yù)測16000次。當(dāng)然可以再做加速,但現(xiàn)在加速的效果還沒有那么好,現(xiàn)在基本上還是100倍的實時率,就是合成一秒鐘語音還需要100多秒的計算時間。這沒辦法直接用到產(chǎn)品上面,所以我們還是在追蹤WaveNet的階段。
機器之心:吳恩達今年在NIPS 2016上提到了端到端學(xué)習(xí)在語音識別上的應(yīng)用,我們在這方面有沒有深入的研究呢?
牛建偉:吳恩達的「端到端」,在英文識別中是指從一個頻率的特征直接建模到音素這一級,中文指從一個頻率特征建模到拼音聲母跟韻母這一級。從目前主流的實踐上看,這其實就是一個LSTM和它的變形,然后加上一個CTC目標(biāo)函數(shù)。之所以認為是一個端到端,是因為它省略了以前語音識別三音素表述的概念。
再進一步發(fā)展的話就不限于一定是頻率的特征,可能就是從原始的波形一直到因素或聲韻母,這相當(dāng)于是更寬的端到端。
黃暢:其實端到端不是一個新的概念,而且端到端也是相對而言的。你現(xiàn)在聽到的端到端是相對于過去的工作而言,過去工作是什么呢?是把輸入到輸出的中間部分分成兩三個不同的階段,然后分別去做優(yōu)化,F(xiàn)在是把這兩三個階段合在一起,直接做輸入到輸出的端到端優(yōu)化。但如果把視線放到端到端之外,其實輸入前還有信號處理、特征抽取,輸出后還有解碼、語言模型、語義理解。所以你現(xiàn)在所看到的端到端如果放到我前面提過的序列中還只是整個語音識別鏈條中的很小一部分。
端到端的思想其實來源于深度學(xué)習(xí)的一個核心思想,這只是深度學(xué)習(xí)方法應(yīng)用于問題中不斷的延展。理想情況就是提供一個或者多個麥克風(fēng),不做信號處理就直接讀取錄音內(nèi)容,然后通過深度學(xué)習(xí)模型最終直接輸出意義。
機器之心:如果要促進語音識別更加地實用,還要做些什么樣的工作呢?
黃暢:現(xiàn)在看來語音識別問題好像已經(jīng)基本解決了,但這僅限于近距離安靜場景中和發(fā)音相對比較規(guī)范情況下。就好比人臉識別,很多人覺得好像是個已解決問題,但仍只是在限定條件下。但當(dāng)你實際應(yīng)用的時候,會出現(xiàn)各種問題。典型的問題就是:第一個,遠場情況下,混響、噪聲干擾怎么解決?第二個,語義是否能夠正確理解?
我們以前討論過,如果只是做一個通用語音識別,可以把字打出來。本質(zhì)上來講,它只能夠替代輸入法,作用是十分有限的。如果要把它用在交互上,形成一個閉環(huán)的話,它必須能夠理解人的語義。所以只在中間這段語音識別做好還不夠,真正應(yīng)用中要形成一個閉環(huán),前面的語音信號處理、后面語義理解都要做得好。
所以我們不應(yīng)該單純的、狹義的說語音識別問題已經(jīng)解決了。廣義的語音識別應(yīng)該是從聲音信號開始,到最終的語義。
機器之心:那我們在語義理解方面做了哪些工作?
牛建偉:我們現(xiàn)在主要還是針對于對話或者是交互系統(tǒng)來做,包括我們在用強化學(xué)習(xí)做對話的一些生成,還有對話狀態(tài)的管理。同時我們也做一些NLP方面的工作,用Deep CNN或者LSTM做一些名詞的標(biāo)注,或者是實體的識別,另外還有些語言模型方面的工作。
黃暢:泛泛的那種對話、聊天式的機器人意義不大,我們關(guān)注的對話是針對某個特定的場景、應(yīng)用或者類型的知識,使它成為有獨特性的,有「知識背景」的對話。
機器之心:地平線在語音研究上的數(shù)據(jù)能做一下介紹嗎?
黃暢:關(guān)于數(shù)據(jù),其實有些新的趨勢不僅是在語音上,而在各種各樣的技術(shù)性問題中,比如如何做遷移學(xué)習(xí)(transfer learning)?在一個有大規(guī)模數(shù)據(jù)的場景中訓(xùn)練出模型,在另外一個相似、相仿的場景中,怎么把這個大規(guī)模數(shù)據(jù)場景中訓(xùn)練出的模型遷移到小規(guī)模數(shù)據(jù)場景中。
另一方面是生成型模型,尤其是對抗式生成式模型,它提出了一種非常新的概念,就是重新設(shè)定學(xué)習(xí)的范式(paradigm)和框架,重新看待學(xué)習(xí)這件事情。它一個很重要的產(chǎn)出就是,利用生成式模型幫助你產(chǎn)生更多的、特定屬性的數(shù)據(jù)。
再往前推,其實RL(強化學(xué)習(xí))是非常有價值,尤其是在交互的過程中。對語義理解互動這件事情,RL天生就是為這種交互的模式設(shè)計的。
機器之心:在語音識別算法方面,還可以朝著哪些方面改進?
牛建偉:主要有三方面的改進。
第一,降低數(shù)據(jù)量的需求。即我們通過一些方式生成數(shù)據(jù),或者學(xué)習(xí)一些數(shù)據(jù)共有的特征或?qū)傩,以此降低?shù)據(jù)量需求。比如說為了達到一個比較高的識別率,現(xiàn)在可能需要2萬小時的數(shù)據(jù)量,以后只需要2000小時。舉個例子,DNN取代以前的GMM模型的時候,DNN1000小時的性能其實已經(jīng)超過了在3000小時訓(xùn)練數(shù)據(jù)上訓(xùn)練的GMM的性能。
第二,更好的語音信號的特征表示。因為現(xiàn)在語音識別最大的一個問題是有比較大的干擾之后,識別效果就不太好。其實人在0dB或者更低信噪比的情況下(噪音跟聲音的能量是一致的時候),還能夠識別,但機器就沒辦法處理的很好。說明我們現(xiàn)有的特征表示的魯棒性還不夠好,距離人還有很大差距。
針對于此,我們可以對人耳聽覺進行更精確的數(shù)字描述;蛟O(shè)計現(xiàn)在已有的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),更好地提取出語音信號里面對識別來說作用更大的特征。
第三,解碼。我們現(xiàn)在一直在提端到端,但其實一直沒有把解碼包含進來。語音識別最終做的還是把固定特征表示成一個更高維的信息,還是時間序列上的表示,需要解碼的過程。
解碼是除了模型外計算量比較大的一塊。但其實解碼也能通過模型表示出來。也就是通過模型的方式把高維的時序信息結(jié)合起來,最終直接就預(yù)測出一句話,那這樣就相當(dāng)于在時序上的端到端的識別。
如果能做到這樣,后面優(yōu)化識別模型的過程就變得更容易了。因為雖然解碼還是工程化的東西,但它會比較明顯的影響到識別結(jié)果。如果我能把它放到機器學(xué)習(xí)的框架里面去優(yōu)化,這樣相當(dāng)于整體的優(yōu)化。有可能性能會更好,解碼的效率也會更高。
機器之心:不久之前Facebook提出了新的語言模型方法Gated Convolutional Network,相比于LSTM取得了一定進展。對此研究有何看法?這個研究是否有很大的意義?
牛建偉:Gated CNN跟9月份的WaveNet其實有點類似,因為它相當(dāng)于是把顯示的那種循環(huán)結(jié)構(gòu)改了一下。
LSTM的提出從想法上還是比較簡單:因為這是一個時序的問題,需要歷史指導(dǎo)來做下一步的預(yù)測。但現(xiàn)在我們來看,它存在一些問題:優(yōu)化算法沒有那么穩(wěn)定。
LSTM之前是Simple RNN,為什么LSTM比RNN好?
從理論上來說,兩者的表達的能力應(yīng)該是一樣的。通過調(diào)整結(jié)構(gòu)(引入門),來適應(yīng)現(xiàn)有的一些學(xué)習(xí)算法,讓它的性能變得比較好。但同時也說明現(xiàn)有的優(yōu)化算法是有些問題的,包括它的收斂性、穩(wěn)定性上。
現(xiàn)在的一個趨勢是利用CNN結(jié)構(gòu)的組合來替代RNN模型,優(yōu)化的時候就可以用一個SGD(隨機梯度下降)或者類似SGD的優(yōu)化算法,它的穩(wěn)定性相對來說會高一些,不會存在很明顯的梯度爆炸問題。
另外,還因為卷積網(wǎng)絡(luò)用CNN這種結(jié)構(gòu)直觀上比較合理一些。比如說三個單詞,我先把它們變成一個連續(xù)域表示,就像它們論文中的一張圖就是把word graphic轉(zhuǎn)到連續(xù)域場(如上圖)。然后把連續(xù)域的特征通過卷積,就看前三個,提出一個特征然后一層層加上去,之后再做一個預(yù)測。預(yù)測的詞出來之后,再放到輸入上面,就這樣一層一層過。其實它也是類似循環(huán)的結(jié)構(gòu),但這種結(jié)構(gòu)依賴的歷史相對就比較明確了。
LSTM其實是一個隱含的。你可以說它學(xué)到了歷史,因為它有一個保存信息的cell,但到底它學(xué)了多長的歷史是未知的。
至于這個研究,模型的話我覺得可能意義沒那么大。我個人認為,如果能在優(yōu)化算法上有更好的改進,普通的模型結(jié)構(gòu)可能也能取得這樣的效果。但現(xiàn)在優(yōu)化算法上突破性的改進,好像還不多。
黃暢:我補充一點。關(guān)于LSTM,不管你是單向的、雙向的、摞一起的、不摞一起的,其實都有一個問題:信息傳導(dǎo)的約束很強。換句話說,不管是做前向預(yù)測還是后向BP(反向傳播),一個信息從左邊到右邊,或者從開始到結(jié)束,都要經(jīng)過很長的路徑。而且在整個過程中,會有很多非線性的變化,尤其是LSTM這種典型的、很容易進入自我限制狀態(tài)的模型。經(jīng)過很多次這樣的事情,就導(dǎo)致整個優(yōu)化變得異常困難。這個結(jié)構(gòu)天生就使得優(yōu)化變得非常困難。
這是LSTM的弊病,它的結(jié)構(gòu)設(shè)計有很大限制性。你可以類比一些其他結(jié)構(gòu),比如ResNet,它通過建立free-way的方式,人為地架了很多short-pass(短路徑),使得本來在網(wǎng)絡(luò)上距離很遠的兩個單元之間建立一些高速的快速通道。直觀的理解就是可以讓它們之間的信息溝通更加順暢,減輕我前面說的那個問題。
更進一步,你會發(fā)現(xiàn)在語音識別中有人用完整的CNN替代LSTM,包括訊飛、微軟、百度。剛開始的時候CNN用得很淺,只是作為基本的局部表達,后來發(fā)現(xiàn)可以用CNN不斷堆積,而且堆的很有技巧。在計算量不顯著增加的情況下,這樣就可以用CNN覆蓋很大的語境。
就是說優(yōu)化算法本身也許沒有很好的進步,但是通過網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計可以規(guī)避目前主要基于SGD的優(yōu)化算法難以解決的LSTM問題,直接構(gòu)造一個更適合目前優(yōu)化算法去優(yōu)化的網(wǎng)絡(luò)結(jié)構(gòu)。所以本質(zhì)上很難說哪個結(jié)構(gòu)更好,你只能說這個結(jié)構(gòu)更適合現(xiàn)在主流的這種優(yōu)化方法。
其實論文出來時我稍微看了一點,它本質(zhì)上好像和attention model很像。attention model的概念是不管語境是怎么傳過來的,總是有選擇的看所有東西,做決策(比如生成一個詞)的時候有選擇的去做。這時候會產(chǎn)生一個attention mask,這可以理解成一個gate,封住一些不想看的東西,保留想看的。
這個在圖像和NLP里面已經(jīng)得到很好的驗證。NLP、語音、圖像其實都是相通的,你會發(fā)現(xiàn)很多思想、結(jié)構(gòu)、設(shè)計理念會越來越相似。這也給了我們信心,讓我們可以實現(xiàn)語音圖像識別一體化交互,用一套統(tǒng)一的專用架構(gòu)去做解決各種各樣的問題。