从声学模型算法总结 2016 年语音识别的重大进步丨硬创公开课

https://zhuanlan.zhihu.com/p/24979135html

 

雷锋网按:在过去的一年中,语音识别再次取得很是大的突破。IBM、微软等多家机构相继推出了本身的 Deep CNN 模型,提高了语音识别的准确率;Residual/Highway 网络的提出使咱们能够把神经网络训练的更加深。算法

而诸如 CTC、Low Frame Rate、Chain 模型等粗粒度建模单元技术使得语音识别准确率获得提高的同时,解码速度也能够大大加快。网络

本期雷锋网硬创公开课特邀供职于阿里巴巴 iDST 的语音专家薛少飞博士,从学术的角度回顾过去一段时间里语音识别技术的发展情况。架构

嘉宾介绍:

薛少飞,阿里巴巴 iDST 语音识别专家,中国科学技术大学博士。现负责阿里声学模型研究与应用:包括语音识别声学建模和深度学习在业务场景中的应用。博士期间的研究方向为语音识别说话人自适应,提出基于 Speaker Code 的模型域自适应方法,在语音相关的会议和期刊上发表论文十余篇。框架

本期雷锋网硬创公开课的分享主要包括三大部分:iphone

  • 深度神经网络声学模型发展回顾:简单回顾深度神经网络技术在语音识别声学模型中的应用历史;函数

  • 前沿声学模型技术进展:介绍近期几个比较有意思的声学模型技术进展,包括 Deep CNN 技术、Residual/Highway 网络技术和粗粒度建模单元技术。固然这里并无把全部的新技术进展都囊括进来,好比 Attention 技术。只是以这三条线路为例看看语 音识别声学模型技术的进展和将来的发展趋势。工具

  • 介绍绍阿里巴巴的语音识别声学模型技术。性能

1、深度神经网络声学模型发展回顾

回顾语音识别技术的发展历史能够看到,自从上世纪 90 年代语音识别声学模型的区分性训练准则和模型自适应方法被提出之后,在很长一段内语音识别的 发展是比较缓慢的,语音识别错误率的那条线一直没有明显的降低。直到 2006 年 Hinton 提出深度置信网络(DBN),促使了深度神经网络(DNN)研究的复苏。学习

2009 年,Hinton 将 DNN 应用于语音的声学建模,在 TIMIT 上得到了当时最好的结果。2011 年末,微软研究院的俞栋、邓力两位老师又把 DNN 技术应用在了大词汇量连续语音识别任务上,大大下降了语音识别错误率。今后之后基于 DNN 声学模型技术的研究变得异常火热。微软去年 10 月发布的 Switchboard 语音识别测试中,更是取得了 5.9%的词错误率,第一次实现了和人类同样的识别水平,这是一个历史性突破。

那么什么是 DNN 的?其实标准的 DNN 一点也不神秘,它和传统的人工神经 (ANN)在结构上并无本质的区别,只是 ANN 一般只包含一个隐层,而 DNN 则是一般包含至少 3 层以上的隐层,经过增长隐层数量来进行多层的非线性变换,大大的提高了模型的建模能力。

这是基于 DNN 的语音识别系统框架,相比传统的基于 GMM-HMM 的语音识别系统,其最大的改变是采用 DNN 替换 GMM 模型对语音的观察几率进行建模。

相比传统 GMM 模型我以为有两点是很是重要的:

  • 1.使用 DNN 不须要对语 音数据分布进行假设。

  • 2. DNN 的输入能够是将相邻语音帧拼接造成的包含时序结构信息的矢量。

当时训练 DNN 的广泛作法是先进行无监督的预训练,然后进行有监督的调整,后来人们发现当数据量很是大的时候无监督的预训练并非必要的,固然这是后话了。

促使 DNN 的研究在那时从新兴起还有一个很是重要, 而且我我的认为是最核心的因素,就是计算能力的提高。

之前要在 CPU 上训练 DNN 是很是慢的,作一个实验可能须要好几周甚至几个月,这是不能忍受的,随着 GPU 的出现这种状况发生了变化,GPU 很是适合对矩阵运算进行加速,而 DNN 的训练最终均可以被拆解成对矩阵的操做,二者自然和谐。

而今随着 GPU 技术的不断发展和进步,咱们可以训练数据量更大、网络更深、结构更复杂的模型,这才有了深度神经网络技术的迅速发展。

LSTM 模型相信你们都不陌生,它一种特殊的循环神经网络(RNN)。语音识别原本就是一个时序建模问题,因此很是适合用 RNN 来进行建模。

可是简单 的 RNN 受限于梯度爆炸和梯度消散问题,比较难以训练。而 LSTM 经过输入门、 输出门和遗忘门能够更好的控制信息的流动和传递,具备长短时记忆能力,并在必定程度上缓解 RNN 的梯度消散和梯度爆炸问题。固然它也有不足之处,计算复杂度相比 DNN 大幅增长,而且因为递归链接的存在难以很好的并行。

BLSTM 进一步提高了该类模型的建模能力,相比 LSTM 还考虑了反向时序信息的影响,也即“将来”对“如今”的影响,这在语音识别中也是很是重要的。

固然这种能力的代价就是模型计算复杂度进一步加大,而且一般须要整句进行训 练:GPU 显存消耗增大->并行度下降->模型训练更慢,另外在实际应用中还存在实时性问题。

CTC 技术在过去的一段时间内也很是的火热,首先要说明的是 CTC 并非模型的变化,而是优化的目标函数发生了改变,DNN、LSTM、CNN 均可以和 CTC 相结合。

传统的深度神经网络声学模型的训练过程须要先对训练数据文本序列作 Alignment 获得分类的“硬判决”,以后以这种“硬判决”的分类为目标训练 神经网络,网络优化的目标并非最终要识别的结果。和传统的深度神经网络声 学模型相比 CTC 的优化目标是一种所见即所得的优化目标,你要训练的目标就 是你想要获得的结果。

传统的深度神经网络声学模型建模单元一般是 state 级的,而 CTC 的建模单元则是 phone 一级甚至是 character 的,state 级反而很差,这种建模粒度的 变化带来一个好处就是语音数据的冗余度增长了,相邻的语音帧原本就会很像并 可能来自于同一个 phone,那么如今就不须要这么多帧数据来建模一个句子。

经过拼帧降采样的方法能够下降数据的总帧数,在不影响识别准确率的状况下加快网络计算的速度。CTC 的另外一个很是重要的贡献是引入了“Blank”空白,空白的 引入避免了易混淆帧的“强制”对齐。而且使得训练后的网络输出呈现“尖峰”状 态,大段的 Blank 使得解码时经过 beam 的灵活调整,能够加快解码速度。

语音识别领域有很是多的开源工具,传统的语音识别开源工具像 CMU SPHINX 系统,是基于统计学原理开发的第一个“非特定人连续语音识别系统”; 剑桥语音识别组推出的 HTK 工具包是 GMM-HMM 时代最为流行的语音识别工具,我刚接触语音识别就是从 HTK 开始的。

几年前推出的 kaldi 严格来说并不十 分“传统”,也是比较新而且在不断更新的开源工具,目前应该也是使用人数最多的语音识别开源工具。

近两年来许多深度学习开源框架涌现了出来,像 Theano、 CNTK、TensorFlow 等,接下来我会对传统的语音识别工具和新的深度学习开源框架作一个对比,那么我就简单从几个我比较关心的维度来抛砖引玉看看 kaldi、CNTK 和 TensorFlow 的异同。

在拓扑基础方面,kaldi 的 nnet1 和 nnet2 是以层设计为基础的,也即当你新增长一种神经网络层时须要本身定义它的结构,都有哪些变量,正向怎么算, 反向偏差怎么传播等等,而且过于复杂的链接方式很难支持。

而 kaldi 的 nnet3 和 CNTK 以及 TensorFlow 都是以图结构为基础的,经过配置文件实现对网络链接方式的定义,数据就像流水同样在你定义的网络图中游走,并本身实现偏差的 反向传播,它的优势是你能够专一网络拓扑结构的设计,而不用为网络计算的细 节而费心,特别是偏差的反向传播。

但这也带来一个问题,尤为是对初学者而言, 会形成只是在设计网络长成什么样子,但并不清楚其中的实现细节。初学者最好多推推公式,对打下一个坚实的基础绝对有好处。

在语音识别其它工具支持方面,kaldi 有全套的语音识别工具,包括解码器、 创建决策树、GMM 训练等等,而 CNTK 和 TensorFlow 在这方面并无特别的支持,值得一提的是 CNTK 里提供了把 kaldi 数据处理成为 CNTK 数据格式的工具,使的用 kaldi 的人也能够很快上手 CNTK,你们不妨试一下。

最后一个我比较关心的因素就是是否支持多机多卡,由于随着数据量和模型复杂度的不断攀升,仅仅用一个 GPU 很难知足模型训练的须要,必须使用多个 GPU 来加速训练。在这方面目前 kaldi、CNTK、TensorFlow 都已经支持。

最后个人建议是对于语音识别的初学者和低年级的研究生来说,用 kaldi 入门学习算法和实践理论知识是比较好的选择,对于高年级研究生和具备必定年限的从业人员来说,就看本身的喜爱了,你们都是异曲同工,工具不是决定性的, 数据、算法和模型才是。

2、前沿神学模型的技术进展

接下来介绍一下 Deep CNN 技术、Residual/Highway 网络技术和粗粒度建模 单元技术。去年有多家机构都推出了本身的 Deep CNN 模型,像 IBM、微软等,我这里以 IBM 的 Deep CNN 为例,一块儿探讨一下到底哪些关键因素使得 Deep CNN 可以取得这么好的效果。

其实 CNN 被用在语音识别中已经不是一天两天了,在 十二、13 年的时候 Ossama Abdel-Hamid 就将 CNN 引入了语音识别中。

那时候的卷积层和 pooling 层是交替出现的,而且卷积核的规模是比较大的,CNN 的层数也不是特别的多, 主要是用来对特征进行进一步的加工和处理,使其能更好的被用于 DNN 的分类。

后来随着 CNN 技术在图像领域的发展,状况慢慢出现了变化,人们在图像领域 的研究中发现多层卷积以后再接 pooling 层,减少卷积核的尺寸可使得咱们可以训练更深的、效果更好的 CNN 模型。相应的方法被借鉴到了语音识别中,并 根据语音识别的特色进行了进一步的优化。

IBM 的研究人员在 16 年的 ICASSP 上发表文章,称使用 3x3 的小卷积核和 多层卷积以后再接 pooling 的技术能够训练出 14 层(包含全链接)Deep CNN 模型。

在 Switchboard 数据集上相比传统的 CNN 使用方法能够带来相对约 10.6%WER 降低。小尺寸的卷积核和多层卷积以后再接 pooling 的技术是使 Deep CNN 可以成功的关键点。

接下来介绍一下 Residual/Highway 网络以及它们目前在语音识别中的应用状况。

Residual 网络会这么出名得益于 MSRA 的 152 层让人“疯狂”的深度神经网络,凭借着它 MSRA 在 2015 ImageNet 计算机识别挑战赛中以绝对优点得到图像分类、图像定位以及图像检测所有三个主要项目的冠军。

在公开的论文当中, 做者详细解读了他们的“心路历程”。

研究人员发如今深度神经网训练过程当中老是会出现”Degration Problem”,即当网络深度达到必定程度之后,随着网络深度的 增长 training error 将不降反增,而且这不是因为过拟合引发的。

通常来说咱们 认为一个浅层网络 A 叠加几层成为网络 B,若是叠加的几层权重都是单位矩阵,那么 B 的性能至少不会比 A 差,但现实并不是如此,网络本身很难学习到这种变换。

而相比与学习目标函数而言残差更容易学习,因而提出了一种 residual learning 的结构,增长了一个越层的短链接。个人理解是这种短链接一方面避免了前向计算中非线性变换对数据的过分加工,另外一方面在偏差反向传播时经过直 连通路,可让偏差有路径直接回传,抑制梯度消散。

大约稍早,Srivastava 在 arxiv 上传了他的 Highway 网络工做,在 Highway 网络中一个隐层节点的输出再也不单单是输入经过非线性变换后的数值,而是变成 了经过 Transform gate 和 Carry gate 对非线性变换后的数值和输入进行加权获得的结果。Residual 网络能够被当作是 Highway 网络的一种不额外增长参数量的特例。

Residual/Highway 网络这么有效果,语音识别领域的研究人员固然也会关注并使用。我来举几个例子,在“Highway Long Short-Term Memory RNNs for Distant Speech Recognition”中做者提出 Highway LSTM 结构,引入了一种 carry gate,Carry gate 控制当前层 cell 状态计算有多少来自于前一层的 cell 状态, carry gate 的计算又取决于当前层的输入、当前层前一时刻的 cell 状态和前一层当前时刻的 cell 状态。经过这种模型结构实现了信息在模型内部更好的跨层流动。

在 ”Multidimensional Residual Learning Based on Recurrent Neural Networks for Acoustic Modeling”中做者将 Residual 的概念应用到 LSTM 模型 中,并在 TIMIT 和 HKUST 两个数据集上验证了实验效果。

在 ”Renals.Small-footprint Deep Neural Networks with Highway Connections for Speech Recognition”中做者对比了 Residual DNN 和 Highway DNN 在语音识别上的效果,获得的结论是:” residual networks are more powerful to train deeper networks compared to plain DNNs, particular with ReLU activation functions which reduce the optimisation difficulty. However, highway networks are more flexible with the activation functions due to the two gating functions that control the follow of information.”

下面是粗粒度建模单元技术,Low frame rate 技术我会放到后面结合阿里巴巴的声学模型技术进行说明,先来看一下 Chain 模型。Chain 模型是 kaldi 的做者 Daniel Povey 近期力推的工做,它使用的也是 DNN-HMM 架构,表中我列出了 chain 模型和传统的神经网络声学模型建模的不一样点。

在建模单元方面,传统神经网络声学模型的建模单元通常是 3 状态或者 5 状态的 CD phone,而 chain 模型的建模单元则是 2 状态,其中 sp 是最主要用来表征该 CD phone 的状态,而 sb 则是该 CD phone 的“Blank”空白,空白的概念 其实和 CTC 中的很类似,只是在 chain 模型中每个建模单元都有本身的空白。

在训练方法上,传统神经网络声学模型须要先进行 Cross-Entropy 训练,后进行区分性准则训练。而 chain 模型直接进行 Lattice-Free MMI 训练,固然其后还可 以接着进行区分性准则训练,可是从目前的报道来看,这部分的提高是比较小的。

在解码帧率方面因为 chain 模型使用的是拼帧而后降采样的方法,解码的帧率只有传统神经网络声学模型的三分之一,而识别准确率方面相比传统模型会有很是明显的提高。 总结一下我认为将来深度神经网络声学模型主要有三个发展方向。

1.更 Deep 更复杂的网络

相似MSRA152 层 ResNet 的技术,虽然以目前的计算能力在语音识别 的实际应用中这种复杂网络结构的模型暂时还不能落地,可是持续不断 的研究和探索能够为咱们明确咱们努力的方向和能力所能达到的上界。

2. End to End 的识别系统

End to End 的识别系统一直是近年来比较火的研究方向,如 CTC、 Attention 等都是在这方面很是有意义的工做,在海量规模的语音数据上 创建计算速度快、识别准确率高的 End to End 的识别系统会是将来的 一个重要课题。

3. 粗粒度的建模单元 state->phone->character

粗粒度建模单元的技术对于加快语音识别的解码速度具备很是重要的 意义,而反过来解码速度的提高又可让使用更深、更复杂神经网络建 模声学模型成为可能。

3、阿里巴巴的语音识别声学模型技术

最后分享一下阿里巴巴团队在语音识别声学模型技术方面的一些工做。

在工业界作语音识别,数据量是很是庞大的,上万小时的语音数据是再正常 不过的,面对如此庞大的数据量,使用单机单 GPU 或者单机多 GPU 进行模型 的训练是远远不能知足需求的,必须具备多机多 GPU 进行模型训练的能力。

咱们使用的基于 Middleware 的多机多卡方案。GPU Middleware 提供了 API 接口使得咱们能够经过对训练工具(kaldi、caffe 等)的简单修改实现并行训练。而且能够自主管理任务队列、数据分发、通讯、同步等,是咱们可以更多的专一于算法自己。采用 Master-slave 模式,支持 MA / SGD / ASGD 等。

这是 Model Averaging 的一个示例:

表格里给出的是在 5000h 小时训练数据状况下训练 DNN 模型的加速效果, 能够看到使用 8 个 GPU 的状况下大约能够取得 7.2 倍的加速,使用 16 个 GPU 的状况下大约能够取得 14.3 倍的加速。咱们目前使用的是 Latency-control BLSTM 模型,这里面有从 BLSTM 到 CSC-BLSTM 再到 LC-BLSTM 的发展历程。

咱们知道 BLSTM 能够有效地提高语音识别的准确率,相比于 DNN 模型,相对性能提高能够达到 15%-20%。

但同时 BLSTM 也存在两个很是重要的问题:

1. 句子级进行更新,模型的收敛速度一般较慢,而且因为存在大量的逐帧计算,没法有效发挥 GPU 等并行计算工具的计算能力,训练会很是耗时;

2. 因为须要用到整句递归计算每一帧的后验几率,解码延迟和实时率没法获得有效保证,很难应用于实际服务。对于这两个问题,前 MSRA lead researcher,目前已是阿里巴巴 iDST 语 音团队负责人的鄢志杰和他当时在微软的实习生一块儿首先提出 ContextSensitive-Chunk BLSTM ( CSC-BLSTM)的 方法加 以解决。

而此后文献 (Zhang2015, MIT)又提出了 Latency Controlled BLSTM(LC-BLSTM)这一改进版本,更好、更高效的减轻了这两个问题。咱们在此基础上采用 LC-BLSTM-DNN 混合结构配合多机多卡、16bit 量化等训练和优化方法进行声学模型建模。完成了业界第一个上线的 BLSTM-DNN hybrid 语音识别声学模型。

这两张是 LC-BLSTM 的示意图,训练时每次使用一小段数据进行更新,数据由中心 chunk 和右向附加 chunk 构成,其中右向附加 chunk 只用于 cell 中间状态的计算,偏差只在中心 chunk 上进行传播。时间轴上正向移动的网络,前一 个数据段在中心 chunk 结束时的 cell 中间状态被用于下一个数据段的初始状态, 时间轴上反向移动的网络,每个数据段开始时都将 cell 中间状态置为 0。

该方法能够很大程度上加快网络的收敛速度,并有助于获得更好的性能。解码阶段的数据处理与训练时基本相同,不一样之处在于中心 chunk 和右向附加 chunk 的维 度能够根据需求进行调节,并没必要须与训练采用相同配置。

进一步,咱们又在 LC-BLSTM 上进行了改进,首先提出一种改进的 FABDIBLSTM 模型,它和 LC-BLSTM 的不一样在于时间轴上反向移动的网络,cell 中间状态是由 feed-forward DNN 计算获得的,而不是原来采用的递归方式,这样在 尽量保证识别准确率的同时,下降了模型的计算量。

咱们还提出一种改进的 FABSR-BLSTM 方法,用简单 RNN 替代时间轴上反向移动的 LSTM,以加快这部分的计算速度。

表里面给出的是咱们的实验结果,在 Switchboard 数据集上的实验代表在损失少许精度的状况下,咱们的改进版模型相比标准的 LC-BLSTM 能够取得 40%- 60%的解码加速。这部分工做已经被 ICASSP 2017 接收,即将于今年三月份发表。

Low frame rate(LFR)是咱们上线的又一新技术,LFR 是在 Interspeech 2016 会议上由谷歌的研究人员提出的,在论文中研究人员宣称 CTC 技术只有在 4 万 小时以上的数据量下才有更好的效果,而 LFR 经过使用单状态的 CD-Phone、 拼帧并降帧率、soft label、CE 初始化、Output Delay 等技术可让传统神经网 络识别模型取得和 CTC 近似或更好的效果。

咱们借鉴了论文中的方法并将其成功应用在 LC-BLSTM 上,在咱们的一个上万小时数据的任务上。

LFR-LC-BLSTM 能够取得和 LC-BLSTM 差很少的识别 错误率,而且有约 3.6 倍的解码加速。据咱们所知(to the best of our knowledge), 咱们也是目前业界惟一一家落地 LFR 技术的公司。

在模型的鲁棒性方面,咱们也作了很是多的工做。模型的鲁棒性一直是困扰 业界和研究人员的一个问题,好比用安静环境下的语音数据训练的模型在噪声环境下识别准确率就不好,用新闻播报的语音数据训练的模型去识别激情的体育解说,识别准确率也会不好。

那么如何克服不一样的信道、噪声、应用场景的差别,使声学模型具备更好的鲁棒性呢,最好的办法固然是收集更多真实场景下的语音 数据,可是若是一时之间作不到呢?

怎么利用现有的语音数据去尽量的提高模 型的噪声鲁棒性?能不能利用现有数据去“造”和目标场景很相似的数据?

这是一个颇有意思的研究课题。算法层面的改进这里暂且不提,说一下咱们在“造”数 据上的一些工做,咱们设计了一套完整的数据分析、数据筛选和数据加工流程。

从应用场景分析开始,咱们会去分析信道状况、噪声状况、语境状况等等。而后根据对应用场景的分析自动筛选适合的训练数据。再根据不一样的场景状况, 进行加噪、加快语速等处理。最后训练模型进行测试,再根据对结果的分析反馈咱们应用场景的分析。

这一整套流程开始时由人为设计的,如今正逐步往自动化流程上推,依托阿里 MaxCompute 高效计算平台咱们能够快速的完成海量数据的加工处理,这大大解放咱们的算法人员,让你们有更多的经历投入到技术上的优化,而不是为数据烦恼。 最后是咱们语音识别技术应用的一些案例,像是内部的智能质检和智能电话 客服,阿里云年会上实时语音识别挑战金牌速记员。

最后是咱们语音识别技术应用的一些案例,好比阿里巴巴内部的智能质检和智能电话客服,从去年开始,阿里集团与蚂蚁客服每接听一个电话,都会马上启动一个叫风语者的系统,它就是自动语音识别技术,将语音转变成文字,千分之三的人工抽检能够瞬间升级为100%的自动质检。除此应用场景以外,阿里YunOS、阿里小蜜以及手淘,如今都已经应用到阿里云的语音识别系统。

阿里云在 2016年 会上公开展现实时语音识别技术,并现场挑战世界速记大赛亚军得主。据现场最终评测,机器人在准确率上以 0.67%的微弱优点打败第50 届国际速联速记大赛全球速记亚军姜毅。 对外服务上咱们开放了智能语音交互的能力(data.aliyun.com),为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。 在法庭庭审方面,咱们利用语音识别技术,将庭审各方在庭审过程当中的语音直接转变为文字,供各方在庭审页面上查看,书记员简单或不用调整便可做为庭审笔录使用。 你们在目击直播平台上看云栖大会直播时,上面的实时字幕背后用的也是咱们本身的语音识别技术。

参考文献

--------------------------------------------------------------------------------------------------

相关文章
相关标签/搜索