Photo by Dominik Scythe on Unsplash
基于我自己在工作中接触到的,整理了人工智能行业中设计师需要理解的一些名词、内容。
一方面供自己学习思考,另一方面也希望能帮助到准备投入到人工智能行业的设计师。之前听有的朋友讲到,觉得自己没有计算机背景,有点害怕进入到这样个领域来。
没有计算机没有关系的,只要对这个充满好奇,一个个的问题解决掉,在你眼前的迷雾都会散去的。
先简单举几个人工智能在生活中有在应用的例子
像现在有的超市寄存物件,开箱时采用的人脸识别;像家里购置的智能音响,时不时还能跟它聊上几句;像接听到的银行电话(是的,对方可能是机器人噢);像在淘宝上咨询的客服小蜜;像你手机里的虚拟助手….等等这些都是人工智能在生活中的应用。
这几个例子是在生活中比较普遍能接触到的,实际人工智能应用的领域还在不断的扩大,我们甚至都无法想象到,未来的生活会是怎样的状态和场景。
在这家公司之前,我做过语音交互类的产品交互设计。当时在定义人与设备进行语音交互时,会是怎样的一个交互场景。从说唤醒词到发出指令,从收到反馈到继续对话。唤醒后等待的时间、结束的规则等等这些。
而现在,我大部分时间是在设计工具,如何让使用者能快速的创建出一个智能机器人。如何让机器人的创建者方便快捷的添加机器人的相关数据和创建出出对话场景。
所以在进行这些工具的设计之前,有些名词概念,会需要设计师来了解一下,能让我们更好的理解人工智能的一些原理以及能够让设计师具象化到实际的设计中,甚至能基于此技术/原理来进行相关的创新或研究。
整理内容如下:(内容基于工作及自身理解,如有概念理解错误,欢迎斧正~)
下面尝试用较易理解的方式来解释这些名词:
与机器人进行对话,首先就需要让机器人懂我们说的话,这其中,就需要来关注到自然语言处理,通过自然语言处理技术,能够实现我们与机器之间“无障碍”对话。
自然语言处理(NLP):是人类与机器沟通的中介,需要靠它来理解、处理和运用自然语言
自然语言理解(NLU):指的是机器的语言理解能力,将人类语言转化为机器可理解的内容
自然语言生成(NLG):指的是机器通过一系列的分析处理后,把计算机数据转化生成为自然语言内容,让人类可理解
我把这三者关系画了张图示,我是以这样的方式理解的
从图中可进一步看出,NLU和NLG是NLP的子集,而NLP是人与机器沟通中很重要的存在。
涉及到语音就会经常听到ASR和TTS...
语音识别(ASR):将语音内容转为文字
如微信里面,当别人发的语音信息不方便外放收听时,可以转为文字查看
语音合成(TTS):将文字内容转为语音
如现在很多的阅读软件,支持播放,有的就是利用TTS,直接将文本内容转为语音播放出来。
我试着将上面提到的NLP和ASR、TTS组合起来,关系可以如下图所示
当我们说一句话的时候,机器知道我们表达的是什么吗?
意图(Intent):一个人希望达到的目的,或者解释为想要做什么,他的动机是什么
如:
· 我对天猫精灵音箱说“声音太小了”,那我的意图是什么?意图是“将音量调大”。
· “看下明天上海飞北京的航班信息。” 直接意图:查航班信息,潜在意图:“买机票”?
槽位(Slot):可以理解为系统要向用户收集的关键信息
如:
· 买张明天从上海到北京的机票
上面这句话中,获取到意图(买机票);提取关键信息 时间(明天)、地点(出发地:上海;到达地:北京)、
这些关键的信息就是槽位,当系统获知到这些信息后,就能去执行下一步动作。
还可以这样理解,当我们去银行营业厅办理卡的时候,会填写一张表,表每个要填写的选项,就是一个个的槽位。槽位就是为你服务的人员要从你那收集的关键信息。
实体(Entity):用户在语句中提到的具体信息
· 实体这词放在生活中,我们很容易理解,就是实实在在的物体,像桌子、电脑、熊猫等等这些都是实体。
但是在人机对话中,机器理解人的语句内容,会识别出语句中的实体信息(如:地点、人名、歌曲名等),然后进行标记。
那槽位和实体是不是讲的是一回事?只是不同的说法?
我之前有一度陷入这样的困惑中,但其实这两者还是有所区别的。比如,一个实体是数字,但是在语句中,数字将代表不同的含义。
如:
人:有没有10元的鲜花? 机器人:玫瑰花10元一支 。
这句话中,实体number“10”,但这个10在句子中表达的是价格,所以收集到的槽位信息是价格:“10元”
这样说可能还是不太能理解,那我们可以先了解下,在一句表达中,需要进行槽位信息收集,但机器如何知道“买张明天从上海到北京的机票”中,“上海”是城市,并且“上海”是出发地呢?
“上海”这个词会被建立在一个城市实体词库中,这是“上海”能被识别到是“城市”的原因。
其次,通过将解析槽位加入语料中,加以训练让机器学习相关表述结构,来获知该句式中,收集到的第一个城市是出发地,于是把第一个城市填到对应的槽位中。
使用什么工具来让机器知道,这个信息是要提取的信息?
解析器(Parser):抽取/解析用户语句中的关键信息
· 上一个讲到实体,这里讲到的解析器则是这么个工具,用来抽取这些信息。比如会有些通用的解析器如时间解析器、城市解析器、歌手解析器等等。
解析器的类型也比较多,如通用解析器、词典解析器、正则解析器、组合解析器等等,这里就不再扩展开讲具体解析器,实在过于复杂了。
命名实体识别(NER):用来识别具有特定意义的实体。主要会包括像机构、地名、组织等。
是不是发现,解析器和NER在做差不多的事情?我是这样理解的,解析器的话是一个更大的存在,其中包括了NER。解析器下会有不同类型和不同功能的工具来实现关键信息的识别/抽取。
在我们与机器人对话时,一般会涉及到四个不同类型的对话,开放域的聊天、任务驱动的对话、问答(FAQ)和推荐。
上面是在有次分享中提到的,这四个不同类型的对话,在机器人平台中,会需要借助不同的功能模块来实现
。
任务对话(Task Dialogue ):有上下文联系,就像我们要去订票、订餐之类的一段任务型的对话。
我们公司产品中,任务引擎模块就是做这个任务对话的创建,比如,要订机票的场景。用户在这个订机票的场景中,会涉及到的对话内容、流程的设计。
知识图谱(Knowledge Graph):这个可以理解为可视化关联信息。
比如:查询一个明星的身高、年龄,他的学校、他的女友,他的相关作品,这些基于这个人而构建的信息库,都可以通过知识图谱在做整理。并且在构建时能够做到可视化的了解。
要让机器人知道,它脑子里有货了!
训练(Train):这个概念可以这样理解,比如你创建了个机器人,但是它什么都还不懂,于是你塞了堆知识给他,这时,它就需要自己训练学习了。训练好了,就能回答你塞的那堆知识里的问题了。
讲到这就忍不住想用这个学习的例子,来简单讲下一般机器人的创建流程。像我们在学校,会经历上课学习新知识-复习温习-考试-整理错题集,以此循环进行。
这个创建机器人的流程也是一样通过知识的导入/创建-训练-测试-优化-上线-优化,以此循环,不断强化机器人,让它越来越智能。
其他:
数据标注:将对话日志中的有价值数据做标注(标记/匹配/关联之类)。
因为人的表达万千,多种表达方式都代表的同一个意思。有时用户说了句话,是语料库中并不包含,于是机器人可能就答非所问了。
Ai训练师们就可以将这些数据信息标注到对应的问题中去,这样当用户再用同样方式表述时,机器人就能如预期回答了。
讲到标注想到之前在朋友圈很火的你画我猜,谷歌推出的这个小游戏席卷朋友圈。他们用了个如此聪明的做法,其实我们参与其中的做法就是在做数据标注,而且还是主动提供数据的那种。
这也反映了,数据对于机器人的重要性,通过不断的进行数据维护和补充数据,机器人就会越来越理解人的表达越来越智能了。就跟我们学习一样,不断学习才能够理解其他的含义,甚至当认知能力提升了,看待问题的角度才能不一样。
更为深入的名词,像分词、神经网络、深度学习等等这些,可以搜索Easyai 这个网站去了解。 还有很多词我不太能转为自己可理解的方式来表述。我也在继续学习中,欢迎一起探讨~
以上,
推荐网站:
https://easyai.tech 人工智能学习库
相关学习资料来源:
https://blog.csdn.net/IT_xiao_bai/article/details/81180513 浅谈自然语言处理和自然语言理解
《自然语言处理实践》