我们发现,深层 CNN 结构,不仅能够显著提升 HMM 语音识别系统的性能,也能提升 CTC 语音识别系统的性能。仅用深层 CNN 实现端对端建模,其性能相对较差,因此将如 LSTM 或 GRU的 循环隐层与 CNN 结合是一个相对较好的选择。可以通过采用 VGG 结构中的 3*3 这种小 kernel ,也可以采用 Residual 连接等方式来提升其性能,而卷积神经网络的层数、滤波器个数等都会显著影响整个模型的建模能力,在不同规模的语音训练数据库上,百度需要采用不同规模的 DeepCNN 模型配置才能使得最终达到最优的性能。 因此,我们认为:1)在模型结构中,DeepCNN 帮助模型具有很好的在时频域上的平移不变性,从而使得模型更加鲁棒(抗噪性);2)在此基础上,DeepLSTM 则与 CTC 一起专注于序列的分类,通过 LSTM 的循环连接结构来整合长时的信息。3)在 DeepCNN 研究中,其卷积结构的时间轴上的感受野,以及滤波器的个数,针对不同规模的数据库训练的语音识别模型的性能起到了非常重要的作用。4)为了在数万小时的语音数据库上训练一个最优的模型,则需要大量的模型超参的调优工作,依托多机多 GPU 的高性能计算平台,才得以完成工作。5)基于 DeepCNN 的端对端语音识别引擎,也在一定程度上增加了模型的计算复杂度,通过百度自研的硬件,也使得这样的模型能够为广大语音识别用户服务。 机器之心:CNN 适用于语音识别的原理是什么,是如何带来效果的大幅提升的? 李先刚:语音识别建模是需要对语音信号和文字内容间的关系建模。通常情况下,语音识别都是基于时频分析后的语音谱完成的,而其中语音时频谱是具有结构特点的。要想提高语音识别率,就是需要克服语音信号所面临各种各样的多样性,包括说话人的多样性(说话人自身、以及说话人间),环境的多样性等。卷积神经网络,由于其局部连接和权重共享的特点,使得其具有很好的平移不变性。将卷积神经网络的思想应用到语音识别的声学建模中,则可以利用卷积的不变性来客服语音信号本身的多样性。从这个角度来看,则可以认为是将整个语音信号分析得到的时频谱当作一张图像一样来处理,采用图像中广泛应用的深层卷积网络对其进行识别。
Deep CNN语音识别的建模过程 2013 年过后,语音领域开始做 RNN ,图像领域做 CNN 。卷积操作是一种相较于全连接更加通用的计算形式,在 2013 年之后有很多进展,从 ImageNet 就可以看出来,首先发现 VGG 模型很有用,这种结构使用的是 3*3 这种小 kernel ; 此外 GoogleNet 结构,里面设计了一个 Inception 模块,也是基于 CNN 来实现的;比较有趣的是,微软 2015 年做的残差网络直接把十几层一下拉到 152 层,但 100 多层在工业上肯定没法用,因为算不过来。但这告诉大家,通过这种方式可以非常简单直接的提升性能,也就是提出了 residual 连接。 从这几个方面来看,CNN 在语音领域都没得到充分的研究,但大家能意识到这是我们可以探索的一个方向。有了这个出发点之后,我们就有好几个点可以做,比如说 VGGNet 里的 3*3 的 kernel 在语音领域应该怎么做;residual 连接怎么融合进来。我们在语音识别最早用的 CLDNN 结构是一层卷积,我把其做到 10 层,变成 VGG 结构,再加上一些残差连接,通过做一些大量实验模型的结构调整,最终得到性能提升。
语谱图 从另外一个角度来看,如果你把语音当成一个图像,把语音视频信号分析过后就是一张图像,所以图像和语音是可以相互借鉴的。 机器之心:能否介绍一下 CTC 端对端学习? 李先刚:在深度学习兴起以前,机器感知算法(如语音识别,说话人识别,图像识别,等)通常都会包含以下几个部分:特征提取及学习,模式分类等。研究者们发现,在这样的级联系统里面,特征学习起到了非常关键的作用。在深度学习中,特征学习和模式分类两个模块则通常联合起来优化,从而使得通常意义下,深度学习的模型至少有两层。从而也带来了一个新的研究趋势:减少流水线中的模块,使用一个单独的学习算法来完成从任务的输入端到输出端的所有过程,也就是所谓的端对端学习的兴起。 (责任编辑:本港台直播) |