本文主要是介绍论文笔记:Mention Flags (MF): Constraining Transformer-based Text Generators,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、概述
本模型针对于将受控文本生成应用到常识生成任务上,相较先前的T5等生成模型,性能有不错的提升。
常识生成一般有两种:
- CommonGen:输入是一个包含k个概念的
C= [c1,· · ·, ck], k≤5
,要求生成的文本中满足C中的全部词法约束。如:[Tetas, South, Bank]
- E2ENLG: 输入是包含k个键值对形式概念的
C=[k1, v1,· · ·, kn, vn], n≤8
,要求生成的文本中满足C中的全部词法约束。如:[name, Tetas, area, South, Bank]
本论文中提出了Mention Flags (MF)
,用于跟踪S2S解码器生成的输出中是否满足词法约束。
模型总体逻辑结果如下:
在每一个生成步骤,MF通知解码器在当前decoder输入序列中是否满足了每个词法约束。而且本模型支持变体词汇也可认为满足约束。 好比“上午”可以满足约束“早晨”。
理想情况下,产生约束文本的方法应该:
- 生成高质量的文本
- 达到高约束满意度
- 具有高效的推理程序
二、原理
1、 Mention Flag
现有提及标记矩阵M,元素只能是0,1,2,分别代表不是约束、未提及、和已经提及。
开始状态下m(x, ε)∈ {0,1}
,其中ε
是空字符串,因为空字符串没有提到任何东西。
生成过程中,m(x, ε)
中的值只能是保持不变或者1 -> 2
(未提及->已提及)。
举例:
给定encoder一组概念C=[name, Tetas, area, South, Bank]
,开始时m(x, ε) = [0,1,0,1,1]
,因为name和area没有词法约束,所以初始化为0,其他初始化为1,代表未提及。
在step4时,m(x,[Tetas, is, located]) = [0,2,0,1,1]
,因为Tetas的词法约束已经被满足,其他还未提及。
特别的是,若存在多词约束时,只有模型生成了完整的约束时,m才会从1更变为2。正如例子中第七步South已经提及,但由于其为多次约束,这是并不会把South的提及标记改变为2,待Bank生成后才会一并更新。
给定x,和yt,可以定义出二维提及矩阵Mention Flag Matrix F:
在训练时,提及标记矩阵可以通过输入与输出的对齐数据直接转换得到F:
在推理过程中,我们递增的构建提及矩阵,在每个时间步递增式地扩充提及标记矩阵的每一列,表示此时的提及状态。开始的时候只有一列:
在第t步时,提及矩阵F扩充至:
2、 model structure
通过下图的示意图可以看到,Mention Flags被注入到Transformer解码器中。
在之前的transformer中,decoder中包含了两种attention,如公式(3)中的SA,是处理当前decoder的input序列之间的attention,CA处理encoder输出(he)
和decoder当前步注意力加权计算之后的输出yt
之间的attention。
Q:那我们怎么把Mention Flags注入到transformer结构中呢?
A:由于在SA中已经使用yt
作为query,he
作为key,计算得到的相似度矩阵和Mention Flag Matrix具有相同的size,这使得它适合与之合并。
作者提到受Shaw et al.(2018)的《Self-attention with relative position representations》启发,在CA中注入Mention Flags作为编码器输出he和当前解码器输入yt之间的“相对位置”。在decoder的每个layer,我们将F表示为两个可训练的嵌入层mk
和mv
(每层各自独立)
维度表示为:
此时CA中嵌入两个参数mk
和mv
:
其中R是相对位置的Self-Attention函数:
这篇关于论文笔记:Mention Flags (MF): Constraining Transformer-based Text Generators的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!