论文阅读笔记(Mention Flags:Constraining Transformer-based Text Generators)

本文探讨了受控文本生成在常识生成任务中的重要性,特别是Seq2Seq模型结合MentionFlags技术来确保生成的句子包含指定的概念集合且不违背常识。MentionFlags跟踪词汇约束的满足情况,更新生成过程中的提及状态。通过在Transformer解码器中注入MentionFlags,模型能够更好地控制生成内容,提高生成句子的质量和合理性。
摘要由CSDN通过智能技术生成

一、概述

 

        受控文本生成任务与常规的文本生成任务有一些不同。常规的文本生成任务对生成文本的内容(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输出(h^{^{e}})和decoder当前步注意力加权计算之后的输出y_{t}之间的attention。

其中 

 h_{t}^{d}是解码器的self multi-head attention 的输出,CA(h_{t}^{d},h^{e})是encoder的输出与decoder的输出之间的交互的self multi-head attention的输出。

那我们如何将Mention Flags与decoder联系起来呢?

首先由于在CA中已经使用了y_{t}作为query,h^{^{e}}作为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 m^{^{k}}=E_{k}(F)和 Mention Flag Valuem^{v}=E_{v}(F) ,其中Ek和Ev是Mention Flag嵌入表。(这里不是很懂)

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值