`
骑猪逛街666
  • 浏览: 141735 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

深度学习在语音识别中的声学模型以及语言模型的应用

 
阅读更多

阅读原文请点击

摘要: 目前深度学习在图像和语音识别等领域应用越来越广泛,比如图像处理类应用、视频归纳、智能客服,以及延伸的服务机器人领域、车载助手等,本文着重介绍深度学习在语音识别中声学模型与语言模型中的应用,如FSMN,LSTM,RNN等网络结构的设计,比传统的结构在效果上有巨大的提升

         过去 3 年,深度学习在各个领域取得较大突破,比如计算机视觉领域的物体识别、场景分类,语音分析等,并且其技术推广和应用的速度超过人们预期,比如 Google 的广告系统已经开始使用深度学习盈利,Twitter 也通过深度学习改善App 图片及视频内容服务体验。那具体何为深度学习呢?深度学习是怎么应用在上述的各个领域呢,下面结合自身在语音识别的若干年经验,谈谈深度学习在语音识别中的具体应用。

 

0. 背景

 

         “深度学习”的概念在上个世纪便被提出,但Hinton、Lecun等人在2006年发表的论文让“深度学习”重新焕发光彩,并使得相关的学术成果在实际应用中表现良好。它的灵感来自对人脑神经的研究,因此也称为深度神经网络“DNN”。这里的“深度”并非指算法有内涵,而是指神经网络层数多,因此也称为多层结构学习算法(这几种命名不完全对等,具体的差别涉及到学派)。实际中的“深度神经网络”算法与大脑神经结构差别极大,因此深度神经网络被称为端到端的机器学习算法或者多层联结算法或许更好些(联结主义流派的说法)。

           基于深度神经网络算法的重大影响工作的出现,是在2012年之后。比如Krizhevsky、Hinton等用深度学习大幅度提高了图片分类的准确率,奠定了图像分类模型“AlexNet”的地位;Dahl等大幅度提升了语音识别的准确率。

            声学模型以及语言模型就像人的左右大脑一样,没有他们,语音识别系统就是一个空壳,毫无作用。

 

1. 深度学习与AM

     1.1 深度学习在AM中的应用与现状

 

         传统基于HMM的hybrid框架,例如:GMM-HMM,CD-DNN-HMM依然是工业界应用的主流技术,并且各种训练算法以及工具都很成熟,例HTK,Kaldi,Sphinx,并且在很多工业界都有应用。

         目前学术研究的重点逐渐转向End-To-End模型训练。其中比较成熟的训练方法是基于CTC准则的训练。文献报告结果显示[21],LSTM-CTC模型识别准确度高于HMM-LSTM模型,识别速度更快。

基于Attention机制的End-To-End模型训练成为研究热点[22],也是Google,Microsoft等目前的研究热点领域。但是目前据文献报告,识别准确度差于LSTM-CTC模型。

         CNN技术重新得到重视[19][20],作为End-To-End中特征提取的重要一环。

 

    1.2 基于FSMN的AM

 

         FSMN[18],是由科大讯飞提出的一种基于DNN改进型网络结构。在DNN的隐藏层中引入延时结构,将t-N~t-1时刻的隐藏层历史信息作为下一层的输入,从而引入了语音序列的历史信息,同时避免了RNN训练BPTT带来的问题,如:梯度消逝,计算复杂度高等。

 

图1 FSMN结构

         这种结构的设计是来源于Oppenheim的数字信号处理的部分[23],用无限长的脉冲响应滤波器(IIR)来模拟近似高阶的有限脉冲响应滤波器(FIR)。因为RNN中的Recurrent层可以看作一阶的IIR,它可以精确的被高阶的FIR来近似模拟。在这种全连接的结构的基础上再加上一些记忆单元,就如在FIR中延时单元一样,这样可以在前向计算的时候比纯粹的RNN更加高效并稳定。正因为该记忆单元的存在,它可以将更长的上下文信息压缩为一个固定长度的向量,这样可以使模型能够学到更多前后依赖的重要信息。

 

\

图2 Recurrent layer 和 IIR

         FSMN另外一点创新的地方在于引入了Attention机制。核心思想在于模仿人类的思考行为,因为人类在思考问题的时候,一般会先考虑他经历过的,或者听过的事,另外聪明的人类也会根据已有的经验来预测未来将要发生的事,结合这两者,作出的决定将更加正确,更加有实效性。因此在FSMN中,也引入了Lookback以及Lookahead思想,但是两者对当前的作用大小是不同的,因此需要计算二者的系数,这个系数就称为Attention Coefficient。具体公式如下:

 

                 

 

其中,

 

是Attention函数的参数,详细信息可以参考该论文[18],另外Recurrent的计算公式如下:                                                                                                          

 

其中N1和N2分别表示Lookback以及Lookahead的阶数,

表示attention系数,可以很清晰的看出,该层所学习到的内容由历史以及将来组成。

训练的过程,跟大多数NN一样,都是SGD准则,使用mini-batch,同时用GPU加速,过程不在赘述。

实验结果如下表所示:

         

表1 FSMN与DNN,LSTM的对比

其中基线DNN模型是根据论文[24][25]训练得到的,整体依然采用的CD-DNN-HMM框架。在状态对齐的训练过程中,依然采用标准的GMM-HMM框架,MLE准则。预训练依然采用RBM策略。在DNN训练的过程中,依然采用CE准则,BP更新误差,网络结构是6x2048,输入特征是FB,每帧123维,上下窗长为11,DNN1的激活函数是sigmoid,DNN2采用的是ReLU。

         另外LSTM模型是根据论文[25][26][27]训练得到的,其中cell数为2048,projection节点数为512,输入依然是123维的FB特征,延迟5帧输出,BPTT为16,minibatch为64,另外BLSTM是双向的模型,BLSTM比LSTM多了3个hidden层,以及2048个cell,minibatch改为16,其他都一致。

         FSMN模型,其中sFSMN表示scalar FSMN,vFSMN表示vectorized FSMN,sFSMN的hidden层数为6,每层2048个节点,激活函数为ReLU,输入为123维FB特征,上下窗为3,vFSMN中多了lookback以及lookahead参数,试验中设为50。

从实验结果来看,vFSMN的结果最优,比BLSTM绝对好0.3个点,另外训练的速度是BLSTM的3倍。

 

2. 深度学习与LM

     2.1 基于Recurrent Neural Network的LM

 

         在讨论RnnLM之前,不得不提现在依然处于统治地位的Ngram模型,Ngram是基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词。

假设下一个词的出现依赖它前面的一个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)=p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1)

假设下一个词的出现依赖它前面的两个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|wn-1,wn-2)

        纵观Ngram的历史,主要在机器翻译,语音识别,拼写纠错,自动文摘等方面应用的很广泛,并取得了很好的效果,可是它本身也有一定的缺陷,比如数据稀疏性问题不能很好的解决,折扣平滑不够鲁棒,另外一个是严格的基于N阶的马尔可夫假设,限制了对更长历史的记忆。

RNN模型是将每个词语映射到一个Compact Contiuous Vector Space里,并且使用Recurrent Connections 将过去更长时间的历史连接起来,从而影响现在的输出,这样更贴近实际。

        RNN的结构一般是3层,输入层,隐藏层和输出层,其中输入与输出层的维数是和词典里词的个数是一致的,隐藏层一般根据实际需要,可以设置为512或1024等,有时为了加速,还加入了Class层,即根据输入的词语先预测该词所属的类,然后在预测在该类里面的词的概率大小,这样可以减少矩阵运算。在论文[1][2][3]中还提出了OOS Nodes也是为了减少矩阵运算量,加快迭代。具体结构如下图所示:

                                                                  

图3 RNN 结构

         另外,在RNN训练的过程中用到了BPTT算法[4],因为隐含层经过不断的迭代,保留了N个隐含层的最新数据,根据微分链式法则,误差需要一直传递下去                                                                                                                                        

图4 BPTT 迭代

另外误差准则,论文[5]中提到的有Cross Entropy

                                                             


Variance Regularisation

                                                             


以及Noise Contrastive Estimation

                                                            


         根据论文[5]的结果所示,从ppl以及wer的角度对比以上三种准则的效果如下表所示:

                                                     

表 2三种准则在50-best的rescoring的结果

         其中选用的训练集为Fisher和AMI[8],总共大小14M,Rnn输入层的节点数为33K,隐含层的节点数为512,输出层为22K,选取常用词汇构成,BPTT参数为5,即只往下传递5层,总共迭代10次。

另外与传统的Ngram对比结果如下:

                                                      

表3 与ngram对比的结果

其中3g,4g是用相同的语料,采用通用的工具srilm来训练的,CRNN是基于Class的RNNLM[6][7]工具训练的,FRNN是采用CUED-RNNLM[5]工具训练的,都是基于CE准则。从表格中可以看出,FRNN的效果最好。

 

2.2 基于Long Short Term Memory的LM

 

         从RNN的结构以及训练的过程来看,RNN的确比Ngram看到的历史更长,利用的信息更多,另外在输入层与隐含层之间的矩阵通过训练后,每一列可以表示one-hot对应的词向量,利用词向量的方式,可以减少数据稀疏性的影响,因为Ngram对未出现的词语是用很硬的折扣平滑方式来分配概率的,这样做存在缺陷。

         更加细致的分析RNN的结构时,会发现,对于任意的连续的输入,都结合上一次的历史,进行相同的操作,也就是不管遇到什么样的词(高频的,低频的,处于不同上下文的),都同样的学习相关的历史,而没有选择对它有重要影响的信息进行学习,导致没有区分性与侧重点,这跟我们生活很像,在生活中,我们并不是对待所有的事物,花同样的精力去学习,肯定是有所侧重,只会花更大的精力学习对自己有重要影响的事,即选择性的学习。

         LSTM[9][13]即是在这样的思想的驱动下出现的。它比RNN在结构上了多了几个门的概念,即输入门,输出门,遗忘门,分别控制对应的输入输出,以及决定着是否需要遗忘,结构如下:

                                                            

图5 LSTM 神经元结构图

 

与RNN结构对比,即是将原始hidden层替换为LSTM层,整体结构如下图所示:

                                                           

图6 基于LSTM的RNN的整体结构

 

         由于多了几个门,在训练阶段即多了几个矩阵相乘的运输量,而且是每次迭代都会产生这种运算量,跟上面的RNN训练过程类似,但是在速度上慢了很多。

训练过程中,权重的更新一般是按如下的公式:

                                                              

F是目标方程,一般情况下是根据最大似然准则来设定的,

是学习率,可以在训练的过程中控制学习的速率,从而控制模型收敛的速率。误差反向传播依然用的是BPTT[10][11][12]的算法,以及SGD的策略,与RNN一致。在这里面学习率调节,直接影响着模型的优劣,以及模型是否收敛等,根据论文[9]所示,在训练开始阶段,可以设置大一些,经过几轮迭代,可以根据在验证集上的ppl的变化幅度,来相应的降低学习率[14]。

       NN语言模型一般是用于Lattice Decoding和Rescoring,一般情况下,Lattice结构是由前缀树构成,在Lattice上每个Node的输出都是唯一的,才可以采用NN语言模型解码,另外结合Beam Pruning,以及Acoustic LM look ahead等算法,详细内容可以参考论文[9][15][16][17]

下表是论文[9]中实验用到的数据集:

                                                    

表4 实验用到的数据集

 

与Kneser-Ney-Smothed 5gram模型,以及rnnlm 工具训练出的模型在Dev以及Test上的效果对比如下:

                                                    

表5 各个模型下的ppl的对比

 

其中LSTM 的Hidden层节点数是300,Class层为1000,整个词典大小为200K,从结果中,可以看出,LSTM模型的效果要比RNN[17]好10个点以上。
       最后由于本人水平有限,在理解剖析论文细节时,难免有不恰当之处,望各位专家多多指正。

 

3. 参考文献

[1] J. Park, X. Liu, M.J.F. Gales, and P.C. Woodland, “Improved neural network based language modelling and adaptation”,Proc. Interspeech, 2010.

[2] H. Le, I. Oparin, A. Allauzen, J. Gauvain, and F. Yvon, “Struc-tured output layer neural network language models for speech recognition”, IEEE Trans Audio, Speech, and Language Pro-cessing, vol. 21, no. 1, pp. 197–206, 2013.

[3] X. Liu, Y. Wang, X. Chen, M.J.F. Gales, and P.C. Woodland,“Efficient lattice rescoring using recurrent neural network lan-guage models”, Proc. ICASSP, 2014.

[4] D.E. Rumelhart, G.E. Hinton, and R.J. Williams, Learningrepresentations by back-propagating errors, MIT Press, Cam-bridge, MA, USA, 1988.

[5] T. Mikolov, S. Kombrink, L. Burget, J.H. Cernocky, and S.Khudanpur, “Cued-rnnlm—an open-source toolkit for efficient traning and evaluation of recurrent neural network language models”, Proc. ICASSP, 2011.

[6] T. Mikolov, S. Kombrink, A. Deoras, L. Burget, and J. Cer-nocky, “Recurrent neural network language modeling toolkit”,Proc. ASRU Workshop, 2011.

[7] X. Chen, Y. Wang, X. Liu, M.J.F. Gales, and P.C. Woodland,“Efficient training of recurrent neural network language mod-els using spliced sentence bunch”, Proc. Interspeech, 2014.

[8] I. McCowan, J. Carletta, W. Kraaij, S. Ashby, S. Bourban, M.Flynn, M. Guillemot, T. Hain, J. Kadlec, V. Karaiskos, M. Kro-nenthal, G. Lathoud, M. Lincoln, A. Lisowska, W. Post, D.Reidsma, and P. Wellner, “The AMI meeting corpus: A pre-announcement,” Machine learning for multimodal interaction,pp. 28–39. Springer, 2006.

[9] Martin Sundermeyer, Ralf Schl ̈uter, Hermann Ney,“rwthlm – The RWTH Aachen University Neural Network Language Modeling Toolkit”, Proc. ICASSP, 2016.

[10] Rumelhart, D. E., Hinton, G. E., Williams, R. J., “Learning In-ternal Representations by Error Propagation”, in: McClelland,J. L., Rumelhart, D. E., PDP Research Group, The, “Parallel Dis-tributed Processing”, The MIT Press, 1986, pp. 318–362.

[11] Werbos, Paul J., “Backpropagation Through Time: What It Doesand How to Do It”, Proceedings of the IEEE 1990, Vol. 78, No. 10,pp.1550–1560

[12] Williams, R. J., Zipser, D., “Gradient-Based Learning Algorithmsfor Recurrent Networks and Their Computational Complexity”,in: Chauvain, Y., Rumelhart, D. E., “Backpropagation: The-ory, Architectures, and Applications”, Psychology Press, 1995,pp. 433–486

[13] Graves, A., Mohamed, G., Hinton, G., “Speech Recognition with Deep Recurrent Neural Networks”, Proc. of ICASSP 2013, pp.6645–6649

[14] Hinton, G., “Neural Networks for Machine Learning”, Online Course at coursera.org, Lecture 6, 2012

[15] Auli, M., Galley, M., Quirk, C., and Zweig, G., “Joint Lan-guage and Translation Modeling with Recurrent Neural Net-works”, Proc. of EMNLP 2013, pp. 1044–1054

[16] Sundermeyer, M., T ̈uske, Z., Schl ̈uter, R., and Ney, H., “Lattice Decoding and Rescoring with Long-Span Neural Network Lan-guage Models”, Interspeech 2014, accepted for publication

[17] Mikolov, T., Deoras, A., Kombrink, S., Burget, L., and Cˇernock ́y,J. H., “Empirical Evaluation and Combination of Advanced Lan-guage Modeling Techniques”, Proc. of Interspeech 2011, pp. 605–608

[18] Shiliang Zhang, Cong Liu, Hui Jiang, Si Wei, Lirong Dai, Yu Hu,” Feedforward Sequential Memory Networks: A New Structure to Learn Long-term Dependency”, arXiv:1512.08301v2 [cs.NE] 5 Jan 2016

[19]F. Seide, G. Li, and D. Yu, “Conversational speech transcription using context-dependent deep neural networks,” in Proc. Interspeech,2011.

[20]Kanishka Rao, etc., Flat Start Training of CD-CTC-SMBR LSTM RNN Acoustic Models, ICASSP 2016

[21]Tara Sainath,etc.,Convolutional, Long Short-Term Memory, Fully Connected Deep Neural Networks,ICASSP 2015

[22]Bahdanau, D., Cho, K., and Bengio, Y. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473, 2014.

[23]Oppenheim, A. V., Schafer, R. W., Buck, J. R., and et al. Discrete-time signal processing, volume 2. Prentice-hall Englewood Cliffs, 1989.

[24]Dahl, G.E., Yu, D., Deng, L., and Acero, A. Contextdependent pre-trained deep neural networks for largevocabulary speech recognition. IEEE Transactions on Audio, Speech, and Language Processing, 20(1):30–42, 2012.

[25] Hochreiter, S. and Schmidhuber, J. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.

[26] Sak, H., Senior, A., and Beaufays, F. Long short-term memory based recurrent neural network architectures for large vocabulary speech recognition. arXiv:1402.1128, 2014.

[27]Sainath, T.N., Mohamed, A., Kingsbury, B., and Ramabhadran, B. Deep convolutional neural networks for LVCSR. In Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 8614–8618, 2013.

阅读原文请点击

分享到:
评论

相关推荐

    解析深度学习 - 语音识别实践

    书中还可能涵盖了深度学习在语音识别中的实际应用,如端到端的语音识别系统,这些系统可以直接从原始音频输入预测文本输出,省去了传统方法中的多个中间步骤。此外,书中可能会讨论到声纹识别、说话人识别等相关的子...

    深度学习在语音识别中的研究进展综述.pdf

    在声学建模方面,深度学习模型能够建立复杂的非线性声学模型,大幅提高语音识别的准确性。 在自动语音识别(ASR)技术方面,主要包括语音识别、语音编码和语音合成三项技术。语音识别是将语音信号转化为文字的过程...

    深度学习-语音识别实战(Python)

    深度学习在语音识别领域的应用是近年来人工智能研究的热门方向,Python作为主要的编程语言,为开发者提供了丰富的库和工具,使得这项技术得以广泛实践。本课程深入浅出地讲解了语音识别的四个关键主题:语音识别、...

    基于Python的深度学习的中文语音识别系统.zip

    该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括 CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型包含 transformer、CBHG,数据集包含 stc、primewords、Aishell、thchs30 四个数据集。...

    语音识别的声学模型解析

    解码器是语音识别系统的核心之一,负责在给定的声学模型、语言模型和发音词典的指导下,从候选的词串中找到最可能的输出。它实际上是利用贝叶斯原理,根据声学模型和语言模型计算概率来实现的。解码器的算法设计对于...

    深度学习-语音识别实战(Python)视频课程

    在本门"深度学习-语音识别实战(Python)视频课程"中,你将深入探索如何利用深度学习技术处理和理解语音信号,实现高效精准的语音识别。这门课程覆盖了从理论基础到实际应用的全过程,包括经典算法的解析、源代码的...

    基于深度学习的中文语音识别系统python程序源代码设计数据集声学模型和语言模型建模

    基于深度学习的中文语音识别系统python程序源代码设计数据集声学模型和语言模型建模 该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括 CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型...

    论文研究-基于深度学习的语音声学模型研究 .pdf

    本篇论文主要研究了深度学习在语音声学模型中的应用,以及如何通过深度学习搭建区分能力更强、鲁棒性更强的声学模型。 首先,论文提到了语音识别技术的重要性。随着科技的发展,语音识别作为一种人机交互的重要接口...

    Python基于深度学习的中文语音识别系统源码,含声学模型和语言模型,声学模型得到带有声调的拼音,语言模型由拼音是别为汉字

    Python基于深度学习的中文语音识别系统源码,含声学模型和语言模型,声学模型得到带有声调的拼音,语言模型由拼音是别为汉字 声学模型 - acoustic_model文件夹下 该项目实现了GRU-CTC中文语音识别声音模型,所有...

    深度学习在语音识别声学建模中的应用.pdf

    【深度学习在语音识别声学建模中的应用】 在当今的人工智能时代,自动语音识别技术扮演着至关重要的角色,是实现人机交互的理想方式之一。传统的语音识别系统基于高斯混合模型-隐马尔可夫模型(GMM-HMM),然而在...

    基于深度学习的移动端语音识别系统设计.pdf

    ### 知识点一:深度学习在语音识别中的应用 深度学习作为一种机器学习方法,它通过构建深层的神经网络结构来模拟人脑处理信息的方式。在语音识别领域,深度学习模型能够自动学习音频信号的特征,以此来提高识别的...

    基于深度学习的声学模型和基于深度学习的语言模型

    深入研究这些材料,我们可以学习到如何构建和训练一个完整的深度学习语音识别系统,包括如何预处理音频数据、如何设计和调整网络结构、如何利用大规模的标注数据进行模型训练,以及如何评估和优化模型性能。...

    基于深度学习的语音识别技术现状与展望.pdf

    深度学习技术在语音识别领域的应用前景广阔,然而也面临许多挑战,例如如何进一步提高语音识别的准确率、实时性,以及在不同环境下的鲁棒性。未来的研究方向可能包括但不限于:开发更加高效的训练算法,改善模型的...

    解析深度学习与语音识别实践

    深度学习与语音识别是当前人工智能领域中的热点话题,它们在许多实际应用中发挥着关键作用。本篇文章将深入探讨这两个领域的基础知识以及实践技术。 首先,我们来了解一下深度学习。深度学习是机器学习的一个分支,...

    基于深度学习的中文语音识别系统

    总的来说,这个基于深度学习的中文语音识别系统是深度学习、声学建模和序列学习理论的综合体现,展示了在处理复杂语言识别任务时的高效性和准确性。通过不断优化和调整,我们可以期待此类系统在未来的语音交互应用中...

    深度学习神经网络在语音识别中的应用探讨.pdf

    深度学习神经网络模型在语音识别中的应用包括搭建语音样本库、改进神经网络模型以及应用人工神经网络对语音信号进行识别。其中,深度学习模型能够基于大规模历史数据训练和聚类,利用数学方法抽象建立对语音信息的...

    Python实现基于深度学习的中文语音识别系统源码+说明文档.zip

    该项目实现了GRU-CTC中文语音识别声音模型,所有代码都在gru_ctc_am.py中,包括: 增加了基于科大讯飞DFCNN的CNN-CTC结构的中文语音识别模型cnn_ctc_am.py,与GRU相比,对网络结构进行了稍加改造。 完全使用DFCNN...

Global site tag (gtag.js) - Google Analytics