語音識別算法閱讀之LAS


LAS:
  listen, attented and spell,Google
思想:
  sequence to sequence的思想,模型分為encoder和decoder兩部分,首先將任意長的輸入序列通過encoder轉化為定長的特征表達,然后輸入到decoder再轉化為任意長的輸出序列;相比於傳統sequence to sequence在decoder部分引入attention機制,讓模型自學習特征相關性,有助於提升識別效果,對靜音和噪聲具有較好魯棒性

  其中,輸入序列x=(x1,x2,x3,....xT),每個時間片聲學特征為40維logfbank; 隱層狀態h=(h1,h2,h3,....,hU),U<T; 輸出序列y=(<sos>,y1,y2,y3,....,yS,<eos>),<sos>和<eos>分別代表起始和結束符號

模型:

  • encoder采用1 BLSTM(512)+3 pBLSTM(512)的金字塔狀結構,能夠將原始時間片減少到1/8,從而剔除冗余信息,加速decoder部分訓練;
     其中, i為第i個時間片,j為第j個隱層;
  • decoder采用兩層的單向LSTM(521)結構,且引入attention機制
 
    其中, Φ和ψ表示MLP網絡
  • 目標函數:最大化每個時間片的log概率
 
 
  • 解碼:beam width=32的beam search+n-gram Rescore
 其中,|y| c為字符長度,實驗中λ=0.008
細節:
  • pBLSTM結構能夠有效解決模型收斂緩慢和識別效果較差的問題,這種金字塔結構可以減少上層隱層的輸出時間片個數,從而剔除冗余信息,加速deocder訓練
  • LSTM結構相比傳統RNN,能夠有效緩解梯度彌散,網絡采用均勻分布進行初始化u(-0.1~0.1)
  • attention機制能夠自學習特征相關性,一定程度上屏蔽干擾信息,比如靜音、噪聲等
  • decoder部分在訓練時,如果采用當前時間片的輸入為上一時刻的標簽這種模式;那么在測試時,模型因為無法利用groundtruch信息而影響識別結果;論文在訓練中采用10%的概率采用上一時刻的預測輸出作為當前時刻的輸入,從而緩解訓練和測試的差異性
  • 解碼時采用beam search+LM Rescore形式,能夠帶來5%的提升效果
  • 解碼時,每一時刻的輸出概率進行歸一化處理,緩解模型偏向較短的路徑
  • 論文還證明了,相比於CTC結構,網絡結構具有學習隱式語言模型的能力,比如“triple a”和“aaa”
  • 數據部分采用2000小時的Google voice search utterances,抽取10小時dev set和16小時test set;此外,采用混響和噪聲增強使的數據量擴大了20倍

效果:

  • 模型在最優的情況下取得了clean 10.3%和noise 12.0%的WER
  • LM Rescore帶來了5%的效果提升
  • decoder訓練時采用sample方式將上一時刻預測輸出作為當前時刻輸入,帶來了2%的提升
  • google state-of-the-art模型CLDNN clean 8.0%和noise 8.9%;論文分析原因在於CLDNN中采用了CNN的前置結構,CNN作為淺層特征提取器,能夠增強頻域不變形,為LSTM提供更強大的特征表達
  • 作者對LAS進行了基於pytorch的代碼實現,並使用kaldi做數據准備、特征提取和cmvn;並在aishell1上進行了訓練
  • 實現中,模型的輸入是240維fbank特征
  • 模型的encoder部分采用3層BLSTM結構,結點數為256,采用droput=0.2
  • deocder采用1層LSTM,結點數512
  • attention結構中,MLP網絡采用兩層線性層,第一層線性層輸出維度512,激活函數tanh,第二層線性層輸出維度為字典個數4203,MLP輸出后接softmax
  • 解碼部分采用beam width=30的beam search算法得到最終的最優解碼,未使用額外的LM
  • 優化函數adam
  • aishell1 test cer: 13.2%

 Reference:

[1] https://arxiv.org/pdf/1508.01211.pdf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM