在不重新训练的情况下控制语言模型(LM)的行为是自然语言生成的一个主要开放问题。尽管最近的工作证明了控制句子中简单属性的成功(例如情感),但在复杂的,细粒度的属性控制上几乎没有进展(例如,句法结构)。为了应对这一挑战,我们提出了一种新的基于连续扩散的非自回归语言模型,称为Diffusion-LM。基于扩散模型在连续领域的成功,Diffusion-LM将高斯向量序列迭代去噪成单词向量序列,从而产生一系列中间潜在变量。中间变量的连续分层的特性可以使用基于梯度的算法执行复杂可控的生成任务。我们在6个具有挑战的细粒度控制任务上成功证明了 Diffusion-LM,其显著优于先前的工作。
大型自回归语言模型(LM)能够生成高质量的文本,但是为了能可靠地将这些LM部署在现实应用中,文本生成过程需要可控:我们需要生成满足所需要求的文本(例如,主题,句法结构)。控制LM的一种自然方法是使用有监督的格式化数据(control, text)来微调LM。但是,为每个控制任务更新LM参数成本可能是很高的,并且不允许多个控件的组合(例如,生成具有积极情感且安全的文本)。这启发了轻量化和模块化的可插拔方法,这种方法保持LM参数不更新,同时使用一个外部分类器来测量生成的文本是否满足控制要求,从而指导生成过程。但是,控制参数固定的自回归LM已被证明很困难,现有的成功仅限于简单属性的控制(例如,情感或主题)。
为了解决更复杂的控制,我们提出了Diffusion-LM,这是一种基于连续扩散的新语言模型。Diffusion-LM从一个高斯噪声向量序列开始,并将它们逐步去躁为和单词相对应的向量,如图1所示。这些逐渐去躁步骤生成了一个分层的连续潜在表示。 我们发现,这种分层和连续的潜在变量可以用简单的,基于梯度的方法来执行复杂的控制任务,例如约束生成序列的解析树。
连续扩散模型在视觉和音频领域上非常成功,但是由于文本的固有离散性质,它们还尚未应用于文本(§3)。将这类模型调整为适用文本的需要对标准扩散模型进行多次修改:我们向标准扩散过程中添加了一个嵌入步骤和舍入步骤,同时设计了一个学习嵌入的训练目标并提出了改进舍入的技术(§4)。我们使用基于梯度的方法控制Diffusion-LM,如图1所示。此方法使我们能够将文本生成的过程引导到满足目标结构和语义控制的输出。它Diffusion-LM上迭代地对连续潜在变量进行梯度更新,以平衡流利度和控制满意度(§5.1)。
为了证明Diffusion-LM控制的有效性,我们考虑了六个任务,控制目标从细粒度属性(例如语义内容)到复杂的结构(例如,解析树)。我们的方法是可插拔方法成功率的两倍,达到甚至超过基于微调的方法。除了这些单独的控制任务外,我们还表明我们可以成功组合多分类器控制,以生成具有所需语义内容和句法结构的句子(§7.2)。最后,我们考虑跨度相关的控制,例如长度控制和补全。Diffusion-LM允许我们在没有分类器的情况下执行这些控制任务,而我们的Diffusion-LM显着胜过先前的可插拔方法,并且具有和在补全任务上从头训练的自回归LM相当的性能(§7.3)。
Diffusion Models for Text。扩散模型在连续数据领域中表现出了巨大的成功,生成的图像和音频具有最好的样本质量。为了处理离散数据,过去的工作在离散状态空间上研究了文本扩散模型,该模型定义了一个在离散数据上的损坏过程(例如,每个token都有可能被损坏为相似或随机token)。在本文中,我们专注于文本的连续扩散模型,据我们所知,我们的工作是第一个探索这种设置的工作。与离散Diffusion LM相反,我们的连续Diffusion LM能生成连续的潜在表示,从而使用基于梯度的方法来实现可控生成。
Autoregressive and Non-autoregressive LM。大多数大型预训练LM是从左到右的自回归模型(例如GPT-3,PaLM)。固定的生成顺序限制了模型在许多可控生成环境中的灵活性,尤其是那些需要在右上下文上施加全局控制的环境。一个例子是补全,它在右边上下文上强加了词汇控制。另一个示例是句法结构控制,它控制同时涉及左右上下文的全局属性。由于自回归LM不能直接以右侧上下文为条件,因此先前的工作已经为这些任务开发了专门的训练和解码技术。例如, Qin et al.提出了一种解码方法,该方法将离散的LM输出转换到连续变量并从右侧上下文中反向传播信息。Diffusion-LM可以以任意分类器为条件,这些分类器查看句子的复杂全局特性。对于机器翻译和语音识别任务开发了其他非自回归LM。但是,这些方法专门用于语音和翻译环境,其在验证集输出的熵很低,并且已经证明这些方法无法用于语言建模。
Plug-and-Play Controllable Generation。可插拔的可控生成旨在保持LM参数固定的同时使用潜在函数(例如分类器)引导其输出。给定一个概率潜在函数,该函数可以测量生成的文本满足所需控制的程度,因此生成文本的优化可以通过控制满意度(通过潜在函数来衡量)和流利度(通过LM概率测量)来完成。有几种基于自回归LM的可插拔方法:FUDGE在每个token上重新加权LM预测,并对部分序列进行控制满意度的估计;GeDi和DExperts将每个token的LM预测重新加权到一个在特定任务上训练的较小LM。
最接近我们的工作是PPLM,它可以在自回归LM的隐藏激活上进行梯度下降,以引导下一个token以满足控制并保持流畅度。由于PPLM基于自回归LM,因此只能从左到右生成。 这样可以防止PPLM在上一生成步骤中修复和恢复错误。 尽管它们在属性(例如主题)控制上取得了成功,但我们将展示这些自回归LM的可插拔方法不在应用到更复杂的控制任务,例如控制句法结构和语义内容。我们证明,Diffusion LM能够通过将分类器引导的梯度更新应用于Diffusion LM生成的潜在变量的连续序列来实现可插拔可控生成。
我们首先在3.1节定义可控生成,然后在3.3节回顾一下连续扩散模型。
文本生成是从训练好的语言模型 p l m ( w ) p_{lm}(\textbf w) plm(w)中采样 w \textbf w w的任务,其中 w = [ w 1 ⋅ ⋅ ⋅ w n ] \textbf w=[w_1···w_n] w=[w1⋅⋅⋅wn]是一系列离散单词, p l m ( w ) p_{lm}(\textbf w) plm(w)是单词序列的概率分布。可控文本生成是一个从条件分布 p ( w ∣ c ) p(\textbf w|\textbf c) p(w∣c)中采样 w \textbf w w的任务,其中 c \textbf c c表示控制变量。对于句法控制, c \textbf c c可以是目标语法树(图1),而对于情感控制, c \textbf c c可以是目标情感标签。可控生成的目标是生成满足控制目标 c \textbf c c的 w \textbf w w。
考虑一个可插拔的可控生成的情况:给的一个从大规模无标签文本数据中训练的语言模型 p l m ( w ) p_{lm}(\textbf w) plm(w),对于每个控制任务,我们可以获得一个从有较少标注文本数据中训练的分类器 p ( c ∣ w ) p(\textbf c|\textbf w) p(c∣w)(例如,对于句法控制,分类器是一个概率解析器)。这样做的目的是利用这两个模型通过贝叶斯法则 p ( w ∣ c ) ∝ p l m ( w ) ⋅ p ( c ∣ w ) p(\textbf w|\textbf c)∝p_{lm}(\textbf w)·p(\textbf c|\textbf w) p(w∣c)∝plm(w)⋅p(c∣w)来近似后验 p ( w ∣ c ) p(\textbf w|\textbf c) p(w∣c)。其中, p l m ( w ) p_{lm}(\textbf w) plm(w)鼓励 w \textbf w w流畅, p ( c ∣ w ) p(\textbf c |\textbf w) p(c∣w)鼓励 w \textbf w w符合控制目标。
传统进行语言建模的方法是从左到右自回归建模, p l m ( w ) = p l m ( w 1 ) ∏ i = 2 n p l m ( x i ∣ x < i ) p_{lm}(\textbf w)=p_{lm}(w_1)\prod^n_{i=2}p_{lm}(x_i|x_{plm(w)=plm(w1)∏i=2nplm(xi∣x<i)。在这种情况下,文本生成任务变为基于目前已生成的单词序列,重复预测下一个单词的任务。下一个单词预测 p l m ( x i ∣ x < i ) p_{lm}(x_i|x_{plm(xi∣x<i)通常通过transformer结构进行参数化。
扩散模型是一个潜在变量模型,该模型将数据 x 0 ∈ R d \textbf x_0∈\mathbb R^d x0∈Rd建模为马尔可夫链 x T . . . x 0 \textbf x_T...\textbf x_0 xT...x0,每一个变量都是 d d d维的且 x T \textbf x_T xT是一个高斯向量。扩散模型会逐步地将潜在变量序列 x T : 1 \textbf x_{T:1} xT:1去躁到服从目标数据分布的样本(如图2所示)。初始状态为 p θ ( x T ) ≈ N ( 0 , I ) p_{\theta}(\textbf x_T)≈\mathcal N(0,\textbf I) pθ(xT)≈N(0,I),且每个去躁过程 x t → x t − 1 \textbf x_t→\textbf x_{t -1} xt→xt−1都被参数化为模型 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; µ θ ( x t , t ) , Σ θ ( x t , t ) ) p_θ(\textbf x_{t-1}|\textbf x_t)=\mathcal N(\textbf x_{t-1};µ_θ(\textbf x_t,t),\Sigma_θ(\textbf x_t,t)) pθ(xt−1∣xt)=N(xt−1;µθ(xt,t),Σθ(xt,t))。 例如, µ θ µ_θ µθ和 Σ θ \Sigma_θ Σθ可以通过U-Net或transformer计算。
为了训练扩散模型,我们定义了一个构造中间潜在变量 x 1 : T \textbf x_{1:T} x1:T的正向过程。该正向过程会逐步将高斯噪声添加到数据 x 0 \textbf x_0 x0中,直到扩散步骤 T T T,样本 x T \textbf x_T xT近似为高斯分布。每个加躁过程 x t − 1 → x t \textbf x_{t-1}→\textbf x_t xt−1→xt通过 q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(\textbf x_t|\textbf x_{t-1})=\mathcal N(\textbf x_t;\sqrt{1-β_t}\textbf x_{t-1},β_t\textbf I) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)进行参数化,其中超参数 β t β_t βt是在步骤 t t t中添加的噪声量。正向过程 q q q的参数化包含不可训练的参数,并允许我们定义一个训练目标,该目标包含根据预定义的前向过程 q q q来生成噪声数据,并训练模型来建模逆向过程以重建数据。
训练扩散模型以最大化数据的对数似然 E x 0 〜 p d a t a [ l o g p θ ( x 0 ) ] \mathbb E_{\textbf x_0〜p_{data}}[log~p_θ(\textbf x_0)] Ex0〜pdata[log pθ(x0)],并且规范目标是 l o g p θ ( x 0 ) log~p_θ(\textbf x_0) log pθ(x0)的变分下界,
L v l b ( x 0 ) = E q ( x 1 : T ∣ x 0 ) [ l o g q ( x T ∣ x 0 ) p θ ( x T ) + ∑ t = 2 T l o g q ( x t − 1 ∣ x 0 , x t ) p θ ( x t − 1 ∣ x t ) − l o g p θ ( x 0 ∣ x 1 ) ] . (1) \mathcal L_{vlb}(\textbf x_0)=\mathop{\mathbb E}\limits_{q(\textbf x_{1:T}|\textbf x_0)}\bigg[log\frac{q(\textbf x_T|\textbf x_0)}{p_{\theta}(\textbf x_T)}+\sum^T_{t=2}log\frac{q(\textbf x_{t-1}|\textbf x_0,\textbf x_t)}{p_{\theta}(\textbf x_{t-1}|\textbf x_t)}-log~p_{\theta}(\textbf x_0|\textbf x_1)\bigg].\tag{1} Lvlb(x0)=q(x1:T∣x0)E[logpθ(xT)q(xT∣x0)+t=2∑Tlogpθ(xt−1∣xt)q(xt−1∣x0,xt)−log pθ(x0∣x1)].(1)
但是,这个目标可能是不稳定的,需要许多优化技巧才能稳定。为了解决这个问题,Ho et al.设计了一个简单可替代的目标,该目标扩展并重加权 L v l b \mathcal L_{vlb} Lvlb中的每个KL散度项,最终得到均方误差损失(附录E中给出了推导),如下所示:
L s i m p l e ( x 0 ) = ∑ t = 1 T E q ( x t ∣ x 0 ) ∣ ∣ μ θ ( x t , t ) − μ ^ ( x t , x 0 ) ∣ ∣ 2 , \mathcal L_{simple}(\textbf x_0)=\sum^T_{t=1}\mathop{\mathbb E}\limits_{q(\textbf x_t|\textbf x_0)}||\mu_{\theta}(\textbf x_t,t)-\hat{\mu}(\textbf x_t,\textbf x_0)||^2, Lsimple(x0)=t=1∑Tq(xt∣x0)E∣∣μθ(xt,t)−μ^(xt,x0)∣∣2,
其中 μ ^ ( x t , x 0 ) \hat{\mu}(\textbf x_t,\textbf x_0) μ^(xt,x0)是后验 q ( x t − 1 ∣ x 0 , x t ) q(\textbf x_{t-1}|\textbf x_0,\textbf x_t) q(xt−1∣x0,xt)的均值,其接近高斯分布, μ θ ( x t , t ) \mu_{\theta}(\textbf x_t,t) μθ(xt,t)是有神经网络通过计算 p θ ( x t − 1 ∣ x t ) p_{\theta}(\textbf x_{t-1}|\textbf x_t) pθ(xt−1∣xt)得到的均值。尽管 L s i m p l e \mathcal L_{simple} Lsimple不再是变分下界,验上发现,这能是先验网络更易训练且提高采样质量。我们在扩散LM中将使用类似的简化目标来稳定训练并提高采样质量(4.1节)。
构造扩散LM需要对标准扩散模型进行若干修改。首先,我们必须定义一个嵌入函数,该函数能将离散文本映射到连续空间中。为了解决这个问题,我们提出了一个学习嵌入的端到端训练目标(第4.1节)。其次,我们需要一种近似方法来将嵌入空间的矢量映射到单词。为了解决这个问题,我们提出训练和解码时间方法以促进近似(第4.2节)。
为了将连续扩散模型应用于离散文本,我们定义一个嵌入函数 E M B ( w i ) EMB(w_i) EMB(wi),该函数将每个单词映射到维度为 R d \mathbb R^d Rd的向量。我们将长度为 n n n的序列 w \textbf w w的嵌入定义为: E M B ( w ) = [ E M B ( w 1 ) , . . . , E M B ( w n ) ] ∈ R n d EMB(\textbf w)=[EMB(w_1),...,EMB(w_n)]∈\mathbb R^{nd} EMB(w)=[EMB(w1),...,EMB(wn)]∈Rnd。
我们提出对扩散模型的训练目标(等式1)进行修改,以联合学习扩散模型的参数和单词嵌入。在初步实验中,我们将端到端训练和随机高斯嵌入以及预训练单词嵌入进行了对比。我们发现,与端到端训练相比,这些固定的嵌入是次优的。
如图2所示,我们的方法在正向过程中添加了一个从离散单词 w \textbf w w到 x 0 \textbf x_0 x0的马尔可夫转移,参数化为 q ϕ ( x 0 ∣ w ) = N ( E M B ( w ) , σ 0 I ) q_{\phi}(\textbf x_0|\textbf w)=\mathcal N(EMB(\textbf w),σ_0\textbf I) qϕ(x0∣w)=N(EMB(w),σ0I)。在反向过程中,我们添加了一个可训练的近似步骤,参数化为 p θ ( w ∣ x 0 ) = ∏ i = 1 n p θ ( w i ∣ x i ) p_θ(\textbf w|\textbf x_0)=\prod^n_{i=1}p_θ(w_i|x_i) pθ(w∣x0)=∏i=1npθ(wi∣xi),其中 p θ ( w i ∣ x i ) p_θ(w_i|x_i) pθ(wi∣xi)是一个softmax分布。第3节中引入的训练目标现在变为:
L e 2 e ( w ) = E q ϕ ( x 0 ∣ w ) [ L v l b ( x 0 ) + l o g q ϕ ( x 0 ∣ w ) − l o g p θ ( w ∣ x 0 ) ] , L s i m p l e e 2 e ( w ) = E q ϕ ( x 0 : T ∣ w ) [ L s i m p l e ( x 0 ) + ∣ ∣ E M B ( w ) − μ θ ( x 1 , 1 ) ∣ ∣ 2 − l o g p θ ( w ∣ x 0 ) ] . (2) \begin{array}{cc}\mathcal L^{e2e}(\textbf w)=\mathop{\mathbb E}\limits_{q_{\phi}(\textbf x_0|\textbf w)}[\mathcal L_{vlb}(\textbf x_0)+log~q_{\phi}(\textbf x_0|\textbf w)-log~p_{\theta}(\textbf w|\textbf x_0)],\\ \mathcal L^{e2e}_{simple}(\textbf w)=\mathop{\mathbb E}\limits_{q_{\phi}(\textbf x_{0:T}|\textbf w)}[\mathcal L_{simple}(\textbf x_0)+||EMB(\textbf w)-\mu_{\theta}(\textbf x_1,1)||^2-log~p_{\theta}(\textbf w|\textbf x_0)]. \end{array}\tag{2} Le2e(w)=qϕ(x0∣w)E[Lvlb(x0)+log qϕ(x0∣w)−log pθ(w∣x0)],Lsimplee2e(w)=qϕ(x0:T∣w)E[Lsimple(x0)+∣∣EMB(w)−μθ(x1,1)∣∣2−log pθ(w∣x0)].(2)
我们采用类似3.3节中的简化方法,从 L v l b e 2 e ( w ) \mathcal L^{e2e}_{vlb}(\textbf w) Lvlbe2e(w)得出 L s i m p l e e 2 e ( w ) \mathcal L^{e2e}_{simple}(\textbf w) Lsimplee2e(w),我们的推导细节在附录E中。由于我们需要训练嵌入函数,因此 q ϕ q_{\phi} qϕ现在包含了可训练的参数,我们使用重参数化技巧来反向传播。从经验上讲,我们发现了有意义的嵌入类簇:具有相同词性标签(句法角色)的单词倾向于聚集在一起,如图3所示。
学习的嵌入方式定义了从离散文本到连续 x 0 \textbf x_0 x0的映射。现在,我们描述了将预测的 x 0 \textbf x_0 x0返回到离散文本的逆过程。基于 a r g m a x p θ ( w ∣ x 0 ) = ∏ i = 1 n p θ ( w i ∣ x i ) argmax~p_θ(\textbf w |\textbf x_0)=\prod^n_{i=1}p_θ(w_i|x_i) argmax pθ(w∣x0)=∏i=1npθ(wi∣xi),可以通过在每个位置选择最可能的单词来实现近似。理想情况下,这个argmax近似足够将 x 0 \textbf x_0 x0映射回离散文本,因为去躁步骤应确保 x 0 \textbf x_0 x0完全保存某些单词的嵌入。但是,从经验上讲,该模型无法生成能够照顾每一个单词的 x 0 \textbf x_0 x0。
此现象的一种解释是,我们等式2中的 L s i m p l e ( x 0 ) \mathcal L_{simple}(\textbf x_0) Lsimple(x0)项不足以对 x 0 \textbf x_0 x0的结构进行建模。回想一下,我们定义了 L s i m p l e ( x 0 ) = ∑ t = 1 T E x t ∣ ∣ µ θ ( x t , t ) − μ ^ ( x t , x 0 ) ∣ ∣ 2 \mathcal L_{simple}(\textbf x_0)=\sum^T_{t=1}\mathbb E_{\textbf x_t}||µ_θ(\textbf x_t,t)-\hat{\mu}(\textbf x_t,\textbf x_0)||^2 Lsimple(x0)=∑t=1TExt∣∣µθ(xt,t)−μ^(xt,x0)∣∣2,其中我们的模型 µ θ ( x t , t ) µ_θ(\textbf x_t,t) µθ(xt,t)直接在每个去躁步骤 t t t来预测 p θ ( x t − 1 ∣ x t ) p_θ(\textbf x_{t -1}|\textbf x_t) pθ(xt−1∣xt)的均值。在这个目标中, x 0 \textbf x_0 x0必须关注每个单词嵌入的约束只会出现在 t t t接近0的项中,我们发现此参数化需要细粒度的调整以迫使目标来关注这些项(请参阅附录H)。
我们的方法将 L s i m p l e \mathcal L_{simple} Lsimple重新构造以迫使扩散LM在目标的每个项中显式建模 x 0 \textbf x_0 x0。具体而言,我们得到了通过 x 0 \textbf x_0 x0参数化的和 L s i m p l e \mathcal L_{simple} Lsimple类似的变种, L x 0 − s i m p l e e 2 e ( x 0 ) = ∑ t = 1 T E x t ∣ ∣ f θ ( x t , t ) − x 0 ∣ ∣ 2 \mathcal L^{e2e}_{\textbf x_0-simple}(\textbf x_0)=\sum^T_{t=1}\mathbb E_{\textbf x_t}||f_{\theta}(\textbf x_t,t)-\textbf x_0||^2 Lx0−simplee2e(x0)=∑t=1TExt∣∣fθ(xt,t)−x0∣∣2,其中我们的模型 f θ ( x t , t ) f_{\theta}(\textbf x_t,t) fθ(xt,t)直接预测 x 0 \textbf x_0 x0。 这迫使神经网络在每个项内都能预测 x 0 \textbf x_0 x0,我们发现使用该目标训练的模型很快就会学到 x 0 \textbf x_0 x0关注单词嵌入。
我们描述了重参数化有助于模型训练,但我们还发现,在我们称为clamping技巧的技术中,同样可以在解码时使用。在 x 0 \textbf x_0 x0参数化模型的标准生成方法中,模型首先通过 f θ ( x t , t ) f_{\theta}(\textbf x_t,t) fθ(xt,t)计算 x 0 \textbf x_0 x0的估计值以将 x t \textbf x_t xt转到 x t − 1 \textbf x_{t-1} xt−1,其中 α ˉ t = ∏ s = 0 t ( 1 − β s ) \bar{\alpha}_t=\prod^t_{s=0}(1-\beta_s) αˉt=∏s=0t(1−βs)且 ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal N(0,I) ϵ∼N(0,I),然后在此估计中采样 x t − 1 : x t − 1 = α ˉ f θ ( x t , t ) + 1 − α ϵ \textbf x_{t-1}:\textbf x_{t-1}=\sqrt{\bar \alpha}f_{\theta}(\textbf x_t,t)+\sqrt{1-\alpha}\epsilon xt−1:xt−1=αˉfθ(xt,t)+1−αϵ。 在clamping技巧中,该模型还将预测的向量 f θ ( x t , t ) f_θ(\textbf x_t,t) fθ(xt,t)映射到其最接近的单词嵌入序列。现在,采样步骤就变为 x t − 1 = α ˉ ⋅ C l a m p ( f θ ( x t , t ) ) + 1 − α ˉ ϵ \textbf x_{t-1}=\sqrt{\bar{\alpha}}·Clamp(f_θ(\textbf x_t,t))+\sqrt{1-\bar{\alpha}}\epsilon xt−1=αˉ⋅Clamp(fθ(xt,t))+1−αˉϵ。clamping技巧迫使在中间扩散步骤预测的向量就能关注到单词,从而使矢量预测更加精确并减少近似错误。
第4节我们描述了扩散LM,现在我们将考虑可控文本生成(5.1节)和解码(5.2节)的问题。
现在,我们描述了一个可以在扩散LM上进行可插拔控制的过程。我们的控制方法受3.1节中的贝叶斯公式的启发,但我们没有直接对离散文本执行控制,而是对在扩散LM上定义的连续潜在变量 x 0 : T \textbf x_{0:T} x0:T的序列进行控制,并应用近似步骤将这些潜在变量转到文本。
控制 x 0 : T \textbf x_{0:T} x0:T等于从后验 p ( x 0 : T ∣ c ) = ∏ t = 1 T p ( x t − 1 ∣ x t , c ) p(\textbf x_{0:T}|\textbf c)=\prod^T_{t=1}p(\textbf x_{t-1}|\textbf x_t,\textbf c) p(x0:T∣c)=∏t=1Tp(xt−1∣xt,c)进行解码,我们将此联合推理问题分解为在每个扩散步骤进行控制的问题: p ( x t − 1 ∣ x t , c ) ∝ p ( x t − 1 ∣ x t ) ⋅ p ( c ∣ x t − 1 , x t ) p(\textbf x_{t-1}|\textbf x_t,\textbf c)∝p(\textbf x_{t-1}|\textbf x_t)·p(\textbf c|\textbf x_{t-1},\textbf x_t) p(xt−1∣xt,c)∝p(xt−1∣xt)⋅p(c∣xt−1,xt)。我们通过条件独立性假设来进一步简化 p ( c ∣ x t − 1 , x t ) = p ( c ∣ x t − 1 ) p(\textbf c|\textbf x_{t-1},\textbf x_t)=p(\textbf c|\textbf x_{t -1}) p(c∣xt−1,xt)=p(c∣xt−1)。因此,对于第 t t t步,我们在 x t − 1 \textbf x_{t-1} xt−1上运行梯度更新:
∇ x t − 1 l o g p ( x t − 1 ∣ x t , c ) = ∇ x t − 1 l o g p ( x t − 1 ∣ x t ) + ∇ x t − 1 l o g p ( c ∣ x t − 1 ) , \nabla_{\textbf x_{t-1}}log~p(\textbf x_{t-1}|\textbf x_t,\textbf c)=\nabla_{\textbf x_{t-1}}log~p(\textbf x_{t-1}|\textbf x_t)+\nabla_{\textbf x_{t-1}}log~p(\textbf c|\textbf x_{t-1}), ∇xt−1log p(xt−1∣xt,c)=∇xt−1log p(xt−1∣xt)+∇xt−1log p(c∣xt−1),
其中, l o g p ( x t − 1 ∣ x t ) log~p(\textbf x_{t-1}|\textbf x_t) log p(xt−1∣xt)和 l o g p ( c ∣ x t − 1 ) log~p(\textbf c|\textbf x_{t-1}) log p(c∣xt−1)是可微分的,其中第一项由扩散LM参数化,第二项由一个神经网络分类器参数化。
与图像中的工作类似,我们在基于扩散潜在变量训练一个分类器,并在潜在空间 x t − 1 \textbf x_{t-1} xt−1上运行梯度更新,以控制其满足目标。这些工作在每个扩散步骤中按 ∇ x t − 1 l o g p ( c ∣ x t − 1 ) \nabla_{x_{t-1}}~log~p(\textbf c|\textbf x_{t-1}) ∇xt−1 log p(c∣xt−1)进行梯度更新。为了提高文本的性能并加快解码的速度,我们引入了两个关键的修改:流畅度正则化和多梯度步骤。
为了生成流畅的文本,我们使用流畅性正则化目标来进行梯度更新: λ l o g p ( x t − 1 ∣ x t ) + l o g p ( c ∣ x t − 1 ) λlog~p(\textbf x_{t-1}|\textbf x_t)+log~p(\textbf c|\textbf x_{t-1}) λlog p(xt−1∣xt)+log p(c∣xt−1),其中 λ λ λ是一个超参数,可在在流畅度(第一项)和控制度(第二项)之间进行平衡。虽然现有的可控生成方法目标中不包括 λ l o g p ( x t − 1 ∣ x t ) λlog~p(\textbf x_{t-1}|\textbf x_t) λlog p(xt−1∣xt)项,但我们发现该项对生成流畅的文本具有重要作用。所得的可控生成过程可以看作是一种平衡最大化和采样 p ( x t − 1 ∣ x t , x ) p(\textbf x_{t-1}|\textbf x_t,\textbf x) p(xt−1∣xt,x)的随机解码方法,这与nucleus sampling或low temperature采样文本生成技术一样。为了提高控制质量,我们在每个扩散步骤采取了多个梯度更新步骤:我们为每个扩散步骤运行3次Adagrad更新。为了减轻计算成本的增加,我们将扩散步骤从2000降到200,从而加快了我们可控生成算法而不会损害样本质量。