ACL2021 | 把关键词生成看成集合预测问题
点击下面卡片,关注我呀,每天给你送来AI技术干货!
来源:AI科技评论
作者 | 叶佳成
论文地址:https://arxiv.org/pdf/2105.11134.pdf
代码地址:https://github.com/jiacheng-ye/kg_one2set
1 背景介绍
这里简单介绍一下关键词生成任务的形式。给一篇源文档(比如论文的摘要),关键词预测任务就是希望能预测出一些表达文档重点信息的关键词,或者更准确的说是关键短语。关键词有两种类型,分别是在文档里面的( , 是一个包含
present keyphrase
)和不在文档里面的 (absent keyphrase
)两种类型。所以,任务的训练样本是 present
和absent
两种类型的关键词集合。图1展示了两种类型的关键词:之前做关键词生成常用的有
One2One
和One2Seq
两种范式:One2One
[1]:在One2One
范式下,我们把训练样本是拆分成多个样本对,每个样本对就是源文档和一个对应的关键词。因为在训练的时候每次只有一个目标关键词作为监督,如果需要在测试阶段生成多个关键词,就需要用beam search
来生成多个关键词(如[1]中beam size
取了200)。这个范式有两个很大的问题:- 语义依赖:
beam search
生成的多个关键词之间也没有语义上的依赖性,可能生成语义重复的关键词。 - 动态数量:
beam search
数量往往给定,即不能为不同源文档生成动态数量的关键词。 One2Seq
[2]:为了解决One2One
的语义依赖和动态数量这两个问题,研究者提出一种One2Seq
的范式,他把所有的关键词按照一个给定的顺序(比如一般就是present
在前,absent
在后)连起来作为训练样本,也即训练样本为。语义依赖问题通过看到前面预测关键词来实现,动态数量问题可以用最后的eos
标签决定。
上面两种范式下的的训练样本举例图2所示。
2 论文动机
从上面的分析可以看出,
One2Seq
范式下引入了一个先验顺序函数f
,导致和原始的数据样本并不一致。用这种预定义的顺序函数会有以下几点问题:- 一方面,之前有研究者[3]发现不同的顺序函数会对结果有比较大的影响。尽管他们发现
Appear-Ap
策略(present
关键词按照在文章中出现的先后顺序以此排列,absent
关键词按照作者给的顺序连接到present
关键词序列后面)会相对比其他几种策略好一些。如果关键词有顺序的话,这种顺序可能也未必是最好的选择。 - 另一方面,训练的时候引入预定的顺序函数很可能带来错误的偏置。如图3(a)所示,上面是目标序列(即),下面是预测的序列。尽管模型预测对了这两个关键词本身,但是由于顺序和给定的不一样,模型还是会有很大的loss,也就是这种先验顺序会干扰模型学习真正要学的东西。
- 这里可能有个疑问,那为什么不可以让模型学会这个顺序函数,这样也就不会预测出
topic model
在前,deep learning
在后的情况了?当然,如果模型真的能学会,那自然是没有问题的,但是模型实际上很难学会,原因如下:
一方面,训练集中不能保证都是 topic model
在前,deep learning
在后,这可称之为多模式问题(multi-modality problem
)。这在其他任务,比如非自回归机器翻译以及对话的回复生成中也会遇到类似问题,模型很可能学到一个错误的中间状态。另一方面,模型确实很难学这个顺序。比如后面的 absent
关键词序列部分是按照作者给定的先后顺序连接的,而不同作者给的顺序依据也是不一样的,有的作者可能就是按照重要性给,有的就是按照技术、领域等topic给,有的可能就是比较随意地给,那么这也就要求模型去拟合不同作者的这一特征,而这在没有作者信息的情况下是很难的(引入作者信息是一个方向)。
所以,既然这个顺序函数
f
会带来那么多问题,而且更重要的是数据本身就是没有这个东西的,那我们能不能不引人顺序函数来进行训练和预测呢?这也就引出了我们的做法,我们希望在训练和预测的时候都和顺序无关,而只关注在每个关键词本身上。如图3(b),简单来说,在 。
One2Set
范式下,模型的训练样本就是原样本 3 模型介绍
在
One2Set
范式下,我们提出了SetTrans
(Set prediction model based on Transformer) 模型(图4),该模型模型主要解决以下问题:- 如何生成一个集合而不是一个序列?
- 生成的集合和目标集合的loss怎么算?
- 如何考虑到预测的依赖问题和动态数量问题?
为了解决第一个问题,我们引入 个控制编码( 个关键词的集合。
Control Code
),每个控制编码对应生成一个集合元素,这样我们就生成了包含 为了解决第二个问题,也就是给定包含 个预测关键词的集合,如何与包含 个关键词的目标集合计算loss。这里我们假设预定义的 的取值始终大于等于 (即统计数据集中文档的关键词最多有几个)。然后,我们用 元素加进中,使得两个集合元素数量相等,这样我们只需为他们进行最优的一对一匹配(匈牙利算法可解),然后匹配完之后就能计算loss了。其中,每个预测关键词与目标关键词的匹配得分可以定义为目标关键词在预测分布中的概率之和。
针对第三个问题,依赖问题可以一定程度上在训练时让 元素解决。
control code
隐式学习到,动态数量问题可以通过去掉预测的 此外,还有几个细节问题:
- 由于匹配目标前是不知道target是哪个的,于是只能自回归预测,但是开始阶段模型不会预测出
<eos>
,就是个冷启动的问题。这边令每个控制编码只预测步(如图中),然后用这个和每个target关键词的前个算score。 - 在匹配完之后,由于每个
control code
都只对应自回归成了个,如果直接给监督的话信息不完整,而且是一种student-forcing
的形式,效果会很差(见消融实验倒数第二行)。这边选择在匹配完之后teacher-forcing
地再过一遍算loss。 - 这边在匹配目标的时候
present
和absent
两个集合的时候分开考虑(Separate Set Loss
),也就是一半的control code
只会和present
关键词做匹配,另一半的control code
只会和absent
关键词做匹配。这样好处是让这两部分的control code
学到present
和absent
预测中不同的偏置(present
部分的control code
会更倾向于指导模型去copy原文内容,absent
部分则倾向于指导模型自己归纳生成)。这可以看成是一种在输入端而不是和常见的在输出端做区分的multi-task
。(见消融实验最后一行)
4 实验与分析
主实验
我们在
KP20k
数据集上做训练,并在KG任务5个标准测试上做测试,在present
和absent
预测上的主结果如下表所示,可以看到One2Set
范式下的SetTrans
模型相比One2Seq
下的Transformer
模型还是有一定的性能提升的。预测多样性
多样性体现在能预测更多而且重复率更低的关键词。重复率上的优势主要源自训练时匹配的二分特性。如模型图所示,第5个和第8个 元素做匹配。那么当loss进行回传时,第5个和第8个
control code
都指导生成了重复关键词“neural model”,但是由于一对一匹配的特征,只有一个会和目标中最接近的“neural network”做匹配,另一个只能和 control code
会学到不要生成重复的关键词,同理,所有control code
都朝不同的方向来指导模型生成多样的关键词。消融实验
这里比较有意思的是去掉
K-step assign
的情况,也就是按照One2Seq
的顺序函数f
进行顺序匹配。可以发现预测数量明显下降(如present
关键词数量 5.10 -> 2.64),重复率明显上升(8% -> 26%),且重复率和Transformer
几乎一致。Control Code
分析
这里对学好的 元素),从上到下依次是 去掉
Control Code
在测试集上的预测出present
关键词、absent
关键词的比例进行了统计(每个Control Code
只会生成present
关键词、absent
关键词或者 K-step assign
、K-step assign
+Single Set Loss
以及K-step assign
+Separate Set Loss
。主要有以下几点发现:- 去掉
K-step assign
的情况下,仅前面少数几个Control Code
能生成有效的关键词,后面都是预测的元素,而且通过前面的结果也可以发现,在只有5个左右Control Code
有效的情况下还有26%的重复率,说明这些Control Code
并不能学到语义上的信息。 K-step assign
+Single Set Loss
相比去掉K-step assign
,更多的Control Code
可以来指导生成,但是由于absent
预测比较难,模型还是更倾向于预测present
关键词。Separate Set Loss
相比Single Set Loss
能将present
和absent
分开来,不仅有助于两者预测地更准确(消融实验最后一行),也能预测更多的absent
关键词,说明这种输入端做multi-task
的形式能让这两部分的Control Code
一定程度上也能学到present
和absent
预测存在的偏置。
5 总结
做个简单的总结,我们提出了一种新的训练范式
One2Set
来去掉顺序函数带来的诸多问题。在此范式下,我们提出了模型SetTrans
,其特点是能够预测更多、更准确而且重复率更低的关键词集合。同时,我们也通过大量实验对比了顺序和没有顺序的结果,从而来证实One2Seq
中的顺序函数带来的影响。我们还发现 SetTrans
由于可以并行预测,在 inference 效率上是Transfomer
的6.44倍,其他实验分析可移步论文查看。欢迎大家批评指正~
整理不易,还望给个在看!
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。