一、概述
受控文本生成任务与常规的文本生成任务有一些不同。常规的文本生成任务对生成文本的内容(Content)通常没有强制性的约束,而受控文本生成任务会要求生成文本的内容必须满足一些既定的约束条件,如风格(Style)、主题(Topic)等。例如,文本风格转换(Text Style Transfer)就是一类十分经典的受控文本生成任务,该任务要求生成文本的内容在语义上需要与转换前保持一致,在风格上需要转换为预定义好的目标风格。从应用的角度来看,受控文本生成技术更有希望构建出场景适配的、用户可接受的文本生成系统。因此,受控文本生成技术已经被越来越多的研究者关注。
本文重点关注Seq2Seq约束文本生成,其中文本生成器被约束在生成的输出中,作为编码器输入的特定单词。作者提出Mention Flags(MF),跟踪S2S解码器生成的输出中是否满足词汇约束。MF模型经过训练生成tokens,直到满足所有约束。
本模型针对于将受控文本生成应用到常识生成任务上,该任务的设定为给定一个概念集合,机器需要自动生成一个能够描述这个概念集合的句子,并且生成的句子不能违背常识。例如,给定一个概念集合{apple, bag, put},理想情况下机器应该生成“A girl puts an apple in her bag”这样的句子。如果机器生成了“A girl eats an apple”或者“A girl puts a bag in her apple”,都不能算是一个合格的生成结果。因此,要想获得一个较好的生成结果,我们首先需要保证的就是概念集合里的概念都要出现在输出结果中。
二、方法
1.Mention Flag
在生成步骤 t 中,一组 Mention Flags 指示在此步骤之前是否已满足每个词法约束,即矩阵M的元素只能是0,1,2,分别代表不是约束,未提及,和已经提及。在开始状态下,m(x,ε) 的取值在(0,1),其中ε是空字符串,因为还未生称任何字符。生成过程中 m(x,ε)的值只能保持不变或者1->2(从未提及到提及)。
特别的是,若存在多词约束时,只有模型生成了完整的约束时,m才会从1更变为2。
例,如图,给定encoder一组概念C=[name,Tetas,area,South,Bank],开始时m(x,ε)=[0,1,0,1,1],因为name,area没有词法约束,所以初始化为0,其他初始化为1,代表生成的词还未提到约束。
给定x,和yt,可以定义出二维提及矩阵Mention Flag Matrix F:
在推理过程中,在每个时间步扩充mention矩阵的每一列,表示此时的mention状态,开始的时候只有一列。
2.decoder model structure
通过下面的示意图可以看到,Mention Flags被注入到Transformer解码器中。
在之前的transformer中,decoder中包含了两种attention,如公式(3)中的SA,是处理当前decoder的input序列之间的attention,CA处理encoder输出()
和decoder当前步注意力加权计算之后的输出之间的attention。
其中
是解码器的self multi-head attention 的输出,是encoder的输出与decoder的输出之间的交互的self multi-head attention的输出。
那我们如何将Mention Flags与decoder联系起来呢?
首先由于在CA中已经使用了作为query,作为key,生成的查询键相似度矩阵与我们的 Mention Flag 矩阵具有相同的大小,这使得两者之间合并起来。
作者提到受Shaw et al.(2018)的《Self-attention with relative position representations》启发,在SA中注入Mention Flags作为编码器输出he和当前解码器输入yt之间的“相对位置”。作者建议在 CA 模块中注入 Mention Flags 作为编码器输出 he和当前解码器输入yt之间的“相对位置”,在每个解码器承重,将F表示为两组可训练的嵌入Mention Flag key 和 Mention Flag Value ,其中Ek和Ev是Mention Flag嵌入表。(这里不是很懂)