基于深度自编码器神经网络完成语音识别的预训练方法
深度自编码器神经网
深度自编码器神经网也是一种无监督模型,其输出向量与输入向量同维,训练的目标是使其目标值等于输入值,即尝试逼近一个恒等函数。这样就可以将其隐层激活值看作为对原始数据的压缩表示或有效编码。通常也采用逐层贪婪训练法来训练深度自编码器神经网。每次采用基于随机梯度下降的BP算法来训练仅一个隐层的自编码器神经网,然后将其堆叠在一起构成深度网络。这样的深度自编码器网络也被称为栈式自编码器神经网络。其训练过程如下:先利用原始输入数据训练一个单隐层自编码器网络,学习其权重参数,从而得到第一个隐层。然后将其隐层神经元激活值组成的向量作为输入,继续训练一个新的单隐层自编码器网络,从而得到第二个隐层及其权重参数,以此类推。同样,最后增加一个Softmax层作为输出。这样也能构成一个自下而上的前馈深层且具有区分性的DNN,并能得到其网络参数的一个有效初值,可以对其进行进一步的基于BP算法的有监督精调训练。
DNN-HMM
对DNN首先进行无监督的预训练,然后进行有监督的调整是DNN-HMM声学模型能够成功应用于语音识别任务,并在性能上超越GMM-HMM的主要原因之一。无监督预训练避免了有监督训练时常常过拟合于泛化能力很差的局部极值点的问题,而逐层的贪婪训练弥补了梯度消失问题带来的影响。然而深度学习技术发展迅猛,从近年的研究进展看,预训练的重要性日益降低:① 使用海量数据进行训练能有效避免过拟合问题,Dropout等随机优化算法的出现,也极大提高了DNN模型的泛化能力;② 采用整流线性单元(Rectified Linear Units, ReLU)作为激活函数,以及采用卷积神经网络(Convolutional Neural Networks, CNN),这种深度网络结构也成功的减小了梯度消失问题的影响。下面将简短介绍一下ReLU和CNN。
ReLU
相关的研究表明,采用基于ReLU激活函数的DNN与基于Sigmoid激活函数的DNN相比,不仅可以获得更好的性能,而且不需要进行预训练,可以直接采用随机初始化。其函数表达式如下:
CNN
近年的研究显示,基于CNN的语音声学模型与传统DNN的模型相比,可以获得更好的性能,究其原因在于:① CNN具有局部连接和权重共享的特点,以及很好的平移不变性。因而将卷积神经网络的思想应用到语音识别的声学建模中,就可以利用卷积的不变性来克服语音信号本身的多样性,如说话人的多样性(说话人自身及说话人间)、环境的多样性等,从而增强声学模型的顽健性。② CNN也是一个更适合对大数据进行建模的深度网络结构,尤其是近几年来,以ResNet和Highway网络为代表的深度CNN的研究工作,对语音识别的研究起到了很好的促进作用。
CNN是一种经典的前馈神经网络,是受生物学上感受野机制启发而来。它本质上是一种基于有监督学习的数学模型,由多个卷积层和池化层交替出现构成整个网络的前端,用于特征提取和表示,在后端由多个全连接层用于对提取到的局部特征进行全局上的整合与变换。网络的最终输出会根据任务的不同而动态调整。与传统的DNN网络结构相比,CNN能够从大量的训练数据中提取有效且泛化能力强的特征,因而非常适合于分类任务。
一个典型的CNN网络结构如图所示,其中卷积层是整个网络最为核心的部分,它通过卷积核对输入进行卷积操作以获取输出。这里可以将卷积操作理解为线性加权运算,卷积层的输出称之为特征图。一般会采用多个卷积核来学习不同层次的特征,这样便会得到多个特征图。不同于全连接网络,卷积层的卷积核只会与输入中的某些局部区域相连接,这样不仅能有效降低网络的连接数量,而且也可以获取丰富的局部结构化特征。此外,对于同一层之间相同的卷积核会共享参数,进一步降低了需要训练的网络参数的规模。在卷积层,特征图也要通过激活函数进行非线性处理,在CNN中一般也采用ReLU作为激活函数。
池化层
池化层又称为下采样层,它主要对上一层得到的特征图进行压缩。在实际应用中以最大池化(Max-Pooling)和均匀池化(Average-Pooling)最为常见。最大池化会对池化域内的特征点取最大值,而均匀池化则对池化域内的特征点取平均值。池化操作不仅能显著压缩数据规模,减少训练参数,更重要的是它能使网络获得某种不变性,以增强自身的顽健性。就语音识别而言,它能够使识别系统对因噪声带来的频率偏移,以及不同说话方式带来的平移有一定的容错能力。
全连接层
全连接层就是普通的前馈网。CNN在完成卷积或者池化后一般需要接入全连接层,但在此之前需要完成光栅化操作。所谓光栅化是指将最后输出的特征图依次展开,重新构造成一个特征向量。全连接层能够将卷积和池化操作后提取到的局部特征在更高的维度上进行全局的信息整合。
CNN也是一种前馈神经网络,它的训练算法也是基于链式法则求梯度,然后用随机梯度下降方法求优。计算梯度的过程与传统的BP算法十分类似,即首先前向计算误差项,然后再进行误差的反向传播。只不过由于池化层通过下采样操作对输入数据进行了压缩,这就需要在误差的反向传播过程中,采用上采样函数将误差矩阵还原至压缩之前,并重新对误差进行分配。
总结
这是关于深度学习在语音识别领域中的一个经典模型的介绍,这些内容也是《语音信号处理(第3版)》的部分内容,一直以来语音交互被认为是人工智能的基石,具有广大的发展空间,如果你对语音这一AI领域存在兴趣,强烈推荐本书,书中全面论述语音信号的生成、处理、压缩、传输、合成、识别与理解!
本书是进入该领域非常棒的一本书,强烈推荐本书,京东购买链接为¡¶ÓïÒôÐźŴ¦Àí£¨µÚ3°æ£©/È˹¤ÖÇÄÜ¿ÆѧÓë¼¼Êõ´ÔÊé¡·(º«¼ÍÇ죬ÕÅÀÚ£¬Ö£ÌúÈ»)¡¾ÕªÒª ÊéÆÀ ÊÔ¶Á¡¿- ¾©¶«Í¼Êé