变分自编码器(VAE)是一种利用宽泛的无监督学习办法,它的利用包含图像生成、示意学习和降维等。尽管在网络架构上常常与Auto-Encoder分割在一起,但VAE的实践根底和数学公式是截然不同的。本文将探讨是什么让VAE如此不同,并解释VAE如何连贯“变分”办法和“自编码器”。

本文更专一于VAE的统计概念和推导。咱们将从介绍VAE所要解决的问题开始,解释变分办法在解决方案中所起的作用,并探讨VAE与AE之间的分割。最初还会将VAE利用于图像重建工作来进行具体的演示。

咱们思考一个由随机变量x的N个i.i.d.样本(标量或向量)组成的数据集。假如数据是由一些随机过程产生的,这里蕴含一个未察看到的随机变量z(即潜在变量)。

生成过程有两个步骤:

值 z 是从某个先验散布 p(z; ) 生成的, 值 是从一些依赖于 的条件散布 p(x|z=; ) 生成的,

其中先验p(z;)和条件似然p(x|z;)都是未知参数集的参数散布。

咱们感兴趣的是与给定场景相干的以下三个问题:

  • 参数集的MAP/ML预计,应用它能够模仿上述生成过程并创立人工数据。
  • 对于参数的抉择,给定观测值x,隐变量z的后验推断,即p(z|x;),这对示意学习很有用。
  • 对于参数的抉择,变量x的边际推断,即p(x;),这在须要先验x的状况下是有用的。

变分法

变分法是解决上一节提出的三个问题的要害。让咱们从后验推理开始,即计算 p(z|x=; )。咱们能够通过利用贝叶斯定理和概率链式法则写出后验概率:

假如咱们能够抉择参数,因而先验散布p(z;)和似然p(|z;)由生成过程定义的值是已知的。所以实践上后验p(z|;)能够在计算分母中的积分后计算出来,这波及到枚举不可观测变量z可能具备的所有可能值。

然而如果没有对 p(z|; ) 或 p(z; ) 的任何简化假如,积分是难以解决的,这意味着任何用于评估积分的办法(包含枚举运算)的计算复杂度都是指数级的。

变分法就是为这种状况而设计的,它容许咱们通过将统计推理问题转化为优化问题来防止辣手的积分问题。变分法提出了一个辨认模型 q(z|; ) 作为实在后验 p(z|; ) 的近似值。通过最小化 q(z|; ) 和 p(z|; ) 之间的 KL 散度,咱们能够解决后验推理问题。为了简化计算,这里将对辨认模型和生成模型的参数 和 进行联结优化。

让咱们对KL散度做进一步的推导,为简略起见,参数和将被省略。

logp(x)是一个常数,所以在优化过程中能够疏忽。咱们还要重写ELBO:

优化问题当初等价于:

算法学习的过程

借助变分法能够防止简单的积分,而下一个挑战是对给定的优化问题应用什么算法。如果可能解决这个问题那么下面提到的三个问题就都不是问题了。

就像其余深度学习模型一样,咱们应用随机梯度降落进行优化,将要最大化的优化指标(即 ELBO)重写为要最小化的损失函数的模式:

这里原始冀望项应用蒙特卡洛办法进行近似,即对从 q(z|x; ) 中提取的 L 个样本 z 求均匀 logp(x|z; )。给定可微损失函数,VAE 的残缺学习算法如下:

  1. 失去由 M 个数据点组成的小批量;
  2. 计算小批量损失 ∑ ℒ(,, x) / M;
  3. 计算梯度 ∑ ∇ℒ(,, x) / M;
  4. 利用梯度来更新参数 和 ;
  5. 反复前 4 个步骤直到收敛。

在理论 利用中,样本 z 不是间接从 q(z|; ) 中抽取的,因为 q 能够是任意简单的散布并且难以采样。为了进步采样效率,能够通过设置g( , ; ),其中g(;)能够是任何以噪声 ,而是神经网络的输出。噪声 是从一些简略散布p()中采样的(例如高斯分布)。

除了采样效率之外,从新参数化技巧的另一个长处是它容许对 和 进行更好和更全面的优化。假如咱们间接从 q(z|;)中抽取样本,损失中 MC 预计项的梯度只会反向流传到采样的潜在变量 z, 它的梯度 w.r.t 不会被计算,所以参数 只能通过损失中的 KL 散度项来优化,这对于学习稳定性来说可能不是最优的。

VAE vs. AE

咱们对VAE和AE进行比拟,这样能够帮忙咱们从自编码实践的角度更好地了解VAE。

在自编码器的世界中,编码器f(x)解决数据点,而后生成z。解码器g(z)将z作为输出,并重建的x。主动编码器个别都是在重建损失ℒ(),平方误差,||x − x||²下学习。

对于 VAE,未察看到的变量 z 能够解释为散布编码。辨认模型 q(z|x; ) 能够被视为概率编码器,因为给定数据点 x 它会产生 z 的可能值的散布,而p(x|z;)能够看作一个概率解码器:给定一个编码z,它产生x的可能对应值的散布。

VAE损失函数中的MC预计项恰好是负对数似然的模式,因而能够作为重建损失,损失函数中还蕴含一个 KL 散度项,它充当正则化项并强制散布 q(z|x; ) 靠近先验 p(z; )。

所以VAE 能够看作是 AE 的概率版本,它们都是示意学习的有用工具。而VAE 绝对于 AE 的劣势在于它明确地模仿了生成过程,并且可能通过从 p(x|z; ) 中采样来生成相似于实在数据的人工数据点。更重要的是VAE 学习的散布在统计分析中十分有用。

应用MNIST的演示VAE

在所有的实践解释之后,咱们应用MNIST图像重建工作的演示VAE。VAE模型的构造如下:

高斯编码器:因为其稳固的动态个性和简略的采样,咱们抉择多元高斯作为编码器输入散布,其中的均值和方差值由前馈网络建模。

伯努利解码器:MNIST数据是灰度图像,其中每个像素都能够示意为0到1之间的一个浮点数,因而伯努利散布是咱们解码器的首选。F是元素级sigmoid激活函数,公式如下:

损失函数:为简略起见,咱们将先验p(z)设置为正态分布(0,I)。概率编码器的散布是(;,²),其中∈ℝ,²∈ℝ和ⱼ,²别离是均值/向量的第j个重量。KL散度项为:

对于冀望项,咱们设置样本数L=1并应用MC预计logp(x|z¹)来代替原始冀望项,其中代码z¹通过从新参数化技巧进行采样。也就是说z ¹=+⊙ ¹,噪声¹从正态分布中采样(0, I), ∈ ℝ,/²是编码器中的均值/向量。

联合KL和MC预计项能够失去残缺的损失函数(负ELBO):

这是概率解码器 p(x|z; ) 生成的手写数字图像的乏味可视化。

总结

总最初总结本文的要害要点:

  • VAE用于解决3个统计问题,别离是参数估计、后验推断和边缘散布推断。
  • 通过应用变分办法,能够结构一个损失函数为负ELBO的参数优化问题,通过从新参数化技巧和随机梯度降落算法来解决VAE的统计问题。
  • 变分法引入的辨认模型q(z|x; )和预约义的生成模型p(x|z; )别离对应概率编码器和解码器,而损失函数能够解释为组合重建损失以及正则项。

以上就是本文的所有内容,对于VAE的实现代码,请看这里:

https://avoid.overfit.cn/post...

作者:JZ