BLSTM的训练算法、解码算法以及模型的改进
摘要
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的训练与解码。
Chunk BPTT
文献[5]提出了Chunk BPTT。
加速BPTT训练
- 将特征序列切分为固定长度的chunks
- 将多个chunks组合为更大的batches

对Chunk大小的调优
使用一块NVIDIA GTX680 GPU对IAM手写数据集的训练时间如下:

能取得FER与训练时间之间的平衡。
epochwise BPTT
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建模即可。
帧或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的解码速度比前者快。
参考文献
- A. Zeyer, R. Schluter, and H. Ney, "Towards online-recognition with deep bidirectional LSTM acoustic models," Proceedings of Interspeech, vol. 08-12-Sept, pp. 3424–3428, 2016.
- P. Doetsch, M. Kozielski, and H. Ney, "Fast and Robust Training of Recurrent Neural Networks for Offline Handwriting Recognition," Proceedings of International Conference on Frontiers in Handwriting Recognition, ICFHR, vol. 2014-Decem, pp. 279–284, 2014.
- K. Chen, Z.-J. Yan, and Q. Huo, "Training Deep Bidirectional LSTM Acoustic Model for LVCSR by a Context-Sensitive-Chunk BPTT Approach," in Proceedings of the Interspeech, 2015.
- A.-r. Mohamed, F. Seide, D. Yu, J. Droppo, A. Stoicke, G. Zweig, and G. Penn, "Deep bi-directional recurrent networks over spectral windows," in Automatic Speech Recognition and Understanding (ASRU), 2015 IEEE Workshop on. IEEE, 2015, pp. 78–83.
- P. Doetsch, M. Kozielski, and H. Ney, "Fast and Robust Training of Recurrent Neural Networks for Offline Handwriting Recognition," Proceedings of International Conference on Frontiers in Handwriting Recognition, ICFHR, vol. 2014-Decem, pp. 279–284, 2014.
- K. Chen, Z.-J. Yan, and Q. Huo, "A context-sensitive-chunk BPTT approach to training deep LSTM/BLSTM recurrent neural networks for offline handwriting recognition," Proc. ICDAR-2015.
- K. Chen, Z.-J. Yan, and Q. Huo, "Training Deep Bidirectional LSTM Acoustic Model for LVCSR by a Context-Sensitive-Chunk BPTT Approach," in Proceedings of the Interspeech, 2015.
- Yu Zhang, Guoguo Chen, Dong Yu, and Kaisheng Yao, "High- way long short-term memory RNNs for distant speech recog- nition," in IEEE International Conference of Acoustics,Speech and Signal Processing (ICASSP), 2016, pp. 5755–5759.
- IMPROVING LATENCY-CONTROLLED BLSTM ACOUSTIC MODELS FOR ONLINE SPEECH RECOGNITION. Shaofei Xue, Zhijie Yan, Alibaba Inc, China
BLSTM的训练算法、解码算法以及模型的改进的更多相关文章
- 条件随机场CRF(三) 模型学习与维特比算法解码
条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在CRF系列的前两篇,我们总结了CRF的模型基 ...
- 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态 ...
- 程序员训练机器学习 SVM算法分享
http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine 摘要:支持向量机(SVM)已经成为一种非常受欢迎的算法.本文 ...
- h.264并行解码算法3D-Wave实现(基于多核共享内存系统)
3D-Wave算法是2D-Wave的扩展.3D-Wave相对于只在帧内并行的2D-Wave来说,多了帧间并行,不用等待前一帧完成解码后才开始下一帧的解码,而是只要宏块的帧间参考部分以及帧内依赖宏块解码 ...
- h.264并行解码算法2D-Wave实现(基于多核共享内存系统)
cache-coherent shared-memory system 我们最平常使用的很多x86.arm芯片都属于多核共享内存系统,这种系统表现为多个核心能直接对同一内存进行读写访问.尽管内存的存取 ...
- h.264并行解码算法2D-Wave实现(基于多核非共享内存系统)
在<Scalable Parallel Programming Applied to H.264/AVC Decoding>书中,作者基于双芯片18核的Cell BE系统实现了2D-Wav ...
- Base64编码和解码算法
Base64么新鲜的算法了.只是假设你没从事过页面开发(或者说动态页面开发.尤其是邮箱服务),你都不怎么了解过,仅仅是听起来非常熟悉. 对于黑客来说,Base64与MD5算法有着相同的位置.由于电子邮 ...
- 记录:EM 算法估计混合高斯模型参数
当概率模型依赖于无法观测的隐性变量时,使用普通的极大似然估计法无法估计出概率模型中参数.此时需要利用优化的极大似然估计:EM算法. 在这里我只是想要使用这个EM算法估计混合高斯模型中的参数.由于直观原 ...
- Linux同步互斥(Peterson算法,生产者消费者模型)
同步 两个或两个以上随时间变化的量在变化过程中保持一定的相对关系. 互斥 对一组并发进程,一次只有一个进程能够访问一个给定的资源或执行一个给定的功能. 互斥技术可以用于解决诸如资源争用之类的冲突,还可 ...
随机推荐
- AI-2048 注释
针对2048游戏,有人实现了一个AI程序,可以以较大概率(高于90%)赢得游戏,并且作者在 stackoverflow上简要介绍了AI的算法框架和实现思路. 有博客介绍了其中涉及的算法,讲的很好 其中 ...
- 《JAVA程序设计》_第九周学习总结
一.学习内容 1.数据库的建立.配置 在官网先下载好MySQL.navicat for MySQL.XAMPP.MySQL-connecter 在XAMPP中点击start开启MySQL 在navic ...
- EntityFramework 6.x和EntityFramework Core必须需要MultipleActiveResultSets?
前言 本节我们来探讨到底需不需要在连接字符串上加上MultipleActiveResultSets = true ?,若您有更深层次的理解欢迎留下您的脚印. EntityFramework 6.x和E ...
- EXT 设置编辑框为只读
Ext.getCmp("processResult").setReadOnly(ture); //processResult是属性的id,setReadOnly(ture)设置 ...
- java中的“空格”用trim()无法去除?原来是这样!
原因: 从txt文件中读取一些数据导入mysql数据库,导入数据库之后发现有一个字段的前面有两个“空格”,后来在代码里我尝试用trim().replace()等方法去除,发现怎么也去不掉,于是我将字符 ...
- pydoc用法
pydoc是python自带的一个文档生成工具,使用pydoc可以很方便的查看类和方法结构 本文主要介绍:1.查看文档的方法.2.html文档说明. 一.查看文档的方法 方法1:启动本地服务, ...
- js函数库-D3
推荐: https://www.cnblogs.com/createGod/p/6884629.html
- [百度百科]dir命令指定显示的排序方式
https://jingyan.baidu.com/article/7c6fb428dcf39880642c9095.html 今天工作中遇到了这个需求 感觉很好用 dir /o:d >name ...
- CodeForces 1151E Number of Components
题目链接:http://codeforces.com/problemset/problem/1151/E 题目大意: n个人排成一个序列,标号为 1~n,第 i 个人的学习成绩为 ai,现在要选出学习 ...
- 面试题(转载csdn)
转自https://blog.csdn.net/linzhiqiang0316/article/details/80473906 相关概念 面向对象的三个特征 封装,继承,多态,这个应该是人人皆知,有 ...