APP下载

基于双通路CNN的端到端语音识别研究*

2021-11-25黄洪全宋悦阳陈延明

传感器与微系统 2021年11期
关键词:池化层错误率集上

胡 黎, 黄洪全, 梁 超, 宋悦阳, 陈延明

(广西大学 电气工程学院,广西 南宁 530003)

0 引 言

21世纪初,最先进的语音识别技术通常是基于隐马尔可夫模型的高斯混合模型(Gaussian mixture model-hidden Markov model,GMM-HMM)[1]。随着时代的发展,GMM-HMM由于网络层级相对较浅,参数训练会存在严重不足的情况,使其无法满足实际的建模和实用化要求。2011年后,深度神经网络(deep neural network,DNN)因能更好利用语音帧的上下文信息等特点逐渐取代了GMM,DNN和HMM结合的语音识别模型,很大程度上降低了语音识别的错误率[2]。DNN-HMM模型的成功启发了一批卷积神经网络(convolutional neural network,CNN)和长短期记忆(long short-term memory,LSTM)[3]网络等神经网络模型在语音识别之中的深入运用。

作为一种能进行深层局部连接的网络结构,CNN在许多连续语音识别任务中都取得了优于DNN模型的成绩。文献[4]将CNN应用于大型词汇连续语音识别任务,相比于DNN模型取得了巨大的精度提升;文献[5]通过完全卷积层模型实验验证了非常深的CNN在语音识别中的优异性能。文献[6]论述了CNN相对于DNN在提取语音特征方面的优势和在大规模中文语音识别任务上的出色表现。

在传统浅层CNN模型中会存在特征提取不足导致语音识别精度相对不高的问题,常用的解决办法是通过不断加深网络深度来获取更多的特征信息,但由此会引入参数量巨大、梯度消失等新的问题。

本文通过分析CNN原理,提出了一种可行的学习更多特征的方法,即双通路卷积神经网络(double-path CNN,DPCNN)。通过DPCNN子网络对同一语音输入进行特征提取,全连接层对子网络进行特征融合,并利用级联Attention-CTC方法训练得到了语音到拼音的端到端语音识别模型。

1 DPCNN

1.1 CNN

CNN的基本结构由输入层(input layer)、卷积层(con-volutional layer,Conv)、池化层(pooling layer)、全连接层(fully connected layers,FC)和输出层(output layer)构成。

在CNN的一层卷积层中,多个神经元排列组成了特征图,每个神经元都只与其部分邻层神经元相连接,位于同一特征图中的所有神经元共享权值,即卷积核。卷积核通过减少CNN各层之间的连接,降低了网络的参数数量,从而降低了模型过拟合的风险。卷积层可以计算为

池化层也叫下采样层。池化操作相当于对池化层输入进行了空间维度缩减,并增大了感受野,同时减少模型计算量和参数数量。在一定程度上池化层也防止了模型过拟合,利于模型的优化。池化的方法有多种,通常用到的池化操作有最大池化(max-pooling)和平均池化(mean-pooling)。

CNN一般采用多层卷积层和池化层交替设置,即一个或多个卷积层连接一个池化层,池化层后再连接一个或多个卷积层,通过卷积层和池化层的相互配合来学习特征。CNN中的全连接层相当于一个多分类神经网络,全连接层也能进一步收集更多的特征以满足特征提取的要求,最终通过SoftMax函数得到整个网络的输出。CNN通过经典的误差反向传播算法来调整参数,完成卷积核和全连接层权值的更新。

1.2 DPCNN

为解决传统浅层CNN模型特征提取能力不足的问题。本文在保持一定深度的CNN的基础上适当增大了CNN自身的宽度,提出了DPCNN。DPCNN整体结构由两个相同的子网络“并行”组成,子网络结构参考全序列CNN[6]设计,结构如图1所示。

图1 DPCNN结构

Conv3—32代表卷积层卷积核为3×3,通道数为32。Maxpool代表2×2的最大池化。每通路子网络由多个卷积层和池化层组成,两个子网分别进行特征提取和池化,维度拼接后输入到全连接层进行融合并训练,最后使用SoftMax函数输出网络的分类结果。DPCNN通过增大CNN的宽度使得模型能够从语音信号中提取和学习到更多的数据特征,从而提高模型的识别性能。

为了进一步提高网络识别精度和泛化性能,在每层卷积层后加入批量归一化(batch normalization,BN)层,加入BN层可以使得网络在较大学习率时不受梯度消失的影响,加快网络的收敛速度,同时BN层在一定程度上可以防止过拟合。在全连接层使用Dropout,按照丢弃率随机使部分神经元失活,从而进一步防止模型过拟合并增强模型泛化性能。

2 连接时序分类

在一般的序列学习任务中,传统的序列相关神经网络模型需要预先对输入序列和输出序列进行预处理,明确输入数据和输出标签之间的对应关系。在语音识别任务中,语音数据是通过录制等方式将模拟信号转为数字信号而得到的,很难获取到包含输入语音到输出标签之间一一对齐的大规模训练样本。鉴于这一点,本文采用的是由Graves A等人[7]提出连接时序分类(connection timing classification,CTC)方法。CTC语音识别模型与传统的基于HMM的模型最大的不同在于它不需要事先建立输入语音特征和输出标签之间的对齐关系,可以让模型直接对输入语音特征进行端到端学习,并输出预测序列的概率。

CTC假设对给定输入而言,每个输出之间都是条件独立的,所以,对于给定长度为T的输入语音特征x,计算输入x生成一条正确路径为π的条件概率是十分简单的

CTC引入了一个很特别“blank”标签,在输出标签的首尾和标签之间都需要插入“blank”,用以表示空白,匹配路径时需要去掉输出中连续重复的符号和空白。由于“blank”可以插入目标标签任何位置,所以在每个时间步,对于相同的目标标签,可以存在许多对匹配路径。

例如

式中 “-”为插入的blank标签,Β为多对一映射函数,即:对于不同路径(a,-,-,bb,-,c),(-,aa,-,b,-,c) 和(a,-,b,-,-,c)等候选序列都映射到相同的目标标签(a,b,c)。

CTC通过对所有可能的路径πi的概率求和来获得目标标签l的概率

p(l|x)=∑p(πi|x)

(4)

CTC的损失函数定义为每个训练样本正确标记的负对数概率之和

LCTC=-lnp(l|x)

(5)

由于CTC损失函数可微,因此,可通过前向—后向动态规划算法有效地计算方程通过不断降低CTC损失值达到网络训练的目的,使得预测序逐渐逼近真实标签。

整个CTC网络可以通过最佳路径解码:直接将对应最高概率的标签串联起来同时合并重复项标签、删除空白标签,从而得到最终的输出序列。

3 级联Attention-CTC

由于CTC中存在的假设:网络所有输出之间条件独立,在实际语音环境中并不成立,从而制约了CTC网络性能的进一步提升。为了解决CTC方法的条件独立性假设问题,同时为了从输入语音特征中获取更多的信息,本文在全连接层中引入了注意力(attention)机制,组成级联Attention-CTC结构,全连接层中的Attention机制如图2所示。

图2 Attention机制

Attention得分情况如下

ehi=tanh(wThi+b)

(6)

C=AH

(8)

等式(6)中,hi为CNN提取到的高维特征,wT和b为权重矩阵和偏置矩阵,其值由模型训练得来。利用双曲正切函数tanh得到代表当前输入特征的Attention得分ehi。为了得到每一个输入特征相应的权重需要对所有的Attention得分进行指数归一化,等式(7)中αi即为对应特征的Attention权重。等式(8)中,A为αi组成的Attention权重矩阵,通过输入特征矩阵和权重矩阵之间的逐元素乘积,Attention机制最终输出C被输入到CTC损失函数以指导模型的训练过程。Attention机制可以通过对与当前输出相关的关键特征赋予更高的权重的方式在一定程度上削弱了CTC中条件独立性假设的约束,减少在模型训练阶段了序列的不规则对准[8],从而改善CTC端到端设计方法的建模能力。

通过级联Attention-CTC,本文构建了完整的DPCNN-Attention-CTC模型。模型结构如图3所示。

图3 DPCNN-Attention-CTC模型

4 实 验

本实验在GPU服务器中完成,GPU为NVIDIA Tesla P100,显存16G。利用Keras框架搭建模型并完成相应训练和测试。

4.1 语音数据

实验采用的语音数据为清华大学开源的中文普通话语料Thchs30,该语料库训练集时长25 h共10 000句发音,验证集时长19 h共893句发音,测试集时长624 h共2 495句发音。模型首先对时域的语音信号进行傅里叶变换得到语音的语谱图,语谱图综合了频谱图和时域波形的特点[9],利用语谱图作为输入,可以避免频域和时域两个维度的信息损失[6],模型能更加全面地学习语音信号所包含的各项特征。

4.2 模型训练参数设置

本文设置了6组对比实验,对CNN-CTC,DPCNN-CTC和DPCNN-Attention-CTC三种网络结构在卷积层为8层和10层时分别进行了模型训练及测试。三种网络中卷积池化层都为两层3×3卷积层和一层2×2最大池化层重复堆叠,8层和10层卷积层的每层卷积核个数分别为16-16-32-32-64-64-128-128和16-16-32-32-64-64-128-128-256-256。全连接层都为2层,其输出维度分别为512和1 024。采用中文拼音作为模型建模单元,模型最终的输出分类数为1 423。

模型的激活函数选用的是修正线性单元(rectified linear unit,ReLU)函数。ReLU激活函数可以有效地进行梯度下降以及反向传播。因为当输入大于0时Relu函数梯度始终为1,小于等于0时始终为0,所以能很好地克服网络训练过程中的梯度消失问题,同时也可以缓解过拟合现象,加快训练速度,使得模型取得更好的效果。

实验采用带动量的随机梯度下降优化器,初始学习率大小设置为0.01,动量为0.9。

4.3 实验结果与分析

在Keras框架搭建相应的模型,并在训练集上完成模型训练。使用编辑距离作为模型误差度量。在测试集上随机选取100句语音测试对应模型的识别错误率,每个模型测试进行5次,最终错误率取5次测试的平均值。六种网络结构在Thchs30数据集上的训练测试。

六种网络模型8层CNN-CTC,10层CNN-CTC,8层DPCNN-CTC,10层DPCNN-CTC,8层DPCNN-Attention-CTC,10层DPCNN-Attention-CTC的错误率分别为28.2 %,27.4 %,24.2 %,23.8 %,22.9 %,23.3 %。可以看出:1)10层CNN-CTC相较于8层CNN-CTC错误率减小0.8 %,表明增加CNN深度有助于提高语音识别系统的准确率;2)8层DPCNN-CTC相比于8层CNN-CTC和10层CNN-CTC错误率分别降低了4 %和3.2 %,表明DPCNN在各子网络模型深度较浅时,能得到相比更深的单通路CNN相同甚至更好的效果,从而验证了DPCNN能够通过增加模型的宽度从而提高整体的语音识别性能;3)8层DPCNN-Attention-CTC在6种结构中获得了最低的错误率,达到了22.9 %,其相较于8层CNN-CTC和8层DPCNN-CTC错误率相对降低了18.8 %和5.4 %,Attention机制的加入使得模型的识别效果进一步增强,证明了DPCNN-Attention-CTC模型的有效性。在Thchs30数据集上的训练结果可知,10层DPCNN-Attention-CTC相较于8层DPCNN-Attention-CTC错误率上升了0.4 %,这是因为随着模型的层数加深,模型复杂度增大,模型在训练集上的拟合效果增强,反而导致其在测试集上的错误率上升,即模型的泛化能力下降。

图4为卷积层为8的三种网络结构在训练阶段的训练集损失值变化曲线。图4中标记了三种网络结构损失值到达稳定阶段所需的训练轮次和相应的损失值。DPCNN-Attention-CTC在24轮次时其损失值基本稳定在了12.8左右。相反,DPCNN-CTC和CNN-CTC就要慢得多,损失值到达稳定阶段分别需要36和42轮次,同时稳定的损失值也大于DPCNN-Attention-CTC模型。可以分析出训练效果的加速来自于级联Attention-CTC模块。Attention机制可以被视为消除了CTC解码器中不必要路径的预对齐操作。同时,CTC保证语音帧和拼音标签之间的单调对齐,这有助于引导Attention机制将注意力集中在顺序相关的特征和标签上。因此,模型将生成较少无关的语音标签,从而导致观察到的加速效果。

图4 模型损失值变化曲线

5 结束语

本文基于DPCNN实现了一种语音到拼音的端到端语音识别模型。通过在中文语音数据集的实验证明了所提出DPCNN-Attention-CTC模型的有效性。通过增加CNN的宽度从语音信号中提取更多有用的特征用于模型训练,避免了网络深度加深造成的梯度消失、训练困难等问题。并利用Attention机制改进CTC端到端方法,加快模型训练的同时进一步降低了模型的识别错误率。

未来的研究主要包括以下几个方向:1)使用更多的语音数据,研究该模型在大数据集上的表现;2)通过多通路神经网络提取多种语音特征用于模型训练,从而获得更加全面的语音信息;3) 引入语言模型,进一步改善CTC网络性能。

猜你喜欢

池化层错误率集上
卷积神经网络模型研究分析*
基于卷积神经网络的纸币分类与点钞
Cookie-Cutter集上的Gibbs测度
基于深度学习卷积神经网络的人体行为识别研究
链完备偏序集上广义向量均衡问题解映射的保序性
分形集上的Ostrowski型不等式和Ostrowski-Grüss型不等式
小学生分数计算高错误率成因及对策
基于全卷积神经网络的SAR图像目标分类*
正视错误,寻求策略
解析小学高段学生英语单词抄写作业错误原因