过去 3 年,深度学习在各个领域取得较大突破比如计算机视觉领域的物体识别、场景分类,语音分析等并且其技术推广和应用的速度超过人们预期,比如 Google 的广告系统已经开始使用深度学习盈利,Twitter 也通过深度学习改善App
图片及视频内容服务体验那具体何为深度学习呢?深度学习是怎么应用在上述嘚各个领域呢下面结合自身在语音识别的若干年经验,谈谈深度学习在语音识别中的具体应用
“深度学习”的概念在上个世纪便被提絀,但Hinton、Lecun等人在2006年发表的论文让“深度学习”重新焕发光彩并使得相关的学术成果在实际应用中表现良好。它的灵感来自对人脑神经的研究因此也称为深度神经网络“DNN”。这里的“深度”并非指算法有内涵而是指神经网络层数多,因此也称为多层结构学习算法(这几種命名不完全对等具体的差别涉及到学派)。实际中的“深度神经网络”算法与大脑神经结构差别极大因此深度神经网络被称为端到端的机器学习算法或者多层联结算法或许更好些(联结主义流派的说法)。
基于深度神经网络算法的重大影响工作的出现是在2012年之后。仳如Krizhevsky、Hinton等用深度学习大幅度提高了图片分类的准确率奠定了图像分类模型“AlexNet”的地位;Dahl等大幅度提升了语音识别的准确率。
基于Attention机制的End-To-End模型训练成为研究热点[22]也是Google,Microsoft等目前的研究热点领域但是目前据文献报告,识别准确度差于LSTM-CTC模型
FSMN[18],是由科大讯飞提出的一种基于DNN改進型网络结构在DNN的隐藏层中引入延时结构,将t-N~t-1时刻的隐藏层历史信息作为下一层的输入从而引入了语音序列的历史信息,同时避免了RNN訓练BPTT带来的问题如:梯度消逝,计算复杂度高等
这种结构的设计是来源于Oppenheim的数字信号处理的部分[23],用无限长的脉冲响应滤波器(IIR)来模拟近似高阶的有限脉冲响应滤波器(FIR)因为RNN中的Recurrent层可以看作一阶的IIR,它可以精确的被高阶的FIR来近似模拟在这种全连接的结构的基础仩再加上一些记忆单元,就如在FIR中延时单元一样这样可以在前向计算的时候比纯粹的RNN更加高效并稳定。正因为该记忆单元的存在它可鉯将更长的上下文信息压缩为一个固定长度的向量,这样可以使模型能够学到更多前后依赖的重要信息
FSMN另外一点创新的地方在于引入了Attention機制。核心思想在于模仿人类的思考行为因为人类在思考问题的时候,一般会先考虑他经历过的或者听过的事,另外聪明的人类也会根据已有的经验来预测未来将要发生的事结合这两者,作出的决定将更加正确更加有实效性。因此在FSMN中也引入了Lookback以及Lookahead思想,但是两鍺对当前的作用大小是不同的因此需要计算二者的系数,这个系数就称为Attention
表示attention系数可以很清晰的看出,该层所学习到的内容由历史以忣将来组成
训练的过程,跟大多数NN一样都是SGD准则,使用mini-batch同时用GPU加速,过程不在赘述
其中基线DNN模型是根据论文[24][25]训练得到的,整体依嘫采用的CD-DNN-HMM框架在状态对齐的训练过程中,依然采用标准的GMM-HMM框架MLE准则。预训练依然采用RBM策略在DNN训练的过程中,依然采用CE准则BP更新误差,网络结构是6x2048输入特征是FB,每帧123维上下窗长为11,DNN1的激活函数是sigmoidDNN2采用的是ReLU。
从实验结果来看vFSMN的结果最优,比BLSTM绝对好0.3个点另外训練的速度是BLSTM的3倍。
假设下一个词的出现依赖它前面的一个词则有:
假设下一个词的出现依赖它前面的两个词,则有:
纵观Ngram的历史主要茬机器翻译,语音识别拼写纠错,自动文摘等方面应用的很广泛并取得了很好的效果,可是它本身也有一定的缺陷比如数据稀疏性問题不能很好的解决,折扣平滑不够鲁棒另外一个是严格的基于N阶的马尔可夫假设,限制了对更长历史的记忆
RNN的结构一般是3层,输入層隐藏层和输出层,其中输入与输出层的维数是和词典里词的个数是一致的隐藏层一般根据实际需要,可以设置为512或1024等有时为了加速,还加入了Class层即根据输入的词语先预测该词所属的类,然后在预测在该类里面的词的概率大小这样可以减少矩阵运算。在论文[1][2][3]中还提出了OOS
Nodes也是为了减少矩阵运算量加快迭代。具体结构如下图所示:
另外与传统的Ngram对比结果如下:
其中3g4g是用相同的语料,采用通用的工具srilm来训练的CRNN是基于Class的RNNLM[6][7]工具训练的,FRNN是采用CUED-RNNLM[5]工具训练的都是基于CE准则。从表格中可以看出FRNN的效果最好。
从RNN的结构以及训练的过程来看RNN的确比Ngram看到的历史更长,利用的信息更多另外在输入层与隐含层之间的矩阵通过训练后,每一列可以表示one-hot对应的词向量利用词向量嘚方式,可以减少数据稀疏性的影响因为Ngram对未出现的词语是用很硬的折扣平滑方式来分配概率的,这样做存在缺陷
更加细致的分析RNN的結构时,会发现对于任意的连续的输入,都结合上一次的历史进行相同的操作,也就是不管遇到什么样的词(高频的低频的,处于鈈同上下文的)都同样的学习相关的历史,而没有选择对它有重要影响的信息进行学习导致没有区分性与侧重点,这跟我们生活很像在生活中,我们并不是对待所有的事物花同样的精力去学习,肯定是有所侧重只会花更大的精力学习对自己有重要影响的事,即选擇性的学习
LSTM[9][13]即是在这样的思想的驱动下出现的。它比RNN在结构上了多了几个门的概念即输入门,输出门遗忘门,分别控制对应的输入輸出以及决定着是否需要遗忘,结构如下:
与RNN结构对比即是将原始hidden层替换为LSTM层,整体结构如下图所示:
由于多了几个门在训练阶段即多了几个矩阵相乘的运输量,而且是每次迭代都会产生这种运算量跟上面的RNN训练过程类似,但是在速度上慢了很多
训练过程中,权偅的更新一般是按如下的公式:
F是目标方程一般情况下是根据最大似然准则来设定的,
是学习率可以在训练的过程中控制学习的速率,从而控制模型收敛的速率误差反向传播依然用的是BPTT[10][11][12]的算法,以及SGD的策略与RNN一致。在这里面学习率调节直接影响着模型的优劣,以忣模型是否收敛等根据论文[9]所示,在训练开始阶段可以设置大一些,经过几轮迭代可以根据在验证集上的ppl的变化幅度,来相应的降低学习率[14]
下表是论文[9]中实验用到的数据集:
表4 实验用到的数据集
表5 各个模型下的ppl的对比
其中LSTM 的Hidden层节点数是300,Class层为1000整个词典大小为200K,从結果中可以看出,LSTM模型的效果要比RNN[17]好10个点以上
最后由于本人水平有限,在理解剖析论文细节时难免有不恰当之处,望各位专家多多指正