Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

语音识别系统大科普【长文预警】【第五章】 #76

Open
boji123 opened this issue May 26, 2017 · 0 comments
Open

语音识别系统大科普【长文预警】【第五章】 #76

boji123 opened this issue May 26, 2017 · 0 comments

Comments

@boji123
Copy link
Member

boji123 commented May 26, 2017

刚弄完与语音有关的毕业设计,对于语音识别系统算是入门了。
不同于图片识别,语音识别系统与其他时序系统一样,都是极度复杂的,为了让大家对这类系统有一定了解,特开此天坑。
//word图片不能直传,手动复制黏贴五十张图。。。辛酸
//word格式转换有点问题,因此部分公式不能较清楚地显示
//大部分图片取自网络,但所有文字均为手打

第五章DNN模型的优化方法
在本章中,列举了很多语音识别模型优化中需要注意的问题。需要注意的是,这些调优过程都是经验值,即没有确凿、严密的数学推导可以预言这些调优的结果如何。但是,在模型调试中,对这些细节的更改会影响模型的性能,包括训练速度、准确率等等,与此同时,网络的调优过程是一个局部最优问题,各个参数之间存在耦合,每个参数的最优不代表网络的全局最优

5.1 模型初始化
模型参数存在大量的局部最优解,而对于随机初始化方法,模型收敛于哪个局部最优解是随机的,如果能在初始化时对神经网络加以引导,让模型处于较好的局部最优解附近,可以大大提高训练出好模型的可能,如深度置信网络(DBN,Deep Belief Network)。

5.2 模型联合权重
根据4.3节得到的模型概率:
image
在这个概率公式中,由于对音素进行了HMM建模,因此,音素内部的状态转移的概率是很大的,因为音素内部状态转移只有自转和跳转,而与此同时,观测概率却随着类别的增多而变小,所以,转移概率与观测概率经常差了几个数量级,为此需要压低转移概率的权重,上式改写为:
image
其中λ是一个经验值,一个合适的取值是0.1。

5.3 正则约束
当训练数据较少,而模型参数过多时,可能产生模型对于训练数据的拟合效果很好,但是换用测试集时,拟合效果却变差了的问题,即为过拟合现象。过拟合说明模型对特征过度分类了,如图5-1:

image

图5-1,欠拟合、合适的模型与过拟合
图5-1(a)中,模型表达了一个类似于直线的分界,因此未能良好分类样本;(b)中,模型表达了一个较好的弧线边界,虽然有少量黑色样本混杂在红色样本中间,但是这些样本不能很好的表达整体,因此应当舍弃;(c)中,模型完全分类了所有的样本,但是对于未知的样本却不具备泛化能力。
为了防止过拟合的问题,除了控制网络规模以外,更加方便的方法是对网络添加正则约束。
由于在模型发生过拟合时,模型某些权重会变得很大,因此,如果将模型权重控制在一个较小的范围,可以较好的防止过拟合的问题发生。
考虑损失函数
image
在其中添加正则化项,其中λ是正则化因子,用于平衡两者的重要性:
image
即在损失函数中考虑所有权重大小的惩罚,这样在训练时,为了减小损失函数,权重会自然被调整。f(W)有多种形式,其中常用的有L1正则化:f(W)=|W|,以及L2正则化:f(W)=W^2,其中,L1正则化在原点不可导,不便于使用,而L2正则化是可导的,且其对于大的权重的惩罚大于小的权重,更加符合需要。
5.4 网络结构
在调整参数的过程中,网络结构是首先需要关注的。较少的隐藏层和隐藏层节点数会导致模型对样本进行的分类十分粗糙,即为欠拟合;而较多的隐藏层和隐藏层节点数会导致过拟合。与此同时,过大网络结构也意味着更多的参数和更多的计算资源以及更长的训练时间,这无疑是一种效率上的浪费。
另外,通过对NN结构进行修改,可以获得一些其他的网络结构,如CNN(Convolution Neural Network)和LSTM(Long Short Term Memory),前者广泛应用在图像建模中,而后者由于其在时间上的建模能力,适合用于与时间有关的建模。

5.5 特征工程
5.5.1 MFCC的不足
MFCC作为原始的数据,缺乏一些先验知识。
尽管只要网络足够复杂,深度神经网络可以很好地拟合任意的函数与空间分界,但是,由于梯度下降法只能提供一个局部最优解,同时由于深度神经网络的参数很多,因此网络中存在大量的局部最优解,不一定能学习到较好的模式。为了避开那些很差的局部最优解,需要人为显式给出输入向量的形式,给网络提供一些较好的模式。一个典型的特征变换是LDA。

5.5.2 LDA(Linear discriminant analysis)
LDA即线性判别分析,它可以将输入特征向量通过式子进行线性变换,使得同类别的样本更加靠近,不同类别的样本更加分离。LDA可以起到降维和预分类的作用,相当于给神经网络提供了一定的知识。如图5-2:

image

图5-2,一个线性变换
图5-2使用LDA算法将二维平面的数据映射到了一个一维直线上,在这个直线上,红色和蓝色的类别分类界限变得十分明显。
5.6激活函数
激活函数的选择会直接影响损失函数、梯度下降过程以及网络的表达能力。激活函数的好坏影响着网络的性能,包括拟合效果、收敛所需迭代轮次(收敛速度)与计算速度。下面列举了三种常用的激活函数。

5.6.1 sigmoid
最经典的激活函数,是一个值域为[0,1]的S形函数,均值不为0。其函数表达式:
image
该激活函数因其是非负的,不能对生物的神经元有良好建模。

5.6.2 tanh
另一个常用的激活函数,sigmoid的改进版本,其函数表达式:
image
是一个值域为[-1,1]的S型函数,均值为0,由于生物的神经元具有抑制和兴奋两种输出,因此tanh相对于sigmoid是对生物神经元的更好的建模。

5.6.3 relu
生物学中对于生物神经的研究发现,生物在做某件事的时候,只有少量神经元是激活的,因而神经元的表达具有稀疏性,少量特定的神经元表达特定的模式。tanh在使用中,不具有稀疏性,因而仍不是对生物神经元的良好建模。
relu激活函数指定当输入值小于0时,输出值是0,输入值大于0时,输出值是输入值本身。
因而relu在网络中存在大量的零值输出,因此可以强迫神经网络学习更有效的表达方式;附加的好处是零值输出乘以权重恒为零,且relu不需要非线性计算,因此可以大大减少网络的计算量。relu的缺点是神经网络中有大部分的节点的输出是零,造成了浪费,且其是一个非线性函数,仍不能对神经元的激活模型做较好的拟合。

5.7层数增长
反向传播算法虽然可以一次梯度下降所有的参数,但是其本身具有局限性。当靠近输出层的那些节点学习地较好的时候其对应的残差也会较小,因而,在反向传播的作用下,对上一层的影响也会变小,具体如下式子:
image
隐藏层的梯度改变量是每层的权重和导数累乘的效果,而随机初始化时,考虑模型收敛速度,权重是小于1接近0的小值,而sigmoid函数的导数的最大值是0.25,因此Wf’<0.25,进过多层传播,该系数会变得非常小,导致靠近输入层的节点梯度改变缓慢。
与此同时,神经网络虽然可以拟合出任意空间分类模式,但是由于梯度下降法只能提供局部最优解,为了提高网络性能,浅层网络需要学习更加有效的分类模式。
为了让浅层网络可以学习到输出特征更本质的隐藏模式,可以采用层数增长法,即在训练网络时,不立即进行整个网络的前向传播,而是先训练一个单隐层的网络,待单隐层网络收敛时,添加一个隐层,继续进行网络的训练,依此类推直到网络达到所需的层数再进行整体调优。
这有点像人类的学习方式,先上小学打好基础,然后再慢慢往上学习高深的知识。

5.8节点丢弃(dropout)
在模型训练中,很容易学习到一些不好的表达,导致整个模型陷入局部最优,这与人类的记忆类似,假如一个人经历过一些不好的时,那么他就会有一些心理负担,这会对其未来的工作产生一定的影响。为了让节点可以跳出(丢弃)这些不好的表达,可以采用节点遗忘法。在节点遗忘法中,每个节点以一定概率损失其激活值,即激活值为0。这样做可以强迫模型在收敛时仍然继续进行学习。对于那些不好的模式,其局部最优是较为容易跳出的,而对于那些较好的模式,则较为稳定。节点遗忘会给整个网络引入一种不稳定性,让整个网络重新调整,使得网络倾向于保留好的、本质的特征。


参考文献
[1]赵力. 语音信号处理-第2版[M]. 机械工业出版社, 2009.
[2]吴军. 数学之美.第2版[M]. 人民邮电出版社, 2014.
[3]俞栋, 邓力, 俞凯,等. 解析深度学习语音识别实践[M]. 电子工业出版社, 2016.
[4]郑泽宇, 顾思宇. TensorFlow实战Google深度学习框架[M]. 电子工业出版社. 2017.
[5]卡拉特.苏彦捷.生物心理学[M].第10版.北京.人民邮电出版社,2012
[6]Rabiner L, Juang B H. Fundamentals of speech recognition[M]. Tsinghua University Press, 1999.
[7]Bishop C M. Pattern Recognition and Machine Learning (Information Science and Statistics)[M]. Springer-Verlag New York, Inc. 2006.
[8]Andrew NG, Jiquan Ngiam, Chuan YU Foo, et al. UFLDL tutorial. http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial. 2013.
[9]Young S J. Token Passing: a Simple Conceptual Model for Connected Speech Recognition Systems[J]. Help, 1994.
[10]Hinton G, Deng L, Yu D, et al. Deep Neural Networks for Acoustic Modeling in Speech Recognition: The Shared Views of Four Research Groups[J]. IEEE Signal Processing Magazine, 2012, 29(6):82-97.
[11]Young S. A review of large-vocabulary continuous-speech[J]. IEEE Signal Processing Magazine, 1996, 13(5):45.
[12]Miao Y, Metze F. Improving low-resource CD-DNN-HMM using dropout and multilingual DNN training[J]. Proc Interspeech, 2013.
[13]Rath S, Povey D, Veselý K, et al. Improved feature processing for Deep Neural Networks[C]. conference of the international speech communication association, 2013.
[14]Mohamed A R, Dahl G, Hinton G. Deep Belief Networks for phone recognition[J]. 2009, 4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant