机器学习 中,变分自编码器(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
{\displaystyle x}
为输入。编码器将其压缩到潜空间。解码器以在潜空间采样的信息为输入,并产生
x
′
{\displaystyle {x'}}
,使其与
x
{\displaystyle x}
尽可能相似。
从建立概率模型的角度来看,人们希望用他们选择的参数化概率分布
p
θ
(
x
)
=
p
(
x
|
θ
)
{\displaystyle p_{\theta }(x)=p(x|\theta )}
使数据
x
{\displaystyle x}
的概率最大化。这一分布常是高斯分布
N
(
x
|
μ
,
σ
)
{\displaystyle N(x|\mu ,\sigma )}
,分别参数化为
μ
{\displaystyle \mu }
和
σ
{\displaystyle \sigma }
,作为指数族的一员很容易作为噪声分布来处理。简单的分布很容易最大化,但如果假设了潜质(latent)
z
{\displaystyle z}
的先验分布,可能会产生难以解决的积分。让我们通过对
z
{\displaystyle z}
的边缘化 找到
p
θ
(
x
)
{\displaystyle p_{\theta }(x)}
。
p
θ
(
x
)
=
∫
z
p
θ
(
x
,
z
)
d
z
,
{\displaystyle p_{\theta }(x)=\int _{z}p_{\theta }({x,z})\,dz,}
其中,
p
θ
(
x
,
z
)
{\displaystyle p_{\theta }({x,z})}
表示可观测数据
x
{\displaystyle x}
于
p
θ
{\displaystyle p_{\theta }}
下的联合分布 ,和在潜空间中的形式(也就是编码后的
z
{\displaystyle z}
)。根据连锁法则 ,方程可以改写为
p
θ
(
x
)
=
∫
z
p
θ
(
x
|
z
)
p
θ
(
z
)
d
z
{\displaystyle p_{\theta }(x)=\int _{z}p_{\theta }({x|z})p_{\theta }(z)\,dz}
在原始的VAE中,通常认为
z
{\displaystyle z}
是实数的有限维向量,
p
θ
(
x
|
z
)
{\displaystyle p_{\theta }({x|z})}
则是高斯分布 。那么
p
θ
(
x
)
{\displaystyle p_{\theta }(x)}
便是高斯分布的混合物。
现在,可将输入数据和其在潜空间中的表示的映射定义为
先验
p
θ
(
z
)
{\displaystyle p_{\theta }(z)}
似然值
p
θ
(
x
|
z
)
{\displaystyle p_{\theta }(x|z)}
后验
p
θ
(
z
|
x
)
{\displaystyle p_{\theta }(z|x)}
不幸的是,对
p
θ
(
x
)
{\displaystyle p_{\theta }(x)}
的计算十分困难。为了加快计算速度,有必要再引入一个函数,将后验分布近似为
q
ϕ
(
z
|
x
)
≈
p
θ
(
z
|
x
)
{\displaystyle q_{\phi }({z|x})\approx p_{\theta }({z|x})}
其中
ϕ
{\displaystyle \phi }
是参数化的
q
{\displaystyle q}
的实值集合。这有时也被称为“摊销推理”(amortized inference),因为可以通过“投资”找到好的
q
ϕ
{\displaystyle q_{\phi }}
,之后不用积分便可以从
x
{\displaystyle x}
快速推断出
z
{\displaystyle z}
。
这样,问题就变成了找到一个好的概率自编码器,其中条件似然分布
p
θ
(
x
|
z
)
{\displaystyle p_{\theta }(x|z)}
由概率解码器(probabilistic decoder)计算得到,后验分布近似
q
ϕ
(
z
|
x
)
{\displaystyle q_{\phi }(z|x)}
由概率编码器(probabilistic encoder)计算得到。
下面将编码器参数化为
E
ϕ
{\displaystyle E_{\phi }}
,将解码器参数化为
D
θ
{\displaystyle D_{\theta }}
。
如同每个深度学习 问题,为了通过反向传播算法 更新神经网络的权重,需要定义一个可微损失函数。
对于VAE,这一思想可以实现为联合优化生成模型参数
θ
{\displaystyle \theta }
和
ϕ
{\displaystyle \phi }
,以减少输入输出间的重构误差,并使
q
ϕ
(
z
|
x
)
{\displaystyle q_{\phi }({z|x})}
尽可能接近
p
θ
(
z
|
x
)
{\displaystyle p_{\theta }(z|x)}
。重构损失常用均方误差 和交叉熵 。
作为两个分布之间的距离损失,反向KL散度
D
K
L
(
q
ϕ
(
z
|
x
)
∥
p
θ
(
z
|
x
)
)
{\displaystyle D_{KL}(q_{\phi }({z|x})\parallel p_{\theta }({z|x}))}
可以很有效地将
q
ϕ
(
z
|
x
)
{\displaystyle q_{\phi }({z|x})}
挤压到
p
θ
(
z
|
x
)
{\displaystyle p_{\theta }(z|x)}
之下。[ 8] [ 9]
刚刚定义的距离损失可扩展为
D
K
L
(
q
ϕ
(
z
|
x
)
∥
p
θ
(
z
|
x
)
)
=
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
q
ϕ
(
z
|
x
)
p
θ
(
z
|
x
)
]
=
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
q
ϕ
(
z
|
x
)
p
θ
(
x
)
p
θ
(
x
,
z
)
]
=
ln
p
θ
(
x
)
+
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
q
ϕ
(
z
|
x
)
p
θ
(
x
,
z
)
]
{\displaystyle {\begin{aligned}D_{KL}(q_{\phi }({z|x})\parallel p_{\theta }({z|x}))&=\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {q_{\phi }(z|x)}{p_{\theta }(z|x)}}\right]\\&=\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {q_{\phi }({z|x})p_{\theta }(x)}{p_{\theta }(x,z)}}\right]\\&=\ln p_{\theta }(x)+\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {q_{\phi }({z|x})}{p_{\theta }(x,z)}}\right]\end{aligned}}}
现在定义证据下界(Evidence lower bound,ELBO):
L
θ
,
ϕ
(
x
)
:=
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
p
θ
(
x
,
z
)
q
ϕ
(
z
|
x
)
]
=
ln
p
θ
(
x
)
−
D
K
L
(
q
ϕ
(
⋅
|
x
)
∥
p
θ
(
⋅
|
x
)
)
{\displaystyle L_{\theta ,\phi }(x):=\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {p_{\theta }(x,z)}{q_{\phi }({z|x})}}\right]=\ln p_{\theta }(x)-D_{KL}(q_{\phi }({\cdot |x})\parallel p_{\theta }({\cdot |x}))}
使ELBO最大化
θ
∗
,
ϕ
∗
=
argmax
θ
,
ϕ
L
θ
,
ϕ
(
x
)
{\displaystyle \theta ^{*},\phi ^{*}={\underset {\theta ,\phi }{\operatorname {argmax} }}\,L_{\theta ,\phi }(x)}
等于同时最大化
ln
p
θ
(
x
)
{\displaystyle \ln p_{\theta }(x)}
、最小化
D
K
L
(
q
ϕ
(
z
|
x
)
∥
p
θ
(
z
|
x
)
)
{\displaystyle D_{KL}(q_{\phi }({z|x})\parallel p_{\theta }({z|x}))}
。即,最大化观测数据似然的对数值,同时最小化近似后验
q
ϕ
(
⋅
|
x
)
{\displaystyle q_{\phi }(\cdot |x)}
与精确后验
p
θ
(
⋅
|
x
)
{\displaystyle p_{\theta }(\cdot |x)}
的差值。
给出的形式不大方便进行最大化,可以用下面的等价形式:
L
θ
,
ϕ
(
x
)
=
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
p
θ
(
x
|
z
)
]
−
D
K
L
(
q
ϕ
(
⋅
|
x
)
∥
p
θ
(
⋅
)
)
{\displaystyle L_{\theta ,\phi }(x)=\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln p_{\theta }(x|z)\right]-D_{KL}(q_{\phi }({\cdot |x})\parallel p_{\theta }(\cdot ))}
其中
ln
p
θ
(
x
|
z
)
{\displaystyle \ln p_{\theta }(x|z)}
实现为
‖
x
−
D
θ
(
z
)
‖
2
2
{\displaystyle \|x-D_{\theta }(z)\|_{2}^{2}}
,因为这是在加性常数的前提下
x
∼
N
(
D
θ
(
z
)
,
I
)
{\displaystyle x\sim {\mathcal {N}}(D_{\theta }(z),I)}
得到的东西。也就是说,我们把
x
{\displaystyle x}
在
z
{\displaystyle z}
上的条件分布建模为以
D
θ
(
z
)
{\displaystyle D_{\theta }(z)}
为中心的高斯分布。
q
ϕ
(
z
|
x
)
{\displaystyle q_{\phi }(z|x)}
和
p
θ
(
z
)
{\displaystyle p_{\theta }(z)}
的分布通常也被选为高斯分布,因为
z
|
x
∼
(
E
ϕ
(
x
)
,
σ
ϕ
(
x
)
2
I
)
{\displaystyle z|x\sim {\mathcal {(}}E_{\phi }(x),\sigma _{\phi }(x)^{2}I)}
和
z
∼
(
0
,
I
)
{\displaystyle z\sim {\mathcal {(}}0,I)}
可以通过高斯分布的KL散度公式得到:
L
θ
,
ϕ
(
x
)
=
−
1
2
E
z
∼
q
ϕ
(
⋅
|
x
)
[
‖
x
−
D
θ
(
z
)
‖
2
2
]
−
1
2
(
N
σ
ϕ
(
x
)
2
+
‖
E
ϕ
(
x
)
‖
2
2
−
2
N
ln
σ
ϕ
(
x
)
)
+
C
o
n
s
t
{\displaystyle L_{\theta ,\phi }(x)=-{\frac {1}{2}}\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\|x-D_{\theta }(z)\|_{2}^{2}\right]-{\frac {1}{2}}\left(N\sigma _{\phi }(x)^{2}+\|E_{\phi }(x)\|_{2}^{2}-2N\ln \sigma _{\phi }(x)\right)+Const}
重参数化技巧方案。随机变量
ε
{\displaystyle {\varepsilon }}
可作为外部输入注入潜空间
z
{\displaystyle z}
,这样一来便可以不更新随机变量,而反向传播梯度。
有效搜索到
θ
∗
,
ϕ
∗
=
argmax
θ
,
ϕ
L
θ
,
ϕ
(
x
)
{\displaystyle \theta ^{*},\phi ^{*}={\underset {\theta ,\phi }{\operatorname {argmax} }}\,L_{\theta ,\phi }(x)}
的典型方法是梯度下降法 。
它可以很直接地找到
∇
θ
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
p
θ
(
x
,
z
)
q
ϕ
(
z
|
x
)
]
=
E
z
∼
q
ϕ
(
⋅
|
x
)
[
∇
θ
ln
p
θ
(
x
,
z
)
q
ϕ
(
z
|
x
)
]
{\displaystyle \nabla _{\theta }\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {p_{\theta }(x,z)}{q_{\phi }({z|x})}}\right]=\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\nabla _{\theta }\ln {\frac {p_{\theta }(x,z)}{q_{\phi }({z|x})}}\right]}
但是,
∇
ϕ
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
p
θ
(
x
,
z
)
q
ϕ
(
z
|
x
)
]
{\displaystyle \nabla _{\phi }\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {p_{\theta }(x,z)}{q_{\phi }({z|x})}}\right]}
不允许将
∇
ϕ
{\displaystyle \nabla _{\phi }}
置于期望中,因为
ϕ
{\displaystyle \phi }
出现在概率分布本身之中。重参数化技巧 (也被称为随机反向传播[ 10] )则绕过了这个难点。[ 8] [ 11] [ 12]
最重要的例子是当
z
∼
q
ϕ
(
⋅
|
x
)
{\displaystyle z\sim q_{\phi }(\cdot |x)}
遵循正态分布时,如
N
(
μ
ϕ
(
x
)
,
Σ
ϕ
(
x
)
)
{\displaystyle {\mathcal {N}}(\mu _{\phi }(x),\Sigma _{\phi }(x))}
。
重参数化技巧之后的VAE方案
可以通过让
ε
∼
N
(
0
,
I
)
{\displaystyle {\boldsymbol {\varepsilon }}\sim {\mathcal {N}}(0,{\boldsymbol {I}})}
构成“标准随机数生成 器”来实现重参数化,并将
z
{\displaystyle z}
构建为
z
=
μ
ϕ
(
x
)
+
L
ϕ
(
x
)
ϵ
{\displaystyle z=\mu _{\phi }(x)+L_{\phi }(x)\epsilon }
。这里,
L
ϕ
(
x
)
{\displaystyle L_{\phi }(x)}
通过科列斯基分解 得到:
Σ
ϕ
(
x
)
=
L
ϕ
(
x
)
L
ϕ
(
x
)
T
{\displaystyle \Sigma _{\phi }(x)=L_{\phi }(x)L_{\phi }(x)^{T}}
接着我们有
∇
ϕ
E
z
∼
q
ϕ
(
⋅
|
x
)
[
ln
p
θ
(
x
,
z
)
q
ϕ
(
z
|
x
)
]
=
E
ϵ
[
∇
ϕ
ln
p
θ
(
x
,
μ
ϕ
(
x
)
+
L
ϕ
(
x
)
ϵ
)
q
ϕ
(
μ
ϕ
(
x
)
+
L
ϕ
(
x
)
ϵ
|
x
)
]
{\displaystyle \nabla _{\phi }\mathbb {E} _{z\sim q_{\phi }(\cdot |x)}\left[\ln {\frac {p_{\theta }(x,z)}{q_{\phi }({z|x})}}\right]=\mathbb {E} _{\epsilon }\left[\nabla _{\phi }\ln {\frac {p_{\theta }(x,\mu _{\phi }(x)+L_{\phi }(x)\epsilon )}{q_{\phi }(\mu _{\phi }(x)+L_{\phi }(x)\epsilon |x)}}\right]}
由此,我们得到了梯度的无偏估计,这就可以应用随机梯度下降法 了。
由于我们重参数化了
z
{\displaystyle z}
,所以需要找到
q
ϕ
(
z
|
x
)
{\displaystyle q_{\phi }(z|x)}
。令
q
0
{\displaystyle q_{0}}
为
ϵ
{\displaystyle \epsilon }
的概率密度函数,那么
ln
q
ϕ
(
z
|
x
)
=
ln
q
0
(
ϵ
)
−
ln
|
det
(
∂
ϵ
z
)
|
{\displaystyle \ln q_{\phi }(z|x)=\ln q_{0}(\epsilon )-\ln |\det(\partial _{\epsilon }z)|}
,其中
∂
ϵ
z
{\displaystyle \partial _{\epsilon }z}
是
ϵ
{\displaystyle \epsilon }
相对于
z
{\displaystyle z}
的雅可比矩阵。由于
z
=
μ
ϕ
(
x
)
+
L
ϕ
(
x
)
ϵ
{\displaystyle z=\mu _{\phi }(x)+L_{\phi }(x)\epsilon }
,这就是
ln
q
ϕ
(
z
|
x
)
=
−
1
2
‖
ϵ
‖
2
−
ln
|
det
L
ϕ
(
x
)
|
−
n
2
ln
(
2
π
)
{\displaystyle \ln q_{\phi }(z|x)=-{\frac {1}{2}}\|\epsilon \|^{2}-\ln |\det L_{\phi }(x)|-{\frac {n}{2}}\ln(2\pi )}
许多VAE的应用和扩展已被用来使其适应其他领域,并提升性能。
β
{\displaystyle \beta }
-VAE是带加权KL散度的实现,用于自动发现并解释因子化的潜空间形式。这种实现可以对大于1的
β
{\displaystyle \beta }
值强制进行流形分解。这个架构可以在无监督下发现解耦的潜因子。[ 13] [ 14]
条件性VAE(CVAE)在潜空间中插入标签信息,强制对所学数据进行确定性约束表示(Deterministic Constrained Representation)。[ 15]
一些结构可以直接处理生成样本的质量,[ 16] [ 17] 或实现多个潜空间,以进一步改善表征学习 的效果。[ 18] [ 19]
一些结构将VAE和生成对抗网络 混合起来,以获得混合模型。[ 20] [ 21] [ 22]