https://arxiv.org/pdf/1912.02164.pdf,by Uber AI。
大规模预训练语言模型的效果不错,但如何利用它们生成属性可控的文本(比如说某一领域、某种风格、某种情感),fine-tune是一种方法,本文提出了一种不需要重新训练的方式。
无需fine-tune或者重新训练LM。其具体的做法是根据梯度将Transformer-decoder每一层的hidden state向LM和attribute的方向改变一步。
对于attribute,进行了两类属性的控制,1)情感,通过一个预训练的二分类器判断生成的候选文本的误差;2)主题,通过指定一个中心词,找到wordnet的相关词集合,以multi-hot的方式将这些词列为vocabulary中的ground-truth-labels来计算误差。
分为三步,第一步通过一个前向过程获取$p(a|x),p(x)$,第二步通过反向传播获取相对于H的梯度并更新H,第三步利用更新之后的$\tilde H$来预测此时刻的vocab分布。
计算$H_t$的更新值$\nabla H_t$通过若干次重复计算梯度并衰减求和得到。
为了生成文本的流畅度,增加一项KL项,缩小输出的分布和之前的分布的KL值。
最后,最后采样的分布是未改变的分布和改变后的分布的加权之和。
最后的最后,根据$p(a|x)$,采样出来的候选seq集合还可以根据与attribute一致的程度进行排序。下图来自论文原文。
总结,plug-and-play看似不错,但是实际使用中有两个问题:1)速度,每个inference的step都做若干步反向传播和参数更新太慢了,速度慢到基本没法用;2)效果,作者在8个topic上面尝试的结果不错,但是更广泛的属性词效果不一定会很明显。
Be First to Comment