俞栋博士1998 年加入微软公司,现任微软研究院首席研究员,兼任浙江大学兼职教授和中科大客座教授。语音识别和深度学习方向的资深专家,出版了两本专著,发表了 160 多篇论文,是 60 余项专利的发明人及深度学习开源软件 CNTK(现已改名为微软认知工具包)的发起人和主要做者之一。曾获 2013 年 IEEE 信号处理协会最佳论文奖。现任 IEEE 语音语言处理专业委员会委员,曾任 IEEE/ACM 音频、语音及语言处理汇刊、IEEE 信号处理杂志等期刊的编委。前端
记者:请俞老师先介绍一下目前语音识别方面最值得关注的一些方向。算法
俞栋:在安静环境下并使用近距麦克风的场合,语音识别的识别率已越过了实用的门槛;可是在某些场景下效果还不是那么好,这就是咱们这个领域的前沿。如今你们主攻几点:后端
首先,能不能进一步提高在远场识别尤为是有人声干扰状况下的识别率。目前通常远场识别的错误率是近场识别错误率的两倍左右,因此在不少状况下语音识别系统还不尽如人意。远场识别至少目前还不能单靠后端的模型增强来解决。如今你们的研究集中在结合多通道信号处理(例如麦克风阵列)和后端处理从拾音源头到识别系统全程优化来加强整个系统的表现。网络
另外,你们还在研究更好的识别算法。这个“更好”有几个方面:一个方面是能不能更简单。如今的模型训练过程仍是比较复杂的,须要通过不少步骤。若是没有 HTK 和 Kaldi 这样的开源软件和 recipe 的话,不少团队都要用很长时间才能搭建一个还 OK 的系统,即便 DNN 的使用已经大幅下降了门槛。如今由于有了开源软件和 recipe,包括像 CNTK 这样的深度学习工具包,事情已经容易多了,但还有继续简化的空间。这方面有不少的工做正在作,包括如何才能不须要 alignment ,或者不须要 dictionary。如今的研究主要仍是基于
另外一方面,最近几年你们已经从一开始使用简单的 DNN 发展到后来相对复杂的 LSTM 和 Deep CNN 这样的模型,但在不少状况下这些模型表现得还不够好。因此,一个研究方向是寻找一些特殊的网络结构,能把咱们想要 model 的那些东西都放在里面。咱们以前作过一些尝试,好比说人在跟另一我的对话的过程当中,他会一直作预计,这预计包括不少东西,不单是包括你下一句想要说什么话,还包括根据你的口音来判断你下面说的话会是怎样等等。咱们曾尝试把这些现象建在模型里以期提高识别性能。不少的研究人员也在往这个方向走。架构
还有一个方向是快速自适应的方法,就是快速的不须要人工干预的自适应方法(unsupervised adaptation)。如今虽然已经有一些自适应的算法,可是它们相对来讲自适应的速度比较慢,或者须要较多的数据。有没有办法作到更快的自适应?就好像第一次跟一个口音很重的人说话的时候,你可能开始听不懂,但两三句话后你就能够听懂了。你们也在寻找像这种很是快且能保证良好性能的自适应方法。快速自适应从实用的角度来说仍是蛮重要的。由于自适应确实在不少状况下可以提高识别率。机器学习
从识别来说,我以为目前主要是这些方向。ide
记者:Google DeepMind 最近提出了一种经过学习合成波形的方式生成语音的技术 WaveNet,听说能够生成感受更天然的语音,微软在这方面有什么研究项目?工具
俞栋:微软也在作相似的工做,可是由于合成的研究团队和工程团队都在中国,我对他们具体到哪一个地步不是特别清楚。有一些信息我也不能直接披露,因此就不详细讲了。布局
记者:深度学习已经在语音识别获得了很是出色的表现,您以为将来语音识别还能在深度学习的哪些方面实现突破?
俞栋:刚才我讲了,其中的一个可能性就是经过各类类型的预计和自适应使得深度学习模型表现更出色,这是有可能继续提高的地方。另外就是端到端建模。
还有,像咱们最近也在作一些特殊环境中的语音识别,好比说在高噪音环境下,或者你说话的时候有背景的音乐,或者是会议室里面有多我的同时说话——这些状况下如今的语音识别效果是不好的。因此咱们也在研究如何用深度学习的方法在好比多说话人的状况下作得比原来传统的方法好。咱们如今已经在 arXiv 上面发布了一个早期结果的预印本(Permutation Invariant Training of Deep Models for Speaker-Independent Multi-talker Speech Separation,论文连接:https://arxiv.org/abs/1607.00325v1),含有更多实验结果的正式版本如今正在审稿中。咱们这一称为 Permutation Invariant Training 的方法主要用于语音分离。用这种方法整个过程比较简单而效果很好。在这些方面深度学习都能带来必定的突破。固然,我前面也讲了,彻底解决这些问题须要软硬结合,从拾音到前端和后端须要系统性优化。
记者:在相似汉语这种多音字、多音词比较多的语言中,语音识别方面有什么和英语这样的拼音语言不同的地方?
俞栋:从语音识别的技术角度来说没有太大的区别,由于最终都是要将语音信号,即 waveform sequence,变成字或者词的 sequence。多音字和多音词只是词表里对应的字或词有多个发音规则而已,这在其余语言好比英语中也很常见。
但中文做为一个有音调的语言,音调对字和词的识别是有影响的。若是音调信息用好了,就有可能提高识别率。不过你们发现 deep learning 模型有很强的非线性映射功能,不少音调里的信息能够被模型自动学到,不须要特别处理。
惟一可能不同的地方是若是你用端到端系统,中英文的建模单元会不同。由于在英语里面你通常会选用字母、音素、或音节做为建模单元,而不会选用词做为建模单元。但在中文里面你能够直接用汉字做为建模单元。因此建模单元的选择上可能会不太同样。除此以外,基本上没有太大区别。
记者:技术上没有太大区别?
俞栋:没有太大区别。
记者:具体来讲,您以为天然语言处理可以给语音识别带来哪些帮助?
俞栋:目前来说,天然语言处理对语音识别自己的帮助还不是很大。要说帮助比较大的方面,若是语言模型(language model)算作天然语言处理的话,语言模型仍是起到了很大做用的,尤为是在有噪音的环境下,若是没有语言模型来作约束,效果通常来讲都比较差。可是除此以外,如今的 NLP (天然语言处理)技术对语音识别没有起到很大的做用。你们尝试过不少用天然语言处理技术提高识别率的方法,效果都不理想。
但从理论上来说天然语言处理应该能够起到做用。由于咱们能理解句子含义,咱们就能发现有一些语音识别结果是说不通的,好比说前面的主语跟后面的宾语根本就不搭,在这种状况下识别系统应该选择其余的 hypothesis,对话系统则应该寻求澄清,但现有系统没有这么作。没有这么作的缘由在于它其实不理解到底用户说了什么,也没能充分利用远距离的 dependency 信息。这样的错误,有可能经过天然语言处理的技术发现并获得更正。但语义分析是个难题,怎么作仍是一个未知数。
记者:刚才咱们讲到在噪音环境下,包括远距离环境下的识别,此外还有多个说话人一块儿说话的状况下的语音识别。在这三方面,您以为如今和将来能够经过什么样的方式来解决这个问题?
俞栋:前面提过,解决远距离识别很重要的一点是要有硬件的支持。至少以目前的技术,仅仅经过后端处理效果还不够好。由于信号在传输过程衰减很厉害,距离越远衰减越厉害,信噪比就越差。因此远距离识别通常都须要作加强。比较好的加强须要硬件支持,好比说麦克风阵列。深度学习方法也能提供一些帮助。当你有多通道信息的时候,深度学习方法还能够作自动的信息融合以提高远距离语音识别的性能。
多通道信号处理,好比麦克风阵列,对分离含噪语音和多人混合语音也相当重要。另外,深度学习方法,好比我刚才提到的 Permutation Invariant 训练方法,也能够解决一部分语音分离问题,是总体解决方案中的重要一环。分离后的结果能够送到后端作识别。后端的识别结果反馈回来也能帮助提高分离和说话人跟踪的效果。因此最终的系统应该是前端的分离跟后端的识别融合互助的系统。
记者:从您和邓力老师的《Automatic Speech Recognition: A Deep Learning Approach》出版到如今,您认为期间深度学习有了什么新的研究成果? 哪些研究成果您认为是很重大的?
俞栋:咱们写这本书的时候,LSTM这样的模型才刚刚开始成功应用于语音识别。当时你们对其中的不少技巧尚未很好的了解。因此训练出来的模型效果还不是那么好。最近,个人同事 Jasha Droppo博士花了不少时间在 LSTM模型上面,提出了一种颇有意思的基于smoothing的 regularization 方法,使得 LSTM 模型的性能有了很大的提高。他的 smoothing 方法的基本思想在咱们的 human parity 文章中有介绍(论文连接:https://arxiv.org/abs/1610.05256)。
另一个比较大的进展是 Deep CNN。最近两年里,不少研究组都发现或证明使用小Kernel的 Deep CNN比咱们以前在书里面提到的使用大kernel的CNN方法效果更好。Deep CNN跟LSTM 比有一个好处:用 LSTM 的话,通常你须要用双向的 LSTM 效果才比较好,可是双向 LSTM会引入很长的时延,由于必需要在整个句子说完以后,识别才能开始。 Deep CNN的时延相对短不少,因此在实时系统里面咱们会更倾向于用 Deep CNN 而不是双向 LSTM。
还有就是端到端的训练方式也是在咱们的书完成后才取得进展的。这方面如今你们的研究工做主要集中在两类模型上。一类就是 CTC 模型,包括 Johns Hopkins 大学的 Dan Povey 博士从 CTC 发展出来的 lattice-free MMI;还有一类是 attention-based sequence to sequence model。这些模型在咱们的书里面都没有描述,由于当时尚未作成功。即使今天它们的表现也仍是比 hybrid model 逊色,训练的稳定性也更差,可是这些模型有比较大的
另一个进展是单通道语音分离,尤为是多人混合语音的分离。这方面有两项有趣的工做。一个是 MERL 三菱电机研究实验室的John Hershey 博士提出的 Deep Clustering 方法,另一个是咱们提出的 Permutation Invariant Training。实现上,Permutation Invariant Training 更简单。John Hershey 认为有迹象代表 deep clustering 是 permutation invariant training 的一个特例。
这些都是在咱们完书以后最近两年里比较有意义的进展。
记者:也是在这个月,Google 发了神经网络翻译系统(GNMT),您对这个系统有什么见解?微软在这方面有没有这样的研究?
俞栋:微软很早之前就在作相似的工做了。你可能知道微软有个基于文本的翻译系统,在 Skype 上也有一个 speech to speech translation system。在这些系统里咱们已经用到了 neural machine translation 的一些东西。不过翻译主要是由另外的团队在作,我在这里面涉及比较少。
记者:语音特征参数提取与鲁棒性语音识别与合成的关键因素,特征参数在不利的噪声环境下鲁棒性都会急剧降低。目前有什么新的研究能够在特征提取中保持语音信号的最重要参数吗?
俞栋:目前一个方法是用信号处理技术对输入信号进行分离和加强。另外一个方法是用深度学习取代人工从 waveform 直接提取特征。只要训练数据的coverage 足够大,各类各样场景的训练数据都有,模型的结构设计合理,那么模型的泛化能力和鲁棒性就能获得提高。两种方式结合能够获得更好结果。不过,泛化是机器学习一个未解决的基本问题,更好的解决方案有待机器学习理论的进展。
记者:微软在语音识别上如何解决方言带来的口音问题,好比说“le”和“ne”?针对方言,微软的语料库是从何而来的?
俞栋:一个简单的方法是增长带口音的训练语料。如何有效利用这些语料有些讲究。大概 三、4 年前,咱们发过一篇文章,研究怎么样在 deep learning model 上作自适应。带口音的识别问题能够看做一个自适应的问题。假设你已经有标准语音的模型,带口音的语音能够当作标准语音的某种偏离。因此咱们的解决方法是作自适应。作自适应的时候,咱们能够把有相似口音的语料聚合在一块儿以增长训练数据。咱们发现这样作效果挺不错。若是已经有系统上线,收集带口音的语料并不困难。若是你用过 Windows Phone,你就知道 Windows Phone 的 Cortana 里面有个选项,问你想用标准的识别模型仍是想用含口音的模型,用户能够选择。
记者:今年,微软发布了 CNTK。您能说一下 CNTK 跟 Theano、TensorFlow、Torch、Caffe 这些工具的区别吗?以及在微软语音系统上是怎么样应用 CNTK 的?
俞栋:全部的这些开源工具如今都作得至关好了,都可以知足通常的研究或者是工程的须要。可是每个开源工具都有本身的长处和弱点。CNTK 是惟一一个对 Windows 和 Linux 都有比较好的支持的深度学习工具。对比其余工具,CNTK 对多 GPU 并行训练有更好的支持, 不只并行效率高,并且简单易用。CNTK 对 C 的支持也是最全面的,你能够彻底使用 C 来构建、训练、修改、和解码模型。CNTK 版本 1 对 Python binding 支持比较弱。可是刚刚发布的版本 2.0 提供了很是强大的 Python binding。另外,CNTK 提供了许多运行效率很高的并行文件阅读模块,大大提高了并行效率。这里我想提一下,个人不少同事都对 CNTK 2.0 有很大贡献。尤为值得一提的是 Amit Agarwal,他是我见过的很是可贵的优秀软件工程师和架构师,他主导设计了 CNTK2.0 的主要 API。我在他身上学到不少东西,我很是享受与他讨论的时间。
我和几个同事刚开始写 CNTK1.0 的时候,主要用户是语音识别研究员和工程师,因此 CNTK 对语音相关的模型、数据结构、和文件格式支持得相对比较好。由于语音识别系统训练数据很大,咱们很早就在 CNTK 中实现了并行训练的算法。目前,微软产品线全部的语音识别模型都是用 CNTK 训练的。最近咱们的语音识别系统在 SWB 数据集上能作到比专业转录员错误率还低, CNTK 对缩短咱们达到这一里程碑所需的时间有很大贡献。
后排左起:Wayne Xiong, Geoffrey Zweig, Frank Seide;前排左起:黄学东, Dong Yu, Mike Seltzer, Jasha Droppo,Andreas Stolcke;摄影:Dan DeLong
记者:您曾说过,人工智能的成功在于将多种方法的整合到一个系统。在大家最近发表的论文中,咱们看到目前最新的语音识别的研究用到了多任务优化(Multitask Joint learning)以及多种模型混合(ensembles of models)的方法,能谈谈各自的优点吗?
俞栋:相对来讲,语音识别是一个任务比较单一而非通用的人工智能系统,语音识别的问题定义得也比较清晰。在这样的系统里面,把深度学习模型与其余模型进行整合的重要性相对来讲比较小。这也就是为何只要你有足够的数据和运算能力,即使是彻底的 deep learning end-to-end system 表现也不错。不过目前来说,深度学习和 HMM 相结合的混合模型在大多数场景下仍然表现最佳。
语音识别中使用多任务优化的主要目的,是增长模型的泛化能力或利用一些不能直接利用的辅助信息,而多种模型混合(ensembles of models)的主要目的是利用模型间的差别来加强混合后模型的表现。值得指出的是,因为深度学习模型属于非线性非凸的优化问题,当初始模型不一样时,最后的模型也不一样。尽管这些模型的平均表现很接近,但由于它们收敛到的点不同,模型之间仍有差别,融合这些模型也能提高一些性能。
更通用的人工智能系统还须要能作决策(decision-making)、要作推理、要能理解。对于这样的系统来讲,单靠深度学习方法远远不够,而要结合过去几十年里人工智能其余分支取得的一些进展,好比说加强学习、逻辑推理、知识表达以及最优和次优搜索。还有,若是咱们想让一群人工智能系统本身从与环境的交互中快速寻找答案,那么诸如蚁群算法和遗传算法一类的算法就变得很重要了。
记者:今年您以为在语音识别方面有哪些比较重量级的论文值得关注?
俞栋:除了前面提到的 LF-MMI 、 Deep CNN(包括咱们最近发表的 LACE 模型)和 Permutation Invariant Training,另一个比较有意思的论文是 MERL 在 arXiv 上发表的一篇文章。他们结合了 CTC 和 attention-based model,利用这两个模型各自的长处来克服对方的弱点。
记者:您是怎么看待监督学习、半监督学习和无监督学习这三个学习方式呢?
俞栋:监督学习是比较 well-defined,有比较明确的任务。目前来说,深度学习对这一类问题效果比较好。
无监督学习的目的是要寻找数据中的潜在规律。不少状况下,它试图寻找某种特征变换和相对应的生成模型来表达原始数据。但无监督学习不只自己困难,对无监督学习系统的评价也很难。缘由是经过无监督学习找到的规律不必定对你未来的任务有帮助,或者它对某一任务有帮助,换一个任务就没有帮助了。固然,若是你的目标仅仅是数据压缩,评价仍是容易的,但咱们使用无监督学习压缩自己每每不是主要目的。
记者:那半监督学习呢?
俞栋:半监督学习介于二者中间。由于你已经有一部分标注信息了,因此你的任务是明确的,不存在不知如何评估的问题。半监督学习在实用系统里仍是有必定做用的。好比说咱们须要标注大量数据来训练语音识别系统,但人工标注既花时间又花钱,因而你每每有比标注数据多得多的未标注数据。没标注过的数据,也有不少能够利用的信息,虽然它们的价值远远小于标注的数据。半监督学习对咱们的系统性能有必定的提高。
记者:最后一个问题,在整我的工智能的布局上,您认为语音识别是一个怎样的定位?
俞栋:在不少应用场合,语音识别是一个入口。没有这个入口的话,你们都会以为这个智能机器不够智能或者与这个智能机器交互会有困难。在人机交互中语音识别是第一步。若是语音识别作得不够好,那后期的天然语言理解等的错误率就会大幅上升。这也是为何语音到语音的翻译要比文本到文本的翻译难不少,由于在语音对语音的翻译系统里语音识别产生的错误会在后面翻译的过程当中放大。
一样,从历史上看,语音识别也为机器学习和人工智能提供了不少新的方法和解决方案。好比语音识别里的关键模型 Hidden Markov Model 对后来机器学习的不少分支都有帮助。深度学习也是先在语音识别上取得成功,而后才在图像识别和其余领域取得成功的。