一文详解启发式对话中的知识管理


来源 | AI科技大本营在线公开课
算法

分享嘉宾 | 葛付江(思必驰 NLP 部门负责人)网络

整理 | Jane架构


【导读】天然语言对话系统正在覆盖愈来愈多的生活和服务场景,同时,天然语言对话的理解能力和对精细知识的对话召回率在技术上仍有很大挑战。机器学习

启发式对话经过创建知识点之间的话题关联,使对话系统可以主动发现相关知识,充分发挥知识的协同做用,引导对话过程,把知识在合适的时间主动送达用户。知识不仅是以知识图谱或问答库等形式被动被搜索,启发式对话中的知识结合了先验经验和用户对话习惯,从而拥有知识角色,让对话理解和对话流程更加天然,也更有用户价值。函数

在本期公开课课程中,AI 科技大本营邀请到了思必驰 NLP 部门负责人葛付江针对“启发式对话中的知识管理”作系统的讲解和梳理。工具


回放地址:edu.csdn.net/huiyiCourse…学习


如下内容为大本营公开课文字版整理。ui


今天给你们分享一下,关于启发式对话中的知识管理系统,分享的内容包括如下五个方面:编码


▌对话系统的架构.net

首先是对话系统的架构,咱们来看一下对话系统流程。


在通常的对话系统应用场景,好比在智能音箱、智能电视,包括如今车载的设备等,当用户说了一个问句,智能客服自动的问答和对话,这样的系统的基本流程是它接收到用户的一个问句或者用户说的一句话,而后系统里作一些处理,给用户一个答复。

咱们今天说的对话系统和传统的问答系统有一个重要的区别,对话系统它是维护上下文的,在作一个对话的时候是有上下文场景,在这个上下文的过程当中须要控制一些对话的状态,来完整地理解用户的意图。



例如,用户问一句明天会下雨吗?系统会作一些预处理,即一些天然语言处理上的特征处理,好比分词、词性标注、命名实体识别这样的模块,在这里能够识别到一些实体,好比里边的时间是明天,关于天气现象是下雨,这是命名实体能够作到的。

通过特征的预处理以及命名实体的识别,而后进入正式的对于这句话的理解。首先是对于用户的每个问句须要作一个领域的判断,通常作这个领域判断是由于在对话系统里会支持各类场景,首先把用户的这句话限定在一个固定的场景下,而后才能作相应的后续处理。

领域的判断通常状况下有各类方式,无论是写模板,仍是一些分类的算法,好比这句话咱们送到一个分类器里,它可能能判断出它是一个天气领域相关的。在这里边,经过 Slot Filling,它就能够获得天气领域的一个意图,这个意图领域是天气领域,有它的地点和时间。固然这句话没有提到地点,由于通常这样的系统会经过传感器或者是定位的信息,或者是 IP,或者各类设备相关的场景的信息获取到他一个默认的地点或者默认的城市,根据这些信息,而后咱们获得一个结构化的意图。

这个结构化的意图,而后送给一个对话管理或者对话状态追踪的模块,这个对话状态的管理去作一个判断,说以当前这个领域,好比天气这个领域它的 Slot 是不是知足的。对于天气这个领域比较简单,发现这句话实际上它的领域意图、时间、地点都已经知足了,而后把这些槽位都补充上。

根据这些补充好的信息,实际上它就是一个结构化的信息,根据它的时间、地点、天气现象,而后去后台的数据服务里作一个查找,把真正的天气,好比明天须要下雨或者是晴天这样一个信息取出来,而后通过一个答案生成,Response Generation 这样一个模块,而后生成一句比较天然的话,好比说明天多是一个晴天,而后就说明天是一个晴天,若是再说得更天然一点,可能说是一个出游的好时间,相似这样的,整个流程大概是这样,其实是一个比较简单的过程。

经过这个流程我想跟你们分享一下对话系统的基本架构,首先它要处理一个用户的 Query,而后它要通过一个对话管理的模块,这个对话管理实际上就是维护上下文的信息。再下面是一个意图的理解,这个意图的理解可能有各类方式,包括知识库或者叫知识图谱,包括问答的形式,这种问句类似度匹配,还有一些通用的各类其余的意图的理解,包括意图分类的这些东西。



在这个里边,对话管理在这个里边,通常状况下对话管理其实是一个相似于流程图的东西,好比以刚才天气的里边,它其实是一种叫 Slot Filling,有几个信息填满以后就能够了。而后在一些其余的对话过程当中,好比说典型的客服,实际上通常在客服的具体场景下,好比金融领域的某一种金融业务或者是用户查询一种金融产品,好比保险这种产品,某一种保险产品,它有一些信息,它其实是一个流程图的形式。

还有一种是咱们后面会提到的启发式的对话,这几种形式的结合,实际上是一个对话的管理。如今通常的系统可能都是处理某一种对话,要么就是 Slot Filling,要么就是一个设定好的流程,要么是一种启发式,能把它作到融合的可能还不是特别多。

继续在这个图里边,刚才提到对话管理就是 DM,对话的理解就是知识库,问答对,还有一些通用的,好比说抱怨,一种通用的状态,通常状况下多是一种分类的方式来作的这种 NLU 的理解以后,各个模块作到这个 NLU 以后,它须要去作一个抉择,由于在各类系统里边,用户的一句话可能都会找到一个答案,咱们到底选哪个答案,因此就作一个排序,排序完以后通过一个答案的生成,最后给用户一个答复。

固然这里边,边上还有一个模块就是上下文的管理,它在对话管理、NLU 以及排序和答案生成这些模块里都会用多,它会维护一些上下文的信息。固然这张图结构是比较简单的,可是每个里边实际上有挺多东西,咱们后面看具体的内容,最后咱们回过头再来看这张图,可能就会有一些不同的东西。

看以前咱们先总结一下如今一些对话机器人的现状,通常对话机器人怎么来评价或者它如今的状态,通常评价的标准,咱们对机器人的评价是不太好评价的,咱们作一个系统或者作一个学术的研究,通常状况下它怎么来衡量这个机器人的效果,其实是一个很重要的事,咱们要作这个事前须要先定一个标准。



通常的像对话系统主要的几种评价的东西,一个是准确率,准确率可能就是基于一些问答对仍是不对,或者对话答的对仍是不对,好比这个对话进行了十轮,这十轮里有几回对的,几回错的,直接给一个零一的判断,而后算出准确率。

另一个,人工打分,由于这个对话过程当中它可能并非一个绝对的零一的判断,有的时候它给的答案可能不那么合理,可是必定程度上可以接受,因此人通常能够给它打一个分数,好比说 1 到 10 分或者 1 到 5 分,给一个分数,最后给这个机器人一个综合的打分。

学术上可能借鉴一些其余系统的标准,好比说困惑度或者 BLEU 值这样的方式来给一些打分,通常这种标准更可能是在一个限定的数据集里去衡量这句话,生成的这句答复它的语言流畅程度,可能更多的是从语言流畅程度的角度来衡量,固然这些困惑度或者BLEU值,它的好处是能自动地来判断,可是坏处是它其实很难严格地从语意上来判断这个系统好或坏。

在一些极窄的领域里,好比说订餐,甚至更窄一点,好比订一个披萨或者订咖啡,或者拨打电话,这种很窄的领域,实际上如今机器学习的方法和模板的方法都可以作到一个比较好的精度。

机器学习或者深度学习,可是深度学习在这种场景下它也依赖于一个比较大的数据量,相对于这个场景来讲,由于通常在这种实验上,它的场景仍是比较小的。若是场景比较多的话,如今在一个比较复杂的场景里,可能如今深度学习的效果还不是很好,就是在多轮对话的场景下,而且有多个场景混合的话。

另外在一些较大的领域,好比客服,客服这个场景,它通常状况下对于一个企业的客服,一个企业的客服可能会涉及到几种产品,既使是一类产品也会涉及到这一类产品不一样的产品线以及它各类型号这些东西,客服它相对来讲是一个比较宽的领域。

如今无论是深度学习,仍是其余传统的机器学习,若是在总体都用深度学习的方式,它的准确率是比较低的,不多能作到 50% 以上的,就是在一个比较大的领域里。因此如今在客服领域里,不少系统是基于检索式或者是基于模板的,检索式就是它准备好了一些标准的问答对,由于企业作本身的客服的时候,通常状况下积累了一些它本身对本身产品的标准问题和答案的,用户的一个问题就到这里找一个最类似的问题,而后给它一个答案。这种方式目前是用得比较多的。

另一种就是模板,人工去写一些规则的模板或者叫语义的模板,而后去解释用户的这个问句包含哪些主要的信息,而后把它对到一个意图上给一个答案,在这些领域里边,较大的领域实际上机器学习的算法仍是有一些挑战的,即便用模板它也有不少的挑战,由于模板多了以后它就会有冲突以及很差维护的问题。

▌启发式对话系统

启发式对话系统,是咱们正在作的一个启发式对话系统,启发式对话系统如今有一些类似的概念,好比说主动式对话,思必驰提出来这个启发式对话可能主要是在这样,在一些企业的场景下不少时候用户其实是面对一个对话机器人,他不太清楚能问什么样的问题,以及这个机器人的能力是什么样,它能回答什么样的问题,或者用户大概知道他要什么东西,可是他对于问问题这个事,让他去问不少问题仍是要费一点脑筋的。

启发式对话大概就是这么一个流程。它实际上经过这些问题背后的一些联系,能让这个对话一直持续下去。固然你说你不想了解而后它就结束了。这是一个基本的概念。

咱们来看一下启发式对话有哪些基本的特色,首先根据用户的问题主动引导对话交互,用户问了一个问题,系统会根据这个问题把一些相关的问题列出来或者问用户他想不想了解。用户的问题是以多种形式链接到知识点,固然这个对话后面,咱们叫知识点,以一个知识点的方式,链接一个知识点可能就是对于一个具体的问题,这个问题可能有各类不一样的问法,咱们都认为它是一个知识点。

以多种形式指的是如今常见的形式,它多是一个问答对的形式,在这个对话系统后面多是一个问答对的形式,也多是一个知识图谱的形式来存在的,可是它们的链接是统一的,都是以一种知识点来管理它们。



知识点若是直观地理解,咱们能够认为它就是问答对或者知识图谱里面的一个实体相关的属性这样的东西,这些知识点之间或者问题之间,它经过话题来融合,话题实际上对用户是一个不可见的概念,它是为了去作推荐,由于咱们把问题经过话题作一个链接以后,后面这个启发式对话其实是根据话题来作一些选择,用户问了一个问题,咱们把这个问题所在的知识点,这个知识点它所在的话题,根据这个话题去找到一些相关的话题,而后在那些话题下面找到一些对应的问题,而后推荐给用户。

话题之间有一些语义或者逻辑关系的,后面会具体讲这些话题之间是怎么组织的。整个对话过程可能就是根据话题来作总体的规划以及跳转的。这是如今整个启发式对话它的一些特色。



这是一个具体的例子,这是一个产品的形态,就是说这个话题的组织。对于一个企业的客户,它若是想作一个它的对话系统,它能够人为地去设定一些话题,这个话题是以树型的组织,好比在这个里边就是一个关于花相关的话题,好比怎么学习花艺,各类花艺相关的信息,每个话题,橙色的这部分是这个话题的组织,话题树,用户能够设定这样一个话题的组织。在这个话题下面,每个话题下面用户均可以去定一些,好比花艺大师,花艺大师下面用户能够定义它在这下面一些人相关的信息,而后具体把这些人相关的信息列出来。

一个终端的用户就能够去问这些关于人的信息,因此话题大概有这么几种形式,首先以右边这个图的形式,某一个话题下面可能有两三个这样的话题,固然这个话题还能够有层次,它能够有子话题、孙子话题,这个层次结构能够来组织扩展,固然一个话题下面能够有不少话题,这个话题的一个组织形式,这些基本的概念。

▌对话系统中的知识管理

再咱们来看一下,在对话系统里边这些知识它在对话的理解以及对话管理中是怎么来发生做用的,后面我会结合现有的技术,现有的你们常见的作对话里边的相关技术,而后和启发式对话一块儿来介绍对话系统中的知识管理。

首先来看几个例子,在机器人理解语言中可能遇到的一些问题,这个给你们一个直观的感受,可能遇到哪些问题。好比说在理解上,机器人理解语言的过程当中,好比说“今每天津适合洗车吗”这样一个输入,若是是语音或者拼音输入均可能会有这样的问题,“今每天津适合洗车吗”可能和“今每天津市河西”,天津市有一个河西区,可能就会理解错,从拼音到文字可能就会出错,实际上这个很是类似的。

这是咱们在语言上可能会有一些问题,机器来作这个事的时候,它实际上很难来判断,人是有一些背景的知识和上下文知识的。



咱们来看一下,刚才列了那么多问题,通常状况下来作这个对话里边核心的,刚才咱们在最开始的架构图里已经看到对话系统里边核心的三大块,一个是天然语言理解,一个是对话意图理解,对话管理和对话答案的生成三个部分。

你们比较关注的是前两个方面,对话的理解和管理,理解这部分可能最多见的是基于规则的系统,好比咱们就写一个 pattern,科研人员、时间、发表过的文章,相似这样的,这个规则系统里有一些词典和规则的组织,固然这有一系列规则组织的问题,实际上它也是一个比较浩大的工程,可是咱们从算法或者是咱们理解的角度,可能以为它仍是一个比较简单的方式,固然规则多了以后是挺难维护的。



另一种可能就是经过意图的分类的方式,好比经过一些机器学习的方式给它作一个分类。好比咱们作一点简单的,好比天气,对话系统只要理解出来它是天气,而后咱们就给它播一个天气预报,不少场景下用户也能够接受,系统不理解它里边具体的东西,只理解是某一种意图,而后就给它作一个播报。这里面常见的这种分类的算法均可以用获得。



另一种是问句检索的方式,好比在闲聊或者客服中实际上都大量地用到。咱们说闲聊,实际上从学术上来讲可能不少研究是在作深度学习的闲聊,但实际场景的闲聊里边,有不少也是经过问答检索的方式检索出来的,固然它须要有大量的问答对,这些问答对都是人手工事先整理出来的,这是一个比较耗费人力的东西,而且它覆盖的范围有限。

通常作这个事的方式是说先经过一个倒排索引,这个用户问题来了以后检索出一组问题,而后对它进行一个侯选,而后再作一些排序,这个排序的算法可能有各类加权,有传统的 learning to rank,还有深度学习下来这种深度的语意匹配的算法,这些算法咱们后面能够具体地看几个例子。



问句分类也有一些直接拿如今深度学习的,好比embedding,实际如今深度学习,好比前面提到的 Sequence to sequence 模型能够直接把用户的问题 embedding 成一个向量,咱们直接拿这个向量实际上就能够作一些问句的分类或者类似度计算,这张图是大概 2000 多个用户的问题,而后作了一个 embedding,就是用 Sequence to sequence 作了一个 embedding。

这个时候拿这种可视化的工具把它可视化出来,咱们能够看出来它大概是能分出来的,这是三类问题,实上它确实也就是三类问题,虽然它们之间有一些交叉,如今这种深度学习的方法对于这种东西的建模能力仍是挺强的,基本的问题类别仍是能区分出来的。



下面这张图,如今这种基本的深度学习里边的这些算法有一个很基础的模型,就是 Sequence to sequence 的模型,它是基于把用户说的里边的每个词,好比 ABC 是一个输入的词,ABC 是输入的这个问句,A 是一个词,B 是一个词,C 是一个词,而后它的输出有可能就是 XYZ,它把它送到 Sequence to sequence 这个神经网络里边,A 是一个词,进去以后是一个 RN 的模型,它就作这样一个 embedding,实际上到了 ABC,而后 eos,就是这个句子结束了。

结束以后这个神经网络中间层就是一个 W,这个 W 能够表示这个句子的语意的表示,用这个 W 再去解码出来一个答案,通过大量的数据训练实际上就能够生成一个答案,生成式的闲聊可能主要就是这么来作的,这个模型,包括中间的这个表示 W,实际上也能够用来作问句的分类或者问句类似度的计算。



这是一个基本的模型,如今作问句,咱们刚才提到如今大量的实际使用中作问句的类似度匹配,可能一种方法就是作句子类似度的计算,这张图是一个作句子类似度计算的基础模型,这里面这些都是现有的方法。

好比说用 LSTM 来对句子作一个编码,这个 LSTM 这个基本的模型和刚才的 Sequence to sequence 的编码阶段相似,用户的一个问题和一个系统中的问题,两个都通过一个 LSTM,这个 X 表明了输入,H 表明的是模型中间的隐藏层,用户的这句话通过 LSTM 把它编码成一个 h3(a) 这么一个状态,还有一个标准问题(被检索的问题),通过一个编码,编码成了 h4(b) 这么一个状态,两个通过一个距离的计算,就能够送到一个分类器里,给它作一个类似或者不类似的判断。

这个方法是把用户转换成一个分类的问题,二分类的问题,这个用户的问题和咱们标准库里的问题类似或者不类似,而后作一个判断。这样也能够作这个事,这是一种比较经典的方式,其实它的效果也还挺好,不少场景下都是挺适合的。



咱们看一下下面这篇文章,这篇文章我以为是在作类似度计算方面比较经典的一篇文章,它还作得比较好。它左边是输入,好比有 u_一、u_n-一、u_n是用户的输入,u_1 到 u_n 是用户输入的整个上下文,他可能说了多句。r是response响应。



这个上下文通过一个 Word Embedding,每个均可以 Embedding 成一个词向量的表示,而后通过一个 GRU 或者 LSTM 均可以,而后把它编码成一个向量。这里边作了一个比较复杂的操做,中间这部分,M1M2 这部分,它是把用户的输入和答案分别交叉去作了一个内积的计算,都是向量,实际上表示出来都是矩阵,它们之间作一个内积混合的运算,充分的交叉以后再通过 CNN,CNN 而后通过一个Pooling,Pooling 以后再通过一个相似于这里边又过了一个 GRU,最后输出一个分值。

这个和刚才 LSTM 那个方式最大的区别是,首先它层数增多了,由于它最前面是 GRU,最后边这儿也是一个 GRU,中间多了一个 CNN 的层,这个 CNN 层的做用其实是把问题和答案的信息充分地混合,去找到它里边匹配的类似或者结合的点,而后来给出一个答复。这个模型在不少场景下的效果是比较好的,咱们在一些实验中它的实际确实也是比较好的,可是它的问题是,由于它通过了一个很充分的混合,咱们看到它对输入的要求是有必定要求的,这个输入相对比较长一点,它的信息比较充分,这样作是比较好的。可是在有一些对话场景下,当这个对话比较短的时候,它的效果其实是有限的。这是一种方式。

这张图是谷歌的一篇文章里,它只用 Attention来解决,好比 Input 和 Output 这两个地方,通过一系列的 Attention 最后输出出来,咱们作一个分类决策。咱们借助于 Attention 的这个模型,多层 Attention 的模型去作这个分类任务的时候,这个在一些比较短文本的场景下,问题都比较短的状况下,它的效果其实是比较好的。实际上这些模型可能都不是万能的,每一种模型都有它适用的场景,根据数据咱们才能看到它在哪些场景下更好或者是有它的长处。每一种模型都有它的长处和缺点。


还有一些知识图谱的方式,最直观的可能知识图谱是经过一些逻辑表达式来作的,好比说一个简单的问题,就是姚明的老婆出生在哪里这种,知识图谱里边存储了姚明以及他的配偶叶丽,这个方式咱们理解起来也比较简单,就是作了这么一个查找,可是当知识图谱比较大的时候,实际上知识图谱上的问答仍是比较难作的。主要是用户的表达很难去和知识图谱里的东西严格地匹配上,通常状况下这种方式,把用户的一个问句严格地解析出来问句里各个实体及其关系,而后把这些转换成一个逻辑表达式,经过这个逻辑表达式到这个知识图谱里去查找。这种方式其实也很经常使用。



刚才介绍了如今理解方面主要的方法,可是如今也有不少方式是说集成,我集成上面各类方法,而后作一个集成学习,好比问句理解的方法,问答的方式,就是检索、知识图谱、 embedding 的,均可以用来作问答,任务型的问答可能有规则的,也能够作embedding,也能够作分类,复杂问题可能就是客服里边有不少问题其实挺复杂,长度也比较长,能够用这种分类或者检索的,也能够用更严格的语意解析的方式来作。这些不一样的方式、算法作一个集成,实际上如今有挺可能是这样作的,效果也仍是挺好。



就是咱们在作一个模型去作选择,上面好比作了三个或者五个模型来去理解,用户来一句话对这几个模型都去理解,理解出来以后而后作一个集成,集成以后再作最后的输出,集成其实是为了作选择,到底用哪一个模型的答案,固然集成方式主要是两种,一种是流水线,这些模型我排成一个顺序,哪一个模型解决了我就出了,我就把答案出出来,而后就再也不日后走了,另一个是模型集成,每一个模型都走,而后作一个决策判断,选哪一个模型的结果。

上面是关于对话中 NLU 的部分,另一部分是关于对话中的知识管理,或者对话管理里的知识管理,对话管理这部分。

对话管理通常是这样,咱们在有上下文的状况下,对话管理就是用户当前咱们可能能分析出来一个意图,有的时候甚至当前咱们都分析不出来一个意图。好比说用户说了一个上海,咱们实际上不知道用户说上海是什么意思,若是前面是在说天气,那上海就是跟天气有关,若是前面在说订票,那上海就是和订票有关。有当前的一个用户的意图,甚至这个都不是一个意图,而后有上文,有一些上文是在哪一个领域里边,有用户的信息,这个有时候可能还有一些用户长时间的信息,根据这些信息作出一些行为,究竟是要答复,仍是拒绝,仍是去问用户的补充,用户须要补充一些信息。


对话管理里面有几种主要的形式,一种是基于 slot 的,slot 可能就是一个填槽,若是有三个槽位,时间、地点、天气现象,我就把它填完就好了,缺哪一个我就问用户有哪一个。另一种用 slot 不是特别好解决的就是有些流程很复杂的,特别是在客服,好比这张图里的场景,这是一个客服的场景,它的流程就很复杂,用户到了某一个地方,他须要去判断关于这个地方的信息,而后再作下一步的操做,这是这个对话管理主要的东西。



这张图介绍一下关于最基础的对话管理,好比 SlotFilling,它是在有没有上下文,事先定义好了这张订票的场景,而后它有一些上下文的信息怎么来控制,这个场景是刚才已经提到的,就不详细说了。

在启发式对话里边还有一种基于话题的对话管理,首先话题自己,由于它引入了一个新的概念就是话题,在问用户的问题以外引入了话题,话题能够是人工建的,也能够是系统自动计算出来的,也能够是系统引导用户来建立,这个话题就是我刚才在最开始讲启发式对话的时候,咱们看到的,好比说关于花的一些相关话题的组织,也能够经过一些学习的方式去挖掘问题之间有哪些话题,特别在一些企业服务的场景中,由于企业自己有它明确的应用场景,因此它是有一些话题,它自己已经组织好的关于这些话题的组织。



固然话题的组织其实是有不少问题的,咱们好比拿树型来组织这些话题,这个系统的后面怎么来组织这个话题。好比按产品、人物来组织话题,全部的产品是一个话题,全部的人物是一个话题,可是当我真正要去问这个系统的时候,你会发现产品和人物它们之间是有交叉的,由于人物,好比说科技领域的人物和娱乐领域的人物,他们可能就没有什么交叉领域,咱们把它放在一个话题下面也不合适。因此说话题的划分其实是有必定交叉的,固然咱们显示出来通常状况下是一种树型的方式来组织,这样对用户也比较容易理解。可是它真正的管理后面实际上有不少的交叉。

对话的管理,实际上通常状况下咱们能够认为它是这种状态,这种状态转换的过程,比较典型的可能就是一个 Markov 决策过程,这里边 S 是一组状态集,A 是一组动做,在某一个状态下它遇到一个什么东西,而后要作一个什么样的响应或者什么样的动做,机器学习的方式可能就须要把这个对话组织成这样一个状态,在这里边一个重要的地方是须要有一些回报的函数。

好比说在强化学习作这种对话的时候,不必定是作对话管理,作对话生成的时候也有这种场景,就是说它去定义一个在对话里边,它模拟多轮,根据一个定好的回报函数,而后来作一个判断,这是对话管理,对话管理用强化学习能够来作。实际上强化学习就是模拟多轮的对话,而后再回过来判断当前的状态到底走哪一步合适。


这是一个用深度强化学习来作对话状态跟踪的简单状态,好比用户输入了一句话,经过语音识别,它能够有一个状态的管理,而后去管理这个状态,经过一个策略来控制它的输出。固然它中间核心的一个部分是有这个 Reward 函数,在对话里,这个 Reward 函数就很是重要,通常状况下它也不太好定义,由于咱们对话,它到底什么算合适,什么算不合适,这个还不是特别好控制的。



咱们来看一下用强化学习来作对话,简单总结一下,在一个状态 S 下它可能有 m 种操做,咱们不知道这个 m 种操做哪种能带来什么样的回报,因此咱们作一个探索,去探索每一种可能操做的回报,利用这种回报作一个响应,作一个决策或者对这个回报作一个打分。

另外也有用对抗网络作的,但对抗网络有一个问题,实际上也不太好控制,而且有些状况下可能会强制这些对话的走向,而且对抗网络它的稳定性也是一个问题,这个训练过程当中的稳定性也是一个问题。


无论是深度学习,仍是传统机器学习,在对话的 NLU 以及对话管理中的一些方法或者做用,前面讲的都是一些现有的方法,怎么来作的,可是它里边都会有一些问题,机器学习的方法不少时候,若是生成式的那就很差控制它到底生成的和这个相关仍是不相关,很难判断。若是是检索式的,用户说的这句话,无论怎么着都会给它一个检索答案,到底这个答案是给用户仍是不给用户,用户说了一个不相关的问题,我可能也会给它检索出来一个答案,答案是给仍是不给?这也是一个问题。实际上这里边就用到知识,这个过程当中就很是重要了。

知识在这里边分为两种,一种是知识图谱,严格的知识图谱,这里边 KG 的这部分。另一些是语言的知识,好比说语言的搭配、语言语法的转换、拼写的问题、领域的问题,实际上还包括一些领域词的问题,类似词、同义词,这些东西在天然语言发展,这么多年实际上已经积累了不少这方面的知识,可是这些东西在如今深度学习里边实际上很难结合进去。



经过上面提到的类似度计算模型咱们能够完成前面说的天然语言的类似度计算的问题,可是咱们给了这个答案颇有多是不对的,因此说通过这些语言的特征以及 KG 的知识,把知识做为验证候选的证据,深度语义模型给出多个候选答案,咱们对于这种可能的各类侯选,经过知识图谱或者语言现象对它作一个分析,而后去找到一些证据,这些证据再来验证去选哪个答案。由于通常状况下对于直接用严格的知识图谱来解析一个问题的时候有一个问题,不少时候咱们没法严格地去解析出来这个问题,只能解析出来一部分。



附葛付江老师建议,及相关基础内容的工具包。

相关文章
相关标签/搜索