【POINTER: Constrained Text Generation via Insertion-based Generative Pre-training】
在文本生成领域有一个子领域叫做是约束性文本生成(Constrained Text Generation),而在之中又有两个子类,分别是软约束的生成以及硬约束的生成.所谓的软约束就是我们给定一些关键词,希望我们的生成的文本可以包括相关的信息,但是这个要求并非是一个限定性的要求,可以不包括,但是在硬约束之中就是要一定包含我们所给定的相关的词汇。
本文就是一篇关于硬约束的文章,通过在每一次的迭代之中都插入新的词汇以满足约束条件,并且非常高效的生成所需的文本的片段。
Method
我们先从数学上进行推导,记我们所需要的硬约束条件为$X^0$,在第$k$轮迭代之后生成的句子是$X^k$,总共训练$K$轮,那么最后的生成的句子记作是$X^K$。模型的迭代的过程可以看成是以插入的方法生成的,也就是说,在后一轮的句子之中一定会包含前一轮的句子中的单词,那么由前一轮的句子生成后一轮的句子的概率就是一个条件概率的形式,记作是
$$p(X^k|X^{k-1})$$
那么这里其实可以看成是一个简单的马尔科夫链了,最终状态可以表示成为
$$P(X) = p(X_{0})\prod_{k=1}^{K}p(X^k|X^{k-1})$$
而在机器学习之中,最重要的一个部分当然就是训练数据的构造的过程量,假设有有一个完整的句子$X$,假设他是由$\{ X^{0} , \cdots , X^K\}$这样的序列的顺序生成的,那么在序列之中的相邻的两个元素就可以看成是一个训练实例。
作者有一个想法就是让动词和名词这种对于语义的走向影响较大的词语先生成,而对于形容词和副词这种词后生成。而实现这一点的方式就是对于句子之中的每一个词语都赋予一个Importance Score,其计算的方法如下
$$\alpha_{t} = \alpha_{t}^{TF-IDF} + \alpha_{t}^{POS} + \alpha_{t}^{YAKE}$$
前两项分别是TFIDF和POS的得分,而YAKE是一种无监督的抽取方法,第三项则是代表了这的得分。
在上面的那个得分的公式之中,$\alpha_{t}$越高,代表了词语越重要,也就是要首先的生成。而得到了重要性的得分之后就要开始构建实例了。这里的方法是一个逆序的方法,首先把源句子之中抹去一部分词语,得到了$X^{K-1}$然后不断的迭代抹去相关的词语,以此类推,得到初始的句子$X^0$,这里的停止的标准是句子的长度为$c$时就停止。
那么如何根据得分抹去单词呢?本文使用的是下面的公式
$$\min \sum_{t=1}^{T} – \phi_{t}\cdot \alpha_{t}$$
其中的$\phi = 0$代表的是这个词语被抹去了,并且在这里设置了约束,不能够有两个连续的词语被抹去。作者使用了类似动态规划的思想在这里得到了全局的最优解。算法如下
而得到了训练的数据集之后,就使用$X^{k-1}$作为输入,$X^{k}$作为输出。需要注意的是,这里的输出可能并非是一个词语,很有可能是一个Label叫做是NOI意思就是不插入。模型的生成的流程如下图所示
在上面的模型之中,作者认为很像经典的Transformer模型,所以作者在训练的时候使用BERT对于这个模型进行初始化,然后再使用其他的语料对于POINTER这个模型进行预训练。
而在Inference的时候,这里采用了Beam Search的方法,流程如下,假设我们现在有了上一个状态的句子$X^{k-1} = \{x_{1}^{k-1 } , \cdots , x_{T_{k-1}}^{k-1} \} $,其中的$T_{k-1}$代表的是句子的长度。对于每一个句子之中的单词都要进行预测其后面是否要加入单词,在作者的方法之中,这里是需要保留Top-B的Candidate的Sequence的。然后在预测下下个序列的时候是对于这B个序列都再进行预测的,然后再在产生的$B^2$个Sequence之中选择最高的B个句子,直至结束。
Comments
本文的方式还是一个非常有意思的生成式的方法,由于和BERT的模型的结构非常的类似,所以可以基本上可以和BERT进行“无缝连接”,成功把一个非语言模型改造成为了一个类似于语言模型的东西。也就是一个Non-AutoRegressive Generation的东西,自己虽然不是做文本生成的相关的工作的,不过这个也的确是给自己了一个非常有启发性的观点吧。
Reference
POINTER: Constrained Text Generation via Insertion-based Generative Pre-training
Comments
Leave a Comment