Plug and Play Language Models: A Simple Approach to Controlled Text Generation
来自 ICLR 2020,https://arxiv.org/pdf/1912.02164.pdf
代码已开源,https://github.com/uber-research/PPLM
官方博客见 https://eng.uber.com/pplm/
Introduction
Transformer可以用来在海量的数据上训练大规模的语言模型,这极大地提升了现有自然语言处理任务的最高水平。这些模型用于提取上下文化的词向量,以用于迁移学习或者用作自然语言生成。但是,当这样的模型训练好了之后,如何在不改变模型结构或者进行微调的前提,控制生成文本的属性就变得非常困难。
可控文本生成需要建模 $p(x \mid a)$,其中 $a$ 是需要希望的属性,$x$ 是生成的文本。但是生成式模型只能需要到 $p(x)$。作者借鉴了计算机视觉领域 PPGN 的工作,根据贝叶斯公式,我们有
\[p(x \mid a) \propto p(x)p(a \mid x)\]于是作者提出了自己的 Plug and Play Language Model (PPLM) 模型,它是一种条件生成模型,结合了一个或多个简单的属性模型 $p(a \mid x)$ 和一个预训练的无条件的语言模型 $p(x)$。
作者选择优化激活层,因此不需要重新训练或微调。对于属性的控制是细粒度的,通过一个强度参数来控制。在本文中,作者使用了一个预训练好的 GPT-2 语言模型来建模 $p(x)$。对于属性模型,作者尝试了使用词袋模型(BoW)或一个简单的单层分类器。
作者将自己提出的模型的参数量与前人的工作进行了比较,如下所示:
可见 PPLM 的可训练参数量规模很小,它可以用很小的训练代价取得不错的可控生成能力。
PPLM
LANGUAGE MODELING WITH TRANSFORMERS
给定token的序列$X=\{x_{0}, \cdots, x_{n}\}$,语言模型的训练目标是计算如下的无条件概率:
\[p(X)=\prod_{i=1}^{n} p\left(x_{i} | x_{0}, \cdots, x_{i-1}\right)\]本文中,作者使用了 Transformer 来建模自然语言的分布。记历史矩阵 $H_t$ 包含了过去的 key-value 对 $H_{t}=\left[\left(K_{t}^{(1)}, V_{t}^{(1)}\right), \cdots,\left(K_{t}^{(l)}, V_{t}^{(l)}\right)\right]$,其中 $ \left(K_{t}^{(i)}, V_{t}^{(i)}\right)$对应了第 $i$ 层从0到 $t$ 时刻生成的 key-value 对。关于 Transformer,一种有效的实现是给定 $x_t$,根据 $H_t$ 来生成 $x_{t+1}$:
\[\begin{aligned} o_{t+1}, H_{t+1} &=\mathrm{LM}\left(x_{t}, H_{t}\right) \\ x_{t+1} \sim p_{t+1} &=\operatorname{Softmax}\left(W o_{t+1}\right) \end{aligned}\]其中 $W$ 是线性变换,它将 logits 向量 $o_{t+1}$ 映射到一个词表大小的向量。
Asceding $\log p(a\mid x)$
为了控制语言模型的输出,在每个时间步,我们将历史矩阵 $H_t$ 向着两个梯度的方向移动,一个是在条件属性模型 $p(a \mid x)$ 下向更高的属性 $a$ 的对数似然,另一个是在未修改语言模型 $p(x)$ 下向更高的对数似然。其流程如下:
生成过程分为三步:
- 前向传播:使用语言模型进行前向传播,然后用属性模型 $p(a \mid x)$ 计算期望属性的似然性
- 后向传播:使用属性模型的梯度,更新语言模型的潜在表示,以增加生成文本具有期望属性的可能性
- 前向传播:再次用语言模型进行前向传播,得到新的分布并采样得到最新的token
这些梯度的更新只针对于 $H_t$,是因为未来的预测只通过 $H_t$ 取决于过去。因此在 $H_t$ 空间的梯度更新会修改模型的激活层,然后使得未来的生成朝着希望的方向进行。
令 $\Delta H_t$ 是对 $H_t$ 的更新,因此根据 $ H_t + \Delta H_t$生成的文本更有可能接近想要的属性。我们将属性模型 $p(a \mid x)$ 重写为 $p(a \mid H_t + \Delta H_t)$,然后关于 $\Delta H_t$ 的梯度更新如下:
\[\Delta H_{t} \leftarrow \Delta H_{t}+\alpha \frac{\nabla_{\Delta H_{t}} \log p\left(a | H_{t}+\Delta H_{t}\right)}{\left\|\nabla_{\Delta H_{t}} \log p\left(a | H_{t}+\Delta H_{t}\right)\right\|^{\gamma}}\]其中 $\alpha$ 是步长,$\gamma$ 是标准项的缩放系数。这样的更新可重复多次,在实际中作者使用3到10次。
Asceding $\log p(x)$
上一节提出的方法可以生成可控的文本,但是可能导致文本不流畅或者不切实际。为此,作者提出使用两种正则化手段,使得模型不偏离原始的语言模型太远。
- KL 散度:在之前的基础上,作者选择在更新 $H_t$ 的同时最小化修改过的语言模型的输出分布与原始语言模型的输出分布之间的 KL 散度。
- 后范数几何均值融合:作者选择从如下的分布 $ x_{t+1} \sim 1 / \beta\left(\widetilde{p}_{t+1}^{\gamma_{g m}} p_{t+1}^{1-\gamma_{g m}}\right)$中进行采样,$p_{t+1}$ 和 $\tilde{p}_{t+1}$ 分别代表原始的语言模型的分布和修改过的语言模型的分布。当 $\gamma_{gm} \to 1$,它会收敛到更新后的语言模型;当 $\gamma_{gm} \to 0$,它将收敛到原始的语言模型的分布。
Two Attribute Model
作者尝试采用了两种属性模型 $p(a \mid x)$,一个是词袋模型,一个是简单的单层分类器。对于词袋模型(BoW),给定一系列关键词 ${w_1, \cdots, w_k}$,BoW计算如下的概率和的对数值:
\[\log p(a | x)=\log \left(\sum_{i}^{k} p_{t+1}\left[w_{i}\right]\right)\]对于判别器模型,作者先在一个数据集上训练了一个单层的分类器。对于一个输入的文本 $x$,文本长度为 $t$,我们先得到其词向量表示 $o_{:t}^{x}$,然后使用均值向量 $\bar{o}^{t}$ 来得到输出。
Experiments
Evaluation Methods
作者使用了两种评价方式——自动评价和人工评价。
关于自动评价方法,作者选用了困惑度(Perplexity)来刻画文本的流畅度。同时,作者使用 Dist-1、Dist-2 和 Dist-3 来刻画文本的多样性。最后,作者训练了情感分类器来做情感评价。
关于人工评价方法,作者使用人工的方式对文本的流畅度和属性相关度。
Ablation Study and Baseline
作者在四个变体上进行了消融实验——
- B:原始的GPT-2模型,只采样一次
- BR: 在B的基础上采样 $r$ 次,然后根据对数似然性选择最好的样本
- BC: 更新 $H_t$,并只采样一次
- BCR: 更新 $H_t$,然后采样 $r$ 次选最优
关于baseline模型,作者选择了如下三个模型:
- CTRL: 在大规模语料库上训练的语言模型
- GPT2-FT-RL: 经过微调的 GPT-2 语言模型
- WD: 在B模型的基础上修改输出的权重以最大化 $p(a \mid x)$
Result
作者使用人工评价和自动评价的方式,评估了生成的文本的属性相关性和语言流畅性。
对于话题相关度,作者选取了七种不同的主题(科学、军事、法律等),同时也控制生成不同的情感文本(积极和消极),最后的结果如下所示:
可见,BC 和 BCR 生成的文本的话题相关性显著优于 B 和 BR,但在文本的流畅性上稍有下降,证明了控制属性达到了期望的效果。同时我们发现,四种变体模型上的 Dist-1、Dist-2 和 Dist-3 评分差别不大。而且,BCR超越了CTRL,同时显著优于 WD。BCR、CTRL 和 WD 的流畅性评分相差不大。
对于情感控制任务,结果如下:
可见,不同于话题控制的任务,使用采样和排序方法后,属性准确度的提升非常大(19.3% $\to$ 41.5%)。同时,我们注意到 BCR 的属性控制准确度显著提高(73.7%),但同时保证了与 B 和 BR 相似的文本流畅度。而且,在控制潜在表示之后的使用采样和排序得到的情感准确度的提升大于未修改之前(34.1% > 22.2%),这表明这两种方法可以相结合使用。与 baseline 模型 CTRL、GPT2-FT-RL 和 WD 相比较,BCR 表现优于 CTRL,BR、BC 和 BCR 都优于 GPT2-FT-RL 和 WD。