标签:不变性 上进 梯度下降 消失 局部最优 区分 tag out iphone
基于DNN-HMM的语音识别声学模型结构如下图所示,与传统的基于GMM-HMM的声学模型相比,唯一不同点在于用DNN替换了GMM来对输入语音信号的观察概率进行建模。DNN与GMM相比具有如下优点:
DNN输出向量的维度对应HMM中状态的个数,通常每一维输出对应一个绑定的triphone状态。训练时,为了得到每一帧语音在DNN上的目标输出值(标准值),需要通过事先训练好的GMM-HMM识别系统在训练语料上进行强制对齐。即要训练一个DNN-HMM声学模型,首先需要训练一个GMM-HMM声学模型,并通过基于Viterbi算法的强制对其方法给每个语音帧打上一个HMM状态标签,然后以此状态标签,训练一个基于DNN训练算法的DNN模型。最后用DNN模型替换HMM模型中计算观察概率的GMM部分,但保留转移概率和初始概率等其他部分。
早期的DNN一般采用前馈神经网络结构,其本质上是一个包含多个隐层的多层感知机。它采用层级的结构,分为输入层、隐层和输出层。相邻层的神经元节点采用全连接的方式,而在同一层的节点之间则不存在连接。隐层神经元节点的输出(激活值)是前一层输出向量和当前层网络权重的线性加权和,再通过非线性激活函数得到。对于包含L个隐层的DNN,假设其输入为\(h^0=o_t\),则各隐层的输出向量\(h^l\)可如下计算
\[
\begin{eqnarray*}
& a^l & =W^lh^{l-1}+b^l,1 \leq l \leq L+1\tag{1-1}\& h^l & =f(a^l),1 \le l \le L\tag{1-2}
\end{eqnarray*}
\]
其中\(W^l\)和\(b^l\)分别表示网络第\(l\)层的权重和偏置向量。\(f(.)\)表示隐层节点的非线性激活函数。传统的DNN普遍采用\(Sigmoid()\)激活函数,其函数表达式如下
\[
f(a)=\frac{1}{1+e^{-a}}\tag{1-3}
\]
DNN的输出层通常采用\(Softmax()\)函数对输入观察样本的后验概率分布进行建模,其第\(i\)维输出为
\[
y_i=P(i|o_t)=h_i^{L+1}=\frac{e^{-a_i^{L+1}}}{\mathop{\sum}_je^{-a_i^{L+1}}}\tag{1-4}
\]
DNN的优化目标函数常采用最小交叉熵(cross-entropy,CE)准则和最小均方误差(mean square error,MSE)准则等。在语音识别中采用CE准则更加普遍,它可以表示为如下的优化问题
\[
\theta^*=\mathop{argmax}_\theta[-\mathop{\sum}_tlog \ y_{s(t)}]\tag{1-5}
\]
其中,\(\theta=\{W^l,b^l|l=1,2,\cdots,L+1\}\),表示DNN中左右参数的集合,\(s(t)\)是声学特征向量\(o_t\)所对应的HMM状态标签。该优化问题是高维且非凸的,通常采用基于随机梯度下降的BP算法来进行优化。BP算法的核心思想是通过链式求导法则,计算出相对于目标函数的每层输出的反向传播误差信号,然后进一步得到网络参数的梯度。
研究发现,对上述神经网络采用BP算法直接进行训练往往效果不佳,这也导致了早期基于ANN的混合声学模型未能得到成功应用。究其原因在于:
深度自编码器神经网也是一种无监督模型,其输出向量与输入向量同维,训练目标是使其目标值等于输入值,即尝试逼近一个恒等函数。这样就可以将其隐层激活值看作为对原始数据的压缩标志或有效编码。通常也采用逐层贪婪训练方法来训练深度自编码器神经网。每次采用基于随机梯度下降的BP算法来训练仅一个隐层的自编码神经网,然后将其堆叠在一起构成深度网络。这样的深度自编码网络也被称为栈式自编码神经网络。其训练过程如下:先利用原始输入数据训练一个单隐层自编码器网络,学习其权重参数,从而得到第一个隐层。然后将其隐层神经元激活值组成的向量作为输入,继续训练一个新的单隐层自编码器网络,从而得到第二个隐层及其权重参数,以此类推。同样,最后增加一个Softmax层作为输出。这样也能构成一个自下而上的前馈深层且具有区分性的DNN,并能得到其网络参数的一个有效初值,可以对其进行进一步的基于BP算法的有监督精调训练。
对DNN首先进行无监督的预训练,然后进行有监督的调整是DNN-HMM声学模型能够成功应用于语音识别任务,并在性能上超越GMM-HMM的主要原因之一。无监督预训练避免了有监督训练时常常过拟合与泛化能力很差的局部极值点的问题,而逐层的贪婪训练弥补了梯度消失问题带来的影响。然而深度学习技术发展迅猛,从今年的研究进展看,预训练的重要性日益降低,原因大致有以下几点:
采用整流线性单元(ReLU)作为激活函数,以及采用卷积神经网络,这种深度网络结构也成功的减小了梯度消失问题的影响。下面将简要介绍一下ReLU和CNN。
相关的研究表明,采用基于ReLU()激活函数的DNN与采用基于Sigmoid()激活函数的DNN相比,不仅可以获得更好的性能,而且不需要进行预训练,可以直接采用随机初始化。其函数表达式如下:
\[
f(a)=max(0,a)\tag{1-6}
\]
CNN也是一个更适合对大数据进行建模的深度网络结构,尤其是近几年来,以ResNet和Highway网络为代表的深度CNN的研究工作,对语音识别的研究起到了很好的作用。
CNN是一种经典的前馈神经网络,是受生物学上感受野机制启发而来。它本质上是一种基于监督学习的数学模型,由多个卷积层和池化层交替出现构成整个网络的前端,用于特征提取和表示,在后端由多个全连接层用于对提取到的局部特征进行全局上的整合与变换。网络最终输出会根据任务的不同而动态调整。与传统的DNN网络结构相比,CNN能够从大量的训练数据中提取有效且泛化能力强的特征,因而非常适合于分类任务。
一个典型的CNN网络结构如下图所示,其中卷积层是整个网络最为核心的部分,它通过卷积核对输入进行卷积操作以获取输出。这里可以将卷积操作理解为线性加权运算,卷积层的输出称之为特征图。一般会采用多个卷积核来学习不同层次的特征,这样便会得到多个特征图。不同于全连接网络,卷积层的卷积核只会与输入中的某些局部区域相连接,这样不仅能有效降低网络的连接数量,而且也可以获得丰富的局部特征。此外,同一层之间相同的卷积核会共享参数,这进一步降低了需要训练的网络参数的规模。在卷积层,特征图也要通过激活函数进行非线性处理,在CNN中一般也采用ReLU作为激活函数。
池化层又称为下采样层,他主要对上一层得到的特征图进行压缩。在实际应用中以最大池化和均匀池化最为常见。最大池化会对池化域内的特征点取最大值,而均匀池化则对池化域内的特征点取平均值。池化操作不仅能显著压缩数据规模,减少训练参数,更重要的是他能是网络获得某种不变性,以增强自身的顽健性。就语音识别而言,它能够使识别系统对因噪音带来的频率偏移,以及不同说话方式带来的平移有一定的容错能力。
全连接层就是普通的前馈网。CNN在完成卷积或者池化后一般需要接入全连接层,但在此之前需要完成光栅化操作。所谓光栅化是指将最后输出的特征图依次展开,重新构造成一个特征向量。全连接层能够将卷积和池化操作后提取到的局部特征在更高的维度上进行全局的信息整合。
CNN也是一种前馈神经网络,它的训练算法也是基于链式法则求梯度,然后用随机梯度下降方法求优。计算梯度的过程与传统的BP算法十分类似,即首先前向计算误差项,然后再进行误差的反向传播。只不过由于池化层通过下采样操作对输入数据进行了压缩,因此需要在误差的反向传播过程中,采用上采样函数将误差矩阵还原至压缩之前,并重新对误差进行分配。
标签:不变性 上进 梯度下降 消失 局部最优 区分 tag out iphone
原文地址:https://www.cnblogs.com/liuerdou/p/11332422.html