AI-语音处理理论和应用-DNN
学习目标
• 了解语音处理的基础知识及应用
• 掌握语音处理的基本步骤
• 掌握语音处理的主要技术
• 了解语音处理的难点与展望
DNN
深度神经网络
• 深度神经网络(Deep Neural Network,缩写DNN)是一个有多个(超过2个)隐藏层的传统多层感知器(MLP)。
DNN网络结构
• DNN包括了一个输入层,多个隐藏层和一个输出层。
• 层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
• 虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系z=∑▒〖(wx〗+b)加上一个**函数σ(z)。
• 由于DNN隐藏层数多,则我们的线性关系系数w和偏置b的数量也就是很多了。
DNN前向传播原理
• 利用若干权重系数矩阵W和偏置向量b和输入值x进行一系列线性运算和**函数运算,从输入层开始,一层一层向后计算,一直运算到输出层,得到输出结果为止。
• 输入:总层数L,所有隐藏层和输出层对应的权重矩阵W,偏置向量b,输入值x以及**函数;
• 输出:输出层的输出y_L:初始化y_1 ,从第2层到第L层,计算y_L;
反向传播算法
• 反向传播算法(即BP算法)适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。
• BP算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络对输入的响应达到预定的目标范围为止。
• 激励传播:
o 前向传播将训练输入送入网络以获得激励响应;
o 反向传播将激励响应同训练输入对应的目标输出求差,从而获得损失函数
• 权重更新:
o 获取梯度
o 梯度与学习率相乘
o 权重更新
数据预处理
• 在进行特征提取之前,都要对原始序列做一系列的预处理,目的是消除因为人类发声器官本身和由于采集语音信号的设备所带来的混叠、高次谐波失真、高频等等因素对语音信号质量的影响,尽可能保证后续语音处理得到的信号更均匀、平滑,为信号参数提取提供优质的参数,提高语音处理质量。
• 常用方法有,特征归一化,标准化,端点检测,预加重,降噪,分帧。
• 特征归一化:语音识别中的倒谱均值归一化是在句子内减去MFCC特征的均值,可以减弱声学信道扭曲带来的影响。
• 特征标准化:使用全局转换缩放每维数据,使得最终的特征向量出于相似的动态范围内。
模型初始化
• 因为DNN是一个高度非线性模型,并且相对于参数来说,训练准则是非凸函数,所以初始化模型会极大影响最终效果。
• 初始化方法主要分两类:
• 区间初始化:初始化的权重必须使得隐层神经元节点在sigmoid**函数的线性范围内活动;权重太大会让结果趋近于0或者1,导致梯度更小,无法收敛。
• 随机初始化:DNN中的隐层神经元都是对称可互换的,如果所有的模型都有相同的参数,那所有的隐层会输出相同的结果,导致在DNN底层检测相同的特征。
权重衰减
• 与传统机器学习算法相比,DNN网络有更强的拟合能力,因为其参数更多,但也导致其更更容易过拟合。防止过拟合的最简单的方法就是添加正则项,比如L2范数,在神经网络中,这些正则项通常被称为权重衰减(weight decay)。
• 当训练集的大小相对于DNN的参数量较小时,权重衰减法往往是很有效的。因为在语音识别任务重使用的DNN模型往往会有超过百万的参数,相应系数应该较小,甚至当训练数据量较大时设置为0。
Dropout
• 丢弃法(Dropout)是权重衰减之外另一种流行的防止过拟合。其基本思想是在训练过程中随机丢弃每一个隐藏层中一定比例的神经元,这意味着即使在训练过程中丢弃了部分神经元,剩下的神经元依然需要在每一种随机组合中有好的表现。
batch大小选择
• 在训练过程中都需要从训练样本的一个批量集合中进行梯度计算,而批块量大小的选择同时会影响收敛速度和模型结果。
• 批量块选择的两种常见情况:
• 整个训练集:选择整个训练集进行模型训练是最常见的情形。
• 随机训练集:代表性方法就是随机梯度下降(SGD),每次只需要用一个样本进行梯度的计算和迭代。不容易收敛。
• 综合上述两中批量块的选择情况,提出这种方案“小批量”进行训练,迭代速度比整个数据集更快,比随机训练集更容易收敛。在语音识别任务中,前期可以选择较小的批量块,比如64到256个样本,而后期换用较大的批量块,比如1024-8096个样本。
随机取样
• 随机取样与全局训练是无关的,因为在全局训练中所有的样本都会被用来估计梯度。而在随机梯度下降和小批量梯度下降中,随机取样是十分重要的。这是为了得到梯度的无偏估计,样本必须是独立同分布的。如果训练过程中的一些样本不是随机从训练集中取出的,模型的参数可能会沿着一个方向偏移太多。
• 以下是两种随机取样的思路:
• 在语音处理任务中,若所有样本都可以被载入内存中,那可以通过对样本索引进行相应的处理抽样就可以达到样本抽样的效果。
• 在语音处理任务中,若无法将所有样本载入内存进行计算,可以采用滚动窗的方法每次加载一块数据进内存,然后再窗内随机取样。
学习率
• 从梯度下降算法的角度来说,通过选择合适的学习率,可以使梯度下降法得到更好的性能。学习率,即参数到达最优值过程的速度快慢,当你学习率过大,即下降的快,很容易在某一步跨过最优值,当你学习率过小时,长时间无法收敛。因此,学习率直接决定着学习算法的性能表现。
• 可以根据数据集的大小来选择合适的学习率,当使用平方误差和作为成本函数时,随着数据量的增多,学习率应该被设置为相应更小的值(从梯度下降算法的原理可以分析得出)。另一种方法就是,选择不受数据集大小影响的成本函数-均值平方差函数。
• 一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10。
• 在不同的迭代中选择不同的学习率,在最初的迭代中,学习率可以大一些,快接近时,学习率小一些。在每次迭代后,使用估计的模型参数来查看误差函数的值,如果相对于上一次迭代,错误率减少了,就可以增大学习率如果相对于上一次迭代,错误率增大了,那么应该重新设置上一轮迭代的值,并且减少学习率到之前的50%,这是一种学习率自适应调节的方法。
网络结构
• DNN每个隐藏层都可以被认为是前一层的特征抽取器,每层节点的数量应该足够大以获取本质的模式。
• 宽且浅的模型容易过拟合,窄且深的模型容易欠拟合。如果有一层很小,模型性能将有较大下降。相对一个窄且浅的模型,通常一个宽且深的模型更容易找到一个好的配置。
• 在语音识别中,有5-7个隐藏层,每层有1000-3000个节点的DNN模型效果很好。