摘要 windows
BLSTM解碼時,解碼器須要等待整個音頻到達後纔開始解碼,由於時間反方向的前向傳播須要末尾的歷史信息。BLSTM這一延時問題使其不適用與實時語音識別。context-sensitive-chunk BLSTM(CSC-LSTM)和latency-controlled BLSTM(LC-BLSTM,延時控制-雙向LSTM)都將整句切分爲數個chunks。經過在每一個chunk中添加左右上下文幀,並以chunk爲單位進行前向計算,BLSTM的延遲能夠控制爲一個chunk左右的時長,而且與傳統BLSTM相比,能夠保持原有準確率基本不變。文本提出了兩種LC-BLSTM。經過使用不一樣類型的神經網絡拓撲以初始化BLSTM的cell狀態;經過上下文幀和快速在線識別以下降計算開銷。320h Swbd實驗顯示本文的解碼速度能加速24%至61%而無識別率的損失。 網絡
在LSTM聲學模型(包括其變形,好比highway LSTM網絡)中,雙向LSTM的識別率遠遠優於單向LSTM。然而雙向LSTM模型的延遲極高,不適用於在線語音識別。爲了克服這一限制,文獻[1]、文獻[2]、文獻[10]和文獻[11]研究了基於Chunk的訓練與解碼。 app
Chunk BPTT ide
文獻[5]提出了Chunk BPTT。 spa
加速BPTT訓練 blog
對Chunk大小的調優 內存
使用一塊NVIDIA GTX680 GPU對IAM手寫數據集的訓練時間以下: get
將chunk大小設定爲100能取得FER與訓練時間之間的平衡。 it
epochwise BPTT io
GPU的內存大小限制了一個mini-batch中的序列數(對於很長的序列來講),這會致使加速效果較差。
CSC BPTT
文獻[6]提出CSC(Context-Sensitive-Chunk) BPTT訓練方法以及基於CSCs的解碼方法,並應用於手寫識別中。
epochwise BPTT可表示爲0-Full+0,因爲此處的chunk即完整的幀序列
BPTT在BLSTM-HMM中的應用,以及提出了基於CSCs的解碼方法
文獻[7]將CSC-BPTT應用於語音識別中。
受到語音語句中協同發音的影響,每一個音素的語音幀基本上只受以前和以後幾幀影響。那麼,就沒有必要用BLSTM對整句話進行建模。所以,只需對一個較小的chunk建模便可。
CSC的示例配置爲"21-64+21",若基於CSC的解碼中,chunk之間不存在幀的重疊,那麼延遲爲85幀或850毫秒。
基於CSC的解碼
對於使用CSC-BPTT訓練的BLSTM,待識別的語句也要使用與訓練時相同的配置切分爲多個CSCs。
若須要考慮到計算複雜度,那麼解碼時CSCs之間能夠沒有重疊;不然,CSCs之間能夠有若干幀的重疊,以取得更高的識別率。好比:
LC-BLSTM
CSC-BLSTM未利用歷史chunk的記憶狀態信息,這帶來了額外的計算。文獻[8]提出了延時控制-BLSTM(LC-BLSTM)。在時間反向計算中,LC-BLSTM只使用修剪過的下文信息用做cell狀態的初始化。
LC-BLSTM的改進
因爲LC-BLSTM的時間反向計算中須要額外對右下文進行計算,這大大增長了計算量。爲此,文獻[9]提出了LC-BLSTM-FA、LC-BLSTM-FABDI與LC-BLSTM-FABSR
LC-BLSTM Without Forward approximation
LC-BLSTM-FA(With Forward approximation)
LC-BLSTM-FA去除了上述無用的計算
本節介紹兩種效率改進的LC-BLSTM,用於快速實時在線語音識別
LC-BLSTM-FABDI(Forward Approximation and Backward DNN Initialization)
每一個BLSTM層的前向計算步能夠分解爲:
時間正向:
時間反向:
LC-BLSTM-FABSR(Forward Approximation and Backward Simple RNN)
第二種結構被稱爲"forward approximation and back-
SRNN的訓練須要處理長程依賴,所以容易發生梯度爆炸。爲此在LC-BLSTM-FABSR的訓練中,須要使用更爲嚴格的梯度修剪以促進收斂。
實驗代表,LC-BLSTM-FA的WER優於LC-BLSTM-FABDI、LC-BLSTM-FABSR,但LC-BLSTM-FABDI和LC-BLSTM-FABSR的解碼速度比前者快。
參考文獻