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)。
论文中提出Diffusion-LM
模型,即上面的架构,:
embedding
和对应的rounding
步骤,放在了x0之前
- 并且设计了
embedding
损失函数,用来学习embedding
信息
- 也提出了一种技术改进
rounding
的准确性,这一个步骤是把连续的变量转换成离散的word
序列。
- 提出一种基于梯度的方法,增强文本生成的可控性。其迭代地对Diffusion−LM的连续潜在变量进行梯度更新,以平衡流畅性和控制满意度。
本论文还通过设计6个可控范围(从细粒度到复杂的结构,如语法树)实验来验证模型。
论文特点
- 相较于之前研究在离散空间上的扩散模型论文研究,该论文是在连续潜在空间上应用扩散模型,这使得基于梯度的有效方法有利于可控生成。
- 针对大部分语言模型都是基于从左到右的自回归模型,这对文本可控并没有利,这是由于自回归
LMs
不能直接以正确的上下文为条件。Diffusion−LM可以以观察句子的复杂、全局属性的任意分类器作为条件。
Diffusion-LM
有即插即用的可控生成能力,这是通过对潜在变量的连续序列应用分类器引导(classifier-guided) 的梯度更新(gradient update) 来完成的。
可控文本生成
文本生成:从一个训练好的语言模型plm(w)中获取抽取样本w,其中w=[w1,...,wn]是离散的单词序列,plm(w)是单词序列上的概率分布。
可控文本生成:从一个条件概率分布p(w ∣ c)上抽取样本w,其中c表示控制变量。
论文中采用即插即用(plug-and-play) 的可控生成方式,即先从一个无标签的文本数据 上训练出一个语言模型plm(w);然后针对不同生成控制表达式
使用不同的分类器,即针对每一个任务,给出一个在较少的标记文本数据上训练得到的对应分类器p(c ∣ w),最后通过这两种模型在后验p(w ∣ c)上进行抽样,其中通过贝叶斯公式,可以得到:
p(w ∣ c)∝plm(w)⋅p(c ∣ w)
plm(w)表示w是否流畅,p(c ∣ w)表示w是否完成控制。
Diffusion-LM模型
标准的扩散模型:
- 正向过程:通过一系列随t的超参数β和噪音来确定一个个xt。即xt−1→xt通过q(xt ∣ xt−1)=N(xt ;1−βtxt−1 ,βtI)。这个过程中没有需要训练的参数。同时,这得到向前扩散中添加的噪音数据信息以及添加噪音后的数据分布,并且通过反转这个过程来预测这个噪音或者数据分布来定义损失函数。
- 方向过程:即xt→xt−1,通过pθ(xt−1 ∣ xt)=N(xt−1 ;μθ(xt,t),∑θ(xt,t)),其中pθ(xt)≈N(0,I)。
μθ和∑θ都是可以通过U-Net
或者Transformer
获取。
- 损失函数:最大化边际似然Ex0∼pdata[log pθ(x0)]:
Lvlb(x0)=Eq(x1:T ∣ x0)[log pθ(xT)q(xT ∣ x0)+t=2∑T log pθ(xt−1 ∣ xt)q(xt−1 ∣ x0,x1)−log pθ(x0 ∣ x1)]
这个损失函数是不稳定的,需要很多技巧来保证稳定性
- 简化的损失函数:重新权重化Lvlb中的KL散度项得到:
Lsimple(x0)=t=1∑TEq(xt ∣ x0)∥μθ(xt, t)−μ^(xt, x0)∥2
其中μ^(xt, x0)是q(xt−1 ∣ x0,xt)的后验均值,μθ(xt, t)是pθ(xt−1∣xt)模型的预测均值。
这个损失函数不再是有效的下界,但是却更稳定,并且也能提高样本质量。
Diffusion-LM模型
Diffusion-LM模型相对于标准的扩散模型所做的修改:
- 定义
embedding function
处理离散文本到连续空间的映射。完成这个映射是通过end-to-end
训练中学习特征表示,即把特征表示的学习加入到训练目标中(training object)
- 需要一个
roundding method
把特征表示映射回离散的文本。
End-to-end Training
定义一个Emb(wi)函数,把每个单词映射到一个向量vi∈Rd; n个词序列的向量w可以表示Emb(w)=[Emb(w1),...,Emb(wn)]∈Rn×d
这个embedding function
被添加在标准扩散模型的前向过程x0前,即单词序列通过Emb
得到x0,之后再通过x0计算其他的xt完成标准的扩散过程。其中w→x0可以通过:
前向过程:qϕ(x0 ∣ w)=反向过程:pθ(w ∣ x0)= N(Emb(w), σ0 I)i=1∏n pθ(wi ∣ xi)
方向过程公式中的pθ(w ∣ x0)是softmax
分布。
通过上面的定义,则可以确定新的目标函数:
Lvlbe2e(w)=Lsimplee2e(w)=Eqϕ(x0 ∣ w)[ Lvlb(x0)+log qϕ(x0 ∣ w)−log pθ(w ∣ x0) ]Eqϕ(x0:T ∣ w)[ Lsimple(x0)+∥Emb(w)−μθ(x1, 1)∥2−log pθ(w ∣ x0) ]
Reducing Rounding Errors
rounding
过程就是把连续的x0转成离散的文本ids
。理想情况下,就是在x0的情况下获取最大的w,即 argmax pθ(w ∣ x0)=∏i=1n pθ (wi ∣ xi),可是这并不能保证得到好的words
。一种解释是:公式(7)中的Lsimple(x0)项不够重视x0的结构建模。
论文中提出解决该问题的方法是re-parametrizes Lsimple,强制使模型Diffusion-LM
明确地在公式(7)中的每一项对x0建模:
Lx0−simplee2e(x0)=t=1∑TExt ∥ fθ(xt,t)−x0∥2
其中fθ(xt,t)模型直接预测x0。这迫使神经网络预测目标函数每项中的x0,发现用这个目标训练的模型很快就知道x0应该精确地以单词嵌入为中心。
相同的思路,在解码时(decoding time)
也可以使用,论文中称为clamping trick
。通过fθ(xt,t)预测得到x0,然后获取xt−1可以通过公式(9)替换标准公式,公式(10)是使用clamping trick
后的公式,clamping trick
强制预测的向量用于中间扩散步骤的单词,从而使向量预测更加精确并减少舍入误差:
使用x0-parametrizesxt−1使用clampling trickxt−1其中αˉ=αˉ fθ(xt,t)+1−αˉ ϵ=αˉ Clamp(fθ(xt,t))+1−αˉ ϵ=s=0∏t(1−βs);ϵ∈N(0,I)
通过这个技巧,模型另外也能映射预测的向量fθ(xt,t)到他自己附近的单词序列特征表示。
Diffusion-LM的解码及可控生成
这里是说明Diffusion-LM
怎么控制文本生成的。基本原理就是使用公式(1)代替直接在离散的文本数据上。该论文就是通过控制在Diffusion-LM
上定义的连续潜在变量x0:T序列,然后应用rounding
转换潜在变量到文本数据。
控制x0:T生成等同于从后验公式p(x0:T ∣ c)=∏t=1T p(xt−1 ∣ xt,c)解码;该论文中通过将这个联合推理问题分解为每个扩散步骤的一系列控制问题:
p(xt−1 ∣ xt,c)∝其中, 可以简化p(c ∣ xt−1,xt)=公式(11)即p(xt−1 ∣ xt,c)∝ p(xt−1 ∣ xt)⋅p(c ∣ xt−1,xt) p(c ∣ xt−1)(通过条件独立假设) p(xt−1 ∣ xt)⋅p(c ∣ xt−1)
这样我们就可以在第t步,通过在xt−1上建立梯度更新:
∇xt−1 log p(xt−1∣xt,c)=∇xt−1 log p(xt−1 ∣ xt)+∇xt−1 log p(c ∣ xt−1)
其中log p(xt−1 ∣ xt)和log p(c ∣ xt−1)都是可微的;前者是通过Diffusion-LM
对其参数化,第二项是通过一个神经网络分类器参数化。
训练过程:在扩散潜在变量(diffusion latent variables)
上训练分类器,并且在xt−1的潜在空间上执行梯度更新,从而达到令人满意的控制。(这个过程是类似可控图像的方式)
不过论文中针对文本数据以及加速解码过程,又提出了两种方法:
fluency regularization
:引入超参数λ,权衡fluenncy
和control
:
公式(13)可得log p(xt−1 ∣ xt,c)∝引入超参数λlog p(xt−1 ∣ xt,c)∝ log p(xt−1 ∣ xt)+log p(c ∣ xt−1) λ log p(xt−1 ∣ xt)+log p(c ∣ xt−1)
虽然现有的扩散可控生成方法在目标中不包括λ log p(xt−1 ∣ xt)项,但我们发现该项有助于生成流畅的文本。
multiple gradient steps
:这个是为了提高控制质量(the control quality)。通过在每个扩散步骤中执行多次梯度步骤:论文中使用的是每个扩散步骤执行Adgrad
更新的3个步骤。
其中由于计算量太大,论文中使用downsample
方法,将扩散步长从2000降到200,这加快了可控生成算法,并且也不会对样本质量造成太大影响。
针对单样本高质量生成要求
面对机器翻译(machine translation) 或者句子填充(sentence infilling) 等任务,这类任务要求输出一个单独且高质量的序列。所以论文中针对这类问题,应用了**Minimum Bayes Risk (MBR)**进行解码,通过聚合从Diffusion-LM
模型抽取出来的一系列样本集合S,然后选择在损失函数L下可以满足最小期待风险(the minimum expected risk) 的样本,从而达到较好的结果:
w^=argminw′∈S ∣S∣1L(w,w′)
参考文献
- 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.