在VAE中,重点在于潜编码的变分推理。因此,VAE为潜在变量的学习和有效贝叶斯推理提供了合适的框架。
在结构上,VAE与自编码器相似。它也由编码器(也称为识别或推理模型)和解码器(也称为生成模型)组成。 VAE和自编码器都试图在学习潜矢量的同时重建输入数据。但是,与自编码器不同,VAE的潜在空间是连续的,并且解码器本身被用作生成模型。
VAE原理
在生成模型中,使用神经网络来逼近输入的真实分布:
x ∼ P θ ( x ) ( 1 ) x \sim P_θ(x) \qquad(1) x∼Pθ(x)(1)
θ表示模型参数。
在机器学习中,为了执行特定的推理,希望找到 P θ ( x , z ) P_θ(x,z) Pθ(x,z),这是输入 x x x和潜变量 z z z之间的联合分布。潜变量是对可从输入中观察到的某些属性进行编码。如在名人面孔中,这些可能是面部表情,发型,头发颜色,性别等。
P θ ( x , z ) P_θ(x,z) Pθ(x,z)实际上是输入数据及其属性的分布。 P θ ( x ) P_θ(x) Pθ(x)可以从边缘分布计算:
P θ ( x ) = ∫ P θ ( x , z ) d z ( 2 ) P_θ(x)=\int P_θ(x,z)dz \qquad(2) Pθ(x)=∫Pθ(x,z)dz(2)
换句话说,考虑所有可能的属性,最终得到描述输入的分布。在名人面孔中,利用包含面部表情,发型,头发颜色和性别在内的特征,可以恢复描述名人面孔的分布。
问题在于该方程式没有解析形式或有效的估计量。因此,通过神经网络进行优化是不可行的。
使用贝叶斯定理,可以找到方程式(2)的替代表达式:
P θ ( x ) = ∫ P θ ( x ∣ z ) P ( z ) d z ( 3 ) P_θ(x)=\int P_θ(x|z)P(z)dz \qquad(3) Pθ(x)=∫Pθ(x∣z)P(z)dz(3)
P ( z ) P(z) P(z)是 z z z的先验分布。它不以任何观察为条件。如果 z z z是离散的并且 P θ ( x ∣ z ) P_θ(x|z) Pθ(x∣z)是高斯分布,则 P θ ( x ) P_θ(x) Pθ(x)是高斯分布的混合。如果 z z z是连续的,则高斯分布 P θ ( x ) P_θ(x) Pθ(x)无法预估。
在实践中,如果尝试在没有合适的损失函数的情况下建立近似 P θ ( x ∣ z ) P_θ(x|z) Pθ(x∣z)的神经网络,它将忽略 z z z并得出平凡解, P θ ( x ∣ z ) = P θ ( x ) P_θ(x|z)=P_θ(x) Pθ(x∣z)=Pθ(x)。因此,公式(3)不能提供 P θ ( x ) P_θ(x) Pθ(x)的良好估计。公式(2)也可以表示为:
P θ ( x ) = ∫ P θ ( z ∣ x ) P ( x ) d z ( 4 ) P_θ(x)=\int P_θ(z|x)P(x)dz \qquad(4) Pθ(x)=∫Pθ(z∣x)P(x)dz(4)
但是, P θ ( z ∣ x ) P_θ(z|x) Pθ(z∣x)也难以求解。 VAE的目标是找到一个可估计的分布,该分布近似估计 P θ ( z ∣ x ) P_θ(z|x) Pθ(z∣x),即在给定输入 x x x的情况下对潜在编码 z z z的条件分布的估计。
变分推理
为了使 P θ ( z ∣ x ) P_θ(z|x) Pθ(z∣x)易于处理,VAE引入了变分推断模型(编码器):
Q ϕ ( z ∣ x ) ≈ P θ ( z ∣ x ) ( 5 ) Q_\phi (z|x) \approx P_θ(z|x) \qquad(5) Qϕ(z∣x)≈Pθ(z∣x)(5)
Q ϕ ( z ∣ x ) Q_\phi (z|x) Qϕ(z∣x)可很好地估计 P θ ( z ∣ x ) P_θ(z|x) Pθ(z∣x)。它既可以参数化又易于处理。 可以通过深度神经网络优化参数 φ φ φ来近似 Q ϕ ( z ∣ x ) Q_\phi (z|x) Qϕ(z∣x)。 通常,将 Q ϕ ( z ∣ x ) Q_\phi (z|x) Qϕ(z∣x)选择为多元高斯分布:
Q ϕ ( z ∣ x ) = N ( z ; μ ( x ) , d i a g ( σ ( x ) 2 ) ) ( 6 ) Q_\phi (z|x)=\mathcal N(z;\mu(x),diag(\sigma(x)^2)) \qquad(6) Qϕ(z∣x)=N(z;μ(x),diag(σ(x)2))(6)
均值 μ ( x ) \mu(x) μ(x)和标准差 σ ( x ) \sigma (x) σ(x)均由编码器神经网络使用输入数据计算得出。对角矩阵表示 z z z中的元素间是相互独立的。
VAE核心方程
推理模型 Q ϕ ( z ∣ x ) Q_\phi (z|x) Qϕ(z∣x)从输入 x x x生成潜矢量 z z z。 Q ϕ ( z ∣ x ) Q_\phi (z|x) Qϕ(z∣x)类似于自编码器模型中的编码器。另一方面, P θ ( x ∣ z ) P_θ(x|z) Pθ(x∣z)从潜码z重建输入。 P θ ( x ∣ z ) P_θ(x|z) Pθ