自2010年Google的搜索引擎等服務(wù)退出中國(guó)之后,它也嘗試了多種途徑重返中國(guó)市場(chǎng),比如推出中國(guó)版的Google Play應(yīng)用商店,卻沒有取得明顯的成功。即便是在目前中國(guó)已經(jīng)成為最大的Android智能手機(jī)市場(chǎng)的大勢(shì)下,也并沒有使用Google的服務(wù)。
而在7年之際,谷歌再次試圖重返中國(guó),這次打出的“王牌”是它的人工智能系統(tǒng)開發(fā)框架TensorFlow。
雖然Google的云服務(wù)并未入駐中國(guó)市場(chǎng),但中國(guó)卻有著亞洲增長(zhǎng)最快的 TensorFlow開發(fā)者社區(qū)。目前谷歌正在中國(guó)積極推廣TensorFlow,希望借此重回龐大的中國(guó)AI市場(chǎng)。據(jù)了解,已有多名Google美國(guó)工程師出席了至少三個(gè)在北京和上海舉行的 TensorFlow開發(fā)者會(huì)議,其中兩場(chǎng)會(huì)議是閉門會(huì)議,出席者不允許拍照、記錄甚至寫博客。
TensorFlow最初由Google Brain團(tuán)隊(duì)開發(fā)用于Google的研究和生產(chǎn),2015年11月9日在Apache 2.0開源許可證下發(fā)布。自發(fā)布至今,已經(jīng)被下載了超過790萬次。
今天,讓我們通過硅谷數(shù)據(jù)工程師Matthew Rubashkin和Matt Mollison所寫的TensorFlow RNN教程,來先了解一下如何借助TensorFlow框架訓(xùn)練語音識(shí)別的RNN;教程包含了全部代碼片段,你可以找到相應(yīng)的 GitHub 項(xiàng)目,該教程中使用的軟件就是源于現(xiàn)有的開源項(xiàng)目的代碼。
語音識(shí)別:音頻與副本(transcriptions)
2010年基于語音的方法成為語音識(shí)別模型的最新技術(shù),包括發(fā)音,聲學(xué)和語言模型的獨(dú)立組件。而從過去到現(xiàn)在的語音識(shí)別都依賴于使用傅立葉變換公式將聲波分解成頻率和振幅,并產(chǎn)生如下所示的頻譜圖:
為傳統(tǒng)語音識(shí)別流水線而訓(xùn)練隱馬爾可夫模型(HMM)的聲學(xué)模型,需要涉及語音、文本數(shù)據(jù),以及一個(gè)從單詞到音素的字典。HMM是用于順序數(shù)據(jù)生成的概率模型,多用于測(cè)量字符串中的差異的字符串度量,并且通常使用Levenshtein word error distance來評(píng)估。
這些模型可以通過與音素副本對(duì)應(yīng)的語音數(shù)據(jù)進(jìn)行簡(jiǎn)化和精準(zhǔn)化,但這是一個(gè)非常繁瑣的工作。因此,相較于音素級(jí)別的副本,詞級(jí)的副本更可能存在大量的語音數(shù)據(jù)集。
Connectionist Temporal Classification(CTC)損失函數(shù)
當(dāng)使用神經(jīng)網(wǎng)絡(luò)進(jìn)行語音識(shí)別時(shí),我們可以先拋開音素的概念,而使用允許預(yù)測(cè)字符級(jí)副本的基于神經(jīng)網(wǎng)絡(luò)的時(shí)序分類(CTC)的目標(biāo)函數(shù)。簡(jiǎn)而言之,CTC能夠?qū)崿F(xiàn)多個(gè)序列概率的計(jì)算,這里的序列是指語音樣本的所有可能的字符級(jí)副本的集合。而網(wǎng)絡(luò)使用目標(biāo)函數(shù),則可以最大化字符序列的概率(即可以選擇可能性最大的副本),并且通過計(jì)算預(yù)測(cè)結(jié)果與實(shí)際副本之間的誤差從而更新訓(xùn)練期間的網(wǎng)絡(luò)權(quán)重。
值得注意的是,CTC損失函數(shù)使用的字符級(jí)誤差與傳統(tǒng)語音識(shí)別模型中經(jīng)常使用的Levenshtein word error distance不同。對(duì)于字符生成的RNN模型而言,字符和單詞之間的誤差與在諸如Esperonto和Croatian的語音語言中類似,不同的聲音會(huì)對(duì)應(yīng)于不同的字符。相反,對(duì)于非語音語言(如英語),字符與單詞之間的誤差就非常不同了。
為了進(jìn)一步利用為傳統(tǒng)或深度學(xué)習(xí)語音識(shí)別模型而開發(fā)的算法,我們的團(tuán)隊(duì)構(gòu)建了模塊化和快速原型的語音識(shí)別平臺(tái):
數(shù)據(jù)的重要性
毫無疑問,創(chuàng)建一個(gè)將語音轉(zhuǎn)成文本的系統(tǒng),需要數(shù)字音頻文件和文字的副本。而由于該模型將適用于解碼任何新的語音樣本,因此,在系統(tǒng)中供我們進(jìn)行訓(xùn)練的樣本越多,模型的表現(xiàn)也就越好。
對(duì)此,我們研究了可免費(fèi)獲取的英語演講錄音,包括了LibriSpeech(1000小時(shí)),TED-LIUM(118小時(shí))和VoxForge(130小時(shí))等不同的樣本,以供訓(xùn)練使用。
下面的圖表展現(xiàn)了這些數(shù)據(jù)集的信息,包括總時(shí)長(zhǎng)、采樣率和注釋:
為了方便地從任何數(shù)據(jù)源中訪問數(shù)據(jù),我們以扁平的格式存儲(chǔ)所有數(shù)據(jù),如.wav格式和.txt格式。
舉個(gè)例子,你可以在我們的GitHub repo中找到Librispeech訓(xùn)練數(shù)據(jù)集中的“211-122425-0059”數(shù)據(jù)所對(duì)應(yīng)的文件,例如211-122425-0059.wav和211-122425-0059.txt。這些數(shù)據(jù)文件名使用數(shù)據(jù)集對(duì)象類加載到TensorFlow圖中,這有助于TensorFlow有效地加載、預(yù)處理數(shù)據(jù),并將各批數(shù)據(jù)從CPU加載到GPU內(nèi)存中。以下是數(shù)據(jù)集對(duì)象中數(shù)據(jù)字段的示例:
特征表征(representation)
為了使機(jī)器更好地識(shí)別音頻數(shù)據(jù),數(shù)據(jù)必須先從時(shí)域轉(zhuǎn)換到頻域。這里有幾種方法可以創(chuàng)建用于提取機(jī)器學(xué)習(xí)特征的音頻數(shù)據(jù),包括通過任意頻率分級(jí)(如每100Hz),以及通過使用人耳能夠聽到的頻率波段分級(jí)。這種典型的以人為中心的語音數(shù)據(jù)轉(zhuǎn)換是計(jì)算13位或26位不同倒譜特征的梅爾頻率倒譜系數(shù)(MFCC)的,它可以作為模型的輸入。經(jīng)過轉(zhuǎn)換,數(shù)據(jù)將被存儲(chǔ)在一個(gè)頻率系數(shù)(行)隨時(shí)間(列)的矩陣中。
由于語音不會(huì)孤立地產(chǎn)生,并且沒有一對(duì)一映射到字符,所以我們可以通過在當(dāng)前的時(shí)間索引之前和之后捕獲聲音的重疊窗口(10s)上訓(xùn)練網(wǎng)絡(luò),從而捕獲共同作用的影響(通過影響一個(gè)聲音影響另一個(gè)發(fā)音)。
以下是如何獲取MFCC功能以及如何創(chuàng)建音頻數(shù)據(jù)的窗口的示例代碼:
對(duì)于RNN 示例來說,我們使用之前的9個(gè)時(shí)間片段和之后的9個(gè)時(shí)間片段,每個(gè)窗口總共包括了19個(gè)時(shí)間點(diǎn)。當(dāng)?shù)棺V系數(shù)為26的情況下,每25毫秒會(huì)有494個(gè)數(shù)據(jù)點(diǎn)。而根據(jù)數(shù)據(jù)的采樣率,我們建議對(duì)于16000Hz使用26個(gè)倒譜特征,對(duì)8000Hz使用13個(gè)倒譜特征。
以下是8,000 Hz數(shù)據(jù)的加載窗口示例:
語音的序列性建模
長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)層是一種循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)架構(gòu),可用于對(duì)具有長(zhǎng)期順序依賴性的數(shù)據(jù)進(jìn)行建模。由于它們從根本上記住了當(dāng)前時(shí)間點(diǎn)的歷史信息,而這些信息會(huì)影響結(jié)果的輸出,因此它們對(duì)于時(shí)間序列數(shù)據(jù)非常重要。 而也正因這樣的時(shí)態(tài)特征,使得上下文具有了聯(lián)系性,這對(duì)于語音識(shí)別非常有效。
以下展示了深度語音啟發(fā)(DeepSpeech-inspired)的雙向神經(jīng)網(wǎng)絡(luò)(BiRNN)中 LSTM 層的示例代碼:
網(wǎng)絡(luò)訓(xùn)練與監(jiān)控
通過使用Tensorflow訓(xùn)練網(wǎng)絡(luò),我們花很少的精力就可以實(shí)現(xiàn)計(jì)算圖表的可視化,同時(shí)也可以使用TensorBoard從門戶網(wǎng)站上進(jìn)行監(jiān)視訓(xùn)練、驗(yàn)證以及性能測(cè)試。根據(jù)Dandelion Mane在2017年Tensorflow發(fā)展峰會(huì)上做演講中提到的技巧,我們使用tf.name_scope來增加節(jié)點(diǎn)和層名,并將總結(jié)寫到了文件中。
其結(jié)果是自動(dòng)生成的,并且是可理解的計(jì)算圖表。以雙向神經(jīng)網(wǎng)絡(luò)(BiRNN)為例(如下圖),數(shù)據(jù)在左下方到右上方的不同操作間進(jìn)行傳遞。為了更清楚地展現(xiàn),可以為不同的節(jié)點(diǎn)做標(biāo)注,并使用命名空間對(duì)節(jié)點(diǎn)進(jìn)行著色。在這個(gè)例子中,青色的“fc”盒子對(duì)應(yīng)全連接層,而綠色 的'“b”和“h”盒子分別對(duì)應(yīng)偏移量和權(quán)重。
我們使用TensorFlow提供的tf.train.AdamOptimizer來控制學(xué)習(xí)率。 而AdamOptimizer則通過使用動(dòng)量(參數(shù)的移動(dòng)平均值)來改善傳統(tǒng)梯度下降,從而促進(jìn)超參數(shù)的有效動(dòng)態(tài)調(diào)整。此外,我們還可以通過創(chuàng)建標(biāo)簽錯(cuò)誤率的摘要標(biāo)量來跟蹤丟失和錯(cuò)誤率:
如何改進(jìn)RNN
現(xiàn)在我們已經(jīng)建立了一個(gè)簡(jiǎn)單的LSTM RNN網(wǎng)絡(luò),那么,如何降低其中的錯(cuò)誤率呢?非常幸運(yùn)的是,對(duì)于開源社區(qū)而言,許多大公司都已經(jīng)發(fā)布了他們表現(xiàn)最好的語音識(shí)別模型的背后的數(shù)學(xué)模型。早在2016年9月,微軟就發(fā)布了一篇文章,描述了他們?nèi)绾卧贜IST 200交換機(jī)數(shù)據(jù)上將錯(cuò)誤率降到6.9%。他們?cè)诰矸e+遞歸神經(jīng)網(wǎng)絡(luò)之上使用了幾種不同的聲學(xué)和語言模型。
微軟團(tuán)隊(duì)和其他研究人員在過去4年中所做的幾項(xiàng)重大改進(jìn)包括:
值得注意的是,在過去幾十年的傳統(tǒng)語音識(shí)別模型中率先開發(fā)的語言模型,在深度學(xué)習(xí)語音識(shí)別模型中再次被證明是有價(jià)值的。
改進(jìn)來自:A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014
訓(xùn)練你的第一個(gè)RNN
我們提供了一個(gè) GitHub項(xiàng)目(GitHub repository),該項(xiàng)目的腳本提供了一個(gè)用RNNs和CTC損失函數(shù)(在TensorFlow中),訓(xùn)練端到端語音識(shí)別系統(tǒng)的簡(jiǎn)單易行執(zhí)行方案。GitHub庫中包含了來自LibriVox 語料庫(LibriVox corpus )示例數(shù)據(jù),這些數(shù)據(jù)被分為如下幾個(gè)文件夾:
當(dāng)訓(xùn)練這幾個(gè)示例時(shí),你會(huì)很快注意到訓(xùn)練數(shù)據(jù)會(huì)過度擬合(overfit),這使得錯(cuò)詞率(WER)約為0%,而測(cè)試集和Dev數(shù)據(jù)集的WER大約能達(dá)到85%。測(cè)試錯(cuò)誤率之所以不是100%,是因?yàn)闄C(jī)器需要在29個(gè)可能的字符間做選擇(a-z,省略號(hào),空格鍵,空白),但網(wǎng)絡(luò)將很快學(xué)習(xí)到:
在GitHub庫中使用默認(rèn)設(shè)置做訓(xùn)練,運(yùn)行結(jié)果如下圖所示:
如果你想訓(xùn)練一個(gè)高性能的模型,還可以在文件夾中添加額外的.wav和.txt文件,或者創(chuàng)建一個(gè)新的文件夾,并用文件夾位置更新`configs / neural_network.ini`。需要注意的是,即使使用強(qiáng)大的GPU,在僅僅幾百個(gè)小時(shí)的音頻上做處理和訓(xùn)練也需要非常大的計(jì)算能力。
| 編譯:科技行者
| 來源:SVDS
好文章,需要你的鼓勵(lì)
新加坡國(guó)立大學(xué)研究團(tuán)隊(duì)開發(fā)了SPIRAL框架,通過讓AI與自己對(duì)弈零和游戲來提升推理能力。實(shí)驗(yàn)顯示,僅訓(xùn)練AI玩簡(jiǎn)單撲克游戲就能讓其數(shù)學(xué)推理能力提升8.6%,通用推理提升8.4%,且無需任何數(shù)學(xué)題目作為訓(xùn)練材料。研究發(fā)現(xiàn)游戲中的三種推理模式能成功轉(zhuǎn)移到數(shù)學(xué)解題中,為AI訓(xùn)練提供了新思路。
同濟(jì)大學(xué)團(tuán)隊(duì)開發(fā)的GIGA-ToF技術(shù)通過融合多幀圖像的"圖結(jié)構(gòu)"信息,創(chuàng)新性地解決了3D相機(jī)噪聲問題。該技術(shù)利用圖像間的不變幾何關(guān)系,結(jié)合深度學(xué)習(xí)和數(shù)學(xué)優(yōu)化方法,在合成數(shù)據(jù)集上實(shí)現(xiàn)37.9%的精度提升,并在真實(shí)設(shè)備上展現(xiàn)出色泛化能力,為機(jī)器人、AR和自動(dòng)駕駛等領(lǐng)域提供更可靠的3D視覺解決方案。
伊利諾伊大學(xué)研究團(tuán)隊(duì)通過對(duì)比實(shí)驗(yàn)發(fā)現(xiàn),經(jīng)過強(qiáng)化學(xué)習(xí)訓(xùn)練的視覺語言模型雖然表現(xiàn)出"頓悟時(shí)刻"現(xiàn)象,但這些自我糾錯(cuò)行為并不能實(shí)際提升推理準(zhǔn)確率。研究揭示了AI模型存在"生成-驗(yàn)證差距",即生成答案的能力強(qiáng)于驗(yàn)證答案質(zhì)量的能力,且模型在自我驗(yàn)證時(shí)無法有效利用視覺信息,為AI多模態(tài)推理發(fā)展提供了重要啟示。
MIT等頂尖機(jī)構(gòu)聯(lián)合提出SparseLoRA技術(shù),通過動(dòng)態(tài)稀疏性實(shí)現(xiàn)大語言模型訓(xùn)練加速1.6倍,計(jì)算成本降低2.2倍。該方法使用SVD稀疏性估計(jì)器智能選擇重要計(jì)算部分,在保持模型性能的同時(shí)顯著提升訓(xùn)練效率,已在多個(gè)任務(wù)上驗(yàn)證有效性。