摘要 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的解码速度比前者快。
参考文献