清华大学王东:语音识别中的大数据与小数据学习

编辑时间: 2016-04-12 21:51:47    关键字:

 

谢谢大家。刚才刘老师已经把很多的东西说得很清楚了,我觉得我已经可以走了J。但是既然来了,还是应该给大家说一说。刘老师在一个比较宏观的场景下给大家介绍了整体的技术发展现状,我稍微聚焦在一个特别小的地方,给大家一个参考。

我今天给大家报告的题目是语音识别中的大数据与小数据的学习。什么意思呢?我们都需要大数据,今天的会也是个大数据的会。问题是很多时候我没有那么多大数据,怎么办?我们希望有一种办法,在没有很多的数据的时候,用小数据实现大数据的能力。

语音识别大家都知道很火爆,很多商业公司推出了语音识别服务。总体说来,语音识别其实是人工智能的一个分支,我们希望跟机器交互的时候能够实现比较自然的交流,而不是通过文本打字,这在未来是一个必不可少的智能交互手段。

这是大约直到5年前还统治世界的这么一个语音识别技术框架,叫HMM-GMM模型。最早是由IBM的Fred Jelinek和CMU的Jim Baker 这两位提出来的。在这之前,语音识别一直是拿两段声音互相匹配,即动态时间弯折,DTW。但这种模板匹配方法很难处理语音中的不确定性问题,所以人们开始 思考用统计模型对语音建模。你不是有很多不确定性吗?那我们就用统计方法来描述这种不确定性,把不确定性放在模型里面。这即HMM-GMM方法,从80年 代一直到2010年左右的语音识别系统框架。该框架主要分三个组成部分。最底层是特征提取。我想去识别你的语音,首先我得把最显著的特征提取出来,一般用 的特征叫MFCC的特征。第二个部分是描述发音不确定性的静态概率模型,即GMM模型。第三个部分是描述发音时序特性的动态概率模型,即HMM模型。这三 个部分组成HMM-GMM系统框架,在很多领域都可应用,特别是对语音识别尤其有效,因为语音信号具有很强的动态性,适合用该模型描述。

有了这个框架之后,Fred和Jim两位先驱就提出这么一个到现在还在用的公式,即后验概率最大化识别准则。从80年代起直到大约在5年前,我们一 直都是这么做语音识别的。一个重要的问题是,有了统计模型还不够,需要用数据来对模型进行训练,或者说,使模型能适应某一任务的数据。当时就提出这么一个 说法,叫“No data like more data”,意思是说只有有了Data这个模型才有意义,Data越多越大,模型效果越好。

2010年的时候世界发生了很大的变化。第一件事情特征提取过程的简化。传统的特征提取方法,如MFCC,要用很多步骤来提取出特征。现在我不需要 你人为地设计出这么多复杂的步骤,我直接给你一个语音信号的原始信号,或者简单的原始谱,你把语音特征提取过程用深度神经网络学习出来。这意味着人们不再 需要去费劲设计各种特征提取方法和步骤,人的压力就减轻了,而且因为学习得到的特征提取方法和任务目标更匹配。另一件事情是传统GMM模型被深度神经网络 模型取代。传统GMM模型通过混合若干简单高斯模型来生成较复杂的概率分布模型,可以描述语音信号的静态分布特性,但对不同发音的区分性不够。用深度神经 网络取代GMM,可以直接描述后验概率,增加发音区分性。第三件事情是传统的HMM模型被递归神经网络取代。RNN模型是比HMM更强的描述动态特性的工 具,将HMM中的离散状态描述变成连续状态描述。所以,基本上深度学习是把原来的模型和方法全部推翻了,用神经模型代替了概率图模型,将原来人工方式做的事情变成了一种学习的方式。这是一种非常翻天覆地的变化。

现在的语音识别基本是这个样子的,整个一套系统不再有那么多复杂的模块,基本是由神经网络将从语音信号到说话内容端到端的学习出来。这幅画刘老师也提到过,由于深度学习的引入,语音识别系统的性能大幅提高。

今天是大数据的讲堂,我们看语音识别和数据有什么关系呢?在我看来,从我学习语音识别开始,我们就知道data是非常重要的东西,基本上做语音识别 一大部分工作是在做data。这幅图告诉我们什么事呢?告诉我们两件事,首先数据很重要,数据越多,性能越好。还有一个事,基于DNN的系统在数据增大时 的效果提升更明显。这意味数据重要,模型更加重要,只有数据和模型匹配的时候才能学到更多的东西,只有这两个加在一起的时候才能实现“大数据”。感觉现在 似乎是说我们还需要data,但并不像以前那么迫切。因为神经网络的灵活性,数据少我们可以干小事,数据大我们可以干大事,而不是像以前一样必须有大量数 据,小数据我们一样会干的不错。换句话说,是我们现在对data的依赖有所下降,我们还是很希望数据,但并不饥渴。We are datahungry,but not starving。

事实上作为语音研究者,在大数据火爆之前我们一直不觉得自己是做大数据的,即使现在我们也不觉得自己是做大数据的。为什么呢,因为我们觉得手头的数据并没有那么大。

具体来说,(1) 原始数据很大,标准数据很少;(2)低质量的数据很大,可用的数据其实并不多;(3)中英文数据很大,很多主流语言有很多数据可以得到,但是一些少数民族 语言、小语种很难得到数据;(3)收费数据很大,免费数据很少,很多数据是有,都在公司里,都要你钱的,其实没有多少数据供研究者免费使用;(4)信息含 量很大,可用信息很少。我现在说话,大家能听到我的声音,其中包括各种信息,包括说的什么话、什么口音、什么性别等。这里边信息量很大,但是我们能用的东 西确实非常非常少;(5)积累速度很快,一天积累无数的数据,但是能处理的很少,计算机的计算量是有限的。刚才刘老师说的四个V(Volume、 Velocity、Variety、Value),似乎好像看起来对语音数据来说,Volume是适合的,其他几个都不是特别好。这意味着其实我们只是看 着像大数据,其实并非如此。另一方面,因为语音信号里边确实有很多信息,所以我们来认为我们潜力很大,我们的数据里面可以挖到很多东西,但是到当前能够利 用的,或者已经利用的东西还是非常非常少。一方面我们的技术可能没达到那种程度,第二说明我们还有潜力,未来我们可能真的可以称为大数据研究。

我们希望干什么事呢?比如现在如果数据量很大,好几十台、上百台CPU同时训练,那当然是最好的。但这毕竟并不容易,除了Google、百度有那种 能力之外,我们大多数研究机构还是没有这种能力。退而求其次,我们希望用小数据做大数据的事情。我们数据有限,但是我们还是希望能够得到一些大数据能得到 的好处。

可能的方案有哪些呢?比较著名的可能是非监督学习。比如图上这个机器人看了很多书,这是监督学习;但是有的时候没有这些书,它就满世界转悠,看到一 些东西记下来,用这些来丰富自己的知识,这是非监督学习。半监督学习的意思是,可能我学了一点东西,但是没有太多的东西可学,因此可以利用学到的一点知 识,为其它没有标注的数据进行标注,以扩大学习样本。弱监督学习,比如说没有那么多标好的语音,但是网上有很多有声小说,如《盗墓笔记》等,这些小说有人 帮你读出来了,因此可以利用里边的数据进行弱监督学习。另外一些方法包括数据合成和转移学习,这是我想给大家分享的重点。

首先是数据合成。我们有一些数据,但数据总量有限。我可以用这些种子数据造出一些数据来。比如我现在需要噪声数据,把种子数据里加一些噪音,这些噪 音可以是各种各样的,可以是机场的噪音,也可以是白噪声,也可以是咖啡馆的声音。虽然我们没有这些噪音为背景的语音,但是通过人工加入这些噪音,在训练的 时候这些噪音信息还是加进去了。通过训练,那些不容易被噪音破坏掉的语音成分被突出出来,增强识别效果。左边这幅图是加噪训练的一个例子。我们往原始的 DNN模型的输入端加入噪音,通过学习,可以看到在噪声环境下的识别性能显著提高,对纯净语音性能几乎没有影响。

加噪编码器,或者DAE。这一模型在很90年代就提出来。现在研究者倾向认为,通过噪音训练的编码器等价于学习一个低维的子空间,这些低维子空间对 噪音不敏感。这一理论最初是基于白噪声,后来大家又做了扩展,加入其他噪音发现结果也不错。比如说可以加一些敲门声,DAE就可以把敲门声滤掉,把跟敲门 声无关的信息学出来。同样的方法还可以学习和滤除回音。

我们用这一方法可以去掉声音中的音乐。音乐很规则,很有规律性,利用这点,我们可以用DAE学习音乐的特性。这是原始的语音,加入一些Piano, 或加入Rap音乐。我们可以看到,加上这些噪音以后识别效果就变得非常差。这说明音乐对语音识别影响很大,越是跟人声越近的音乐影响越大。

我们试图用DAE学习音乐特性。左图为一个DAE,输入的语音信号里面加入一些音乐噪音后生成的Fbank特征。输出是原始纯净声音的Fbank。 通过学习,可以有效滤除这些加入的音乐。特别有意思的是,这里面加入Piano进行训练后,得到的模型对其它音乐学习也有好处。这证明音乐是具有共性的, 学习一种音乐对其它音乐噪音也是有好处的。

另一种方法是转移学习。这里有两个机器人,这个机器人先知先觉,学了很多东西,这个机器人将这个知识传到了另外一个机器人那里,第二个机器人在没有数据的条件下也学得了很多知识,这一方法叫做转移学习。

基于深度学习的转移学习方法早在2009年就已经提出来,近年来得到广泛应用。如图所示,我把各种各样可能的数据或特征都给它扔进神经网络,网络的 中间层用来表征由各种不同的知识得到的共享的、共用的特征。例如,输入既可以是中文,也可以是英文,可以是机场环境,也可以是办公室环境,但是不管什么输 入,都共享中间层,这样各种数据资源之间可以共享信息。用了这样一个共享信息的网络,网络基本架构已经成型,实际应用的时候只要一些简单的数据进行自适应 就可以得到很好的结果。

具体到语音识别里面,我们做了哪些事呢?有很多很多种方法,我们觉得有些比较有价值的可能是,第一个是跨语言转移学习,第二个是跨模型的转移学习,

为什么要考虑跨语言呢?因为不同语言的数据分布是非常不均匀的,某些语言数据量非常大,某些语言数据很小。人类语言总共有五千多种,其中389种语 言覆盖了94%的人群,剩下的那么多的语言其实很少有人说。所以从这个角度来说,其实绝大部分的语言都是闲置的,和大数据不沾边。同时,语言现象是随时变 化的,今天说一件事,明天可能说另一件事,差别很大,所以要想一个模型一劳永逸很难。

转移学习是解决上述问题的有效方法,基本思路是利用语言之间的相似性。我们想利用语言之间的相似性来共享资源。原始的共享方法是用一套通用的发音系统来标注各种语言发音,这样不同语言的相似发音就得到了共享。

基于深度学习的语言共享是当前比较有效的方法。如图所示,输入层可以输入各种语言,这些语言共享DNN的中间层,分类层用来在不同语言内部不同发音间进行区分。这是在2012年、2013年做的事情,现在基本上已经成为一个标准框架。

还有一种方法是跨模型转移学习,什么意思呢?现在学了一个模型,这个模型可以作为一个知识源,或者是作为一个老师,这个老师想办法去教一个学生,把 知识传递给学生。有很多种方法实现这种转移学习。一种方法是相当于老师教学生一样,我告诉你这个题的答案是什么,然后你照着我的答案去写过程。还有可能是 从中间层给出指导,还没出答案,我只告诉你中间的解题过程,你把解题过程告诉这个学生,这个学生也可以学到知识。

2014年、2015年发生很多事情,比如说2014年的时候可以用比较复杂的DNN来学习比较简单的DNN。后来可以用比较复杂的RNN来指导一个比较简单的DNN,这样使得NDD达到近似于RNN的效果。这时的研究思路是尽量保证老师把知识尽可能教给学生。

现在有一个问题,当前的方法都是用强的老师来教一个弱的学生。问题是,如果这个老师很笨怎么办?大家当老师都有这个经验,很多时候老师不如学生,有 的学生比老师还聪明,那老师还能教得了吗?比如这幅图里,左边有一个比较浅的网络,右边有比较深的网络,我可以用浅的网络来指导深的网络学习吗?

非常幸运的是,我们的实验发现,即使比较笨的老师还是可以教出比较聪明的学生。通过什么方式呢?一种方式就是我可以告诉这个学生,虽然我知道得不是 很清楚,但是最开始我肯定比你知道得多,你也许后来可以发展得很好,但是开始至少你还是比我差一点点,所以我就把那一点点东西传给你,将来怎么发展,师傅 领进门,修行在个人。虽然我的这个知识不是特别好,但是我可以让你先有一个锻炼,锻炼的方式可以教给你,然后你自己去学。事实证明,这种方法确实有好处。 比如说我们用一个比较弱的DNN,即是比较糟糕的老师去教一个比较强的学生,一个RNN模型。最初的时候,这个DNN老师的错误率是11.40。如果聪明 的学生从开始自学,相当于把一个特别好的学生扔到一堆书里,自己去看,结果是12.34,这个结果不如一个弱的老师。当这个DNN老师把这个知识传给学 生,聪明的学生拿到老师的知识以后,自己发挥、升华,最后就超过老师了,错误率下降到10.10%。这意味着什么呢?意味着老师弱的时候也无所谓,可以教 比较聪明的学生。

总结。我们觉得语言和语音的问题很大程度上是一种大数据背景下的小数据问题,因为我没那么多数据,所以我们不得不用有限的数据做更多的事情。基本的 思路就是共享。共享在语音识别里面有很长的历史了,比如基于决策树的上下文相关建模。未来我们可能需要将语音的、文本的各种信息集成在一起进行更有效的共 享学习。另一方面,非监督学习有可能是间接利用语音大数据的有效工具。特别有意思的是深度学习使得小数据到大数据的学习成为可能,没有这个工具其实我们很 难用小数据做什么事。谢谢各位。

推荐热图

合作推荐

2010-2018 可思数据版权所有 About SYKV | ICP备案:京ICP备14056871号