潜空间ODEs的可控生成

887 阅读9分钟

image.png


即插即用,基于常微分方程(ODEs)开发一个高效采样器,通过有效的自适应将预训练的LMs链接到隐空间。

现实世界的文本应用通常涉及到组合多种文本控制操作,如根据属性编辑文本、操作关键词和结构以及生成具有所需属性的新文本。以往的研究通常学习/微调语言模型(LM)以执行单个或特定子集的操作。最近的研究致力于以即插即用的方式组合操作,通常需要在复杂的序列空间中进行昂贵的搜索或优化。本文提出了一种在紧凑的文本潜空间中进行组合文本操作的新的高效方法。文本潜向量的低维度和可微性使我们能够基于常微分方程(ODE)开发一个高效的采样器,该采样器可以使用任意插件操作符(例如属性分类器)。通过通过高效的调整将预训练的语言模型(例如GPT2)连接到潜空间,我们可以将采样的向量解码为所需的文本序列。这种灵活的方法允许使用来自不同领域的任何相关数据获取多种控制操作符(情感、时态、正式程度、关键词等)。实验证明,在我们的方法中组合这些操作可以生成或编辑高质量的文本,并在生成质量和效率方面显著改进了以前的方法。

在本文中,作者开发了LATENTOPS,一种在紧凑且连续的文本潜空间中执行可组合控制操作的新的高效方法。LATENTOPS允许插入应用于文本潜向量的任意操作符,以形成低维潜空间上的基于能量的分布。然后,我们基于常微分方程(ODE)开发了一个高效的采样器,用于绘制具有所需属性的潜向量样本。在获得潜向量之后,一个关键的挑战是将其解码为目标文本序列。为此,我们通过以变分自编码(VAE)的方式高效地调整LM参数的一个小子集,将潜空间连接到预训练的LM解码器(例如GPT-2)。

以往在潜空间中编辑文本的尝试往往局限于单一属性和小规模模型,这是由于现有基于Transformer的预训练语言模型与潜空间的不兼容性。LATENTOPS克服了这些困难,使得单个大型语言模型能够执行任意的可组合文本控制。我们在三个具有挑战性的设置下进行了实验证明,包括根据一系列属性顺序编辑文本、同时编辑组合属性以及给定各种属性生成新文本。结果表明,在我们的方法中组合这些操作可以生成或编辑高质量的文本,在质量和效率方面大大改进了相应的基准。

公式

基于能量的模型和ODEs采样

给定一个任意的能量函数 E(x)RE(x) ∈ \mathbb R,基于能量的模型(EBM)定义了一个玻尔兹曼分布:

p(x)=eE(x)/Zp(x) = e^{-E(x)}/Z

其中 Z=xXeE(x)Z = ∑ x∈X e^{-E(x)} 是归一化项(如果 xXx ∈ \mathcal X 是连续变量,则求和替换为积分)。

EBMs具有灵活性,可以将任何函数或约束融入能量函数 E(x)E(x) 中。最近的研究探索了基于文本的EBM(其中 xx 是文本序列)用于可控文本生成。尽管具有灵活性,但是从EBMs中采样十分困难,主要有两个原因:

  • 难以处理的归一化项 ZZ
  • 文本空间又大又复杂(discrete or soft)。
    • 解释一下discrete or soft: 文本空间可以以离散形式表示,其中文本序列中的每个元素(例如单词或字符)都是独立的和分离的。 另外,它也可以以软形式表示,其中文本被视为连续潜空间上的连续分布。软表示允许对文本属性或特性进行平滑和连续的转换。

另一方面,随机/常微分方程(SDEs/ODEs)提供了另一种最近应用于图像生成的采样技术。 SDE描述了一个扩散过程,将实际数据映射到连续时间 t[0,T]t ∈ [0, T] 中的随机噪声。 具体来说,设 x(t)x(t) 是按时间 tt索引的过程的值,满足 x(t)pt(x)x(t) ∼ p_t(x)。在起始时间 t=0t = 0 时,x(0)p0(x)x(0) ∼ p_0(x),即数据分布,而在结束时间 t=Tt = T 时,x(T)pT(x)x(T) ∼ p_T(x),即噪声分布(例如,标准高斯分布)。反向的SDE通过在时间上向后工作(从 t=Tt = Tt=0t = 0)生成来自噪声的实际样本。更正式地说,考虑一个保持方差的SDE,其反向写作

dx=12β(t)[x+2xlogpt(x)]dt+β(t)dwˉdx = − \frac 1 2 \beta(t)[x + 2∇x \log pt(x)]dt + \sqrt {β(t)}d \bar w

其中 dtdt 是无穷小的负时间步长,wˉ\bar w 是一个标准维纳尔过程,当时间从 TT 流向 00 时;标量 β(t):=β0+(βTβ0)tβ(t) := β_0 + (β_T − β_0)t 是关于时间 tt的时间变量系数。给定一个噪声 x(T)pT(x)x(T) ∼ p_T(x),求解上述反向SDE会返回一个来自所需分布 p0(x)p_0(x) 的样本 x(0)x(0)。为此,可以使用不同的数值求解器。 SDE采样器有时需要与附加校正器结合使用,以提高样本质量。

此外,如Song等人所示,每个(反向)SDE都有一个对应的ODE,求解该ODE会得到遵循相同分布的样本。ODE的表达式为: dx=12β(t)[x+xlogpt(x)]dtdx = − \frac 1 2 β(t) [x + ∇x \log p_t(x)]dt

使用相关数值方法求解ODE可以视为一种更高效和稳健的采样方法。

使用VAE模型进行潜空间建模

变分自编码器已被用于建模具有一定规律性的低维连续潜在空间的文本。

VAE通过一个编码器 q(zx)q(z|x) 将文本空间 XX 和潜在空间 ZRdZ ⊂ \mathbb R^d 连接起来,将文本 xx 映射到潜在向量 zz,同时通过一个解码器 p(xz)p(x|z) 将潜在向量 zz 映射回文本。

先前的工作通常从头开始学习文本VAE,通过优化编码器和解码器参数来最小化以下目标函数:

LVAE(x)=Eq(zx)[logp(xz)]+KL(q(zx)pprior(z))\mathcal L_{VAE}(x) = − E_{q(z|x)}[\log p(x|z)] + KL(q(z|x)||p_{prior}(z))

其中 pprior(z)p_{prior(z)} 是标准高斯分布作为先验分布,KL()KL(·||·) 是Kullback-Leibler散度,用于将编码器 qencq_{enc}推向先验分布的方向。第一项鼓励 z 编码与重构观察到的文本 x 相关的信息,而第二项添加了正则化,使得任何符合 pprior(z) 的 z 都可以解码为文本空间 X 中的高质量文本。最近的工作(Li等,2020年;Hu和Li,2021年)通过使用预训练的语言模型(如BERT(Devlin等,2019年)和GPT2(Radford等,2019年))初始化编码器和解码器来扩展VAE。然而,它们仍然需要在目标语料库上进行昂贵的整个模型微调。

相比之下,我们的工作通过仅调整一小部分参数,将给定的预训练语言模型(例如GPT-2)高效地转换为潜在空间模型。

文本在潜空间上的可控操作

LatentOps包含两部分:

  • 基于预训练语言模型的变分自编码器:将文本空间连接到紧凑的连续潜变量空间
  • 潜空间上的基于能量的模型:允许任意属性组合,实现高效采样。

image.png

VAE解码器p(xz)p(x|z)可以将任意潜空间中的向量zz映射到相应的文本序列,因此文本控制(例如编辑文本或生成新文本)可以归结为“找到具有所需属性和特征的期望向量zz“。

为此,可以插入任何相关的属性运算符(例如分类器),得到一个描述具有所需属性的zz分布的潜空间能量模型。然后,我们可以使用ODE求解器高效求解我们的zz样本。

组合式潜空间能量模型

目标是构建潜在空间的能量基模型(EBMs),以便可以轻松地插入任意属性操作符来定义所需的潜在分布。此外,由于我们希望通过第3.3节中描述的VAE解码器p(xz)p(x|z)获得流畅的文本,潜在空间上的分布应该与VAE潜在空间的结构相匹配。 a=a1,a2,...a = {a1, a2, ...}其中每个aiRa_i ∈ \mathbb R是一个所需属性值的向量,(例如,积极情感或非正式写作风格)。

注意,aa没有固定的长度,因为可以插入任意数量的属性进行控制。

一般来说,要评估向量zz是否具有所需的属性aia_i,我们可以使用任何接受zzaia_i作为输入,并输出度量aia_izz中的表现程度的函数fif_i。对于分类属性(例如,情感,积极或消极),常见的选择之一是使用训练过的属性分类器,其中fi(z)f_i(z)是输出的logit向量,fi(z)[ai]Rf_i(z)[a_i] ∈ \mathbb R是所关注的特定类别aia_i的logit。

现在,我们准备通过插入属性分类器来制定潜在空间的能量基模型(EBMs)。具体来说,我们定义联合分布: p(z,a):=pprior(z)p(az)=pprior(z)eE(az)/Z5p(z, a) := p_{prior}(z)p(a|z) = p_{prior}(z) · e^{-E(a|z)}/Z(5), 其中pprior(z)p_{prior}(z)是VAE的高斯先验分布,而p(az)p(a|z)则通过能量函数E(az)E(a|z)来编码不同的目标属性。这种p(z,a)p(z, a)的分解具有两个关键的优点:

  1. 关于z的边缘分布等于VAE的先验分布,即ap(z,a)=pprior(z)∑_a p(z, a) = p_{prior}(z)。这有助于VAE解码器生成流畅的文本;

  2. p(a|z)中的能量函数使得任意属性的组合成为可能,其中E(az)=iλiEi(aiz)E(a|z) = ∑ _i λ_iE_i(a_i|z)。每个λiRλ_i ∈ \mathbb R是平衡权重,而EiE_i被定义为aia_i的负对数概率(即标准化的逻辑值),以确保不同的属性分类器在组合时具有相同的输出尺度:Ei(aiz)=fi(z)[ai]+logaiexp(fi(z)[ai])6E_i(a_i|z) = −f_i(z)[a_i] + \log ∑ _{a′_ i} \exp(f_i(z)[a′_i])(6)

使用ODEs高效采样

一旦获得了潜在空间和属性的目标分布p(z,a)p(z, a),用潜变量zz和目标属性aa进行生成,将其传给VAE解码器即可。

我们将方程(3)中的ODE调整为潜在空间设置上,得到如下形式的方程:

dz=12β(t)[z+zlogpt(z,a)]dt=12β(t)[z+zlogpt(az)+zlogpt(z)]dt7\begin{align} dz =& −\frac 1 2β(t)[z + ∇_z \log p_t(z, a)]dt \\ =& − \frac 1 2 β(t) [z + ∇_z \log p_t(a|z) + ∇_z \log p_t(z)] \text d t \end{align} (7)

对于pt(z)p_t(z),注意在t=0t = 0时,p0(z)p_0(z)是由方程(5)定义的VAE先验分布pprior(z)p_{prior}(z),与pT(z)p_T(z)(即扩散后的高斯噪声分布)相同。 这意味着在扩散过程中,我们始终有pt(z)=N(0,I)pt(z) = N(0, I),不随时间步而改变。 类似地,对于pt(az)p_t(a|z),由于输入的zz遵循时间不变的分布并且分类器fif_i是固定的,pt(az)p_t(a|z)也是时间不变的。将这些组成部分的定义代入,我们得到简化的ODE公式:

dz=12β(t)[zzE(az)12zz22]dt=12β(t)i=1nzE(aiz)dt8\begin{align} dz =& − \frac 1 2 β(t)[z − ∇_zE(a|z) − \frac 1 2 ∇_z||z||^2_2]dt \\&= \frac 1 2 β(t) ∑_{i=1}^n ∇_zE(a_i|z) \text d t \end{align} (8)

然后,通过从N(0,I)N(0, I)中采样z(T)z(T),并使用可微分的神经ODE求解器求解方程(8),可以轻松地在给定属性值的条件下创建潜在样本,从而得到z(0)z(0)

将预训练模型和潜空间结合起来

将自回归语言模型改造为在VAE框架内的文本潜变量模型。

  • 编码器:
    1. 添加一个MLP层将潜变量zz传给语言模型。
    2. 在语言模型的embedding层和原来的第一层之间再加一个Transformer层,

训练过程中冻结语言模型,仅改变添加的这三部分的的参数。

  • 编码器:
    1. BERT-small,在VAE框架中微调
    2. 生成原始的潜变量zz作为ODE采样器是初始值