摘要:随着语音交互、自然语言处理、多模态等技术的发展,人机交互方式已经变得越来越简单,目前人机交互已经成为行业最热的研究方向之一。那么,未来人机交互的发展趋势什么呢?阿里巴巴智能语音交互专家高杰在《云栖大讲堂第三期|未来人机交互技术沙龙》上为大家分享了在阿里巴巴智能个人助理构建过程中所积累的经验和教训。
数十款阿里云产品限时折扣中,赶紧点击这里,领劵开始云上实践吧!
本场技术沙龙回顾链接:大咖分享 | 人机交互技术需要什么样的创新?
演讲嘉宾简介:
高杰,智能语音交互专家,博士毕业于中国科学院声学研究所,现任职于阿里巴巴机器智能技术实验室语音交互组,有十多年的语音交互和机器学习的研发经验。现任职于阿里巴巴机器智能部语音交互组。致力于自然交互界面 (Natural User Interface) 的普适应用,主导多种设备 (汽车、电视、手机等) 的人机交互界面系统的架构和实施。
以下内容根据演讲嘉宾PPT以及视频整理而成(云栖社区做了不修改原意的编辑)。
缘起-智能个人助理
在2018深圳云栖大会上,阿里巴巴宣布开始全面进军IoT。IoT或者说基于设备的方向也成为了阿里巴巴的一个主要发展方向。其实NUI平台的想法和愿景也和整个阿里巴巴集团的战略是一致的,NUI平台的想法就是让每个设备都具有基于语音甚至是基于多模态的自然交互能力。
NUI曾经支持的设备和智能助理
语音交互组在做了这么多的东西之后,也沉淀了很多的想法,所以本文的题目就叫做经验和教训,因为这么多的项目做下来发现有一些东西大家会很喜欢,可以在市场上进行发售,但是有些也就默默无闻,然后最终消失了。这是为什么呢?如何去思考语音交互?又应该如何使用语音交互构建出用户愿意使用的东西?这也是本文将与大家探讨的两个主要话题。
当谈论智能个人助理时,在谈论什么?
当大家都在谈论智能个人助理的时候,到底在谈论些什么呢?用真实客户的话来讲就是“我希望给我的设备加上AI”,可以看出在大众眼中的个人智能助理实际上就是AI。而智能个人助理到底是什么呢?其实智能个人助理是基于服务和自然交互的方式,为人提供信息、操控设备或者完成其他任务的产品形态,所以最终而言,智能个人助理是一款产品。
如何构建智能个人助理产品?
那么究竟应该如何去构建智能个人助理产品呢?下图展示了对于NUI的三种观点,其实应该从这三个角度来看智能个人助理。首先,最典型的角度就是将NUI看做机器学习系统,特别是一种统计机器学习的系统;第二个角度就是将其视作传统的软件系统,所以在构建智能个人系统的时候还需要关注软件工程的部分;而最后落脚到用户是否喜欢这个东西上,就需要将其视作一款产品,更准确地说就是互联网产品。
NUI-机器学习系统
NUI是一个基于数据统计的机器学习系统。当使用统计知识解决具体任务的时候,首先要收集一部分任务相关的数据来训练出模型,之后将模型部署上去,最重要的是从整个部署过程中获取数据,进而去更新和迭代整个系统,这就是构建NUI平台的核心想法。这里首先需要注意数据任务的相关性。其次,需要从一开始构建系统的时候就要思考需要努力的方向、团队的能力分布,并思考如何构建这样的反馈闭环。
NUI-软件系统
NUI也是一个传统的软件系统,需要经历从产品需求分析、系统设计,到编码实现、软件测试,再到系统维护的整个流程。首先需要将一个天马行空的想法变成一个现有技术可实施的设计,而现有技术本身会有很多限制,所以在这部分会产生很多的讨论。后面则是具体的编码实现,以及为了保证软件质量的测试和系统维护工作等。这些虽然是老生常谈的工作,但是这些都是在构建实际系统中必不可少的环节。而NUI系统的构建实际上也会与传统软件系统的构建有些许不同。
NUI-(互联网)产品
最后,NUI也是互联网产品,而作为产品则需要去考虑其核心价值是什么。NUI作为一款产品的核心价值就是帮人类完成任务,查询信息,操作设备。如果一款智能个人助理产品不能提供这样的核心价值,那么就难以被用户接受。在有了落地场景和核心价值之后,还需要标准来衡量产品优劣,因为NUI的核心诉求是帮助人类完成任务,所以最终的衡量标准就是任务完成率和交互的速度。最终NUI还是一款产品,对于产品,特别是互联网产品而言,产品经理们经常向其中添加新的特性,下图中就已经展现了市面上语音交互系统中经常定义的产品特性,而具体如何实现这些特性都是开放性的。
NUI的设计与实现
前面分享了NUI的三个观点和其核心诉求,接下来分享究竟应该如何实现NUI。
NUI: 架构Quick Recap
模块:拾音技术
在音频采集或者音频收集部分会需要用到拾音技术,这是因为在人和设备交互的过程中往往会受到各种各样的噪声干扰,比如在和设备讲话时正好旁边有其他人在讲话,也可能会是因为房间布局造成的一些反射声,此外还会有一些其他的干扰声,比如在看电视的时候旁边的空调声音以及冰箱声音等,这些噪声都会对于设备收集人的指令声音造成一定的干扰。
模块:信号处理
对于信号处理算法而言,可以通过举例来说明。通过这里的例子可以为大家解释在语音交互中使用最多的拾音算法。
模块:唤醒技术
语音唤醒其实就是上述所提到的像“你好,电视”或者“Hi Siri”这样的语句,关于语音唤醒已经有很多的文章在讨论技术细节,本文不再展开详细的讨论,只是去分享语音交互组所做的一些东西。首先,语音交互组在建模算法中使用了自己所实现的声学建模算法cFSMN with MFP。除了复杂的算法,唤醒技术另外一个大的挑战就是需要运行在设备本身上面,而设备本身的计算能力是非常有限的,那么就需要降低计算量,所以还实现了基于算法的低bit压缩技术以及芯片级的计算优化。除了端上算法之外,还需要特别关注准确率,所以还在云端实现了二次确认,这也是目前主流厂商的做法。
模块:语音识别技术
阿里巴巴在语音识别方面的积累也更多一些。目前已经实现了几代的模型迭代,从最开始标准的深度神经网络,到Latency-Controlled BLSTM (LC-BLSTM),到最近提出的第三代:Lower Frame Rate (LFR) Model。Lower Frame Rate Model实际上是对于第二代技术的改进,第二代技术会带来很好的准确率的提升,而在第三代模型中则更关注计算量以及资源消耗。而在第四代则是将Lower Frame Rate Model和更好的建模技术融合到一起,结合Multiple Frame Prediction技术进一步降低计算量。大家也可以从语音识别技术模型的演变中发现其中的关注点,一方面就是在准确率本身,会使用更加准确的序列模型;另一方面则更加关注计算量和资源消耗,这会和某些产商或者公司的想法不一致,很多公司的想法就是使用更加昂贵的机器来支撑服务,而阿里巴巴的想法则是既需要考虑准确率又需要考虑低计算量。这与语音交互组的使命是一致的,需要做到准确率比较高并且成本很低,让大家都能用得起。
模块:自然语言理解
下图所展现的是阿里巴巴NUI平台的自然语言处理框图,基本上是规则系统和统计系统的串行系统。这里关于使用规则系统还是统计系统存在很多争执,而阿里巴巴实践后总结出的经验却表示两种系统都不可少。规则系统一般比较准确,特别是系统刚刚开始运行,也就是冷启动什么数据都没有的时候,可以迅速地编写一些规则使其快速上线,这是一个非常好的做法。而当数据积累比较多的时候,可能就会倾向于使用统计系统完成任务。
模块:对话引擎
最后,在对话引擎部分,实现了对话的逻辑和引擎的分离。首先会有一个对话解释器,其次对于每个任务会有自己的脚本,此外还会通过外在的方式与服务打交道,因为所有的和服务、资源以及内容打交道的都在对话这部分中完成。阿里巴巴会将对话引擎这部分做的比较灵活,方便于第三方开发者以及合作方在其上进行自定义,当然为了使得合作方完成的工作更加符合预期,这里也会给一定的监督。
关键字1:打通
前面简单介绍了NUI平台各个的模块。那么是不是将这些模块进行简单的插拔就可以了呢?当然不是,所以在本文中所分享的经验和教训中的第一个关键词就是“打通”。
打通:算法模块的边界
接下来分享车载智能定向的例子。阿里巴巴的车载智能定向功能是装载在荣威的实体车里面的,斑马是阿里巴巴投资的一个方案提供商,斑马为荣威汽车提供了车载智能系统解决方案。其车载智能系统的唤醒词是“你好,斑马”,下图中的草图大概代表了汽车内的四个位置,当主驾驶说出唤醒词之后,车载系统将会首先给出定位提示,当主驾驶唤醒了系统并发出打开车窗的命令,那么则需要打开主驾驶位旁的车窗,而副驾驶说打开车窗,则会打开副驾驶位置的车窗。
打通:算法和产品的边界
另外一个案例就是电视“免唤醒”,当然这里的“免唤醒”并不是真正的不需要唤醒,而需要使用前缀“我要看”。从技术的角度而言,“我要看”可以视作一个唤醒词,但是因为太短了,所以不敢用,可能会导致误唤醒率太高,但是产品经理还是要求实现,所以经过了技术与产品之间的讨论和妥协,最终设计出的技术方案就是打通整个链路,当发出“我要看XXXX”的时候会在界面上有所提示,也就是预唤醒阶段,同时会走完整个交互的流程,一直到确定收到确切的结果时才会进行展示。通过加上预唤醒阶段,不仅可以有效地降低误唤醒率,并且不会让响应时间延长太多。这就是打通算法和产品的边界。
打通:科学家和汽修工的边界
最后,也是最重要的就是在构建系统时需要打通科学家和汽修工的边界。其实在构建实际产品的时候,仅仅依靠很牛的技术和模块是不够的,必须放下科学家的架子,跑到场景中解决各种各样的实际问题。
关键字2:测试
测试:工程质量
测试:概率(不确定)系统的确定性
关键字3:FBL (FeedBack Loop)
在这部分的关键字就是FBL (FeedBack Loop) 反馈闭环,这个与之前提到的NUI平台的三个观点是相符的。第一个观点就是NUI平台是一个机器学习系统,这个机器学习系统是一个非常典型的有监督的反馈闭环,必须进行训练、上线、拿到数据标注,再去重新训练。每个模块都需要思考如何去构建反馈闭环,包括语音识别是否需要标注语音数据来更新声学模型,是否分析线上Query情况爬取更多的语料来更新语言模型。对于自然语言理解,现在最大的问题就是覆盖度不够,用户会有很多奇怪的说法以及正确的意图,并不能被捕获到,而需要从日志中挖取这些,如何构建反馈闭环都是开放性的问题,也是非常困难的。对于语言合成而言,为了使得语音更加好听,比如天猫精灵会拉去实际的数据进行分析,针对数据进行特殊的优化使得语音更加好听。唤醒以及后面的数据源都在跟随整个流程,分析线上的数据并进行相应的迭代。
那么究竟应该如何实现FBL呢?其实在开始设计系统时就必须要有这样的想法,在设备上做足够的埋点,这些埋点不仅是传统的关于设备的,比如每天有多少激活,设备的信息是什么,还需要对于交互的过程做一些设计,比如什么时候进行唤醒,唤醒词是什么,语音识别的结果是什么,自然语言理解的结果是什么以及用户后期做了什么样的行为都需要被记录下来送到云端的日志系统中。在云端需要基于这些数据构建足够好的查询与分析工具找到问题所在。对于自动化的训练平台而言,首先横向的项目很多,另外作为互联网公司,迭代率非常快,快速地生成并且迭代自己的模型是非常重要的,语音交互组几乎在每个模块上都花费了很大的精力来构建自动化的训练平台,有了数据之后能够实现迅速迭代,越来越快地进行迭代,迭代到足够好。另外一方面就是部署,部署上因为背靠阿里云,所以会有很多好用的工具,可以利用这些工具实现快速部署。
前面与大家分享了如何构建一个NUI平台,总结而言就是首先需要有一个基础模块,其次需要将模块打通,打通模块之间,打通模块与产品,打通高大上的人与实际问题的边界。其次,在整个实施过程中需要思考各种各样的方法来保证工程质量以及准确率。第三点,如果做出的系统受到大家的追捧,就必须持续地进行迭代,在开始设计时就需要思考如何构建系统反馈闭环,包括埋点、查询以及模型迭代的过程,这些都是实施一个好的NUI产品或者智能助理产品的必要步骤。
NUI的未来
目前NUI的主流厂商都在将平台变得更加开放。阿里巴巴也希望将自己的NUI平台做成一个普世的、完全开放的平台,这也是接下来需要努力的方向。首先就是将NUI平台在各种各样的设备上都实现可复制并且具有落地的能力。其次,因为现在的全链路都可以定制,那么目标就是实现完全开放,包括硬件设计都可以开源;唤醒词现在可以定制,未来则可以自由设定;而在语音识别部分,阿里巴巴是走在最前沿的,现在对于阿里巴巴的语音识别模块而言,除了必须要使用云服务之外,声学模型和语言模型都可以自己定制,这也是其他厂商难以实现的,而至于其他模块在未来也希望能够做到像语音识别这样的程度,这样整个链路都可以被第三方把控,极大地提升平台的开放性。并且还需要将模块融合在一起,将这些产品的优秀特性都做成一个完整的解决方案,当开发者装上SDK之后就可以享受到全部的特性,同时可以在其上进行自由修改。
NUI未来会具有更加自然的交互能力,大致会有三个方向,第一个就是多模态,目前阿里巴巴也已经做出了一个尝试,就是最近在上海发布的地铁售票机,这个是真的免唤醒的,因为其上有摄像头,用户可以直接走到售票机前说所需要购买的票即可;另外一个自然交互的方向就是个性化和场景化的方式,目前阿里巴巴也做了一些比较好玩的尝试,比如在打开车窗是车控里面常用的操作,而在整个的对话系统中,不仅需要考虑车控本身,而需要根据所在的位置以及外面天气的情形等信息来提示用户是否应该打开车窗;最后一点就是主动交互,其实主动交互目前并不成形,大家的手机每天弹出很多弹窗的时候虽然也叫作主动交互,但是却是很恼人的主动交互,究竟应该在哪些设备上做有用的主动交互也是极具挑战的问题,需要小心地尝试产品的特性,看看是否真的被大家接受了。而除了产品设计方面,主动交互还存在一些技术难点,这部分可以视为更自然交互的下一步。
本文由云栖志愿小组贾子甲整理,编辑程弢