Grounded Conversation Generation as Guided Traverses in Commonsense Knowledge Graphs
![e082a912acb69220e2f55ee28845ce9c.png](https://i-blog.csdnimg.cn/blog_migrate/ad4a65e83d4538c5cbb6a73758dbfc8b.jpeg)
在对话中加入知识已经不是什么新鲜事儿了。这篇paper的一个亮点是,为了让开放域对话看起来更自然,作者设计ConceptFlow的模型,它利用常识知识图谱对会话流进行显式建模。通过将会话连接到概念空间,ConceptFlow 将潜在的会话流表示为沿常识关系在概念空间中的遍历。在概念图中,以图注意力为导向,在概念空间中向更有意义的方向移动,以产生更具语义性和包含更多信息量的会话回答。
![4b0dfcc6653542ad0d06a4b760a30e82.png](https://i-blog.csdnimg.cn/blog_migrate/2e92930c9e8704cd8c2e266112cc14f4.jpeg)
作者举了一个例子:假设对话的上一句是“机器人基于知识对话是未来”,可以看到,在这句话里的三个实体都出现在了上面的graph中(黄色),他们的一阶邻居(蓝色)和二阶邻居(紫色)有非常多的实体。作者认为可以通过意识流来选择更有意义的实体从而生成对话。(绿色部分越深,代表话题越相关,也是我们期望conceptflow能够关注到的)
![b4a86a585fd118f3d23da1b004b29219.png](https://i-blog.csdnimg.cn/blog_migrate/ebedc223e7d84a020703972bde92a950.jpeg)
下面介绍ConceptFlow是如何工作的:
上面的graph显式的提供了常识和对话的语义联系,下面利用ConceptFlow来引导对话的生成。
首先给定用户对话
注意这里的e指的是实体的embedding,理论上,GNN可以是任意的图网络,作者使用的是GraftNet(Open domain question answering using early fusion of knowledge bases and text)
为了让“Flow”从V1(一阶邻居)跳到V2(二阶邻居),我们还需要Outer Flow Encoding
其中,
其中,
得到了ConceptFlow的特征表示后,如何生成文本呢?
结合上图,生成文本的主要框架decoder由GRU组成,
其中y是t-1时刻的token embedding,c是t-1时刻的context representation:
context representation由text(用户对话记录)和concept(上文一直在讲的conceptflow)两部分组成。
text(用户对话记录)的特征表示作者仅仅用了attention机制来捕捉:
![101f98941af81d188bb1b59cc88b1025.png](https://i-blog.csdnimg.cn/blog_migrate/19dd9c7e96c466ed2e855e4331e5306c.png)
通过conceptflow我们得到了实体(
![121825007b2aa755ca37f9485e4323e0.png](https://i-blog.csdnimg.cn/blog_migrate/bb1f2a73c4c6831ee545db5ee9d1fcb8.jpeg)
最后我们需要Generating Tokens。作者通过门控机制来选择下一个词是从词典,
![c0dad60db841899fbed3417f2d227656.png](https://i-blog.csdnimg.cn/blog_migrate/0847141ae3c1f1abd98931e6a864c618.png)
实验分析
自动评价指标中,Conceptflow各方面分数都占优
![4ffc24743991c787c9e77468e52afb00.png](https://i-blog.csdnimg.cn/blog_migrate/d595c0cf6b7a2847d902d22042c143fd.jpeg)
在多样性和新颖性方面,模型只比GPT-2弱一些,这可能是GPT-2在生成采取抽样的策略导致的
![138578fe7ff447cf182abe8228c94d38.png](https://i-blog.csdnimg.cn/blog_migrate/b7e79853055d1a7b135ecf1a8b533bfe.jpeg)
紧接着作者做了消融实验,以证明conceptflow确实很好的捕捉了多跳范围内的实体概念:
![ee6fcc6fe844113154c7ea0f72a3e487.png](https://i-blog.csdnimg.cn/blog_migrate/44ff066383c00c3c728338f128af6c35.jpeg)
最后我们再看一个case来观察下attention的分布是否符合自然环境下的对话场景:
![4bfe5ef2f1a90a2fdf46abe1567fa34a.png](https://i-blog.csdnimg.cn/blog_migrate/e92118cee7f92b9f929feb00de4d348e.jpeg)
论文总结
最后还是想碎碎念一下:个人认为目前对话+知识的paper层出不穷,起初是在5月份一个讲座听到author的pre,期间我做了一个很长很长的产品梦,直到10月份才开始如梦初醒继续弄科研,所以很久也没写博客和看paper了。
- 文章提出的问题个人认为非常新颖,并且在模型和实验设计中都很好的描述了ConceptFlow的流这个故事。模型也是用很常见的图网络、注意力机制等搭建起来的,对于非理论创新的paper来说,ConceptFlow是挺不错的文章。
- 我比较关注的是最后生成token的部分,往常更多看到的是copy机制,作者使用gate来动态选择生成token的embedding,可能是因为太久没看论文的关系,我还觉得这种方式比较新颖的。具体的代码实现有空看看作者开源的github