学习完UNIT配置教程,并成功配置完成一个机器人后,就可以进入到机器人的效果优化阶段了。
在进入正式教程之前,先回答一些常见问题:
1. UNIT能做什么?不能做什么?
UNIT的全称是Understanding and Interaction Technology,是处理自然语言的理解与交互技术平台,所以理解与处理文本对话是UNIT所擅长的。
UNIT不能处理图像、视频,但未来会引入语音转文字的技术能力,以提供更好的打包式服务。
2. 机器人要多少条样本,才能达到较高的对话理解水平?
这是一个比较个性化的问题,我们人类学习一门语言时,根据这门语言的难易程度,要付出几个月到若干年不等的努力才能够顺畅的用该门语言进行交流。
类似的,机器人针对不同场景下的语言理解,也需要付出不同量级的训练成本的投入。
以下是我们给出的不同场景的机器人达到较好效果的一些参考训练指标:
机器人场景 | 对话功能 | 样本数量 |
扫地机器人 | 识别客厅等地点,以及充电、休息等指令 | 100条 |
地图 | 地址、路线、导航命令识别 | 1500条 |
电视 | 找电视剧、电影,找热门、分类电影电视 | 2000条 |
造成以上样本数量差异的主要原因是不同场景下词语量级、语句复杂程度有较大差异,扫地机器人只有一些有限的指令,而地图场景更为复杂,有较大量的地名以及句法信息,电视场景的难点在于电视、电影名称拥有很大的歧义性,例如:《苹果》其实是一部电影,如果单独出现,很容易被认为是食物或者某品牌手机。
我们都知道中文是世界上最难学习的语言之一,因为中文词汇歧义性大、量级多,而且词与词之间没有天然边界,标点符号只能用来断句,而语言能力的掌握某种程度上也是机器人AI领域的皇冠,它比图像、语音难度更大,语言是一堆逻辑符号的组合,它天然的带有这个世界的逻辑信息,改变一个词,就会发生转义,而图像或者语音信息较为原始,不具备更深层次的逻辑信息,彩色图像改成黑白色,你还是能够看出里面的人和物,声调发生变化,你也能听懂说得是什么,这就是语言与语音、图像之间的差异。
3. 机器人能够举一反三吗?
UNIT的机器人是具备这种能力的,在其背后使用了一种名叫“深度神经网络”的技术,这种技术让机器人具备了一定的“认知”能力。
“认知”是指机器人在你所教授的语言场景样本下,它会加入自己的理解,会试图识别更多的没有见过的语句,所以它会给你带来一些小惊喜。
不过不用害怕,它还不具备“自我认知”这类高级动物才拥有的能力,所以目前它不会拥有“自我意识”的。 :)
4. 能否给一些机器人配置示例?
我们会陆续总结和公布一些已有的样例:
如何制作引导类型机器人(性格测试):http://developer.baidu.com/forum/topic/show?topicId=241582
机器人优化指南
目录:
1. 引言
2. 正文
2.1. 规则学习:对话模板集
2.2. 样本学习:对话样本集
3. FAQ
机器人既可以从样本中学习到举一反三的能力,也能够按你指定的规则一丝不苟的去理解语句,以下篇幅主要围绕这两个角度来阐述。
1. 引言:
规则学习与样本学习的区别:
a)规则学习
我们通过学习万有引力公式(公式中G为引力常量,m、M分别为两物体质量,r为两物体距离)来解答各种天体物理相关的问题,这种套公式的学习方法便是规则学习,而万有引力公式正是天体运转的一条规则。
这种学习方法的特点是规则固定,只能解答符合该公式条件的问题(例如微观量子领域则不适用于该公式),解答问题时只要将具体数值代入到公式中计算即可。
物理世界的规则可以用一堆公式来描绘,例如万有引力公式描绘了天体之间是如何互相吸引的、热力学公式描述了能量守恒的原理。
在自然语言领域,我们也可以定义一些规则,来描绘一类语言现象,从而让机器人像套公式一样,去理解语句的含义,尽管这样很死板,但却不容易让机器人出错。
b)样本学习
牛顿是如何发现万有引力定律的已经不可考察,但科学规律的总结有一套通行的方法,即观察大量样本(天体运行样本),根据样本进行总结推理,并提出假设(提出公式),最后验证假设是否成立。
机器人也是可以做到类似以上的主动发现学习过程的,机器人通过学习语言样本,并从中发现规律,最终运用该规律去理解语句,这与人类的认知学习能力十分类似。
2. 正文:
2.1. 规则学习:对话模板集
在自然语言领域,我们也可以定义一些规则或公式,来描绘一类语言现象,那么这些规则或公式也是需要“变量”的。
所以,在这里我们首先引入两个概念,即特征词与词槽(可以看做公式中的变量)。
词槽是一类词汇的抽象,我们为了表示这一类词,往往给其单独命名,例如:地名、人名、电影名等等,都是泛指一类词。
特征词与词槽类似,只是它偏重于抽象出一些通用的词汇,例如:请求类词汇“我要找”“请查询”“帮我找”等等。
特征词与词槽就像物理公式中的两个变量,它们组合在一块,便能组成一些有趣的句子,例如:我要找北京大学、帮我找星际穿越。
类似这样的语句组合有很多,为了方便,我们可以提炼出规则来描述这些语句:
我要找北京大学 -> [kw_wantkey][user_location]
我要找星际穿越 -> [kw_wantkey][user_movie]
有了上面的规则,再加上词槽里的词汇后,很多我们没有告诉机器人的语句,机器人也就能够举一反三了,例如:
[kw_wantkey][user_location] -> 帮我找清华大学
[kw_wantkey][user_movie] -> 我要看速度与激情
下面我们按照步骤,来演示一下如何配置以上规则,从而让机器人学会这些规则:
1) 首先,进入【对话单元】,创建好场景及意图、词槽
图1 创建“查电影”意图及“电影名”词槽
2) 其次,点击【数据中心】,点击右侧编辑【对话模板集】
图2 点击左侧数据中心
图3 点击右侧“编辑对话模板”
3) 先创建一个【特征词】
图4 点击右侧“新建特征词”
图5、6 创建kw_wantkey特征词并上传
图7 创建完成图示
4) 然后【新建对话模板】数据
图8 新建对话模板
图9 插入特征词及词槽,生成一条模板
模板规则可以自己写,如果发现下方有词槽和特征词,是可以点击插入的,插入后上面的方框便会出现对应的词槽或特征词模板文字。
5) 完成后开始训练
图10 点击训练并生效模型
图11 默认选择“生效全部模板”
6) 最后验证效果
图12、13 在场景bot对话中验证效果
总结:
1. 可以看到最终wantkey特征词与movie词槽的各种组合语句已经都可以识别出来了,并且我们没有标注任何一条样本,仅仅是配置了一条模板,以及上传了两个词表而已。
2. 通过这样的“规则学习”,我们能做到什么程度呢?UNIT内部做过一些测试,在天气预报场景下,仅需要10条模板规则,便可以做到90%的识别效果。
3. 模板规则是不是万能的?看起来模板比标注更省事,但这是在一个场景启动之初,到了后期,要让机器人具备更强的举一反三能力,还是要通过“样本学习”的方式才能做到。
4. 为什么我配置了模板,稍微增加或者减少几个字或者模板里词槽顺序改变下,机器人就不认识了?因为模板可以理解成套公式,公式是死板的,少一个变量都不行,所以模板也是有局限的。
5. 基于以上,如果要完全使用模板来做一个场景的识别也不是不可以,只是需要人工总结很多这样的模板公式,告诉机器人这些都可以套用,在这一点上机器人几乎不会举一反三。
2.2. 样本学习:对话样本集
机器人可以从样本中学习到规则,而不用人工指定或教授它,这样很自然地,当我们获取到大量场景对话样本时,教导机器人就变得相对简单了。
那么机器人是如何从样本中学习规则的呢?
UNIT机器人目前没有触觉、视觉、味觉与嗅觉,只有初步的“听觉”(未来会集成语音识别能力),它只能获取到文字信息,所以在UNIT机器人眼中,世界是由词汇构成的。
图14 UNIT机器人眼中的世界示意
在机器人的“大脑”中,这些词汇刚开始都是模糊不清、没有区别的,当你指定了一条条样本之后,词汇之间的关系以及句子的意图便慢慢变得清晰起来,机器便能够完成理解对话的任务了。
以下是如何利用场景Bot来训练机器人的步骤演示(还是以上面的电影查找为例):
1. 进入训练界面
图15 训练与验证
2. 跟机器人聊天,测试它的能力
图16 通过聊天教导机器人
3. 点击@或者直接输入@UNIT 修改意图以及槽位
图17 @UNIT
图18 修改意图、槽位
图19 修改后结果
4. 教会机器人某条数据后,我们可以在“数据中心”查看该数据结果
图20 点开“数据中心”里的默认集
图21 新标注的数据
5. 最后点击训练并生效(记得勾选默认集合)
图22 重新训练模型并生效
图23 勾选默认集
通过不断的进行以上聊天式标注操作,机器人的能力也会越来越强,如果用户有大量已标注数据,还可以通过以下方式直接导入并“批量一键确认”。
图24 新建对话样本集
图25 上传已有标注文件
图26 一键确认
总结:
1. 通过样本学习,机器人可以主动发现规律,并运用规律,从某种程度上来说,机器人的这种能力是曾经是人类所独有的。
2. 样本学习有什么需要注意的地方么?
机器人对样本的质量十分依赖,如果样本之间互相有冲突,意图不明确、槽位乱标注,会给它造成很大的困扰,所以一份意图明确、槽位清晰的样本十分重要。
3. FAQ
1)可以让构造样本的工作更轻松一点么?
可以。
UNIT已经拥有主动学习(Active Learning)的能力,后续会上线该功能,对用户体验来说,可以看到UNIT机器人会主动推荐数据给用户,用户只需要确认数据的意图和槽位即可,这样便可以节省用户构造样本的耗时。
2)场景Bot交互对话时,能否更流畅?且不用@UNIT就能自动识别修改意图和槽位
可以。
场景Bot本身就是一个机器人,我们也会对它不断地优化,最终达到自然流畅的对话便能教导机器人的程度,而不用手动@UNIT来修改意图和槽位。
3)一些场景是否可以复用或开放?以便减少大家富集数据的时间,例如:电视、天气等等场景。
会的。
UNIT会陆续整理及提供一些可复用的场景,需要的用户可以根据情况复用该场景的能力。
程序员没日没夜.
这个文章真的很实用!
这个教程很好
机器人学习非常值得
这个教程很实用...
程序员没有夜晚~
程序猿没有周末
嗯~这样才靠谱呀~毕竟用户不双休~周末最是活跃呢~
感觉很多企业都这样
嗯,百度就是这么靠谱,强大~
周末肯定要有人的呀~面试百度知道的时候,HR说分小组轮休~
刚好在做机器人这一块,大赞
他们周末都加班好像
楼主很棒,谢谢分享
越来越机械化,智能化的社会。。。
楼主的讲解真细致,收获好多呀~
支持 点赞一波
楼主辛苦了
不错!支持。
加油,为了更好的AI、更好的世界...
非常赞,能否分享一下天气的模版集合和样本呢?