心疼你独自一人承担生活的苦难,寂寞夜里陪伴你的只剩无人倾诉的压抑和无处安放的焦虑。养个宠物,它却不能get到你的“宠言宠语”。找个伴侣,还要浪费吵架的时间和精力。回到家里,只能浸泡在“循环唠叨式“母爱的沐浴。当一个人在你身边活的恰到好处的时候,就是在成全你,做自己!这样的人已经出现,只是你还不知道而已。现在就教你构建只属于你的智能对话机器人,带你找回那个最轻松的自己。
本期腾讯大学大咖分享课程邀请到了腾讯 AI 技术专家叶聪老师分享零代码使用腾讯TBP打造智能对话机器人。叶聪老师是腾讯智能对话平台TBP技术负责人、总架构师,带领团队完成了TBP产品的从0到1。前美国亚马逊 AWS 人工智能技术经理,负责领导开发了Amazon Alexa 智能语音助手背后的 AI 云服务Lex。
本期课程分为五个部分:
- 做智能对话机器人的缘由
- 研发痛点和难点
- 智能对话技术
- 如何用app构建智能对话
- 最佳实践案例
一、为什么我们要做智能对话
从计算机发展至今,人机交互已发生巨大变化。第一代的是键盘和鼠标。键盘鼠标帮助整个计算机覆盖了30%的人口。这30%人都可以通过键盘鼠标去操控计算机系失误,他想要的信息是拿到他想要的答案,第二代的智能交互是触控交互。但它成本高。使用手机阅读新闻发送消息的时候,就是人与硬件的交互,这种方式已经覆盖了大概2/3的人口,剩下的那1/3, 就需要智能对话的技术来解决。如果正常对话将来在所有的设备上得到的应用,那我们全世界的所有的人,不管他在用任何一种语言,都可以通过我们的智能对话机器人来操控所有他想要操控的设备,去输入所有他想要输入的信息。从此 AI 对话设备将变得无处不在。
智能对话无处不在,智能对话影响人类生活。目前我们智能对话其实已经深入了生活的各个方面。 包括语音搜索,智能硬件,语音消息转写,语音助手。以及语音输入法。这些东西每天大家都会用到。包括我们左下角的那个是我们的智能音箱。也是现在大家很热衷去研究和使用的一个设备。
经调研,发现个人用户使用 AI 能力主要原因有3点:
- 便捷,就是用更快速的方式,我们可以去使用到一些ui的能力.
- 高效,把复杂的东西,利用人工智能变的自动化或者半自动化来减轻我们的整体的工作量。
- 自然,能实现和人类的自然交流而不是简单的由人操控,实现个人用户AI能力的主要诉求。
有些用户主要为了帮公司降本增效。在大量to B 用户中间,有很多工作需要人工解决,比如人工客服外呼人员,还有一些内部管理人员,智能问答技术可以部分代替人工的工作。目前来看,使用的趋势已经非常的明显,在智能客服和智能外呼的领域已经得到了很多客户的认可,相关技术在很多to C领域,比如公众号小程序的客服上也得到了广泛使用。
结合个人用户和企业用户痛难点,打造智能对话发展的源泉和根基。首先它能提供自然的交互能力,可以模拟人工和人类的交流,让用户在使用时,不会产生机械交流感的一种真实场景体验。其次是接入场景多样性。赋予机器人在不同场景下提供服务的能力。
二、研发痛点和难点
首先需要懂得语言学的基本概念,语法搭配。其次需要有高等数学能力。
例如,举例论证偏微分方程,概率论。 同时,要有一定的上传能力,把算法转变成代码的能力,拓展能力等。
其次是高维空间的抽象思维能力。工作量大,门槛高,导致很多人放弃。
智能对话的核心技术结构图如下。
一个用户在使用对话平台去和基线交流时首先用户的语音素材进来后,系统会把语言转换成机器可以理解的文字。然后自然语言理解会识别文字,从中提取到适当的意图信息和槽位解析,针对已经提取的信息,结合对话管理和策略优化能力整合最合适的答案。答案列表用来择优选择最佳回复,生成为人类可理解的文字。 最后通过TTS语音合成,文字转换成语音呈现给用户,这就是一整套流程。
左边的部分是由腾讯云智能语音服务支撑的。中间是核心的智能对话平台,右边是各类对话模型服务。之前内部大体结构是每个用户的问题进来以后,经过自然语言理解,核心要素会被分成不同类型。例如,任务型,闲聊型,百科型,根据不同机器人的反馈结果会生成一个列表,根据用户说这句话的情绪上下文,还有一些个性化配置,最后生成一个最终答案。整个平台内部机器人的整合和协同合作非常重要。
智能对话和自然语言理解中两个核心要素:意图和槽位。
意图反应用户需求,在对话系统中,每一个意图都与现实世界中的某个需求点对应。指完成一个目的,与机器人对话发出的指令就是意图。意图的类型也有不同
简单的意图如左图。多级意图是分层的,在实际应用中,我们也会对机器意图有人工干预,比如一些敏感词等,让机器人人性化的同时避免敏感词汇。
目前来说 每一个模型,只在某一个特定场景下实现效果相对较好。
既然算法没有特别完美,所以需要通过一些半人工的方法帮助他优化,主动学习就是app也是非常重要的一点。机器本身会内建这样的能力,人工定期梳理。用机器人命中和命中的case,核心是去抽取值得用户标注的信息,用户使用简单选择意图的这个分类,这个说法就会自动添加进去。机器人在下一次用户再说一个类似词汇时,就会100%的命中。
一个很核心的概念是槽位,英文是slot,是指从句子中抽取出的特定概念,它包含最核心的信息。例如,我想去北京,北京这个名词是一个地点,这个中国城市,这就是一个槽位信息。在槽位信息中,相关内容例如地名就是槽位中间的内容,我们一般把关焦作词典。
机器人在获取用户输入信息的过程,英文叫填槽(Slot Filling)。填槽就是把用户输入的信息,中间核心要素转换成机器人能够理解的语言,提取出来。
填槽过程中难点有很多。首先,一个很传统的填槽方式是基于规则的天桥。就是设定一个模板,比如假设一个订机票的机器人。机票的机型首先要提取到,就是出发地和目的地。这两个信息可以根据规则填上去来解决。把它抽象成一个规则就弱了,用户的输入可以持续套用,然后提取出相关信息,但实际上也会造成很多问题,因为我们体育部的最优和全局的自由是不一样的,过多的模板会产生串扰,比如同一句话,同时满足多个模板,很难判断用哪一个,几乎没有很好的解决方式,而且随着规则越来越多,维护成本升高,加入新规则时,很难保证不破坏原有规则以及一些特殊情况。所以出现了将实体识别作为填槽结果。这是目前广泛使用的一种方式。但仍然会造成一些问题。
例如,假设用户说:我想去听七里香中的借口。从人的角度来讲,这句话是容易理解的。但是对机器来说不然,里面是有好多种可能性的。它提取到了七里香和借口这两个信息,但同时它有可能是专辑名或者是歌曲名。此时,并不能简单的把前面那个词汇当做专辑名而后面的当做歌曲名,因为用户有可能换词汇的表达顺序,这样结果是颠倒的。所以如果只是使用规则填槽的话,我们就需要海量的槽。
为了适配做一种很简单的场景,可以明显知道是得不偿失的。所以要前一种更好的方式就是将实体识别作为嵌套的结果,但是同时要考虑这些槽位之间的关系。比如,如果七里香是个专辑名,那歌曲名就只可能是接口,反过来也是一样。
利用这种方式,能够将词典和模型识别的实体结果一起做排序,能够减少模型错误所带来的影响。同时,会连接一些外部的知识库。比如,特定的用户,还有一些外部的知识点和其他用户是不一样的,我们做的时候也可以把这些外部的兴趣加入总的模型里面,再做排序,这就比原先的排序结果更准确也更适合这种场景。例如它得出的是一个分数,可以理解为我们会用它来做排序,但它不是准确率,只是一个相对分数,用它来排的那一种结果是最可信的。另一点就是从用户的说法中去提取有效信息,相对关系只是其中的一种。如果想要更多的信息,让这个软件更加科学,还有更多的信息可以抓取。将两三个词建立一种关联关系,还有槽位的长度。可以认为如果一个槽位的长度越长,它被识别的可能性会越高,槽位的长度如果越长,得到真实信息的概率就更大。比如大辞典中的两个小词典,如果一句话同时都命中了,就要考虑它们之间的互相包含,这样也可以帮助我们把排序变的准确,最后用不同语言模型的分数进行综合。可能训练的多个模型会利用模型之间的一些不同的特性,最后会整合出一个结果。接下来统一把这些点全部提取出来,这样可以将他们封装到一个统一的网络。
Feature Extract就是特征提取的接口,不需要单独为某一种情况设置一个接口和模型,非常方便,一切在平台内部的用户在使用时不会有感知,但实际上内部已经把所有的因素全部考虑进来了。联合排序的模型使意图的和槽位可以相互联动,一组槽位的整体全局最优解是最活跃的。我们可以给出Ranking的联合模型。意图识别大概分几个步骤,首先根据不同的意图或生成候选的。其次根据后台的结果提取出特征。再次根据不同的模型生成的特征进行一个联合排序,最后生成一个最终的结果。目前根据测试结果显示,这种方式展现的效果会非常好。而且它的性能也非常高,在对整个机器消耗不大的情况下,下面的结果已经接近了最好的效果。如果已经提前知道了意图,它就会对用户的话语打上了一个意图,我们知道哪个意图命中的是正确的,然后再计算分数。而模型是我们不知道意图是什么,让它先匹配意图,再通过综合的排序方式生成最后的结果。这两种方式中,因为算法几乎接近了预知意图的效果。要找到两句话的相似性,比如再想变更意图的时候、用户说法不精准时,如何获取用户的言语和配置意图是否一致?由于我们的说话是经过很长时间训练的,而且平时生活中使用的那一种语言,容易理解两句话可能语境不一样、倒叙的话可能是同样的意思,人可以理解,但是机器就很难。例如,你是谁?我是谁?这个看起来我们理解是完全不一样的,但是机器找不出明显区别,都是再问是谁,所以很大程度上来说这两句话,在机器来看是一个意思。简单的使用Word Embedding这种方式,我们认为结果是类似的,但实际上并不类似。再尝试使用蓝山网络。网络就是用户的一个因素进来以后,可以认为是两个相似的模型。不同的模型体现出不同的特征,最后结合这两个特征调整他们的权重。利用这种方式,使模型提升准确率,更加智能化。除了兰生网络,还有CNN神经网络。从最开始按照这个CNN,替代整体训练速度。模型响应时间小于50毫秒。如果使用传统的爱人,它的性能一般会在100到200毫秒之间,达不到要求,这也是为什么会有优化动力不断去铺时,这样的app能的边境。
为了优化差异,我们做了不同的尝试,例如不同尺度的卷集合。然后通过大量测试发现,虽然贝斯的解决方案。模型效果是不错的,也是常见使用的。除此之外还有更深层的,就是使用一种剪辑和通过简单的深度叠加来提取更多尺度的信息。
挖掘对话深层兴趣的方法。不仅是网络结构的增加,文林白领和china办理就是。问词语的一些白领和文字的明白点混合使用质量方式可以避免,假设一个词,不在我们的四点钟。因为四点是有限的,就会去找关于他的文字信息可以对他进行猜测和匹配,总体来说它可以让我们的机器人模型变得更聪明。自然语言理解的过程就是机器如何能够理解我们人类说话的,从中提取有效信息的,其实智能对话整个的嗯,整个的carburetor非常大,除了自然语言理解,还有包含对话管理和人员生成,
三、DM是什么?
当我们和机器人交流时,为生成一个回复,他需要了解我们。需要机器人保留对话状态,dollslove中间状态的管理整个模块,叫做店。DM是在维护计划状态的同时协助支持系统生成决策。作为接口和后端任务进行交互,比如假设用户是要调动一些技能或者是要靠第三方服务的,对话管理要知道触发这个行为的x,提供语义表达的一个期望值,必须把整个回复完全生成,最后回复给用户。用户的上下文和他语义核心表达加在一起进入我们的DM,DM决定下一步操作。
树和有限状态机的解决方案,每当我们机器人聊天,都是在他的一个数中间不断地转跳。或者是途中进行转跳,我们现在这个状态,如果上下文是这样,他就会到另外一个状态。机器人就是在途中不断转跳。
这个概念已经有很多年了,但大家都还没完全攻克,目前有很多团队开始回归到supports尝试利用数形和游戏状态机的方式解决,并且效果还不错。
经过12年supported,人类在研究盆子都被supported,这里有一些比如对话吉田草,只是把用户的对话当做是给我们提供信息的一种方式,然后我们就尽量的从中提取earthquake这样的信息,然后供给槽位。快乐引擎,我们现在评估都是通过感性的评估,就是找不同的人用同样的话测试模型。目前大部分的模型是没有办法很理性的去指导的,所以训练好的模型,如果不去试一试,是不知道他的回复的。但如果用了星期论的方法,我们其实就能确定他的回复是应该是这个还是有意义的。目前最流行的一些方式就是统计学的方式,只要体育课vip客户这个跑ssf这个pos系统包括目前很多人在研究的学习就reinforcement。400的方法,小孩学习有什么好处呢,就是当用户输入的时候有很多不确定的信息是用户未必会按照我们想的方式。使用我们的对话。
怎样能够用不确定信息找到合适方法建模呢,有人想到了强化信息对抗网络方式让模型不断学习,同时不断净化自己。这种方式的好处是我们可以把这些不确定性也一起考量了,模型会变得更聪明。这也是个很好的研究方向,大家如果对最快有研究的话,寻找课题的可以看reading这部分的发展。
为什么要打造腾讯智能对话平台就很产品?因为整个智能对话不涉及的技术太多了,而且都有一定的门槛,希望AI深入到各个行业,最好的方式就是简化环节,提高大家使用能力。
智能对话技术统一对外出口叫做对话机服务,就是希望大家可以通过简单的配置开箱就可以用。
整个俱全开发的全流程大概分这几步
- 流模型就定义 在控制台上输入简单信息
- 四个服务自动阅读模型自动变成模型,不需要懂深度学习是也不用写任何代码,它会自动帮你把模型去申请好。
- 提供给网页模拟器小程序和公众号进行测试和统一
当一切ok的时候,点击一键点击。就可以发布到公网上给所有人使用。
没有版本管理,使用时海量连接窗口,微信的公众号小程序,企业微信,还有各种h5的解决方案是深度整合的,几乎只要把一些链接,token放到平台上配置一下就可以做到一键接入,比如像公众号,只要扫码就可以关联上公众号成为公众号的智能助手。上线以后,我们会提供一个数据中心的功能,中心会显示之前运行的所有状态相当于测量差的倾向和脉搏。主动学习的机率也会在数据中呈现,不断的优化你的路线。
这一切都是建立在不需要非常理解智能对话的前提下使用就可以了。
平台的全景图大概分三层
- 一 针对一些核心技术,比如模型算法,意图识别,槽位收取等,包括多伦知识图谱。
- 中间一层是平台配置中心。里面分几个部分,比如针对开发者的多渠道发布。可以一键发布到小程序,公众号,移动的h5网页,物联网设备等。
- 底层是海量的机器人中间件的能力,包含多种类型,例如闲聊型问答,咨询文档型,基本所有常见的机器人平台都是经包含并且可以支持。 同时还有海量的个性化和人性化的开发工具。
最上面那一层是核,不同行业客户还有部门合作的一些解决方案,现在主动拓展的有金融教育,生活服务,酒店旅游。智能对话平台,也改变了开发流程,最重要的就是简化流程,提高效率,比如内置一些信息,像是需要使用一个全国城市的词典或者是某行业的词典,有内置的可以直接通过一键选择使用。
机器人一键开发以后可以在不同端同时使用几乎所有源的sdk,可以集成到小程序,这些都会关联到同一个机器人上。整体的解决方案通过扫码就可以接入。
四、怎样在tv上创建第一个机器人?
通过可视化对话的配置平台,只需要在这个平台上面输入一些简单的信息就可以完成兑换。当用户说哪一句话或者类似话语时会进入。如果当他的说法和配置说法,接近程度相似度达到一定程度的时候就会认为他命中,所以不并不需要他是完全吻合的。当说法命中以后,除了我们提取用户信息,还可以进行第三方调用,就是vs的配置的调用和回条,复杂场景时,比如当开发者希望回复店面信息,然后进入下一轮的话的时候,我们的平台也是很好的支持。例如任务型问法,问答型机器人看到时我们可以配置一些相似问题和答案,通过一键扫码的方式就可以用小程序或者公众号的智能客服。
在客服中间,机器人同时可以和客户进行闲聊,比如同时接听和对话两个人,然后完成一个多轮对话的任务,比如像订机票在任务中间,如果当用户有问题的时候,他可以跳脱出人,用qq问答精选回复一些问题,比如左边的托运行李的费用,可以显示出问答齐全,对用户来说,他完全不知道实际上在调哪种能力。为提高体验效果,让开发者可以更快的配置,左边是槽位。
槽位光亮就是当用户让配置用户刷卡的时候理论上如果允许从用户说法中提取一些槽位信息,需要用户在户收卡上面标注出来,标注这是一个槽位,当用户收到帮我订到北京的机票时说北京是个地址,这个过程非常繁琐,平台已免去此过程。
当用户配置完所有想要四点以后,不是选择内置四点以后,只要简单的输入非常自然的游戏,比如帮我订到北京机票,这本来不能做为一个说法的,但是我们会和智能引擎去判断,如果发现未替换成草,用户只要输入自然的语言或者导入一个海量语言,就自动把它练草字全部标注上。这大大提高了用户配置齐全的速度。
人们如何体验
大部分对话类似的产品,都是用从控制台上去体验这种方式呢,依托于腾讯的生产,微信很好的整合,可以在腾讯智能化平台体验小程序上非常容易的登录云账号,随后即可显示,所有在同样银行创建的机器人都会自动关联,就可以通过小程序去测试去体验,刚刚配置好了这个机器并且经济可以转化的,经转发分享获取资源和平台。
除了平台本身,我们还提供海量波特被子中间件的能力,我们的机全都能力,底层的比如任务型atqq点凹形知识图谱文档型,都可以通过平台对外进行输出,如果只是想要单一能力的用户,比如想要接一个闲聊型中,用户也可以直接通过我们的平台获得这个能力。
关键指标
开发者需要有一个客观的认识,目前我们所有的任务识别的准确率包括sq深度学习模型的命中准确率都超过95%,行业知识库,已经积累了超过10万个。任务型的延迟和ip的延迟都会小于100毫秒。性能还在持续优化,最终会把它优化到小于50毫秒,综合来说,性能非常优异,包含海量的数据,顶尖的算法,丰富的经验,最优化的接触体验。客户源也有很多。
旅游时会用到小程序其实背后就是使用第一批的对话能力。同时还有文理类,差旅类的,这样的案例,包括春秋航空深航的订票助手。还有香格里拉酒店的对话机器人,它可以帮助你订房间,预约出行和控制房间的设备。金融类包括中国银行,光大银行,中信银行减轻了人工客服的压力。
问卷
为了给广大开发者提供最实用、最热门前沿、最干货的视频教程,请让我们听到你的需要,感谢您的时间!点击填写 问卷
腾讯云大学是腾讯云旗下面向云生态用户的一站式学习成长平台。腾讯云大学大咖分享每周邀请内部技术大咖,为你提供免费、专业、行业最新技术动态分享。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。