FELIX
Felix出自论文Felix: Flexible Text Editing Through Tagging and Insertion,被2020的ACL收录,之前看到苏神对于NAT的一个回复,即使是在相同BLEU或rouge-L的指标下,自回归模型(AT)的生成效果基本都会比非自回归模型(NAT)的效果要好,单从效果上面来说,目前的AT模型已经能够表现得很好了,然而AT的瓶颈就在于生成效率,如果能从解码效率方面进行改进AT肯定比NAT更好,但是要改进AT的解码效率,用串行的方式提升20倍的效率仍然是一个非常困难的点,因此大多数研究仍然是基于NAT,本着更快生成文本的目标,本文用简单的代码对FELIX进行了复现,并在中文短文本生成数据集CSL上进行了实验,模型开源地址在FELIX,模型框架采用bert4keras,配置好环境后可以快速执行
模型框架
FELIX的整体模型框架如上图所示,其主要组成部分包括TAGGER,POINTER和MASKED LANGUAGE MODEL。
TAGGER
TAGGER模型,顾名思义就是一个标签判别模型,在这篇论文中,作者为每一个字符设计了3种类型的标签,KEEP
,DELETE
,KEEP|number_insert
,其中number_insert代表当前位置需要插入多少个字,使得source能够重构成target
POINTER
POINTER模型是attention的简化版,其公式为 Q ( X ) K ( X ) T ∈ R T × T \mathcal{Q}(X)\mathcal{K}(X)^T \in\mathcal{R}^{T\times T} Q(X)K(X)T∈RT×T,为每一个字预测其下一个字所在位置,因此这就需要在构建数据集的时候,构建出位置标签。作者采用的方式是首先用字典记录每个字出现的位置,然后根据target中每个字出现的先后位置,在字典中选择相同字最近的位置,为source中每一个字确定下一个字的位置。例如
source: 2033年,侵略地球的可能是外星人
target: 外星人侵略地球
dict={
‘2’: [0],
‘0’:[1],
‘3’: [2,3],
‘年’: [4],
‘,’: [5],
‘侵’: [6],
‘略’: [7],
‘地’: [8],
‘球’: [9],
“的”: [10],
‘可’: [11],
‘能’: [12],
‘是’: [13],
‘外’: [14],
‘星’: [15],
‘人’: [16]
}
那么对于source来说,其index为14 0 0 0 0 0 7 8 9 0 0 0 0 0 15 16 6 ,source的目标顺序为14->15->16->6->7->8->9->0
由于存在target中的字在source中不存在的情况,因此会在index后面加上一个added_phrase,用于辅助TAGGER生成对应标签KEEP|number_insert
MASKED lANGUAGE MODEL
根据TAGGER和POINTER模型,可以生成目标序列以及在相应位置需要insert字的个数,用[MASK]进行表示。MLM模型的作用就是像BERT一样对MASK的地方进行预测相应位置的字。
模型的结果在开源地址中,也可以直接运行进行复现。