编辑
2023-06-05
论文阅读
0
请注意,本文编写于 333 天前,最后修改于 333 天前,其中某些信息可能已经过时。

目录

Diffusion-LM模型 - 论文阅读
论文特点
可控文本生成
Diffusion-LM模型
标准的扩散模型:
Diffusion-LM模型
End-to-end Training
Reducing Rounding Errors
Diffusion-LM的解码及可控生成
针对单样本高质量生成要求
参考文献

Diffusion-LM模型 - 论文阅读

Title: Diffusion-LM Improves Controllable Text Generation

Date: 2022/5/27

Paper: http://arxiv.org/abs/2205.14217

Code: https://github.com/XiangLi1999/Diffusion-LM

这篇论文针对的问题是在不重新训练模型的的情况下,可以多语言模型(Language Model)的行为控制,即可控的文本生成(Controllable Text Generation)

arch

论文中提出Diffusion-LM模型,即上面的架构,:

  • embedding和对应的rounding步骤,放在了x0x_0之前
  • 并且设计了embedding损失函数,用来学习embedding信息
  • 也提出了一种技术改进rounding的准确性,这一个步骤是把连续的变量转换成离散的word序列。
  • 提出一种基于梯度的方法,增强文本生成的可控性。其迭代地对DiffusionLMDiffusion-LM的连续潜在变量进行梯度更新,以平衡流畅性和控制满意度。

本论文还通过设计6个可控范围(从细粒度到复杂的结构,如语法树)实验来验证模型。

论文特点

  1. 相较于之前研究在离散空间上的扩散模型论文研究,该论文是在连续潜在空间上应用扩散模型,这使得基于梯度的有效方法有利于可控生成。
  2. 针对大部分语言模型都是基于从左到右的自回归模型,这对文本可控并没有利,这是由于自回归LMs不能直接以正确的上下文为条件。DiffusionLMDiffusion-LM可以以观察句子的复杂、全局属性的任意分类器作为条件。
  3. Diffusion-LM即插即用的可控生成能力,这是通过对潜在变量的连续序列应用分类器引导(classifier-guided)梯度更新(gradient update) 来完成的。

可控文本生成

文本生成:从一个训练好的语言模型plm(w)p_{lm}(\vec w)中获取抽取样本w\vec w,其中w=[w1,...,wn]\vec w = [w_1, ..., w_n]是离散的单词序列,plm(w)p_{lm}(\vec w)是单词序列上的概率分布。 可控文本生成:从一个条件概率分布p(w  c)p(\vec w \ | \ \vec c)上抽取样本w\vec w,其中c\vec c表示控制变量

论文中采用即插即用(plug-and-play) 的可控生成方式,即先从一个无标签的文本数据 上训练出一个语言模型plm(w)p_{lm}(\vec w);然后针对不同生成控制表达式使用不同的分类器,即针对每一个任务,给出一个在较少的标记文本数据上训练得到的对应分类器p(c  w)p(\vec c \ | \ \vec w),最后通过这两种模型在后验p(w  c)p(\vec w \ | \ \vec c)上进行抽样,其中通过贝叶斯公式,可以得到:

p(w  c)plm(w)p(c  w)\begin{align} p(\vec w \ | \ \vec c) \propto p_{lm}(\vec w) \cdot p(\vec c \ | \ \vec w) \end{align}

plm(w)p_{lm}(\vec w)表示w\vec w是否流畅,p(c  w)p(\vec c \ | \ \vec w)表示w\vec w是否完成控制。

Diffusion-LM模型

model

标准的扩散模型:

  • 正向过程:通过一系列随tt的超参数β\beta和噪音来确定一个个xtx_{t}。即xt1xtx_{t-1} \to x_t通过q(xt  xt1)=N(xt ;1βtxt1 ,βtI)q(x_t \ | \ x_{t-1}) = \mathcal N(x_t \ ; \sqrt{1-\beta_t}x_{t-1}\ , \beta_t I)。这个过程中没有需要训练的参数。同时,这得到向前扩散中添加的噪音数据信息以及添加噪音后的数据分布,并且通过反转这个过程来预测这个噪音或者数据分布来定义损失函数。
  • 方向过程:即xtxt1x_{t} \to x_{t-1},通过pθ(xt1  xt)=N(xt1 ;μθ(xt,t),θ(xt,t))p_{\theta}(x_{t-1} \ | \ x_t) = \mathcal N (x_{t-1}\ ; \mu_{\theta}(x_t, t), \sum_{\theta}(x_t, t)),其中pθ(xt)N(0,I)p_{\theta}(x_t) \approx \mathcal N(0, I)

    μθθ\mu_{\theta}和\sum_{\theta}都是可以通过U-Net或者Transformer获取。

  • 损失函数:最大化边际似然Ex0pdata[log pθ(x0)]\mathbb E_{x_0 \sim p_{data}}[log\ p_{\theta}(x_0)]:
    Lvlb(x0)=Eq(x1:T  x0)[log q(xT  x0)pθ(xT)+t=2T log q(xt1  x0,x1)pθ(xt1  xt)log pθ(x0  x1)]\begin{align} \mathcal L_{vlb}(x_0) = \mathbb E_{q(x_{1:T}\ | \ x_0)} [log\ \frac{q(x_T \ | \ x_0)}{p_{\theta}(x_T)} + \sum_{t=2}^T\ log\ \frac{q(x_{t-1} \ | \ x_0, x_1)}{p_{\theta}(x_{t-1} \ | \ x_t)} - log\ p_{\theta}(x_0\ | \ x_1)] \end{align}

    这个损失函数是不稳定的,需要很多技巧来保证稳定性

  • 简化的损失函数:重新权重化Lvlb\mathcal L_{vlb}中的KL散度项得到:
    Lsimple(x0)=t=1TEq(xt  x0)μθ(xt, t)μ^(xt, x0)2\begin{align} \mathcal L_{simple}(x_0) = \sum_{t=1}^T \mathbb E_{q(x_t\ | \ x_0)}\| \mu_{\theta}(x_t,\ t) - \hat\mu(x_t,\ x_0) \|^2 \end{align}

    其中μ^(xt, x0)\hat\mu(x_t,\ x_0)q(xt1  x0,xt)q(x_{t-1} \ | \ x_0, x_t)的后验均值,μθ(xt, t)\mu_{\theta}(x_t,\ t)pθ(xt1xt)p_{\theta}(x_{t-1} | x_t)模型的预测均值。 这个损失函数不再是有效的下界,但是却更稳定,并且也能提高样本质量。

Diffusion-LM模型

Diffusion-LM模型相对于标准的扩散模型所做的修改:

  • 定义embedding function处理离散文本到连续空间的映射。完成这个映射是通过end-to-end训练中学习特征表示,即把特征表示的学习加入到训练目标中(training object)
  • 需要一个roundding method把特征表示映射回离散的文本。

End-to-end Training

定义一个Emb(wi)Emb(w_i)函数,把每个单词映射到一个向量viRdv_i \in R^dnn个词序列的向量w\vec w可以表示Emb(w)=[Emb(w1),...,Emb(wn)]Rn×dEmb(\vec w) = [Emb(w_1), ...,Emb(w_n)] \in R^{n \times d}

这个embedding function被添加在标准扩散模型的前向过程x0x_0前,即单词序列通过Emb得到x0x_0,之后再通过x0x_0计算其他的xtx_t完成标准的扩散过程。其中wx0\vec w \to x_0可以通过:

前向过程:qϕ(x0  w)= N(Emb(w), σ0 I)反向过程:pθ(w  x0)=i=1n pθ(wi  xi)\begin{align} \text{前向过程:} \qquad q_{\phi}(x_0 \ | \ \vec w) = & \ \mathcal N(Emb(\vec w),\ \sigma_0 \ I) \\ \text{反向过程:} \qquad p_{\theta}(\vec w \ | \ \vec x_0) = & \prod_{i=1}^n \ p_{\theta}(w_i \ | \ x_i) \end{align}

方向过程公式中的pθ(w  x0)p_{\theta}(\vec w \ | \ \vec x_0)softmax分布。

通过上面的定义,则可以确定新的目标函数:

Lvlbe2e(w)=Eqϕ(x0  w)[ Lvlb(x0)+log qϕ(x0  w)log pθ(w  x0) ]Lsimplee2e(w)=Eqϕ(x0:T  w)[ Lsimple(x0)+Emb(w)μθ(x1, 1)2log pθ(w  x0) ]\begin{align} \mathcal L_{vlb}^{e2e}(\vec w) = & \mathbb E_{q_{\phi}(x_0\ | \ \vec w)}[\ \mathcal L_{vlb}(x_0) + log\ q_{\phi}(x_0 \ | \ w) - log \ p_{\theta} (\vec w \ | \ x_0)\ ] \\ \nonumber \\ \mathcal L_{simple}^{e2e}(\vec w) = & \mathbb E_{q_{\phi}(x_{0:T}\ | \ \vec w)}[\ \mathcal L_{simple}(x_0) + \| Emb(\vec w) - \mu_{\theta}(x_1, \ 1) \|^2 - log\ p_{\theta}(\vec w \ | \ x_0) \ ] \end{align}

Reducing Rounding Errors

rounding过程就是把连续的x0x_0转成离散的文本ids。理想情况下,就是在x0\vec x_0的情况下获取最大的w\vec w,即 argmax pθ(w  x0)=i=1n pθ (wi  xi)\ argmax \ p_{\theta} (\vec w \ | \ x_0) = \prod_{i=1}^n\ p_{\theta}\ (w_i \ | \ x_i),可是这并不能保证得到好的words。一种解释是:公式(7)中的Lsimple(x0)\mathcal L_{simple}(x_0)项不够重视x0x_0的结构建模。

论文中提出解决该问题的方法是re-parametrizes Lsimple\mathcal L_{simple},强制使模型Diffusion-LM明确地在公式(7)中的每一项对x0x_0建模:

Lx0simplee2e(x0)=t=1TExt  fθ(xt,t)x02\begin{align} \mathcal L_{x_0-simple}^{e2e}(x_0) = \sum_{t=1}^T \mathbb E_{x_t}\ \| \ f_{\theta}(x_t, t) - x_0 \|^2 \end{align}

其中fθ(xt,t)f_{\theta}(x_t, t)模型直接预测x0x_0。这迫使神经网络预测目标函数每项中的x0x_0,发现用这个目标训练的模型很快就知道x0x_0应该精确地以单词嵌入为中心。 16858922565859

相同的思路,在解码时(decoding time)也可以使用,论文中称为clamping trick。通过fθ(xt,t)f_{\theta}(x_t, t)预测得到x0x_0,然后获取xt1x_{t-1}可以通过公式(9)替换标准公式,公式(10)是使用clamping trick后的公式,clamping trick强制预测的向量用于中间扩散步骤的单词,从而使向量预测更加精确并减少舍入误差:

使用x0-parametrizesxt1=αˉ fθ(xt,t)+1αˉ ϵ使用clampling trickxt1=αˉ Clamp(fθ(xt,t))+1αˉ ϵ其中αˉ=s=0t(1βs);ϵN(0,I)\begin{align} \text{使用$x_0$-parametrizes}\qquad x_{t-1} & = \sqrt{\bar \alpha} \ f_{\theta}(x_t, t) + \sqrt{1 - \bar \alpha} \ \epsilon \\ \text{使用clampling trick}\qquad x_{t-1} & = \sqrt{\bar \alpha} \ Clamp(f_{\theta}(x_t, t)) + \sqrt{1 - \bar \alpha} \ \epsilon \\ \nonumber \\ \text{其中}\qquad \bar \alpha & = \prod_{s=0}^t (1 - \beta_s); \qquad \epsilon \in \mathcal N(0, I) \nonumber \\ \end{align}

通过这个技巧,模型另外也能映射预测的向量fθ(xt,t)f_{\theta}(x_t, t)到他自己附近的单词序列特征表示。 16858934702776

Diffusion-LM的解码及可控生成

这里是说明Diffusion-LM怎么控制文本生成的。基本原理就是使用公式(1)代替直接在离散的文本数据上。该论文就是通过控制在Diffusion-LM上定义的连续潜在变量x0:Tx_{0:T}序列,然后应用rounding转换潜在变量到文本数据。

控制x0:Tx_{0:T}生成等同于从后验公式p(x0:T  c)=t=1T p(xt1  xt,c)p(x_{0:T} \ | \ c) = \prod_{t=1}^T \ p(x_{t-1} \ | \ x_t, c)解码;该论文中通过将这个联合推理问题分解为每个扩散步骤的一系列控制问题:

p(xt1  xt,c) p(xt1  xt)p(c  xt1,xt)其中, 可以简化p(c  xt1,xt)= p(c  xt1)(通过条件独立假设)公式(11)即p(xt1  xt,c) p(xt1  xt)p(c  xt1)\begin{align} p(x_{t-1} \ | \ x_t, c) \propto & \ p(x_{t-1} \ | \ x_t) \cdot p(c \ | \ x_{t-1}, x_t) \\ \nonumber \\ \text{其中, 可以简化} \qquad p(c \ | \ x_{t-1}, x_t) = & \ p(c \ | \ x_{t-1}) \qquad \text{(通过条件独立假设)} \\ \nonumber \\ \text{公式(11)即} \qquad p(x_{t-1} \ | \ x_t, c) \propto & \ p(x_{t-1} \ | \ x_t) \cdot p(c \ | \ x_{t-1}) \end{align}

这样我们就可以在第tt步,通过在xt1x_{t-1}上建立梯度更新

xt1 log p(xt1xt,c)=xt1 log p(xt1  xt)+xt1 log p(c  xt1)\begin{align} \nabla_{x_{t-1}}\ log\ p(x_{t-1} | x_t, c) = \nabla_{x_{t-1}}\ log \ p(x_{t-1}\ | \ x_t) + \nabla_{x_{t-1}}\ log \ p(c \ | \ x_{t-1}) \end{align}

其中log p(xt1  xt)log \ p(x_{t-1}\ | \ x_t)log p(c  xt1)log \ p(c \ | \ x_{t-1})都是可微的;前者是通过Diffusion-LM对其参数化,第二项是通过一个神经网络分类器参数化。

训练过程:在扩散潜在变量(diffusion latent variables)上训练分类器,并且在xt1x_{t-1}的潜在空间上执行梯度更新,从而达到令人满意的控制。(这个过程是类似可控图像的方式)

不过论文中针对文本数据以及加速解码过程,又提出了两种方法:

  • fluency regularization:引入超参数λ\lambda,权衡fluenncycontrol
    公式(13)可得log p(xt1  xt,c) log p(xt1  xt)+log p(c  xt1)引入超参数λlog p(xt1  xt,c) λ log p(xt1  xt)+log p(c  xt1)\begin{align} \text{公式(13)可得}\qquad log\ p(x_{t-1} \ | \ x_t, c) \propto & \ log\ p(x_{t-1} \ | \ x_t) + log\ p(c \ | \ x_{t-1}) \nonumber \\ \nonumber \\ \text{引入超参数$\lambda$}\qquad log\ p(x_{t-1} \ | \ x_t, c) \propto & \ \lambda \ log\ p(x_{t-1} \ | \ x_t) + log\ p(c \ | \ x_{t-1}) \end{align}

    虽然现有的扩散可控生成方法在目标中不包括λ log p(xt1  xt)\lambda\ log\ p(x_{t−1}\ | \ x_t)项,但我们发现该项有助于生成流畅的文本。

  • multiple gradient steps:这个是为了提高控制质量(the control quality)。通过在每个扩散步骤中执行多次梯度步骤:论文中使用的是每个扩散步骤执行Adgrad更新的3个步骤

其中由于计算量太大,论文中使用downsample方法,将扩散步长从2000降到200,这加快了可控生成算法,并且也不会对样本质量造成太大影响。

针对单样本高质量生成要求

面对机器翻译(machine translation) 或者句子填充(sentence infilling) 等任务,这类任务要求输出一个单独且高质量的序列。所以论文中针对这类问题,应用了**Minimum Bayes Risk (MBR)**进行解码,通过聚合从Diffusion-LM模型抽取出来的一系列样本集合SS,然后选择在损失函数L\mathcal L下可以满足最小期待风险(the minimum expected risk) 的样本,从而达到较好的结果:

w^=argminwS 1SL(w,w)\begin{align} \hat w = argmin_{w' \in S}\ \frac{1}{\lvert S \rvert} \mathcal L(w, w') \end{align}

参考文献

  1. Li, Xiang Lisa, John Thickstun, Ishaan Gulrajani, Percy Liang和Tatsunori B. Hashimoto. 《Diffusion-LM Improves Controllable Text Generation》. arXiv, 2022年5月27日. http://arxiv.org/abs/2205.14217.

本文作者:小屁孩

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!