antd 文本域超长问题_文本生成14:ConceptFlow,概念流引导对话生成

Grounded Conversation Generation as Guided Traverses in Commonsense Knowledge Graphs

e082a912acb69220e2f55ee28845ce9c.png

在对话中加入知识已经不是什么新鲜事儿了。这篇paper的一个亮点是,为了让开放域对话看起来更自然,作者设计ConceptFlow的模型,它利用常识知识图谱对会话流进行显式建模。通过将会话连接到概念空间,ConceptFlow 将潜在的会话流表示为沿常识关系在概念空间中的遍历。在概念图中,以图注意力为导向,在概念空间中向更有意义的方向移动,以产生更具语义性和包含更多信息量的会话回答。

4b0dfcc6653542ad0d06a4b760a30e82.png

作者举了一个例子:假设对话的上一句是“机器人基于知识对话是未来”,可以看到,在这句话里的三个实体都出现在了上面的graph中(黄色),他们的一阶邻居(蓝色)和二阶邻居(紫色)有非常多的实体。作者认为可以通过意识流来选择更有意义的实体从而生成对话。(绿色部分越深,代表话题越相关,也是我们期望conceptflow能够关注到的)

b4a86a585fd118f3d23da1b004b29219.png

下面介绍ConceptFlow是如何工作的:

:指的是当前对话中出现的实体(0阶邻居V0)和1阶邻居V1;

:指的是外围的1阶邻居V1和2阶邻居V2;

上面的graph显式的提供了常识和对话的语义联系,下面利用ConceptFlow来引导对话的生成。

首先给定用户对话

,我们得到
Central Flow Encoding

注意这里的e指的是实体的embedding,理论上,GNN可以是任意的图网络,作者使用的是GraftNet(Open domain question answering using early fusion of knowledge bases and text)

为了让“Flow”从V1(一阶邻居)跳到V2(二阶邻居),我们还需要Outer Flow Encoding

其中,

是对应节点的embedding,
是concat连接的意思,
是当前节点
相对于三元组
的注意力权重:

其中,

是关系r的embedding,
均是可学习的权重(h是head,t是tail)。

得到了ConceptFlow的特征表示后,如何生成文本呢?

结合上图,生成文本的主要框架decoder由GRU组成,

被作为解释为
output Context Representation,显然它并不是最终决定output的token的特征:

其中y是t-1时刻的token embedding,c是t-1时刻的context representation:

context representation由text(用户对话记录)和concept(上文一直在讲的conceptflow)两部分组成。

text(用户对话记录)的特征表示作者仅仅用了attention机制来捕捉:

101f98941af81d188bb1b59cc88b1025.png
mathpix snipping截公式好累,老attn了所以直接复制过来

通过conceptflow我们得到了实体(

)的特征表示后,也是通过上面的形式做attention结合:

121825007b2aa755ca37f9485e4323e0.png

最后我们需要Generating Tokens。作者通过门控机制来选择下一个词是从词典,

抽取:

c0dad60db841899fbed3417f2d227656.png
不同的门会放出不同的特征来生成token

实验分析

自动评价指标中,Conceptflow各方面分数都占优

4ffc24743991c787c9e77468e52afb00.png

在多样性和新颖性方面,模型只比GPT-2弱一些,这可能是GPT-2在生成采取抽样的策略导致的

138578fe7ff447cf182abe8228c94d38.png

紧接着作者做了消融实验,以证明conceptflow确实很好的捕捉了多跳范围内的实体概念:

ee6fcc6fe844113154c7ea0f72a3e487.png
可以看到conceptflow效果和2-hop差不多,但是仅仅关注了1/4范围的graph

最后我们再看一个case来观察下attention的分布是否符合自然环境下的对话场景:

4bfe5ef2f1a90a2fdf46abe1567fa34a.png

论文总结

最后还是想碎碎念一下:个人认为目前对话+知识的paper层出不穷,起初是在5月份一个讲座听到author的pre,期间我做了一个很长很长的产品梦,直到10月份才开始如梦初醒继续弄科研,所以很久也没写博客和看paper了。

  • 文章提出的问题个人认为非常新颖,并且在模型和实验设计中都很好的描述了ConceptFlow的流这个故事。模型也是用很常见的图网络、注意力机制等搭建起来的,对于非理论创新的paper来说,ConceptFlow是挺不错的文章。
  • 我比较关注的是最后生成token的部分,往常更多看到的是copy机制,作者使用gate来动态选择生成token的embedding,可能是因为太久没看论文的关系,我还觉得这种方式比较新颖的。具体的代码实现有空看看作者开源的github
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值