俞凯关于自然语言处理中的认知计算的主题演讲

描述

思必驰联合创始人、上海交大教授俞凯在机器之心和  Comet Labs 联合举办的「Interface 智能机器系列活动」上做了题为《自然语言处理中的认知计算》的演讲。

1)首先,俞凯教授对自然语言处理与对话系统的基本概念进行了深入解读,强调了「交互」的重要性;

2)分析了人工智能与认知计算的概念和关系,介绍了如何通过交互架构的重新设计来解决交互层面的认知问题;

3)讲解了与自然语言处理相关的认知计算进展,包括如何通过传统方法和深度学习来解决特征表达问题,用 RNN 和  LSTM 来解决记忆遗忘问题的技术原理,并对序列级的编码器-解码器架构进行了重点讲解;

4)介绍了解决聊天、问答、任务型口语对话三类对话问题的认知计算技术 ;

5)最后,俞凯教授介绍了自然语言认知交互的未来,并表示,围绕这个问题,思必驰会在今年年底提出一种全新的理论研究框架。

俞凯,思必驰联合创始人兼首席科学家,剑桥大学语音博士,上海交大教授,IEEE 高级会员,***计划」、NSFC 优秀青年科学基金获得者,上海市「东方学者」特聘教授,中国语音产业联盟技术工作组副组长。清华大学自动化系本科、硕士,剑桥大学工程系博士。 2012 年在上海交通大学创建智能语音技术实验室,将人机口语对话系统的全面技术引入回国。在人机口语对话交互的主要核心技术领域进行了广泛研究,在国际一流期刊和会议上发表论文 80 余篇,获得 ISCA 颁发的 2008-2012 Computer Speech Language 最优论文奖等多个国际期刊和会议优秀论文奖。俞凯多次担任 InterSpeech 等国际会议的对话或语音处理领域主席,多次在美国国防部、美国国家标准局组织的大规模语音识别评测,国际研究机构组织的对话系统挑战赛等国际评测和竞赛中获得冠军,2014 年获得中国人工智能学会颁发的「吴文俊人工智能科学技术奖」进步奖。

思必驰,国内唯一一家专注于智能硬件领域的智能语音方案服务商,团队成立于 2007 英国剑桥,2008 年回国落户苏州后一直从事于智能语音技术研发,2014 年之后全面专注于智能硬件企业的语音交互技术。目前已经在车载、家居、机器人领域进行了全面战略布局,并与小米、YunOS、阿里小智、高德、海尔、魅族、庆科、君正、联想等一流企业达成合作,并先后获得两轮融资。思必驰受到市场青睐的背后,依托的是强大的技术研发实力,这得益于其与上海交大联合成立的智能语音研究实验室,该实验室由俞凯负责。

今天我分享的主题是语言。我自己在剑桥大学待了 10 年,前 5 年做语音识别方面的研究,当时和美国人去 PK ,在美国国防部电话监听的项目里面去看谁的语音识别率高。而后 5 年,我做的是另外一件事,是对话系统研究,这个不同于原来的语音识别。我回到国内之后,包括我在做研究和企业创业过程中,很多人都介绍我是搞语音识别的,我每次都要做一个补充纠正。今天很高兴,这可能是我回国第一次,据我所知恐怕也是在国际上第一次有人来仔细的讲,我们这些从语音出来的人是从何种角度来做自然语言处理的,而且为什么说我们这个角度,被称为「对话」,是殊途同归的全新人机交互的未来。之后希望大家记住我们所做的东西叫语音交互。

今天演讲有四部分,前两部分我会讲什么叫对话,它和自然语言处理是什么关系,今天的主题叫做自然语言处理中的认知计算。什么叫认知?自然语言处理里的认知和自然语言处理是什么关系?它有什么不一样?如何在人工智能的框架下来研究?

后面两部分是讲:1)近期,尤其是深度学习发展起来之后,和自然语言处理相关的,对认知计算产生重大作用的一些工具,这主要是指理论工具的进展;2)在自然语言对话方面,我们在实践和研究中做了哪些工作,方向是什么。

一、自然语言处理与对话系统

自然语言处理是一个很传统古老的学科,国内外在讲自然语言处理时基本是沿着语言学这条线,因为自然语言处理最早是由计算语言学专家提出,现在自然语言处理领域的顶级国际会议也都与之相关。从语言学的角度来说,自然语言处理的典型任务有:分词、词性、句法分析和语义分析。 

语音交互

在近二十年,从应用角度研究自然语言处理的人逐渐多起来,因此,出现了许多人用机器学习去研究自然语言处理。但是,近二十年的主流仍然以语言学的元素为核心,同时采用机器学习的方法去研究。应用的任务中,最典型的是1)命名实体识别,比如说联想之星(注:演讲所在地)这是一个命名实体,它不是一个人,我们把它识别出来;2)文本分类和信息检索,这在谷歌和百度相关搜索应用里非常多;3)最典型的一类是机器翻译,统计方法在这一类上的应用非常多。但是近二十年的前段时间,研究主流都还是借助语言学相关元素,基于语言学的相关规则做翻译,比如说要先把句子的顺序搞对,然后再做单词的翻译,等等。

我们今天所讲的是一个新的话题,移动互联网带来了一些新的语言智能,这个智能就是交互。我们通过一段 Siri 的视频了解一下 ,今天演讲中会大量使用 Apple 的视频,因为它是一个先驱,它的发展历史反映了我们对自然语言处理理解的不断进化的历史。

从 2011 年 iPhone 4s 发布时介绍 Siri 的一段视频中可以明显的看到一个很重要的特点,就是交互。移动互联网出现后,自然语言处理进入到一个需要考虑交互的新时代,此时的传统处理技术遇到了很多不能解决的问题。最初苹果公司也没意识到这个问题。

语音交互

上面这个图代表了 iPhone 交互进化的历史。最开始是智能电话,前两代没有语音交互的,之后他们做了一个市场调查,发现 75% 的人希望有语音控制,后来就在拨号和导航功能上加上了语音控制,但发现经常使用的人不到 5% ,于是他们开始反省为什么是这样,不是想要语音吗?怎么不使用了?他们后来得出的结论是,用户不单单需要语音,而是要把机器当成一个 Agent ,要用自然语言和机器进行交流,这样的东西人们才会用。而他们这些思考的结晶就是后来 iPhone 4s 上的 Siri ,发现 87% 的用户每个月都会使用一次 Siri,这时我们发现:语音不能简单的作为键盘替代品,它需要变成用自然语音和语言交互的手段。后来又发现一个问题,用户的绝大部分是在调戏siri,是没有与Siri 进行真正有目的的交互行为的。于是,他们就开始考虑再往后的未来是什么?我的一个朋友,Jerome Bellegarda,苹果公司的 Distinguished Scientist on Human Langage Technology,在 2013 年的国际会议上和我谈起,需要用一种新的途径去衡量语音功能的好坏,要去看整体的完成率是不是足够高。语音也好,语言也好,最终要看几个轮回交互过程之后,是不是能够完成用户的目标。

而这里就立刻出现了一个问题,我们在原始情况的语音控制是单轮的,比如说开灯这个命令,但一个单轮命令在自然语言的情况下是无法满足人类需求的,所以必须要多轮,这也是为什么苹果在 2015 年收购了 VocalIQ,它专门研究基于统计的对话系统,苹果希望用他们的研究来打造下一代 Siri,所以苹果现在在欧洲招了很多人专门做多轮交互方面的研究。这之后,Siri 原来创始团队的人就离开了,他们出去创办了一家新公司,就是最近新闻比较多的 Viv,而这家公司讲到一句话「Conversational interface to anything」,第一个词就是「对话式的」。

大家可以从苹果整个进化发展史中看出,他们把语音和语言引进来,得出两大结论,1)要自然;2)要有交互。这就是为什么说自然口语对话是自然语言处理中的一个新兴任务,我前面提的搜索、翻译等都没有。因此,除了苹果一家,之后 Google  Now 推出来了,2014 年微软有 Cortana,还有最近亚马逊的 Echo,不管是哪一种,它们都是助理,而助理的核心特点是要通过交互去理解用户的意图并完成任务,并且一定要用自然语言交互。

而这也是我们思必驰在做的事情——语音对话交互技术的整体解决方案,而不是单纯的语音识别解决方案。

语音交互

需要注意的是,语音识别加上传统的自然语言处理,并不等于语音交互,这是因为在真正解决对话时,传统的自然语言处理不能够解决对话当中的一些新问题,比如说一些认知计算的问题。

因此,对话不是传统的自然语言处理,它是一个新兴任务,事实上在一个系统里面,不同类型的对话,采用的技术是千差万别的,一个商业级的系统往往要采用这些技术的组合。而对于研究来说,则必须当成几种基本的不同类型分别去做,因为对话是相当复杂的,大体可以分成三种不同类型:

语音交互

第一类型是问答。这类对话的特点是,1)单轮的,往往是一问一答;2)非结构化,没有办法用一种数据库、语义槽的方式去表达。一问一答的方式往往涉及到后端的知识搜索,以及在回答中的匹配。

第二类是聊天。问答是要完成任务和提取知识点,有非常明确的信息需求,而聊天的情况千差万别,因为很多时候是没有问题的。从本质上讲,聊天是人类复杂交互的一个非常集中的体现,这一类任务是最难的也是最容易的,说最容易是没有正确和错误,只要有意思就行了;最难是指,用现有技术去做可控的聊天是不可能的。

第三类是任务型对话。所有东西都是以任务为核心,所以它有一个本体的概念,问答里面绝大情况没有本体概念,在任务型对话中,你可以把很多信息形式化,最极端的例子就是把它变成一个数据库的查询,通过交互不断去做结果更新。复杂一点的话,开放的领域和语义槽有很强的模糊性,这些东西也是需要处理的,但无论如何,它们都是有直接的最终目标。第一类的问答不一定有直接最终目标,它只是获取一次信息,而任务型对话绝大部分都是多轮的。

未来要把对话这个事情做好,那一定是以上三种类型都做好了,但这种可能性很低,一定是先有一些东西,然后再补充其他东西。

下面是一个关于 Siri 的恶搞视频,从里面你会发现我们所希望的智能机器是怎样的,这里体现出人类对真正能够产生智能反应的机器的认知。

从这个视频可以发现,里面这个 Agent 和我刚才谈的东西有一个飞跃——它是「自主的」,一个真正未来可对话的 Agent 不单单需要交互和认知去完成任务,还需要有自主意识,这才是拥有真正自然语言智能的一个比较完整的机器,它真正变成了一个大脑,我们现在还走不到这里,但是我们如果想要走到这儿,还需要很多的途径。

从业者都知道,但凡是自然语言处理的东西,它简单的一面是,你总可以通过写规则达到一定效果,只要在你写的规则范围之内还是会表现的非常好。但让我们非常感兴趣的一件事情是,我们想要做的技术是要把规则上升到统计,一个不能在大数据里学习的技术,它绝无可能发展到去进行自主决策和交互,因此我们下面谈到的将是,人工智能和认知计算之间到底是什么关系?我们是不是有一些办法可以把刚才我们所说的和对话相关的东西逐渐变成统计?以及在这个路径上我们会碰到什么样的问题?下面就是在这个过程中我们碰到的问题及初步解决方案。

二、人工智能与认知计算

说到人工智能,「人工」比较好理解,但什么是「智能」,人工智能有两条线,一条线是人的右半脑,属于情感智能;另一条线是人的左半脑,属于逻辑智能。这里只说逻辑智能,因为要完成任务。逻辑智能从低级到高级,包括了计算存储;感知和表达对应的输入输出,就是听说看闻触行等;认知智能,主要是理解、思考、反馈和适应(即今天所讲的认知);以及最高级的抽象知识处理智能,这里不涉及原子概念的模糊,往往是在一些已经形式化好的东西上去做分析、推理、归纳和演绎,像 AlphaGo 基本上是这个阶段的智能。

语音交互

这大体上是人工智能的一个框架,我们所说的语音识别是在感知智能;语义理解在感知智能和认知智能之间;对话的交互控制是在认知智能;问答系统后面的知识分析和知识图谱处理,一部分在认知智能,一部分在抽象知识处理智能。

语音交互

而我们现在比较关注的是,移动互联网当中的人机对话,我们叫自然口语交互,和此前的自然语言处理不同,它最大的认知特性是不确定性。比如上图中「等周二许春来到苏州后约他九点钟在九寨沟喝茶」这句口语表达有很多歧异的,需要结合上下文才能准确理解。另一方面,人在口语传递时一定不会给你一个特别完整的东西,认知科学里面有一个道理:不确定性和效率是有直接关系。不确定性比较高,效率就比较高;不确定性比较低,效率就比较低。你想要不确定低,你就把所有的信息毫无混淆的说出来,这时就需要用很长的文字编码,编码效率非常差。反之,传递很少的信息只需要很少的文字编码,效率高,但信息的不确定性也高。而人类的口语交互都是试图采用最低的不确定性实现最高的信息传输,必然会有不确定性。

交互中除了文字内容本身的不确定性,还有交互过程中产生的不确定性,因为用户要求交互「要快」。比如大家以前都看过「山东高速纠正哥」的那个视频。在这个视频中,绝大多数的人第一反应是语音识别不准,但真正的问题其实是在于,当语音识别出现不确定性时,后面的理解及对话管理和推理能否去解决这个问题。刚才视频中已经有了这个固定的语境,用户就是要去纠正 135,然后让机器去匹配。

这引发思考的是,即使识别完全正确,后面要做的事情是什么。这就是我们需要解决的认知计算的问题,以下是我们的认知型自然口语交互系统。

语音交互

上图中,橘色的是标准循环,蓝色的是我们新添加进去的一部分环境感知和对话管理,简单的说,我们添加了一个能够更好监测和管理交互过程一个辅助设施,并且可以生成一些交互语言去做确认。这个架构体现了我们一个很重要的观点,语音(包括语言)只是处理任务的一个高效管道,但它一定会有不确定性,不确定性应该在情景理解和多轮交互中消除,这是一个本质特征,它不会因为一些技巧而改变,有些技巧可能会使得单轮交互的效率会提升,我们也会做,但本质上是解决不了问题的。

所以,除了理解和交互内容本身,交互架构也会有一些相应调整,山东高速纠正哥这个视频在本质上没有那么复杂的自然语言处理,但它对交互的要求是比较复杂的。以下就是我们在改变了交互架构的前提下做出的 demo 。

思必驰纠正哥demo(思必驰提供)

所以,我们要在交互架构上进行处理,我们对于交互本身的理解要结合到情景,这就涉及到怎么去建模的问题。基于认知在交互里的三个层面,我们究竟要从科学上和工程上解决哪些问题。

语音交互

第一个是静态的,对某句话的不理解,你会有一些语义的表达,在特定的表达下面我会给他一个什么样的值,这是一种理解方式;你也可以分成主、谓、宾语等,这些联系到的领域(domain)是什么,可以有很多种联系的方法;这里是对单句静态的理解。

第二类是动态认知,在已经知道有多轮的情况下,机器如何回答,在面对任务时机器需要进行交互决策,这个过程是多轮里的一个动态认知过程,就是机器需要学习什么样的反馈是最有效的,最能消除不确定性,并且把对话的成功率提高。

第三类是进化认知,即我有一次完整的实验结果之后,我一定会对自己的总体策略、理解概念和上下文进行调节。

不管是哪一个类,在计算的角度上要解决几个问题,1)怎么做模式分析和特征抽取;2)在动态过程中处理记忆和遗忘的问题,这在理解当中很重要,如何通过表示来解决抽象化的问题,此外还有推理、决策规划和综合反馈等问题。

三、自然语言处理相关的认知计算进展

接下来讨论的是,大数据和新的机器学习方法在哪些方面对解决对话类自然语言处理比较有帮助。深度神经网络、卷积神经网络的循环神经网络在机器学习中发展比较快,尤其是语音和图像都取得了非常重要的进展。

语音交互

但语言数据有几大特点(如上图):

1)海量无标签,如果做语音识别,用一万小时去训练模型应该足够大了。如果用同样的机器学习算法,折合到语言上面这大概相当于几个 G 的语料,非常小,我们正常训练大规模语言模型可能需要上百个 G 。所以语言所需要的数量比语音和图像要大的多,而且无标签。

2)有大规模的离散码表,不管我们做图像还是语音,输入都是特征,输出都是分类标签,语音的分类标签有大概有三千到一万,图像的大约是小几千,而正常的一个通用词表是有十几万个标签,因此标签类别大大增加了,而所需的数据量还特别大,所以对语言的处理难度很大。

3)自然语言是序列数据,不是点上的数据,这又使整个处理变得复杂。语音我们切成十毫秒一帧,而整个图像是当成一个样本点,一个输入对应一个输出,都是点对点的。而对于自然处理来说不是这样,好的认知算法都是一个序列,所以从这个角度上来讲,比较适合于自然语言处理的模型大部分都在循环神经网络(RNN),因为它擅长处理序列。

我要讲的关于认知计算的进展有两块,一个是特征表达,一个是记忆遗忘。

1. 特征表达,语言的分布式表达

语音交互

上面提到,大规模离散码表是自然语言处理中的一个核心难点,原始方法是用 0/1 向量去表达。现在如果我用分布式表达,即不是把所有信息集中在一个点上,而是要把它们分开,这样就可以把维数大大缩小,比如说缩减到 100 位或者 200 位,在这种情况下就得到一些数字化的连续表达。现在有很多在做词向量(Word Embedding)的研究,还有句子向量和语言向量等等。所以,很多人开始把离散的词用连续的东西来表达。如上图所示,和数字、人物等相关的都会自动的被聚类,这样一类分布式表达为我们解决自然语言处理问题提供了基础。

现在大体上有两类方式来做分布式表达:

1)传统的用基于count及线性代数的方法统计 

语音交互

对于每一个文档中,统计它的词表,以及每个词在不同文档中出现的频率,分解完成后就会在词表上得到一个小的矩阵,然后根据它的频度得出向量。这些方法是无监督的。

2)深度学习方法 

语音交互

这种方法也可以认为是无监督,但要经过训练。一般来说,深度学习要用一定的线性模型或非线性模型对海量语料进行训练来得到词向量,最典型的就是 Bengio 提出的 NNLM,我们输入正常的文字,然后这个文字通过矩阵变换得到相应的文字的离散表达,这类似于在一个矩阵里,你的输入取矩阵当中的一行。我们用这个东西在神经网络里做预测,然后通过神经网络的自更新得到每一个矩阵当中的行数,这些行就是它最终的词向量。而 Thomas Mikolov 是用 CBOW 或者 SKIP  GRAM 这样偏线性的方式,用周围的词去预测中间的词,或者用中间的词去预测周围的词,都是用训练的方式去预测,箭头中表示的都是把原先的词表从矩阵中取一行,变成相应的分布式方法。这里值得注意的是,上面提到的是训练方法,没有说准则,事实上最后做出来东西有没有用,高度取决于你用什么样的准则去训练这样的向量。而在认知计算里,如果你的准则是得当的,那你所得到的这个 embedding 会更好的用在你的认知任务里。

总之,这部分的意思是我们会把词用连续的向量去表达。

2. 解决遗忘的问题

最典型解决遗忘的问题就是用传统的循环神经网络。 

语音交互

以上是循环神经网络的结构图,一个输入有一个输出,输出不单单考虑输入的信息,还考虑了上一个隐含层的输出信息,可以循环回来。把它展开的话,对这一点输入预测,既取决于当前输入,同时也取决于上一个隐含层节点的输出,而上一个隐含层节点的输出又取决于这个节点的输入以及再上一个隐含层节点的输出,这样下去的话就会把整个序列都考虑进去。在这个过程中,我们会用一个反向传播算法(BP算法),但这个算法有一个比较麻烦的问题,当这些矩阵本身的模不是1或者不接近1的时候,传的时间长了会存在梯度消失的问题。在语音识别里面这个东西往往影响没那么大,因为我们考虑前面三五步就够。但在自然语言处理中是不行的,长程相关性是非常重要的。比如说这个例子,「我 在 中国 长大 我 喜欢 吃 中餐」,当前面一个词是「吃」的时候,我去预测下一个词是不是「中餐」,这是一个概率。但在这句话里面,其实非常靠前的这个词「中国」对于「吃」后面预测出来的词是「中餐」还是「西餐」,会产生非常重大的影响,很早的一个词对很后面的一个词会产生影响。

这个例子说明,长程相关性在自然语言处理中是非常重要的。单纯用循环神经网络是不够的,现在我们开始用长短时记忆模型(LSTM)去解决这个问题。

语音交互

它可以通过一些门的限制使得原始的记忆信息采用线性的方式传过去,而门只是选择什么样的信息该往下传,什么样的信息不该往下传,它会采用一个遗忘机制使得你的记忆可以更牢靠。

刚才提到,自然语言处理里最关键的在于序列,所以我这里重点讲的就是序列,对序列自身的建模有以下几种形式,最原始的就是对序列进行记忆,对每个单元进行预测,这在自然语言里中的一个典型就是语言模型。

语音交互

比如说「How  are you」这句话,给定一个词「how」,去预测下面一个词是什么,因为在进行预测时,RNN的隐含层节点会不断往下传,所以当「are」的下一个词时,我已经考虑了左边左右的词,以及当前的输入「are」,然后去预测下一个是「you」的概率。所以这是对序列前面的历史都记忆,但是一个点一个点的去预测。

语音交互

而比较新的研究是序列记忆,序列预测。是指把整个序列都吃进来,在肚子里面想一想,再把新的序列吐出去,机器翻译就是这样一个典型的任务,我把一个英文序列翻译成一个中文序列。最开始的使用也是用循环神经网络把每个词都读下来,读每个词时更新一下参数,但一直不输出,直到把整个句子都读完,在开始翻译时才正式开始输出,这时会把前面所有的历史放在一起来,在句向量的基础上预测新的语言中的词,这就是序列的输入和输出。这一般叫序列级的「编码器-解码器」架构。

语音交互

这种序列级的「编码器-解码器」和元素级的「编码器-解码器」具有一些本质不同,它最关键的不同在于特别适用于自然语言处理,因为:

1)无需词对齐,现在做语义理解和机器翻译最难受的一件事是每个词都要做标记,而用序列和序列是不需要词对齐的;

2)语义理解、翻译等很多自然语言处理任务,经常出现长序列和集外词的问题,比如说,很长的一句话会带来很多干扰,包括一些集外词,如果用一个词一个词的标签去对的话,它的错误率是比较大的。同时出现输入输出速率差异,比如输入 20 个字,输出只有两个语义项。还有词序变化等等都会影响我们预测的准确率,如果序列到序列这些事都不用了。

3)可同时处理稀疏或者稠密的数据。可以看出,这种架构非常适合自然语言处理。

除此之外,注意力模型 Attention 也是最近特别流行的一个模型。 

语音交互

它的意思说,当将整个序列完全吞进去时还能记住原始的每一个词的特点是什么,在输出时,不单单基于整体概念,还可以对原始序列中每一个词的含义进行不同的加权。所以在进行翻译时,它知道整体感觉和局部特征对翻译效果产生的影响。在上图这个经典的翻译案例里,输入时把每个节点都读进去,进行输出会由每个节点输入的加权平均得到一个新的输出,这个新的输出对翻译结果中每输出一个新词会产生不同作用,也就是说,在输出新词时不单单使用了整体信息,还考虑了不同的局部加权信息,这就使机器翻译的翻译效果大大增强,因为它对翻译中个别词汇有了相应的一些注意力。

以上是几个一般性进展,还有一些最新进展,比如 Memory Network 等。这几样都是最近机器学习领域里面出现的。接下来,我将介绍面对三类对话人类,我们在实际研究和工作中所用到的一些技术。

四、对话技术中的认知计算

1)聊天

语音交互

如上图,目前大部分还是基于规则,用信息检索的办法去做统计训练,不太考虑语义,也并不是从交互的角度上去进行建模,这是传统的处理聊天的方法。但我们现在在尝试一些新的东西,基于序列的统计学习,基于编码器和解码器。这种东西是基于生成的框架,也就是说先读进来上一轮、甚至更早的信息,然后一个词一个词的去生成,在这种框架下比较容易引入语义和交互的工具。比如说上个图右侧,输入    一句话之后,再用解码生成,用不同的生成结果中选出一个,这个基本上就和翻译一样的架构。

实际上单纯这样做可能效果很差,所以我们把注意力模型给引进过来,这样就有了一个上下文概念,把前面聊天的内容通过编码的方式记录下来,下一句再通过解码器去做预测,同时用注意力模型结合前面的一些信息。这里会涉及预测的方法,是对单独每个词做预测,还是整体一整句话,在预测的多句话中选一个。是基于序列生成,最大化序列的概念,还是最大化一个词的概率,通过采样的办法去得到。这些会得到不同的结果。

总体上讲,优化序列的结果会更好一些,我们可以基于「编码-解码」的方式来处理聊天类任务。

2)问答

微软在这方面做了很多工作,他们当时提出了一个概念,叫深度语义相关度量(DSSM)。它是指,假如说我有输入的文字和对应的输入的回答,我现在想做的一件事是对整个序列提取特征向量,使得这个特征向量能够代表这个序列本身的语义,同时这个语义又与它所对应的回答那句话的语义向量之间的差距是最小的。其中使用了多个神经网络,在神经网络里,有一个文字输入,通过神经网络提取之后,会有一个抽象的向量,正确的输入也会有个抽象向量,训练的准则是计算这两者之间的 cos distance,使得两者之间的 cos distance 最小。同时也会生成一些反例,把反例也输进去,反例也有个向量,它会使这个向量与原始语义的向量的距离变得更大,使得语义相关度更小。通过这种训练之后得到一个新的神经网络,任意两个东西输进去之后,可以去计算它们的语义相似度,就会使得我们很容易去进行基于语义的匹配类检索。所以,任务里就可以使用这种方法。

语音交互

在问答之前提到 CNN 也可以处理序列,我们就可以用基于卷积的 DSSM 来处理问答 。它对文字通过卷积运算,再用类似于DSSM的架构把问题和答案分别输进去,然后把得到的反例也输进去来训练这个网络,最后你会得到两个网络。在实际用的时候,进来一个 post,先生成一些候选答案,再把生成的序列用 DSSM 去重新排序,这就是可以用深度相关的神经网络得到比较有意思的匹配。我们发现,它确实是在语义上比较相似,因为一般来讲,大家做问答的时候避免不了要用关键词做匹配,那生成的答案绝大部分是有关键词的,那我们发现这个模型生成的东西看起来是没有关键词匹配,它是在语义上匹配的,所以这是一个比较有意思的进展。

3)任务型口语任务

我们在这方面工作做得比较多。

语音交互

首先要去定义任务型对话的一个框架,对话行为的概念由三部分组成,我们假定这个机器自身对于任何一个任务都会有一个状态空间,我们在状态空间里去推理。状态包括用户所做的总体意图,当前这一句的语义,以及我们碰到的所有对话的历史,我们把这些结合在一起变成状态空间。这里要解决两个问题,一个是要对状态进行跟踪,另一个是要进行决策。由于语音和语言在交流过程当中会有不确定性,所以你永远不能知道用户的真实状态是什么,只能知道它所处状态的一个分布,所以我们都是会基于分布。

语音交互

目前在处理对话类任务中一个比较完整的框架是 POMDP 强化学习,它认为认知决策是部分可观测的马尔可夫决策过程,状态是不知道的,只能通过每一轮次状态的分布来进行预测,基本上由四个关键因素组成:

系统状态,机器的宇宙是什么样子;

观察向量,机器能看到什么;

机器决策行为,机器能做出什么样的反应;

每轮收益值,在整个过程里,对机器每一轮训练时的奖励和惩罚。

语音交互

所以,这个框架有两大核心内容,第一块是状态更新,需要描述的是用户想干什么,曾经表达过什么,机器已经做了什么。第二块是系统决策,给定了系统的状态分布,我们怎么把它映射到系统可能的选择上面,这两个东西都是可以用统计训练的。

我 2007 年在剑桥开始这方面工作时就是基本上基于这个框架,但这个框架不太容易扩展到大规模系统,所以现在近几年又出现了一些新的办法,就是用不同的机器学习的方式把它变得比较大。

首先从对话状态更新的角度上把它变大,原来状态更新的办法绝大部分是用规则,最近几年用统计的方法,而我们最近用的比较新的方法是一个混合算法,简单来说它整合了规则和统计两种方法的好处,首先你可以添加各种各样的新规则,从而具有解释性并且比较快;其次是可以有一个自更新的过程,有数据之后会让它变得更好。对话交互的状态更新领域除了这种方法外,还有一类就是基于循环神经网络(RNN)的统计方法,后者和混合算法所达到的效果差不多,但是要慢很多。

语音交互

2010 年,我们去参加 CMU 组织的一个口语对话挑战赛获得了可控测试的冠军。它用了真实的匹兹堡市政公交系统作为实验平台,每个参赛系统都用真人去问一些公交信息,比如说从哪个站到哪个站,以及几点公交车会来,然后统计每个系统的对话语音识别的正确率和错误率,同时还去统计用户的需求是不是被满足了,就是这个任务是否完成。这样的话,即使有些情况下语音识别和语义理解有一些错误,但机器仍然可以提供正确的信息,这种情况是1,如果提供不了就是 0,在平均之后,我们就知道在任何一个语音识别的错误率的区间上有多少对话被完成了,我们把这个叫做对话完成的预测准确率。当错误率在 50% 时,CMU 的对话成功率大体上在 60%,而我们所使用统计训练的系统的成功率在 90%,差距是巨大的。这告诉我们,真正要想把对话做好,不单单要考虑前端的感知水平和每一句语义理解的水平,同时要对整个交互过程进行考虑。

五、自然语言认知交互的未来

最后再放一段录像,这是苹果在 1987 年预测 2011 年交互是什么样子,而 2011 年恰好是 Siri 发布的那一年,这个录像和我认为的自然语言交互的未来架构非常像的。

2011 年出现的 Siri 其实还远没有达到视频中的第一步。里面出现了很多和对话交互的东西,你会发现有提示、打断、增量学习(incremental understanding),还有很重要的基于知识的联结,把这些东西都集成在一起形成了一个完整的人机对话。所以从这个角度上来看,如果在我们这个时代真的可以把它完成,那大体上需要这样一个架构,这个也是我们在思必驰公司和上海交大的联合实验室里面采用的主要架构:

语音交互

我们现在很多工作都在围绕与之相关不同模块和整体架构,现在不少人在做识别和合成,这是感知的部分,我们除了把感知要做到尽可能好之外,还在做理解、决策和表述。更重要的一件事情就是后端的决策一定会和你的知识结构放在一起,比如说我搜索一下,之后能不能结果总结一下放到对话交互中用,这是最基本的东西,但现在还没有很好的完成。我们现在内部的研究已经做出了一些东西,有很好的提高,但距离理想的要求还有差距。对于领域相关的知识处理更重要,尤其是怎么样把相应的 ontology 做好,这是未来很重要的一个事情,是基于上面提到的基于统计的能够不断学习的框架下的未来。

当然,也还有一种可能,会有一些新的实践、框架和理论。今年年底,我们会从思必驰研究的角度提出一些新的理论,这和刚才提到的理论是不一样的,也许它会使得自然人机对话的未来早日到来。

俞凯注:文章中所示PPT和内容有所删节,希望与更多语音专家共同研讨业界未来。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分