知识管理如何定义(一文详解启发式对话中的知识管理)
知识管理如何定义(一文详解启发式对话中的知识管理)这张图介绍一下关于最基础的对话管理,比如 SlotFilling,它是在有没有上下文,事先定义好了这张订票的场景,然后它有一些上下文的信息怎么来控制,这个场景是刚才已经提到的,就不详细说了。对话管理一般是这样,我们在有上下文的情况下,对话管理就是用户当前我们可能能分析出来一个意图,有的时候甚至当前我们都分析不出来一个意图。比如说用户说了一个上海,我们实际上不知道用户说上海是什么意思,如果前面是在说天气,那上海就是跟天气有关,如果前面在说订票,那上海就是和订票有关。有当前的一个用户的意图,甚至这个都不是一个意图,然后有上文,有一些上文是在哪个领域里边,有用户的信息,这个有时候可能还有一些用户长时间的信息,根据这些信息做出一些行为,到底是要答复,还是拒绝,还是去问用户的补充,用户需要补充一些信息。 对话管理里面有几种主要的形式,一种是基于 slot 的,slot 可能就是一个填槽,如果有三个槽
就是我们在做一个模型去做选择,上面比如做了三个或者五个模型来去理解,用户来一句话对这几个模型都去理解,理解出来之后然后做一个集成,集成之后再做最后的输出,集成实际上是为了做选择,到底用哪个模型的答案,当然集成方式主要是两种,一种是流水线,这些模型我排成一个顺序,哪个模型解决了我就出了,我就把答案出出来,然后就不再往后走了,另外一个是模型集成,每个模型都走,然后做一个决策判断,选哪个模型的结果。
上面是关于对话中 NLU 的部分,另外一部分是关于对话中的知识管理,或者对话管理里的知识管理,对话管理这部分。
对话管理一般是这样,我们在有上下文的情况下,对话管理就是用户当前我们可能能分析出来一个意图,有的时候甚至当前我们都分析不出来一个意图。比如说用户说了一个上海,我们实际上不知道用户说上海是什么意思,如果前面是在说天气,那上海就是跟天气有关,如果前面在说订票,那上海就是和订票有关。有当前的一个用户的意图,甚至这个都不是一个意图,然后有上文,有一些上文是在哪个领域里边,有用户的信息,这个有时候可能还有一些用户长时间的信息,根据这些信息做出一些行为,到底是要答复,还是拒绝,还是去问用户的补充,用户需要补充一些信息。
对话管理里面有几种主要的形式,一种是基于 slot 的,slot 可能就是一个填槽,如果有三个槽位,时间、地点、天气现象,我就把它填完就行了,缺哪个我就问用户有哪个。另外一种用 slot 不是特别好解决的就是有些流程很复杂的,特别是在客服,比如这张图里的场景,这是一个客服的场景,它的流程就很复杂,用户到了某一个地方,他需要去判断关于这个地方的信息,然后再做下一步的操作,这是这个对话管理主要的东西。
这张图介绍一下关于最基础的对话管理,比如 SlotFilling,它是在有没有上下文,事先定义好了这张订票的场景,然后它有一些上下文的信息怎么来控制,这个场景是刚才已经提到的,就不详细说了。
在启发式对话里边还有一种基于话题的对话管理,首先话题本身,因为它引入了一个新的概念就是话题,在问用户的问题之外引入了话题,话题可以是人工建的,也可以是系统自动计算出来的,也可以是系统引导用户来创建,这个话题就是我刚才在最开始讲启发式对话的时候,我们看到的,比如说关于花的一些相关话题的组织,也可以通过一些学习的方式去挖掘问题之间有哪些话题,特别在一些企业服务的场景中,因为企业本身有它明确的应用场景,所以它是有一些话题,它本身已经组织好的关于这些话题的组织。
当然话题的组织实际上是有很多问题的,我们比如拿树型来组织这些话题,这个系统的后面怎么来组织这个话题。比如按产品、人物来组织话题,所有的产品是一个话题,所有的人物是一个话题,但是当我真正要去问这个系统的时候,你会发现产品和人物它们之间是有交叉的,因为人物,比如说科技领域的人物和娱乐领域的人物,他们可能就没有什么交叉领域,我们把它放在一个话题下面也不合适。所以说话题的划分实际上是有一定交叉的,当然我们显示出来一般情况下是一种树型的方式来组织,这样对用户也比较容易理解。但是它真正的管理后面实际上有很多的交叉。
对话的管理,实际上一般情况下我们可以认为它是这种状态,这种状态转换的过程,比较典型的可能就是一个 Markov 决策过程,这里边 S 是一组状态集,A 是一组动作,在某一个状态下它遇到一个什么东西,然后要做一个什么样的响应或者什么样的动作,机器学习的方式可能就需要把这个对话组织成这样一个状态,在这里边一个重要的地方是需要有一些回报的函数。
比如说在强化学习做这种对话的时候,不一定是做对话管理,做对话生成的时候也有这种场景,就是说它去定义一个在对话里边,它模拟多轮,根据一个定好的回报函数,然后来做一个判断,这是对话管理,对话管理用强化学习可以来做。实际上强化学习就是模拟多轮的对话,然后再回过来判断当前的状态到底走哪一步合适。
这是一个用深度强化学习来做对话状态跟踪的简单状态,比如用户输入了一句话,通过语音识别,它可以有一个状态的管理,然后去管理这个状态,通过一个策略来控制它的输出。当然它中间核心的一个部分是有这个 Reward 函数,在对话里,这个 Reward 函数就非常重要,一般情况下它也不太好定义,因为我们对话,它到底什么算合适,什么算不合适,这个还不是特别好控制的。