Deep Speech筆記


Deep Speech 1

Hannun, A., Case, C., Casper, J., Catanzaro, B., Diamos, G.,Elsen, E., Prenger, R., Satheesh, S., Sengupta, S., Coates,A., et al. (2014a).Deepspeech: Scaling up end-to-end speech recognition. arXiv preprint arXiv:1412.5567.

網絡結構

這裏寫圖片描述
網絡輸入是context特徵,輸出是char,訓練準則是CTC,解碼需要結合ngram語言模型。
共五層,前三層是簡單的DNN結構,第四層是雙向RNN,第五層的輸入是RNN的前向和後向單元,後面跟着softmax分類。

數據集 網絡結構
300h switchboard 5隱層,2304節點
2300h SWB+FSH 4個RNN,每個5隱層,2304節點
100000h add noise 6個RNN,每個5隱層,2560節點

訓練數據

訓練數據進行加噪處理,使用多種短時噪音。
錄製語音的時候增加噪聲的場景.

訓練優化

  • Data parallelism
    訓練語料按照長度排序,然後多句並行
  • Model parallelism
    按照時間切分,前半段在GPU1上面計算,負責計算RNN的forward activation;後半段在GPU2上面計算,負責計算RNN的backward activation。在中間時間點交換角色。

Deep Speech 2

D. Amodei, R. Anubhai, E. Battenberg, C. Case, J. Casper, B. Catanzaro, J. Chen, M. Chrzanowski, A. Coates, G. Diamos et al., “Deep speech 2: End-to-end speech recognition in english and mandarin,” CoRR arXiv:1512.02595, 2015.

相比於Deep Speech,使用HPC技術,將訓練時間由幾周縮短到幾天,嘗試了更爲複雜的網絡結構。

網絡結構

這裏寫圖片描述
網絡輸入是context特徵,輸出是char(英文對應a/b/c,中文對應6000漢字),訓練準則是CTC,解碼需要結合ngram語言模型。

Batch Normalization

在網絡層數更深的時候,效果更明顯,收斂更快而且誤差更小。
有兩種BatchNorm,在第一種上面沒有收益
第一種: hlt=f(B(Wlhl1T+Ulhlt1))
第二種: hlt=f(B(Wlhl1T)+Ulhlt1)

SortaGrad

CTC訓練的早期不穩定,長句子容易出現梯度異常(有些概率near-zero)。
在第一個epoch,將訓練句子按照長度排序,首先使用斷句訓練,後面的epoch再按照隨機順序。

GRU

GRU相比於vanilla RNN可以取得更好的結果,同時比LSTM更容易訓練。

Convolution

在網絡的最底層使用3層的CNN結構。

Lookahead Convolution

使用雙向RNN可以獲得更好的準確性,但是對on-line服務來講,延時問題比較明顯,爲了解決這個問題,在RNN上面增加了一層Lookahead Convolution。
這裏寫圖片描述

adaptation

傳統的Hybrid系統在語言之間遷移相對困難,end-to-end系統相對簡單,只需要更換最後的輸出節點就可以。

訓練數據

英文11940h,中文9400h

訓練優化

high performance computing

應用優化

  • batch dispatch將線上不同的語音請求組成一個batch計算
  • RNN計算使用16bit量化
  • ngram查詢只查詢概率比較高的一些character
  • 增加少量跟使用場景更匹配的語音或者文本,收益比較明顯
發佈了132 篇原創文章 · 獲贊 94 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章