机器之心独家专访:首度揭秘地平线语音战略与研究
机器之心原创
作者:李亚洲
从创立之初,地平线的愿景就是为包括智能家电、服务机器人、自动驾驶汽车在内的众多设备装上「大脑」,让它们具有从感知、交互、理解到决策的智能。人机之间的自然交互一直是人工智能领域的一个美好愿景,而语音是人机交互中最重要的手段之一。
虽然过去的一年中,我们听到更多的是地平线关于图像、芯片方面的研究,但据机器之心了解,地平线在创立之初(2015 年)就拥有了一支十分强大的语音团队,很早就在进行语音方面的研究,积累起独特的技术优势。
在近日,机器之心对地平线联合创始人、算法副总裁黄畅博士以及首席语音算法工程师牛建伟进行了专访,从公司的整体战略、语音技术两个角度揭开地平线语音的神秘面纱。
黄畅博士,地平线机器人技术联合创始人、算法副总裁。深度学习专家,前百度主任架构师 ( T10 )。长期从事计算机视觉、机器学习、模式识别和信息检索方面的研究,作为相关学术界和工业界的知名专家,发表的论文被引用超过 3350 次,拥有多项国际专利。他开发的人脸检测技术,创造了世界上首次计算机视觉技术被大规模应用的成功范例,占领 80% 数码相机市场,并且被苹果 iPhoto 等诸多图像管理软件所采用。
牛建伟,地平线机器人技术首席语音算法工程师、语音识别团队负责人。牛建伟毕业于西北工业大学语音识别专业。曾任百度语音技术部资深工程师,在百度期间研发了国内第一个采用深度学习技术的大规模商用语音识别系统,并建立了一套国内领先的离线语音识别系统。牛建伟 2015 年加入地平线后,主导搭建了地平线的语音识别系统。
地平线的语音战略
机器之心:请黄畅博士介绍一下地平线在语音方面所做的工作?
黄畅:请容许我首先介绍一下我在语音方面的同事牛建伟。牛建伟在加入地平线之前就职于百度语音技术部,是国内语音行业中最早一批接触并运用深度学习算法的人,至今从事语音方面的研发工作已经 7 年有余。事实上,地平线从创立伊始就开始语音技术的研发,原因很简单——万物智能意味着人机交互需要变得更加自然,而语音正是其中最重要的手段之一。在家居场景中,各种智能终端上的语音技术与手机上的相比,会复杂很多,具体表现为:语音的获取从近场变为远场、对交互响应时间的要求更为苛刻、需要对接的服务种类更加繁杂。这些特点决定了智能终端不能简单沿用手机上的语音技术架构。
为了更好地处理远场语音问题,我们开展了语音信号处理(包括麦克风阵列)相关的算法和硬件研发;为了降低交互响应时间,我们采用了云端+嵌入式的语音识别架构;在嵌入式端,受限于计算资源,我们仅仅运行信号处理、唤醒、命令词和小规模通用语音识别模型,以保证低延时的交互响应以及网络条件不好情况下的用户体验;而在云端我们可以采用更大规模的声学模型、更复杂的解码器和语言模型,在网络条件良好的情况下确保更好的用户体验;最终,通过语义理解、知识库和对话系统,做出决策并对智能设备进行有效的控制,将用户和广泛的服务对接起来。
机器之心:现在的语音团队大约发展到了多少人?
黄畅:除了北京,我们还在南京设立了语音研发中心,整个团队加起来正式员工有 20 多人。
机器之心:国内也有一批语音方面的人工智能创业公司,比如思必驰、云知声等,我们和他们比起来有什么不同?
黄畅:我们的角度是不一样的。首先据我所知,他们还是非常偏重云端的。地平线的语音则一开始就强调云端+嵌入式。语音信号处理、唤醒、命令词以及语音小模型放在嵌入式端,以保证实时性和网络不佳条件下的必要功能,而将语音大模型和语义理解放在云端,以提供更佳的性能并能对接服务,这种云端+嵌入式端的整体方案,可以提供更好的用户体验。
我们注重的是语音全自然交互的解决方案,也就是前端语音信号处理与后端语音识别、语义理解相结合。
语音信号处理、语音识别、语义理解这三个环节组成了一个完整的解决方案,尤其需要注意的是前端语音信号处理,它发挥了很重要的作用。举个简单例子,在语音识别环节很重要的就是对数据进行扰动、加噪。那么加噪怎么加?加多少?这其实跟音频信号处理关系是非常大的。如果只专注于语音识别这件事情而不做音频前端的信号处理、优化,就会导致在具体产品上出现性能不好,或者成本过高等问题。
最后,我们在软硬件配合方面做了大量工作。硬件体现在两方面,一方面是在前端信号处理上的麦克风阵列,另一方面是在中间的语音识别,尤其在嵌入式的语音识别,需要我们设计专用的、针对深度学习优化的计算架构芯片。
所以我们认为语音交互这件事情,首先是云端+嵌入式;其次是语音信号处理、语音识别、语义理解三个环节都要做;最后,你要软硬结合。这三个维度缺一不可。
机器之心:地平线之前推出的雨果平台、安徒生平台上面使用到的语音交互解决方案也都是我们自己的?
黄畅:雨果 1.0 平台是一个基于 FPGA 的平台,它主要面对的是汽车市场。安徒生平台面向的是智能家居。现阶段,车载语音暂时还没有放在我们的工作范畴之内,我们专注的是智能家居的语音应用。所以说我们的语音目前主要是在安徒生平台上的应用。
这其实也反映了另外一个问题。表面上看车载语音和家居语音都是语音应用,但实际上因为场景不同,可以接受的功耗和成本不一样,这导致你所采用的技术方法的差距非常大。
所以在研究方面我们要把信号处理、语音识别和语义理解三个环节都做。但在其他的维度上,比如在具体应用场景中,我们要有所收敛。因为毕竟我们不可能像一个大公司一样,投入非常多的资源在所有的维度上。
机器之心:地平线之前一直在做图像识别方面的研究,也有语音识别方面的研究。如果两者部署到同一个平台,比如说同一个机器人平台上,它们是相互促进?还是彼此独立的存在?
黄畅:这恰恰是我们努力在做的。表面上看语音和图像好像是是两个不同的东西,但实际在交互的过程中我们追求的是一种多模态的交互。
举个简单的例子,我们通常说语音是比较自然的交互,但是在有些场景中你会发现手势、人脸这些来自于图像的信号也能够很好的辅助你进行交互。尤其是在复杂的场景中,比如说开 party,你会发现在嘈杂的声音中把语音分离出来是很难的。
针对这种复杂场景中的问题,虽然我们有增强的方法,但是你一开始甚至不知道应该往哪个方向进行增强。所以我们可以结合一些来自于图像的 indicator,比如说手势识别,比如说类似前段时间 DeepMind 做的唇语识别。它(指 DeepMind 的 LipNet)是个很有意思的应用,也是在做语音识别,但它不是靠语音信号而是靠图像信号,而且准确率十分惊人。
这就说明一个很有趣的问题:如何让机器所感知的信息,像人机交互一样,也是一种多模的交互?从逻辑上来讲,是把语音和图像的交互结合起来。从执行上来讲,你必须把两个东西放在一套系统里面,非常完美地同时运行这两个东西。
再往深处去挖,图像和语音发展到现在,在计算模式上已经有了非常大的相似性,这使得我们可以设计一套对这两种问题通用的计算架构,这也是我们之所以非常看重专用的芯片架构设计的原因。因为我们相信用一套专门设计的新架构,能够做好包括语音、图像、决策在内的很多人工智能问题的运算。
机器之心:把语音技术部署到产品上面接下来有什么计划吗?
黄畅:前期主要是在智能家居方面,比如说跟科沃斯的合作,将语音识别技术用于智能扫地机器人上。此外我们也在跟其它家电厂商研发基于语音识别的技术应用。
地平线认为 2017 年是语音识别广泛应用的关键年。所以我们在这一年会非常重视整个语音的技术研发和产品推广,包括市场拓展,这是今年公司最重要的方向之一。
地平线的语音技术
机器之心:两位能从技术角度讲解下地平线的语音研究吗?模型与算法?
牛建伟:前面也讲到了,地平线在很多方面都有一些工作:音频信号处理、语音识别、语义理解、语音合成等。
具体到其中的「语音识别」,它包括两大模型:在语言模型上我们现在用的是 n-gram 结合 RNN 的模型;识别模型在嵌入式端主要用 CNN 和 DNN 模型,服务器上采用 CLDNN 模型结构。
我们在算法上做的提升包括:一个是前端音频信号处理,我们正在做一套完整的前端模块或者说是算法套件。有了前端的提升之后,我们的识别系统对强噪声干扰、人声干扰就会有更好的鲁棒性。
另一个提升是针对语音识别场景的打磨。因为扫地机器人或者是空调,都有一些本体噪声。我们需要模型能够适应这种本体噪声。此外,就是一些建模方法、模型结构上的改变或者改进,比如 Deep CNN 模型、LSTM 模型以及进一步引入 CTC 准则。
刚才提到的 LSTM 模型、CLDNN 模型,在一些数据集上我们都已经能够验证效果,并将逐步将算法移植到我们自己的芯片上。
语音合成上,我们现在用的是基于 BLSTM 模型的一套参数合成系统,现在也在追踪 WaveNet。
黄畅:现在很多学术界或者业界的新发展,基本上都是基于大规模的服务器、GPU 去完成的。我们在跟踪这些最新的方法同时,非常关注哪些更加适合部署在嵌入式平台,部署在低成本、低功耗的通用处理器以及我们设计的专用芯片架构上。
机器之心:这整套方法的准确率大约在多少呢?有没有测试出一个结果?
牛建伟:根据我们的内部评测结果,在 1000 小时的数据上,CLDNN+CTC 模型相比于之前公司的 DCNN 模型性能大概提升了 15%~20%。
机器之心:在语音合成方面刚才你提到的追踪 WaveNet,能补充说明一下吗?
牛建伟:我们现在已有的是一个相对来说比较主流的技术框架。文本处理前端就是利用 NLP 相关算法、资源进行文本的规整,提取词法和语法信息。后端主要集中在参数合成,这一环节比较容易放到嵌入式的端上面进行,因为它的资源量比较小。这样的话 TTS 系统只需要占用几十 MB 的空间,对计算的要求也可控。后端我们用的就是一个相对主流的 BLSTM 模型,这基本上也是各家都在用的。
至于 WaveNet,它相对来说提高了合成语音的自然度,还有舒适度,但是它存在一个问题就是计算量很大。语音是 16K 采样,一秒钟它就要预测 16000 次。当然可以再做加速,但现在加速的效果还没有那么好,现在基本上还是 100 倍的实时率,就是合成一秒钟语音还需要 100 多秒的计算时间。这没办法直接用到产品上面,所以我们还是在追踪 WaveNet 的阶段。
机器之心:吴恩达今年在 NIPS 2016 上提到了端到端学习在语音识别上的应用,我们在这方面有没有深入的研究呢?
牛建伟:吴恩达的「端到端」,在英文识别中是指从一个频率的特征直接建模到音素这一级,中文指 从一个频率特征建模到拼音声母跟韵母这一级。从目前主流的实践上看,这其实就是一个 LSTM 和它的变形,然后加上一个 CTC 目标函数。之所以认为是一个端到端,是因为它省略了以前语音识别三音素表述的概念。
再进一步发展的话就不限于一定是频率的特征,可能就是从原始的波形一直到因素或声韵母,这相当于是更宽的端到端。
黄畅:其实端到端不是一个新的概念,而且端到端也是相对而言的。你现在听到的端到端是相对于过去的工作而言,过去工作是什么呢?是把输入到输出的中间部分分成两三个不同的阶段,然后分别去做优化。现在是把这两三个阶段合在一起,直接做输入到输出的端到端优化。但如果把视线放到端到端之外,其实输入前还有信号处理、特征抽取,输出后还有解码、语言模型、语义理解。所以你现在所看到的端到端如果放到我前面提过的序列中还只是整个语音识别链条中的很小一部分。
端到端的思想其实来源于深度学习的一个核心思想,这只是深度学习方法应用于问题中不断的延展。理想情况就是提供一个或者多个麦克风,不做信号处理就直接读取录音内容,然后通过深度学习模型最终直接输出意义。
机器之心:如果要促进语音识别更加地实用,还要做些什么样的工作呢?
黄畅:现在看来语音识别问题好像已经基本解决了,但这仅限于近距离安静场景中和发音相对比较规范情况下。就好比人脸识别,很多人觉得好像是个已解决问题,但仍只是在限定条件下。但当你实际应用的时候,会出现各种问题。典型的问题就是:第一个,远场情况下,混响、噪声干扰怎么解决?第二个,语义是否能够正确理解?
我们以前讨论过,如果只是做一个通用语音识别,可以把字打出来。本质上来讲,它只能够替代输入法,作用是十分有限的。如果要把它用在交互上,形成一个闭环的话,它必须能够理解人的语义。所以只在中间这段语音识别做好还不够,真正应用中要形成一个闭环,前面的语音信号处理、后面语义理解都要做得好。
所以我们不应该单纯的、狭义的说语音识别问题已经解决了。广义的语音识别应该是从声音信号开始,到最终的语义。
机器之心:那我们在语义理解方面做了哪些工作?
牛建伟:我们现在主要还是针对于对话或者是交互系统来做,包括我们在用强化学习做对话的一些生成,还有对话状态的管理。同时我们也做一些 NLP 方面的工作,用 Deep CNN 或者 LSTM 做一些名词的标注,或者是实体的识别,另外还有些语言模型方面的工作。
黄畅:泛泛的那种对话、聊天式的机器人意义不大,我们关注的对话是针对某个特定的场景、应用或者类型的知识,使它成为有独特性的,有「知识背景」的对话。
机器之心:地平线在语音研究上的数据能做一下介绍吗?
黄畅:关于数据,其实有些新的趋势不仅是在语音上,而在各种各样的技术性问题中,比如如何做迁移学习(transfer learning)?在一个有大规模数据的场景中训练出模型,在另外一个相似、相仿的场景中,怎么把这个大规模数据场景中训练出的模型迁移到小规模数据场景中。
另一方面是生成型模型,尤其是对抗式生成式模型,它提出了一种非常新的概念,就是重新设定学习的范式(paradigm)和框架,重新看待学习这件事情。它一个很重要的产出就是,利用生成式模型帮助你产生更多的、特定属性的数据。
再往前推,其实 RL(强化学习)是非常有价值,尤其是在交互的过程中。对语义理解互动这件事情,RL 天生就是为这种交互的模式设计的。
机器之心:在语音识别算法方面,还可以朝着哪些方面改进?
牛建伟:主要有三方面的改进。
第一,降低数据量的需求。即我们通过一些方式生成数据,或者学习一些数据共有的特征或属性,以此降低数据量需求。比如说为了达到一个比较高的识别率,现在可能需要 2 万小时的数据量,以后只需要 2000 小时。举个例子,DNN 取代以前的 GMM 模型的时候,DNN1000 小时的性能其实已经超过了在 3000 小时训练数据上训练的 GMM 的性能。
第二,更好的语音信号的特征表示。因为现在语音识别最大的一个问题是有比较大的干扰之后,识别效果就不太好。其实人在 0dB 或者更低信噪比的情况下(噪音跟声音的能量是一致的时候),还能够识别,但机器就没办法处理的很好。说明我们现有的特征表示的鲁棒性还不够好,距离人还有很大差距。
针对于此,我们可以对人耳听觉进行更精确的数字描述。或设计现在已有的神经网络结构,更好地提取出语音信号里面对识别来说作用更大的特征。
第三,解码。我们现在一直在提端到端,但其实一直没有把解码包含进来。语音识别最终做的还是把固定特征表示成一个更高维的信息,还是时间序列上的表示,需要解码的过程。
解码是除了模型外计算量比较大的一块。但其实解码也能通过模型表示出来。也就是通过模型的方式把高维的时序信息结合起来,最终直接就预测出一句话,那这样就相当于在时序上的端到端的识别。
如果能做到这样,后面优化识别模型的过程就变得更容易了。因为虽然解码还是工程化的东西,但它会比较明显的影响到识别结果。如果我能把它放到机器学习的框架里面去优化,这样相当于整体的优化。有可能性能会更好,解码的效率也会更高。
机器之心:不久之前 Facebook 提出了新的语言模型方法 Gated Convolutional Network,相比于 LSTM 取得了一定进展。对此研究有何看法?这个研究是否有很大的意义?
牛建伟:Gated CNN 跟 9 月份的 WaveNet 其实有点类似,因为它相当于是把显示的那种循环结构改了一下。
LSTM 的提出从想法上还是比较简单:因为这是一个时序的问题,需要历史指导来做下一步的预测。但现在我们来看,它存在一些问题:优化算法没有那么稳定。
LSTM 之前是 Simple RNN,为什么 LSTM 比 RNN 好?
从理论上来说,两者的表达的能力应该是一样的。通过调整结构(引入门),来适应现有的一些学习算法,让它的性能变得比较好。但同时也说明现有的优化算法是有些问题的,包括它的收敛性、稳定性上。
现在的一个趋势是利用 CNN 结构的组合来替代 RNN 模型,优化的时候就可以用一个 SGD(随机梯度下降)或者类似 SGD 的优化算法,它的稳定性相对来说会高一些,不会存在很明显的梯度爆炸问题。
另外,还因为卷积网络用 CNN 这种结构直观上比较合理一些。比如说三个单词,我先把它们变成一个连续域表示,就像它们论文中的一张图就是把 word graphic 转到连续域场(如上图)。然后把连续域的特征通过卷积,就看前三个,提出一个特征然后一层层加上去,之后再做一个预测。预测的词出来之后,再放到输入上面,就这样一层一层过。其实它也是类似循环的结构,但这种结构依赖的历史相对就比较明确了。
LSTM 其实是一个隐含的。你可以说它学到了历史,因为它有一个保存信息的 cell,但到底它学了多长的历史是未知的。
至于这个研究,模型的话我觉得可能意义没那么大。我个人认为,如果能在优化算法上有更好的改进,普通的模型结构可能也能取得这样的效果。但现在优化算法上突破性的改进,好像还不多。
黄畅:我补充一点。关于 LSTM,不管你是单向的、双向的、摞一起的、不摞一起的,其实都有一个问题:信息传导的约束很强。换句话说,不管是做前向预测还是后向 BP(反向传播),一个信息从左边到右边,或者从开始到结束,都要经过很长的路径。而且在整个过程中,会有很多非线性的变化,尤其是 LSTM 这种典型的、很容易进入自我限制状态的模型。经过很多次这样的事情,就导致整个优化变得异常困难。这个结构天生就使得优化变得非常困难。
这是 LSTM 的弊病,它的结构设计有很大限制性。你可以类比一些其他结构,比如 ResNet,它通过建立 free-way 的方式,人为地架了很多 short-pass(短路径),使得本来在网络上距离很远的两个单元之间建立一些高速的快速通道。直观的理解就是可以让它们之间的信息沟通更加顺畅,减轻我前面说的那个问题。
更进一步,你会发现在语音识别中有人用完整的 CNN 替代 LSTM,包括讯飞、微软、百度。刚开始的时候 CNN 用得很浅,只是作为基本的局部表达,后来发现可以用 CNN 不断堆积,而且堆的很有技巧。在计算量不显著增加的情况下,这样就可以用 CNN 覆盖很大的语境。
就是说优化算法本身也许没有很好的进步,但是通过网络结构的设计可以规避目前主要基于 SGD 的优化算法难以解决的 LSTM 问题,直接构造一个更适合目前优化算法去优化的网络结构。所以本质上很难说哪个结构更好,你只能说这个结构更适合现在主流的这种优化方法。
其实论文出来时我稍微看了一点,它本质上好像和 attention model 很像。attention model 的概念是不管语境是怎么传过来的,总是有选择的看所有东西,做决策(比如生成一个词)的时候有选择的去做。这时候会产生一个 attention mask,这可以理解成一个 gate,封住一些不想看的东西,保留想看的。
这个在图像和 NLP 里面已经得到很好的验证。NLP、语音、图像其实都是相通的,你会发现很多思想、结构、设计理念会越来越相似。这也给了我们信心,让我们可以实现语音图像识别一体化交互,用一套统一的专用架构去做解决各种各样的问题。