变分自编码器

来自testwiki
imported>JimGrassroot2025年1月9日 (四) 13:14的版本 (使用HotCat已添加Category:神經網路架構
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:机器学习导航栏

机器学习中,变分自编码器(Variational Autoencoder,VAE)是由Diederik P. Kingma和Max Welling提出的一种人工神经网络结构,属于概率图模式变分贝叶斯方法[1]

VAE与自编码器模型有关,因为两者在结构上有一定亲和力,但在目标和数学表述上有很大区别。VAE属于概率生成模型(Probabilistic Generative Model),神经网络仅是其中的一个组件,依照功能的不同又可分为编码器和解码器。编码器可将输入变量映射到与变分分布的参数相对应的潜空间(Latent Space),这样便可以产生多个遵循同一分布的不同样本。解码器的功能基本相反,是从潜空间映射回输入空间,以生成数据点。虽然噪声模型的方差可以单独学习而来,但它们通常都是用重参数化技巧(Reparameterization Trick)来训练的。

此类模型最初是为无监督学习设计的,[2][3]但在半监督学习[4][5]监督学习中也表现出卓越的有效性。[6]

结构与操作概述

VAE是一个分别具有先验和噪声分布的生成模型,一般用最大期望算法(Expectation-Maximization meta-algorithm)来训练。这样可以优化数据似然的下限,用其它方法很难实现这点,且需要q分布或变分后验。这些q分布通常在一个单独的优化过程中为每个单独数据点设定参数;而VAE则用神经网络作为一种摊销手段来联合优化各个数据点,将数据点本身作为输入,输出变分分布的参数。从一个已知的输入空间映射到低维潜空间,这是一种编码过程,因此这张神经网络也叫“编码器”。

解码器则从潜空间映射回输入空间,如作为噪声分布的平均值。也可以用另一个映射到方差的神经网络,为简单起见一般都省略掉了。这时,方差可以用梯度下降法进行优化。

优化模型常用的两个术语是“重构误差(reconstruction error)”和“KL散度”。它们都来自概率模型的自由能表达式(Free Energy Expression ),因而根据噪声分布和数据的假定先验而有所不同。例如,像IMAGENET这样的标准VAE任务一般都假设具有高斯分布噪声,但二值化的MNIST这样的任务则需要伯努利噪声。自由能表达式中的KL散度使得与p分布重叠的q分布的概率质量最大化,但这样可能导致出现搜寻模态(Mode-Seeking Behaviour)。自由能表达式的剩余部分是“重构”项,需要用采样逼近来计算其期望。[7]

系统阐述

VAE的基本框架。模型接受x为输入。编码器将其压缩到潜空间。解码器以在潜空间采样的信息为输入,并产生x,使其与x尽可能相似。

从建立概率模型的角度来看,人们希望用他们选择的参数化概率分布pθ(x)=p(x|θ)使数据x的概率最大化。这一分布常是高斯分布N(x|μ,σ),分别参数化为μσ,作为指数族的一员很容易作为噪声分布来处理。简单的分布很容易最大化,但如果假设了潜质(latent)z的先验分布,可能会产生难以解决的积分。让我们通过对z边缘化找到pθ(x)

pθ(x)=zpθ(x,z)dz,

其中,pθ(x,z)表示可观测数据xpθ下的联合分布,和在潜空间中的形式(也就是编码后的z)。根据连锁法则,方程可以改写为

pθ(x)=zpθ(x|z)pθ(z)dz

在原始的VAE中,通常认为z是实数的有限维向量,pθ(x|z)则是高斯分布。那么pθ(x)便是高斯分布的混合物。

现在,可将输入数据和其在潜空间中的表示的映射定义为

  • 先验pθ(z)
  • 似然值pθ(x|z)
  • 后验pθ(z|x)

不幸的是,对pθ(x)的计算十分困难。为了加快计算速度,有必要再引入一个函数,将后验分布近似为

qϕ(z|x)pθ(z|x)

其中ϕ是参数化的q的实值集合。这有时也被称为“摊销推理”(amortized inference),因为可以通过“投资”找到好的qϕ,之后不用积分便可以从x快速推断出z

这样,问题就变成了找到一个好的概率自编码器,其中条件似然分布pθ(x|z)由概率解码器(probabilistic decoder)计算得到,后验分布近似qϕ(z|x)由概率编码器(probabilistic encoder)计算得到。

下面将编码器参数化为Eϕ,将解码器参数化为Dθ

证据下界(Evidence lower bound,ELBO)

如同每个深度学习问题,为了通过反向传播算法更新神经网络的权重,需要定义一个可微损失函数。

对于VAE,这一思想可以实现为联合优化生成模型参数θϕ,以减少输入输出间的重构误差,并使qϕ(z|x)尽可能接近pθ(z|x)。重构损失常用均方误差交叉熵

作为两个分布之间的距离损失,反向KL散度DKL(qϕ(z|x)pθ(z|x))可以很有效地将qϕ(z|x)挤压到pθ(z|x)之下。[8][9]

刚刚定义的距离损失可扩展为

DKL(qϕ(z|x)pθ(z|x))=𝔼zqϕ(|x)[lnqϕ(z|x)pθ(z|x)]=𝔼zqϕ(|x)[lnqϕ(z|x)pθ(x)pθ(x,z)]=lnpθ(x)+𝔼zqϕ(|x)[lnqϕ(z|x)pθ(x,z)]

现在定义证据下界(Evidence lower bound,ELBO):Lθ,ϕ(x):=𝔼zqϕ(|x)[lnpθ(x,z)qϕ(z|x)]=lnpθ(x)DKL(qϕ(|x)pθ(|x))使ELBO最大化θ*,ϕ*=argmaxθ,ϕLθ,ϕ(x)等于同时最大化lnpθ(x)、最小化DKL(qϕ(z|x)pθ(z|x))。即,最大化观测数据似然的对数值,同时最小化近似后验qϕ(|x)与精确后验pθ(|x)的差值。

给出的形式不大方便进行最大化,可以用下面的等价形式:Lθ,ϕ(x)=𝔼zqϕ(|x)[lnpθ(x|z)]DKL(qϕ(|x)pθ())其中lnpθ(x|z)实现为xDθ(z)22,因为这是在加性常数的前提下x𝒩(Dθ(z),I)得到的东西。也就是说,我们把xz上的条件分布建模为以Dθ(z)为中心的高斯分布。qϕ(z|x)pθ(z)的分布通常也被选为高斯分布,因为z|x(Eϕ(x),σϕ(x)2I)z(0,I)可以通过高斯分布的KL散度公式得到:Lθ,ϕ(x)=12𝔼zqϕ(|x)[xDθ(z)22]12(Nσϕ(x)2+Eϕ(x)222Nlnσϕ(x))+Const

重参数化

重参数化技巧方案。随机变量ε可作为外部输入注入潜空间z,这样一来便可以不更新随机变量,而反向传播梯度。

有效搜索到θ*,ϕ*=argmaxθ,ϕLθ,ϕ(x)的典型方法是梯度下降法

它可以很直接地找到θ𝔼zqϕ(|x)[lnpθ(x,z)qϕ(z|x)]=𝔼zqϕ(|x)[θlnpθ(x,z)qϕ(z|x)]但是,ϕ𝔼zqϕ(|x)[lnpθ(x,z)qϕ(z|x)]不允许将ϕ置于期望中,因为ϕ出现在概率分布本身之中。重参数化技巧(也被称为随机反向传播[10])则绕过了这个难点。[8][11][12]

最重要的例子是当zqϕ(|x)遵循正态分布时,如𝒩(μϕ(x),Σϕ(x))

重参数化技巧之后的VAE方案

可以通过让ε𝒩(0,𝑰)构成“标准随机数生成器”来实现重参数化,并将z构建为z=μϕ(x)+Lϕ(x)ϵ。这里,Lϕ(x)通过科列斯基分解得到:Σϕ(x)=Lϕ(x)Lϕ(x)T接着我们有ϕ𝔼zqϕ(|x)[lnpθ(x,z)qϕ(z|x)]=𝔼ϵ[ϕlnpθ(x,μϕ(x)+Lϕ(x)ϵ)qϕ(μϕ(x)+Lϕ(x)ϵ|x)]由此,我们得到了梯度的无偏估计,这就可以应用随机梯度下降法了。

由于我们重参数化了z,所以需要找到qϕ(z|x)。令q0ϵ的概率密度函数,那么lnqϕ(z|x)=lnq0(ϵ)ln|det(ϵz)|,其中ϵzϵ相对于z的雅可比矩阵。由于z=μϕ(x)+Lϕ(x)ϵ,这就是lnqϕ(z|x)=12ϵ2ln|detLϕ(x)|n2ln(2π)

变体

许多VAE的应用和扩展已被用来使其适应其他领域,并提升性能。

β-VAE是带加权KL散度的实现,用于自动发现并解释因子化的潜空间形式。这种实现可以对大于1的β值强制进行流形分解。这个架构可以在无监督下发现解耦的潜因子。[13][14]

条件性VAE(CVAE)在潜空间中插入标签信息,强制对所学数据进行确定性约束表示(Deterministic Constrained Representation)。[15]

一些结构可以直接处理生成样本的质量,[16][17]或实现多个潜空间,以进一步改善表征学习的效果。[18][19]

一些结构将VAE和生成对抗网络混合起来,以获得混合模型。[20][21][22]

另见

Template:Div col

Template:Div col end

参考

Template:Reflist

Template:Differentiable computing