deepspeech 2 (百度 2016 論文解讀 )

論文:http://proceedings.mlr.press/v48/amodei16.pdf
題目:Deep Speech 2 : End-to-End Speech Recognition in English and Mandarin

摘要

我們表明,可以使用端到端的深度學習方法來識別英語或普通話(兩種截然不同的語言)。 由於它用神經網絡代替了人工工程組件的整個流水線,因此端到端學習使我們能夠處理各種語音,包括嘈雜的環境,口音和不同的語言。 我們方法的關鍵是我們對HPC技術的應用,使以前需要數週才能完成的實驗現在可以在數天內運行。 這使我們能夠更快地進行迭代,以識別出卓越的架構和算法。 結果,在某些情況下,以標準數據集爲基準,我們的系統在人工轉錄方面具有競爭力。 最後,通過在數據中心中使用稱爲批處理分配技術和GPU的技術,我們證明了我們的系統可以廉價地在線部署,在爲大規模用戶提供服務時提供了低延遲。

1.介紹

數十年的手工工程領域知識已進入當前最先進的自動語音識別(ASR)流程。 一個簡單但功能強大的替代解決方案是端到端地訓練此類ASR模型,使用深度學習將單個模塊替換大多數模塊,如(Hannun et al。,2014a)和(Graves&Jaitly,2014b)。 這種“端到端”的培訓願景通過消除通常用於構建最新ASR模型的自舉,對齊/聚類/ HMM機械所需的工程設計,簡化了培訓過程。 在這樣的基於端到端深度學習的系統上,我們可以採用各種深度學習技術:捕獲大型訓練集,使用高性能計算訓練大型模型以及有條不紊地探索神經網絡架構的空間。
本文詳細介紹了我們對模型體系結構,大型標籤訓練數據集以及語音識別的計算規模的貢獻。這包括對模型體系結構的廣泛研究,以及使我們能夠創建比通常用於訓練語音識別系統的數據集更大的數據集的數據捕獲管道。
我們在幾個公開的測試集上對我們的系統進行基準測試,目的是最終達到人類水平的性能。爲此,我們還測量了每個基準上的人羣工作者的表現,以進行比較。我們發現,我們最好的普通話語音系統比典型的普通話說話者能更好地轉錄簡短的語音查詢(例如發聲)。
本文的其餘部分如下。我們將在第2節中對深度學習,端到端語音識別和可伸縮性中的相關工作進行回顧,第3節介紹了模型的體系結構和算法改進,第4節介紹瞭如何有效地計算它們。我們將在第5節中討論訓練數據和爲進一步擴大訓練集而採取的步驟。在第6節中介紹了我們系統的英語和普通話結果。最後,描述了將系統部署到實際環境所需的步驟。第7節中的用戶。

2.相關工作

這項工作的靈感來自先前在深度學習和語音識別方面的工作。前饋神經網絡聲學模型已經探索了20多年(Bourlard&Morgan,1993; Renals等,1994)。大約在同一時間,遞歸神經網絡和具有卷積的網絡也被用於語音識別(Robinson等,1996; Waibel等,1989)。最近,DNN已成爲ASR流程中的固定裝置,幾乎所有最新的語音工作都包含某種形式的深度神經網絡(Mohamed等,2011; Hinton等,2012; Dahl等,2011; N Jaitly&Vanhoucke,2012; Seide等,2011)。還發現卷積網絡對於聲學模型是有益的(Abdel-Hamid等,2012; Sainath等,2013)。遞歸神經網絡已開始部署在最先進的識別器中(Graves等,2013; H.Sak等,2014),並且與卷積層一起很好地用於特徵提取(Sainath等,2015) )。
端到端語音識別是一個活躍的研究領域,當用於對DNN-HMM(Graves&Jaitly,2014a)和獨立(Hannun et al。,2014a)的輸出進行評分時,顯示出令人信服的結果。注意力集中的RNN編解碼器在預測音素(Chorowski等人,2015)或音素(Bahdanau等人,2015; Chan等人,2015)方面表現良好。 CTC損失函數(Graves等,2006)與RNN結合以模擬時間信息,在具有字符輸出的端到端語音識別中也表現良好(Graves&Jaitly,2014a; Hannun等,2014b; a; Maas等)等人,2015年)。 CTC-RNN模型也可以很好地預測音素(Miao等,2015; Sak等,2015),儘管在這種情況下仍需要詞典。
到目前爲止,深度學習中的規模利用一直是該領域成功的關鍵(Krizhevsky等,2012; Le等,2012)。在單個GPU上進行訓練可顯着提高性能(Raina等,2009),隨後將其線性擴展至兩個(Krizhevsky等,2012)或更多GPU(Coates等,2013)。我們利用工作來提高低級深度學習原語的單個GPU效率(Chetlur等人)。我們基於過去使用模型並行性(Coates等人,2013),數據並行性(Dean等人,2012)或兩者結合(Szegedy等人,2014; Hannun等人, 2014a)創建一個快速且高度可擴展的系統,用於在語音識別中訓練深度RNN。數據對端到端語音識別的成功也至關重要,在其中使用了7000多個小時的標記語音(Hannun等,2014a)。數據增強在提高計算機視覺中的深度學習性能(LeCun等,2004; Sapp等,2008; Coates等,2011)和語音識別(Galeset等,2009; Hannun等)方面非常有效。等,2014a)。現有的語音系統也可以用於引導新的數據收集。例如,現有語音引擎可用於對齊和過濾數千小時的有聲讀物(Panayotov等,2015)。我們從過去的方法中汲取了靈感,引導了更大的數據集和數據擴充,以增加我們系統的有效標記數據量。

3.模型結構

在這裏插入圖片描述
圖1顯示了我們架構的線框,並列出了我們在本文中詳細探討的可交換組件。我們的系統(其核心類似於(Hannun等人,2014a)中的一個)是一個遞歸神經網絡(RNN),具有一個或多個卷積輸入層,然後是多個遞歸(單向或雙向)層和一個完整的在softmax層之前的連接層。該網絡使用CTC丟失功能進行了端到端的訓練(Graves等,2006),這使我們能夠直接從輸入音頻中預測字符序列。 2網絡的輸入是功率歸一化音頻片段的對數頻譜圖序列,以20ms窗口計算。輸出是每種語言的字母。在每個輸出時間步t處,RNN進行預測p(t∣x),其中t是字母中的字符或空白符號。在英語中,我們有’t∈{a,b,c,… ,z,空格,撇號,空白},我們在其中添加了空格符號以表示單詞邊界。對於普通話系統,網絡輸出簡體中文字符。
在這裏插入圖片描述
表1:隨着我們改變RNN的深度,BatchNorm和SortaGrad的應用以及循環隱藏單元的類型,開發集上的WER的比較。 所有網絡都有38M參數-隨着深度的增加,每層隱藏單元的數量減少。 最後兩列比較了我們更改循環隱藏單元類型時在開發集上模型的性能。
在推斷時,CTC模型與在較大文本語料庫上訓練的語言模型配對。 我們使用專門的波束搜索(Hannun et al。,2014b)查找最大化
Q(y) = log(pRNN(y|x)) + α log(pLM(y)) + βwc(y)
其中wc(y)是抄錄y中的單詞(英語)或字符(中文)的數量。 權重α控制語言模型和CTC網絡的相對貢獻。 權重β鼓勵轉錄中的更多單詞。 這些參數在保留的開發集上進行了調整。

3.1 深度循環神經網絡的批標準化

爲了在擴展訓練集時有效地吸收數據,我們通過添加更多的循環層來增加網絡的深度。 但是,隨着大小和深度的增加,使用梯度下降訓練網絡變得更具挑戰性。 我們已經嘗試了批次歸一化(BatchNorm)方法來更快地訓練更深的網絡(Ioffe&Szegedy,2015)。 最近的研究表明,BatchNorm可以加快RNN訓練的收斂速度,儘管並不總能改善泛化誤差(Laurent等,2015)。 相比之下,我們發現當應用於大數據集上非常深的RNN網絡時,除加速訓練外,我們使用的BatchNorm變體還大大改善了最終泛化誤差。
其中,在時間步t的層l的激活是通過將同一時間步t的前一層h 1-1 t的激活與在先前時間步h tl t-1的當前層的激活相結合來計算的。
在這裏插入圖片描述
圖2:使用和不使用BatchNorm(BN)訓練的兩個模型的訓練曲線。 與較淺的5-1網絡(5層中只有1個是雙向RNN)相比,我們看到較深的9-7網絡(共有9層,其中7個爲原始雙向RNN)在性能上的差距更大。 )。 由於第3.2節中提到的SortaGrad課程方法使曲線更難解釋,因此我們在訓練的第一個時期後開始繪製曲線
與(Laurent等人,2015)中一樣,有兩種方法將BatchNorm應用於循環操作。 自然的擴展是在每個非線性之前緊接插入BatchNorm變換B(·),如下所示:
h l t = f(B(Wlh l−1 t + U lh l t−1 )).
在這種情況下,均值和方差統計信息是在最小批量的單個時間步上累積的。 我們認爲這沒有效果。
另一種選擇(按順序歸一化)是僅對垂直連接進行批量歸一化。 遞歸計算如下
h l t = f(B(Wlh l−1 t ) + U lh l t−1 ).
對於每個隱藏單元,我們計算整個序列中小批量中所有項目的均值和方差統計。 圖2顯示了深度網絡通過按序列歸一化收斂得更快。 表1顯示了按順序歸一化的性能改進隨網絡深度的增加而增加,最深層網絡的性能差異爲12%。 我們存儲訓練期間收集的神經元的均值和方差的移動平均值,並將其用於評估(Ioffe&Szegedy,2015)。

3.2. SortaGrad

即使使用批處理規範化,我們也發現使用CTC進行培訓有時還是不穩定的,尤其是在早期階段。 爲了使訓練更加穩定,我們嘗試了一個訓練課程(Bengio等,2009; Zaremba&Sutskever,2014),該課程可以加快訓練速度,並能更好地推廣。
從頭開始訓練非常深的網絡(或具有多個步驟的RNN)可能會在訓練初期失敗,因爲輸出和梯度必須通過許多不良調整的權重層傳播。除了使梯度爆炸(Pascanu等人,2012)外,CTC經常最終給非常長的轉錄分配接近零的概率,從而使梯度下降非常不穩定。該觀察結果激發了一種我們稱爲SortaGrad的課程學習策略: 我們將發聲的長度用作啓發式技巧,並首先訓練較短(更容易)的發聲。
具體來說,在第一個訓練紀元中,我們以最小批量中最長話語的長度的增加順序對訓練集中的最小批進行迭代。在第一個時期之後,訓練在小批量上恢復爲隨機順序。表1顯示了在具有7個循環層的9層模型上有無SortaGrad的培訓成本的比較。 SortaGrad改善了訓練的穩定性,並且在沒有BatchNorm的網絡中,這種效果尤其明顯,因爲它們的數值穩定性甚至更低。

3.3 RNN和GRU的比較

到目前爲止,我們顯示的模型是RNN,由具有ReLU激活的公式3建模。 事實證明,更復雜的隱藏單元,例如長短期記憶(LSTM)單元(Hochreiter&Schmidhuber,1997)和門控循環單元(GRU)(Cho等,2014),在完成類似任務時非常有效 (Bahdanau et al。,2015)。 我們檢查GRU是因爲在較小的數據集上進行的實驗表明,對於相同數量的參數,GRU和LSTM達到了相似的準確度,但是GRU的訓練速度更快且發散的可能性較小。
GRU和RNN架構都受益於BatchNorm,並在深度網絡中顯示出強大的結果。 表1的最後兩列顯示,對於固定數量的參數,GRU體系結構可在所有網絡深度上實現更好的WER。

3.4 頻譜卷機

時間卷積通常用於語音識別中,以有效地建模可變長度話語的時間平移不變性。 與大型完全連接網絡相比,頻率卷積嘗試更簡潔地建模由於說話人可變性引起的頻譜變化。
我們嘗試添加一到三層卷積。 這些都在時頻域(2D)和僅時間域(1D)中。 在所有情況下,我們都使用“相同”卷積。 在某些情況下,我們會跨兩個維度指定步幅(二次採樣),從而減小輸出的大小。
我們報告了兩個數據集的結果-一個開發集2048話語(“ Regular Dev”)和一個噪聲更大的2048話語數據集(“ Noisy Dev”),這些數據是從CHiME 2015開發數據集中隨機採樣的(Barker等人,2015)。 我們發現一維卷積的多層提供了很小的好處。 2D卷積可顯着改善嘈雜數據的結果,而對純淨數據卻沒有什麼好處。 從一層一維卷積到三層二維卷積的變化使嘈雜的開發集上的WER提高了23.9%。
在這裏插入圖片描述
表2:不同卷積層配置的WER比較。 在所有情況下,卷積之後都是7個循環層和1個完全連接的層。 對於2D卷積,第一維是頻率,第二維是時間。 每個模型都使用BatchNorm,SortaGrad進行訓練,並具有35M參數。

3.5前向卷機和單向模型

在這裏插入圖片描述
圖3:前向上下文大小爲2的前瞻性卷積架構
雙向RNN模型在在線,低延遲的環境中部署具有挑戰性,因爲當發聲來自用戶時,它們無法流式傳輸轉錄過程。但是,僅具有正向遞歸的模型通常比類似的雙向模型的性能差,這意味着一定數量的將來上下文對於良好的性能至關重要。一種可能的解決方案是延遲系統發出標籤的時間,直到它具有更多上下文爲止(Sak等,2015),但我們發現很難在模型中誘發這種行爲。爲了建立單向模型而沒有任何精度損失,我們開發了一個特殊的層,稱爲超前卷積,如圖3所示。該層學習權重以線性組合每個神經元的激活時間步長,從而使我們能夠控制未來所需的上下文量。前瞻層由參數矩陣W∈R(d,τ)定義,其中d匹配上一層中的神經元數量。在時間步t對新層的激活rt爲
在這裏插入圖片描述
我們將先行卷積放在所有循環層之上。 這使我們能夠以更精細的粒度在超前卷積以下流式傳輸所有計算。

3.6 調整到普通話

要將傳統的語音識別管道移植到另一種語言,通常需要大量新的特定於語言的開發。例如,人們經常需要手工設計一個發音模型(Shan等,2010)。我們可能還需要明確建模特定語言的發音特徵,例如普通話的音調(Shan等,2010; Niu等,2013)。由於我們的端到端系統直接預測字符,因此不再需要這些費時的工作。這使我們能夠使用上述方法快速創建端到端的普通話語音識別系統(輸出漢字),而僅需進行一些更改。
我們對網絡所做的唯一體系結構更改是由於漢字集的特性。該網絡輸出大約6000個字符的概率,其中包括羅馬字母,因爲中英文混合成績單很常見。如果此集合中不包含字符,則會在評估時產生詞彙錯誤。這不是主要的問題,因爲我們的測試集僅有vocab字符佔0.74%。
我們在普通話中使用字符級語言模型,因爲單詞通常不在文本中分段。在第6.2節中,我們證明了我們的普通話語音模型在架構變化方面的改進與英文語音模型大致相同,這表明來自一種語言的開發知識建模可以很好地傳遞給其他語言。

4 系統優化

我們的網絡具有數以千萬計的參數,而訓練實驗涉及數以百萬計的單精度exaFLOP。由於我們評估數據和模型假設的能力取決於訓練速度,因此我們基於高性能計算(HPC)基礎架構創建了高度優化的訓練系統。3儘管存在許多用於在並行計算機上訓練深度網絡的框架,但我們發現,我們的良好擴展能力通常會被認爲是理所當然的未優化例程所困擾。因此,我們專注於精心優化用於訓練的最重要例程。具體來說,我們爲OpenMPI創建了自定義的All-Reduce代碼,以求和多個節點上各個GPU上的梯度, 開發了針對GPU的CTC的快速實現,並使用了自定義內存分配器。綜合起來,這些技術使我們能夠在每個節點上維持理論峯值性能的45%。
我們的培訓使用同步SGD以數據並行方式在多個GPU上分配工作,其中每個GPU使用模型的本地副本來處理當前微型批處理的一部分,然後與所有其他GPU交換計算出的梯度。我們更喜歡同步SGD,因爲它具有可重現性,這有助於發現和修復迴歸。但是,在此設置中,GPU必須在每次迭代時快速通信(使用“全減少”操作),以避免浪費計算週期。先前的工作已經使用異步更新來緩解此問題(Dean等,2012; Reckt等,2011)。相反,我們專注於優化全減少操作本身,使用減少特定工作負載的CPU-GPU通信的技術實現了4到21倍的加速。同樣,爲了增強整體計算能力,我們使用了來自Nervana Systems和NVIDIA的高度優化的內核,這些內核針對我們的深度學習應用進行了調整。我們同樣發現,自定義內存分配例程對於最大程度地提高性能至關重要,因爲它們減少了GPU和CPU之間的同步次數。
我們還發現,CTC成本計算佔運行時間的很大一部分。由於不存在針對CTC進行公共優化的公共代碼,因此我們開發了一種快速的GPU實施方案,將總體培訓時間減少了10-20%。

5. 訓練數據

大型深度學習系統需要大量的帶標籤的訓練數據。 爲了訓練我們的英語模型,我們使用11,940個小時的標記語音,包含800萬種語音,而Mandarin系統使用9,400個小時的標記語音,包含1100萬種語音。

5.1 數據構造

英文和普通話數據集的一部分是從原始數據創建的,這些原始數據被捕獲爲帶有噪音轉錄的長音頻片段。 爲了將音頻分割成幾個長片段,我們將語音與轉錄對齊。 對於給定的音頻記錄對(x,y),最可能的對齊方式計算爲
在這裏插入圖片描述
這實際上是使用受CTC訓練的RNN模型找到的維特比比對。由於CTC損失函數在所有路線中均已集成,因此不能保證產生準確的路線。但是,我們發現當使用雙向RNN時,此方法可產生準確的對齊方式。
爲了過濾出轉錄不佳的片段,我們構建了一個具有以下特徵的簡單分類器:原始CTC成本,通過序列長度歸一化的CTC成本,通過轉錄本長度歸一化的CTC成本,序列長度與筆錄長度,筆錄中的單詞數和筆錄中的字符數。我們擁擠了用於構建此數據集的標籤來源。對於英語數據集,我們發現過濾管道將WER從17%降低到5%,同時保留了超過50%的示例。
此外,我們通過在每個時期添加SNR在0dB到30dB之間的獨特噪聲來動態擴展數據集,就像在(Hannun等人,2014a; Sainath等人,2015)中一樣。

5.2數據縮放

在這裏插入圖片描述
表3:針對常規和嘈雜開發集的英語WER在增加訓練數據集大小方面的比較。 該模型具有9層(2層2D卷積和7層遞歸層),其參數爲68M。
我們在表3中顯示了增加WER上標記的訓練數據量的效果。這是通過在訓練之前對整個數據集進行隨機抽樣來完成的。 對於每個數據集,根據保留的開發集上的錯誤,模型可以進行多達20個時期的提前停止訓練,以防止過擬合。 訓練集大小每增加10倍,WER就會降低約40%。 我們還觀察到常規數據集和嘈雜數據集之間的WER相對差距(相對值約爲60%),這意味着更多的數據對這兩種情況均有利。

6.結果

爲了更好地評估我們的語音系統在現實世界中的適用性,我們對各種測試集進行了評估。 我們使用幾個公開可用的基準和內部收集的幾個測試集。 所有模型都在完整的英語數據集或第5節中描述的完整的普通話數據集上訓練了20個紀元。我們使用具有Nesterov動量的隨機梯度下降法(Sutskever等,2013)以及最少512個發音。 如果梯度的範數超過閾值400,則會將其重新縮放爲400(Pascanu等人,2012)。 選擇在訓練期間在堅持的開發集上表現最佳的模型進行評估。 從[1×10-4、6×10-4]中選擇學習速率,以產生最快的收斂速度,並在每個時期後以1.2的恆定因子進行退火。 我們對所有模型都使用0.99的動量。

6.1 英語

最好的英語模型有2層2D卷積,然後是3層單向遞歸層,每個層有2560個GRU單元,然後是由BatchNorm和SortaGrad訓練的τ= 80的超前卷積層。我們無法使模型適應測試集中的任何語音條件。語言模型解碼參數在保留的開發集中設置一次。
我們報告系統的多個測試集的結果以及對人員準確性的估計。我們要求Amazon Mechanical Turk的工作人員手動轉錄所有測試集,以此來衡量人員的績效。衆包工作者不如專門訓練有素的抄寫員那麼準確。例如,(Lippmann,1997年)發現,轉錄員在獲得較低的WER,自動錯字和拼寫更正以及進一步減少錯誤的額外獎勵的激勵下,在WSJ-Eval92集上達到了接近1%的WER。通過使用抄寫員委員會進行評分。
我們採用以下沒有獎勵的機制,並自動糾正爲我們力爭超越的有效競爭產品“ ASR綠野仙蹤”。每個音頻剪輯由兩名隨機工作人員錄製,每個音頻剪輯平均約5秒。然後,我們將兩次轉錄中較好的一個用於最終WER計算。大多數工作人員都位於美國,被允許多次收聽音頻剪輯,平均每次轉錄花費27秒。人工抄寫的結果與現有的基本事實進行比較,以產生WER估計值。儘管現有的地面真相轉錄確實有一些標籤錯誤,但在大多數情況下,它都小於1%。

6.1.1 基準結果

具有高信噪比的閱讀語音可以說是大詞彙量連續語音識別中最簡單的任務。 我們以《華爾街日報》(WSJ)閱讀新聞文章語料庫和由有聲讀物構建的LibriSpeech語料庫兩個測試集爲基準對我們的系統進行了測試(Panayotov等人,2015)。 表4顯示,在4個測試集中,有3個測試系統的性能優於衆包人工。
我們還使用VoxForge(http://www.voxforge.org)數據集測試了系統對常見口音的魯棒性。 該套件包含具有多種不同口音的演講者朗讀的語音。 我們將這些重音分爲四類:美國-加拿大,印度,英聯邦5和歐洲6。 我們從VoxForge數據構造一個測試集,其中每個重音組包含1024個示例,總共4096個示例。 除印度口音外,其他所有人的人文水平仍然明顯優於我們的系統。
最後,我們使用來自最近完成的第三次CHiME挑戰的測試集對我們在嘈雜語音上的表現進行了測試(Barker等人,2015年)。 該數據集具有來自在實際嘈雜環境中收集的WSJ測試集的語音,並且帶有人爲添加的噪聲。 使用CHiME音頻的所有6個通道可以顯着提高性能(Yoshioka等,2015)。 由於尚未普及使用多聲道音頻,因此我們對所有模型都使用一個聲道。 當數據來自真實嘈雜的環境而不是爲清晰的語音合成噪音時,我們的系統與人類水平的性能之間的差距就會更大。

6.2 普通話

在表5中,我們比較了幾種在2000種話語發展下對普通話進行訓練的體系結構以及1882個嘈雜語音示例的測試集。 此開發集還用於調整解碼參數。 我們看到,具有2D卷積和BatchNorm的最深模型相對於淺層RNN的性能要高48%。
在這裏插入圖片描述
表5:不同RNN架構的比較。 開發和測試集是內部語料庫。 表格中的每個模型都有大約8000萬個參數
在這裏插入圖片描述
表6:我們在兩個隨機選擇的測試集中針對人類的最佳普通話系統進行了基準測試。 第一組有100個示例,並由5個講中文的委員會來標記。 第二個有250個示例,並由一個人類轉錄員標記。
表6顯示,與典型的普通話講者和由5名中文說者組成的委員會一起工作,我們最好的普通話語音系統可以更好地轉錄簡短的語音查詢(例如發聲)。

7.部署方式

雙向模型不是爲實時轉錄而精心設計的:由於RNN具有多個雙向層,因此轉錄語音要求將整個語音呈現給RNN。而且由於我們使用寬波束搜索進行解碼,因此波束搜索可能會很昂貴。
爲了增加部署的可伸縮性,同時仍提供低延遲的轉錄,我們構建了一個名爲Batch Dispatch的批處理調度程序,該批處理調度程序將來自用戶請求的數據流組合爲批處理,然後對這些批處理執行RNN前向傳播。使用此調度程序,我們可以交易增加的批處理大小,從而提高效率,同時會增加延遲。
我們使用一個急切的批處理方案,該方案會在上一個批處理完成後立即處理每個批處理,而不管此時準備完成多少工作。該調度算法平衡了效率和等待時間,實現了相對較小的動態批次大小(每批次最多10個樣本),中位批次大小與服務器負載成比例。
在這裏插入圖片描述
表7:延遲分佈(ms)與負載
我們在表7中看到,當系統加載10個併發流時,系統的中值延遲爲44 ms,第98個百分位數的延遲爲70 ms。該服務器使用一個NVIDIA Quadro K1200 GPU進行RNN評估。按照設計,隨着服務器負載的增加,批處理調度將工作轉移到更大的批處理,從而使延遲降低。我們的部署系統使用半精度算術評估RNN,這對精度沒有影響,但可以顯着提高效率。我們爲此任務編寫了自己的16位矩陣矩陣乘法例程,從而大大提高了相對較小批次的吞吐量。執行波束搜索需要在n-gram語言模型中進行重複查找,其中大部分會轉換爲來自內存的未緩存讀取。爲了降低這些查找的成本,我們採用啓發式方法:僅考慮最少的字符,其累積概率至少爲p。在實踐中,我們發現p = 0.99效果很好,此外, 我們將搜索限制爲40個字符。這樣可以將累積的普通話語言模型查找時間加快150倍,並且對CER的影響可以忽略不計(相對0.1-0.3%)。

7.1深度語音在生產環境

深度語音已經與用於用戶應用程序的最新生產語音管道集成在一起。我們發現了一些關鍵挑戰,這些挑戰會影響像我們這樣的端到端深度學習方法的部署。首先,我們發現,即使用於培訓的大量通用語音數據,即使是少量的特定於應用程序的培訓數據也是非常寶貴的。例如,雖然我們可以訓練超過10,000小時的普通話語音,但我們發現僅添加500小時的特定於應用程序的數據可以顯着提高應用程序的性能。同樣,特定於應用程序的語言模型對於實現最高的準確性也很重要,並且我們在Deep Speech系統中利用了強大的現有n-gram模型。最後,我們注意到,由於我們的系統是從大量帶標籤的訓練數據中訓練出來的,以直接輸出字符,因此每個應用程序中都有轉錄的特殊約定,這些約定必須在後處理中處理(例如數字格式)。因此,儘管我們的模型消除了許多複雜性,但端到端深度學習方法的更多靈活性和應用意識是有待進一步研究的開放領域。

8. 結論

端到端深度學習提供了令人興奮的機會,可以隨着數據和計算量的增加而不斷改進語音識別系統。由於該方法具有高度通用性,因此我們證明了它可以快速應用於新語言。創建兩種非常不同的語言(英語和普通話)的高性能識別器,基本上不需要任何語言的專業知識。最後,我們還表明,可以通過在GPU服務器上將用戶請求批處理在一起來有效地部署此方法,從而爲向用戶提供端到端深度學習技術鋪平了道路。
爲了獲得這些結果,我們探索了各種網絡體系結構,找到了幾種有效的技術:通過SortaGrad和Batch Normalization對數值優化的增強,以及單向模型的超前卷積。這項探索是由一個經過優化的,高性能的,受計算機啓發的訓練系統支持的,該系統使我們能夠在短短几天之內對大型數據集進行全面模型的訓練。
總體而言,我們相信我們的研究結果證實並證明了端到端深度學習方法在多種環境下對於語音識別的價值。我們相信這些技術將繼續擴展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章