知识管理如何定义(一文详解启发式对话中的知识管理)
知识管理如何定义(一文详解启发式对话中的知识管理)这个和刚才 LSTM 那个方式最大的区别是,首先它层数增多了,因为它最前面是 GRU,最后边这儿也是一个 GRU,中间多了一个 CNN 的层,这个 CNN 层的作用实际上是把问题和答案的信息充分地混合,去找到它里边匹配的相似或者结合的点,然后来给出一个答复。这个模型在很多场景下的效果是比较好的,我们在一些实验中它的实际确实也是比较好的,但是它的问题是,因为它经过了一个很充分的混合,我们看到它对输入的要求是有一定要求的,这个输入相对比较长一点,它的信息比较充分,这样做是比较好的。但是在有一些对话场景下,当这个对话比较短的时候,它的效果实际上是有限的。这是一种方式。 这个方法是把用户转换成一个分类的问题,二分类的问题,这个用户的问题和我们标准库里的问题相似或者不相似,然后做一个判断。这样也可以做这个事,这是一种比较经典的方式,其实它的效果也还挺好,很多场景下都是挺适合的。我们看一下下面这篇文章
这是一个基本的模型,现在做问句,我们刚才提到现在大量的实际使用中做问句的相似度匹配,可能一种方法就是做句子相似度的计算,这张图是一个做句子相似度计算的基础模型,这里面这些都是现有的方法。
比如说用 LSTM 来对句子做一个编码,这个 LSTM 这个基本的模型和刚才的 Sequence to sequence 的编码阶段类似,用户的一个问题和一个系统中的问题,两个都经过一个 LSTM,这个 X 代表了输入,H 代表的是模型中间的隐藏层,用户的这句话经过 LSTM 把它编码成一个 h3(a) 这么一个状态,还有一个标准问题(被检索的问题),经过一个编码,编码成了 h4(b) 这么一个状态,两个经过一个距离的计算,就可以送到一个分类器里,给它做一个相似或者不相似的判断。
这个方法是把用户转换成一个分类的问题,二分类的问题,这个用户的问题和我们标准库里的问题相似或者不相似,然后做一个判断。这样也可以做这个事,这是一种比较经典的方式,其实它的效果也还挺好,很多场景下都是挺适合的。
我们看一下下面这篇文章,这篇文章我觉得是在做相似度计算方面比较经典的一篇文章,它还做得比较好。它左边是输入,比如有 u_1、u_n-1、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,也可以做分类,复杂问题可能就是客服里边有很多问题其实挺复杂,长度也比较长,可以用这种分类或者检索的,也可以用更严格的语意解析的方式来做。这些不同的方式、算法做一个集成,实际上现在有挺多是这样做的,效果也还是挺好。