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,在第一種上面沒有收益
第一種:
第二種:
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
- 增加少量跟使用場景更匹配的語音或者文本,收益比較明顯