首页  ·  知识 ·  大数据
万物有灵:人机对话系统解析
姜伟  DataFunTalk  实践应用  编辑:嘉木相思   图片来源:网络
说到人工智能,我经常会思考以下四个问题:人工智能是什么?通俗意义上来讲,如果一个机器具有人工智慧,我们称之为人工智能。在学术上,一个机器如果可以通过图灵测试,那么就称之为人工智能。

01. 人工智能简介

说到人工智能,我经常会思考以下四个问题:

1. 人工智能是什么?

通俗意义上来讲,如果一个机器具有人工智慧,我们称之为人工智能。在学术上,一个机器如果可以通过图灵测试,那么就称之为人工智能。

2. 人工智能的边界是什么?

我们通过人工智能已经在一些图像识别、人脸识别、智能语言处理、人机对话、自动驾驶等方面进行了一些探索,但是,在此之外,是否还有一些领域人工智能也是可以做的,其实这个边界大家并不是很清楚。所以,当我们在做人工智能的时候,经常这样反思也是有意义的,如果一个领域大家都在做,势必竞争压力会很大,如果在一个领域你是第一个进入者,你的先发优势必然会很强,而且可以改变更多。所以应该需要经常思考:还有哪些方面人工智能是可以做,但是大家仍然没有做,也就是人工智能边界问题。

3. 人工智能能否实现?

这个问题非常重要,如果一个东西压根实现不了,那么我们做它的意义是什么呢?我们相当于在一个错误道路上越走越远。对于人工智能,实际情况是这样的,在1950年的时候图灵就在其发表的文章中说明,人工智能是可以做的,人工智慧并没有我们想象得那么高深莫测,因为我们是人,所以我们才会觉得人的智慧与生俱来就是高深不可测的。就如几百年前,人类认为地球是宇宙中心,地球是一颗神秘不可测的星球,现在才发现,地球只是宇宙中的沧海一粟,并没有那么神秘。人类智慧其实也是如此。再举一个例子,我们认为心脏是人类最重要的器官之一,但是现在心脏起搏器等慢慢在普及。所以,人工智能并没有人类想象得那么高深莫测, 1950年的时候图灵就指出“人工智能是可以实现的”。

4. 人工智能的实现途径有哪些? 

在座的各位大多数都是从事计算机学科的,所以我们理所当然认为,计算机学科可以实现人工智能,那么这个答案是否是肯定的呢?我觉得这个答案是不确定的,因为人工智能可以通过各种学科来实现它,包括我们所说的脑神经科学、物理、化学各都可能实现人工智能。只不过是,根据目前的发展形势来说,计算机学科是最有可能实现人工智能。未来是否也是如此?不一定。

我们知道飞机的发明历史,刚开始大家通过模拟鸟的飞行,制造各种各样的翅膀,希望可以将带人带上天空,但是后来发现这条路是行不通的。莱特却从动力学的角度制造出了飞机,所以我们在实现人工智能的时候应该多多反思,计算机学科是不是唯一的实现途径,有没有更好的学科去实现人工智能。

接下来回顾一下人工智能的历史,首先,1950年图灵在《 Computing Machinery and Intelligence 》这篇文章中回答了图灵测试和机器是否能够思考的问题,并解释了人工智能的目的及发展方向,而且驳斥若干反对观点。这是一篇非常经典的文章,50年代的文章和我们现在的文章的写作风格完全不一样,建议大家有空的时候最好看看这篇文章。它对人工智能的道路会有很多启示,像一种指明灯一样帮助我们探索人工智能领域,也会激发一些研究兴趣。其次,1984年 L,G.VaLIANT ACM 通信发表的《 A Theory of the Learnable 》中指出:什么是学习?学习能力是什么?一个机器要学习应该具有哪些属性?这两篇文章垫定了人工智能的理论基础,相当于一个指明灯。

在具体实现技术方面,最值得说的是神经网络之父 Geoffrey Hinton 于1986年发明了反向传播 ( Backpropagation ),他的学生 LeCun 于1989年发明了 CNN,Yoshua Bengio 于2001年发明的基于神经网络的语言模型, Geoffrey Hinton 于2006年提出解决梯度消失的方法,Geoffrey Hinton 的学生 Alex Jrizgecshy、Ilya Sutskever 于2012年发布 Alex 模型。正是由于这几位大师的努力,才有我们今天的人工智能和深度学习这样大好的局面。由于他们做出了很大的贡献,所以在2019年他们也荣获图灵奖,图灵奖是我们计算机领域最高奖,也是每一位做计算机学科的人的最高成就。

今天我要讲的主题是人工智能的一个分支-人机对话,人机对话是基于语音语言技术,说到语音语言技术,实际上有五个基础的应用,这五个应用即为通常所说的“听、说、读、写、译”。

听:机器将所说的话转化为可识别的文本,即为通常所说的 ASR。

说:将所说的话按照指定的音色播放出来,称之为 TTS。

读:让机器去理解一篇文章,机器通过理解文章去回答问题,现在特别流行的机器阅读理解就是在做这方面的。

写:让机器人来写诗、让机器人来写文章、让机器人来写摘要。

译:就是翻译:如 Google 翻译、百度翻译等,可以将一种语言转化成另外一种语言。

image.png

目前,这五大应用发展到什么阶段了呢?

我个人观点是,“听”和“说”截至到目前为止已经基本解决了,除了在一些特定的场景还解决不好外,比如说在“听”的时候,会有一些方言、远、吵(即噪声特别大)等场景,一般在通用的场景下基本已经解决得非常好。“说”在前两年,让机器人说特别正的音色是件特别难的事情,但是截至到今年为止,已经基本解决了,你只要给一段你说的话,机器人便会模仿你说的音色立刻读出来,跟你自己说的一样。“读、写、译”还在发展当中,要达到真正场景下的应用还需要在座的各位一起去探索。

刚才已经谈到了人工智能和语音语言技术,那么它们之间有怎么样的关系呢?

语音语言技术包括自然语言理解技术只是人工智能领域的一个分支,人工智能领域里面有视觉和图像识别、语音识别、自动驾驶及自然语言理解等各个子分支,那么,自然语言技术这个分支到底重不重要呢?实际情况是这样的,比尔盖茨曾经说过:“语言理解是人工智能皇冠上的明珠”。最近还有个关于比尔盖茨的参访,问道:如果这个年代是你正年轻的时候,你最应该从事哪个方面?比尔盖茨的回答是:“语言理解方面”。因为语言理解是一个非常大的商业机会,所有能产生对话的场景都可以使用自然语言技术,无论这个对话是文字对话还是口头对话,无论是客服、酒店,还是餐饮等场景。只要有对话的场景,就可以融入自然语言理解技术。这绝对是超过搜索、O2O、电商的机会。如果这块能够做好,那人类的生活将会发生翻天覆地的变化。沈向阳博士也说过:“懂语言者得天下”。

目前,大家已经达到共识,计算机实现人工智能要分多个阶段:

第一阶段:运算智能,希望机器具有非常大的记忆、计算能力,有非常强的CPU、GPU,还有非常大的存储,这就是第一代计算机运算时代,它主要面向的是运算方面的。

第二阶段:感知智能。让计算机有听觉(能够识别你说的话)、有视觉(比如摄像头,计算机可以识别出前面的画面)、有触觉(通过触摸屏幕上的按钮,它可以做出反馈)。

第三阶段:认知智能。计算机理解和运用语言的能力。目前我们正处于这个阶段,还没有完全突破。

第四阶段:创造智能。计算机利用现有的条件、想象力、验证推理等提出一些新的理论来指导实践。这也是我们最终想要达到的目标,计算机不仅能很好地解决运算智能、感知智能、认知智能,还能创造智能。

说到自然语言理解,我们公司开发了一套相关的技术,具体如下图所示,底层是深度学习、传统机器学习 ( 条件随机场、最大随机场、隐马尔科夫模型 ),也包括语言学家提出的语言学方面的技术,基于这些理论我们会做很多方面的应用,包括分词、词性标注、关键词分析、肯定否定判断、言外行为分析、句式识别等。也就是说,深度学习和机器学习是底层,要做自然语言理解需要在上面开发一些具体自然语言方面的技术,包括多个模块。

image.png

另一个比较重要的是意图识别,每家做语音语言技术的公司都会做的意图识别,也可以把它看做是一个分类问题。第一代主要是词袋模型或 tfidf + sklearn 中封装的一些分类器。第二代主要是 word2vec、glove+cnn 以及 RNN,第三代是 bert+transformer。还有一个基础模块的是 NER 实体识别,它主要用来识别比如城市名、地名以及歌曲名等,从而来支持上层各种应用,比如歌曲点播、天气查询。

总结下,这部分主要内容有:四大拷问 ( 人工智能是什么?人工智能的边界是什么?人工智能能否实现?人工智能的实现途径有哪些?),两个理论先驱 ( 图灵和 L,G.VaLIANT ),深度学习三巨头 ( Geoffrey Hinton,Yann LeCun,Yoshua Bengio )。五大语音语言技术应用 ( 听说读写译 ),四个发展阶段 ( 运算、感知、认知、创造 )。

02. 人机对话系统(总览)

上述主要介绍了人工智能的发展历程以及抛出了几个值得思考的问题,接下来我要阐述一下我们公司是如何做人机对话系统的,它的总框架及一些重要子模块的具体情况。

人机对话系统的发展历程分四个阶段,第一个阶段是2011年10月份在 iphone 手机上语音助手,但是那个语音助手当时能力很弱,当时体验了一下,它能听懂你说的话,但是无法理解你说的话的意思,它只支持一些非常简单的功能如“打电话给XXX”,大部分人用它并没有切实感受到有多强大的语音助手功能,而只是玩玩它,调戏它,看看它有什么样的反应。接着到2014年的时候,微软做了一款聊天机器人-微软小冰,可以在微信公众号里面关注它,它主要用于闲聊,比如你问小冰:“今天星期几?”小冰可能不会直接回答星期几,而是回答“今天是星期一到星期日的某一天”,所以小冰主要用于闲聊。2014年11月份,Amazon 推出了一款跨时代的智能音响产品 Echo,在国外非常火,对 Amazon 的业务有非常大的推动作用。在国内由于某些原因,见的比较少。Echo 是一款专注于任务型的机器人,即专注于在特定场景做一些具体的事,比如国外人都喜欢让它播放歌曲、听新闻及查询天气,正因为 Echo 在国外非常火,国内的巨头也纷纷进行了部署,像2017年天猫精灵的发布,2018年3月份小度的发布,包括2018年4月14号的腾讯叮当的发布,这三家公司的产品的面向用户群体主要是成人,让智能音响帮助用户想做一些有用的事情,另外,里面还有一些闲聊以及各家自己的特色,比如天猫精灵可以用来充话费、购物等。

image.png

语音语言技术和人机会话系统之间有什么关系呢?

实际上,搭建人机对话系统需要借助语音语言技术,主要的应用场景有:智能客服系统、呼叫中心、智能音响等。

必须注意的是,开发人机对话系统与传统软件系统有很大区别,人机对话体统具有不确定性、不可控性、弱反馈性。

1. 不确定性

由于每个人的说话方式、年龄、性别、地域、口音等方面都有差异,所以语音识别的准确率不是百分之百的,导致输入具有不确定性,即使语音识别结果可以完全确定下来,要识别每个人说话的语义,深度学习也很难做到百分之百的准确,这也导致我们输入的不确定性。而传统软件,在一个界面上点击了哪个按钮、查看了哪个页面,页面是打开的还是关闭的,都是非常明确的。

2. 不可控性

传统的软件开发会弹出界面指导我们这一步干什么下一步干什么,非常可控的。但是,人机对话系统却没有这么多确定的规则,用户随时都可能从“我要听音乐”跳转到“我要查天气预报”、“我要订酒店”,“我要***”等,也即中间任何事件、任何地点、任何任务都是随时变来变去的。

3. 弱反馈性

传统软件的反馈是非常明确的,我们用眼睛可以直观感受到某项错误是操作错误还是404错误,还可以点帮助文档获取更多帮助信息。但是,当你在使用一款智能音响时,有时一直没有反应,其原因可能是网络问题、音响自身硬件的问题、音响没有识别到所说的话语(把用户所说的话当成了噪音),具体原因是很难直观感受到,所以反馈是很弱的。正因为此,现在有这样一个趋势,很多公司为了提高用户体验,提升反馈性,推出带屏幕的音箱,将用户所说的每一句话识别成文字并显示在屏幕上。

在打造一个人机对话体统产品的时候,应该怎么做呢?我个人觉得需要同时考虑三个方面的因素,不断迭代的技术、好的产品设计以及好的产品体验。我们从数字的角度进一步刻画一下,假设一个人机会话系统有10个步骤,每一个步骤的准确率都达到99.99%,把这些准确率连乘起来总共只有90.4%的准确率,还有10%是人机会话系统识别不了或识别错误。如果我们不精益求精,每个步骤的准确率只能达到90%,得到最终的准确率只有0.349,有60%的情况下人机会话系统是处理不好的,可见差距有多大。所以我们需要对各个模块精益求精,才能让用户体验到最终那1% 的提升。

接下来,我们讲述人机对话系统的构成。如下图所示,所有对话系统都包含输入输出,这里的输入可以有三种方式:触控(带屏的会有触控界面,其处理流程如下图图中红色的线路,触控的操作方式与传统软件的操作方式是一致的,会有个反馈),另外两个输入方式是文本和语音,智能产品(也可以是公众号,app 等)接收到输入后会进行语言理解、对话管理、自然语言语言生成 ( NLG ),最终将 NLG 结果反馈给用户,最终的反馈形式取决于产品形式,如果你是个公众号可以直接返回文本,如果是智能音响,需要语音合成甚至需要在屏幕上做一些提示,这就是人机对话系统的基本构成。

image.png

技术实现流程如下图所示,将用户说的一段话或者是用户输入的一段文字作为输入,首先经过纠错、去除无用符号等预处理操作,Question Rewrite 对用户所说的话进行补充改写操作 ( 如补充省略部分 )。接着,输入到 Conversation Understanding 中来提取用户输入中的各种有用的信号,包括 Topic、Speech Act、Emotion、Memory 及 Memory Network,为后面的流程起到辅助作用,其中,Topic 是指谈论类似音乐、美食、体育等相关的主题;Speech Act 是指用户表达的言外之意,比如:“是的”、“不是”是 confirm 信号,表示对一个问题的肯定否定回答,“北京怎么样?”是 request-info,表示是一个询问;emotion:指用户说的话带有何种情感,用户是在骂机器人还是在夸机器人;memory:指记忆相关的信息,比如用户画像,兴趣,星座,年龄等。接下来,对用户所说的话进行领域和意图分析。最后,进入 Dialog Controller 阶段,各个子模块根据前面各阶段的信息汇总来判断是否给出响应以及给出什么响应,Rank 对多个子模块的结果进行排序,选择最佳答案,最后通过 Response Rewrite 把最佳结果进行一些后处理然后反馈给用户。其中,Memory 和 NLP 属于系统基础模块,memory 主要是存储记忆(包括长期记忆和短期记忆,长期记忆是指不会发生变化的信息。短期记忆是最近的状态,可能因时间发生变化的状态)和用户画像信息,用户画像包括对话人(即用机器的人)的画像和机器人画像(包括机器的年龄、性别等信息)。

image.png

03.  人机对话系统(各模块)

1. 闲聊

闲聊可以建立人与机器人之间沟通、信任,在聊天中对用户进行画像(可主动提问或抛出话体,是人机对话系统区别于搜索引擎的一个重要特征),从而获取用户的兴趣爱好及各种相关信息。此外,“闲聊”给予用户情绪慰藉,并成为用户的陪伴为他排忧解难。统计我们后台数据显示,最喜欢使用闲聊的客户有三类:小孩、失恋的人以及比较孤独的大学生、具有调戏动机的人(用户会把机器人当做一个18岁的美女)。以下是三张是真实的聊天记录(如下图所示),方便各位体会闲聊的用途。

image.png

闲聊的实现方式有那些呢?主要有三种方式:

(1)基于检索模型:通过检索的方式在语料库中找到最相似的问题,将答案从语料库中查询出来。此方法的缺点是答案局限于语料库,优点是具有较强的可控型和可解释性。

(2)检索+深度学习的方法:将检索出来的结果作为候选集,再通过深度学习的方式进行处理。深度学习又包括两种模型:QQ 模型(比较问题和问题的相似性)和QA模型(比较问题和答案的相似性)。通常以 QQ 模型为主,QA模型为辅。

(3)基于生成式的模型:它主要充当是一个辅助的功能,在上述方法返回的结果可信度不高的时候使用,它的缺点是:解释性不强,返回出答案不可控,没什么特色,优点是:它不受语料库的限制。随着技术的发展,我们会加入部分上下文、topic 来引导生成模型的答案。

2. 知识问答

知识问答就是问一些比较常识性的问题,比如“姚明有多高?”“美国的总统是谁”类似这样的问题。知识问答的实现方式有两种,一种就是基于无结构化数据,比如网页,另一种是基于结构化数据。基于无结构化数据进行知识问答请参考其他文章,搜索引擎技术流派偏向于这种方法。基于结构化数据可以构建知识图谱来实现知识问答。我们的结构化数据主要包括通用数据:来自虾米音乐、百度百科等,专用数据:来自某个特定领域。一些2B项目需要在通用数据库基础上叠加专用数据库。我们将最终抓取的大概1亿条数据存储到自己的图谱中,数据展现出来情况如下图所示,每一个点代表实体,实体与实体之间如果有关系就用线连接起来。实体通常还具有若干属性。

image.png

知识问答的两大难点:知识图谱的创建和将用户输入转化为知识图谱上的查询语言。具体实现的流程如下图所示,主要包括两阶段,第一阶段是处理较简单的介绍性的知识问答,如输入只包含一个简单的实体,且 intention 为 introduction 。第二个阶段:处理相对复杂的知识问答。先进行实体识别(可能多个),然后进行属性识别(如姚明的身高,身高在我们这里就是一个属性),最后进行类别判断 ( 共有四个类别:Relationship,Implication,Selection,Introduction ),这些类别可以根据业务和项目扩展和定制。

依据上述提取的信息作为中间结果,将这些中间结果翻译成图谱查询语言,最后返回知识图谱查询结果。

image.png

image.png

3. 任务/技能

技能包括:数学计算、成语接龙、词语接龙、查询天气等,它的处理流程如下图。


image.png

目前大多数智能音响的技能还是较简单的,主要包括单轮和简单的多轮。主要借用意图识别和实体识别技术就可以实现,其中听歌的技能较复杂些,主要是因为海量歌曲名和歌曲标签的实体识别。

在一些2B业务中会涉及到较复杂的多轮技能,比如保险售卖,订酒店等。其中涉及到省略、推理、指代、多轮上下文处理,每一个公司都有自己的算法和技术手段。我们一般在闲聊方面不会做太多有关多轮上下文的工作,因为客户本来就不期待机器人回答比较专业的问题。多轮上下文在一些具体的专用子场景下是可解的,要解决通用场景下多轮上下文仍是个悬而未解的难题。专用子场景中,我们主要采用技术手段是是 Frame Tracking 技术。

如下图所示一个基金查询业务场景,我们会 track 每轮对话涉及的信息:Company,Manager,Product 三个信息,并根据上下文补全填充。然后根据当前的意图 ( Current_Act ) 进行处理。

image.png

4. 记忆

记忆是增强机器人与客户之间的联系,是机器人进入商业价值的重要手段。之所以这样说,是因为现在的商业变现的一个重要手段是推荐,无论是今日头条推荐还是医院推荐都涉及到,如果想在人机对话系统里面做一些商业变现,也需要用到推荐、用户画像及记忆,所以记忆是非常重要的,记忆也是机器人实现个性化推荐的必由之路。

一方面:我们对用户输入,进行实时在线信息抽取,获取用户的喜好、星座等25+维度信息,作为用户信息 ( User Graph )。

另一方面我们离线数据挖掘,抽取用户的 Interest Cloud。

具体技术实现如下图所示。

image.png

最后,User Graph,Interest Cloud 和知识图谱 knowledge Graph 三者,实际上可以建立起来关联关系(见下图),辅助后续的各类推荐和个性化回复,比如在聊”topic=星座”的时候,更加偏重回复包含用户的星座的信息,谈论“topic=明星”时候,更加偏重用户喜欢的明星,比如 周杰伦的信息。对于用户的请求:我想听歌。可以优先播放用户喜欢的明星的歌曲。

image.png

总结和展望:

人工智能未来还是非常非常值得期待的,它将极大改变人类未来,因为 AI 提供了一种特征表达、使用数据达到目标的通用学习能力。它为人类提供一种新型的解决问题方式,传统的方法是:数据+算法→结果,AI 是:数据+结果→算法。

我们可以憧憬:

“今天的小孩已经是触摸一代,当他们看到一个平面,都会认为是可以通过触摸来进行交互的。再过几年的小孩,会是语音一代,他们会认为所有物体都是有耳朵能说话的。不管是灯还是玩具,还是汽车。那会是一个很不一样的世界,一个万物有灵的世界。”


本文作者:姜伟 来源:DataFunTalk
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的