理解AE、VAE、GAN、DDPM的原理与区别

1. Auto Encoder

在这里插入图片描述

AE直接将数据压缩为数值编码的特征,再将数值编码映射到重构数据。由于映射空间不连续,无界,也无明显规律,我们难以要求模型具备“插值”出两个图片之间的形态,例如满月和半月之间的状态。AE更适合用于做图像的压缩和复原,但并不适合生成新的图片。

在这里插入图片描述

2. Variational Auto Encoder

在AE中,为什么无法生成出多种多样并且有意义的图像?因为AE的隐空间是直接对图像编码,编码的空间是离散的、无规律的,所以当我们选择原有的 z 1 z_1 z1 z 2 z_2 z2之间的某一个点 z 1.5 z_{1.5} z1.5时,AE往往无法生成一个有意义的图像。

于是,提出了VAE。VAE的隐空间不直接编码一系列离散的特征值,它的隐空间实际上是一个混合高斯分布,Encoder的输出描述了这样一个复杂分布,Decoder的输出将这种该分布中的一个采样点映射到图像分布。
在这里插入图片描述

我们假设,所有的图像数据都满足某种高维的正态分布,每一张图像 x x x 是从它的分布 P ( x ) P(x) P(x) 中采样得到的结果。由于 P ( x ) P(x) P(x)是一个无法知道的分布,我们只能通过某种方式去拟合它,因此考虑混合高斯分布。如下图所示,黑色是真实分布,是复杂的。但是可以用多个正态分布的叠加来拟合真实分布(蓝线)。即: P ( x ) = ∑ m P ( m ) P ( x ∣ m ) P(x)=\sum_m P(m) P(x \mid m) P(x)=mP(m)P(xm),这里假设有 m m m个正态分布,即每个 m m m为一个高斯组件。这里实际上就是全概率公式。

在这里插入图片描述

于是,考虑有一个隐空间 Z Z Z,它满足标准高斯分布,每一个 z z z是在隐空间分布的一个采样,它能通过Decoder映射到一个图像样本 x x x的分布 P ( x ) P(x) P(x) 。即,我们用下面的公式来确定一张图像的分布:
P ( x ) = ∫ z P ( z ) P ( x ∣ z ) d z P(x)=\int_z P(z) P(x \mid z) d z P(x)=zP(z)P(xz)dz
这里 P ( x ∣ z ) = N ( μ z , σ z ) P(x|z)=N(\mu_z,\sigma_z ) P(xz)=N(μz,σz),这里 μ z , σ z \mu_z,\sigma_z μz,σz是待估计的参数,由Decoder进行预测。

然而,要想准确地得到 P ( x ) P(x) P(x)是不可能的,因为由公式可知,要对所有 z z z的取值情况下的 P ( x ∣ z ) P(x|z) P(xz)积分才能得到 P ( x ) P(x) P(x),而我们无法提前得知任意 z z z下的 P ( x ∣ z ) P(x|z) P(xz),样本是有限的。所以,我们通过极大似然估,希望取得所有现有样本点的概率最大:
L = ∑ x log ⁡ P ( x ) L=\sum_x \log P(x) L=xlogP(x)
L L L怎么计算并取最大呢?这里就用到了前面所说的隐变量 z z z。我们首先引入 q ( z ∣ x ) q(z|x) q(zx),它表示,给定 x x x时推测的 z z z分布:
log ⁡ P ( x ) = ∫ z q ( z ∣ x ) log ⁡ P ( x ) d z \log P(x)=\int_z q(z \mid x) \log P(x) d z logP(x)=zq(zx)logP(x)dz
这里本质上是对等式左边做的恒等变换。接下来,使用bayes公式进一步变换:
log ⁡ P ( x ) = ∫ z q ( z ∣ x ) log ⁡ P ( x ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) P ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) ) d z + ∫ z q ( z ∣ x ) log ⁡ ( q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) ) d z + K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) ≥ ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) ) d z \begin{aligned} & \log P(x)=\int_z q(z \mid x) \log P(x) d z \\ & =\int_z q(z \mid x) \log \left(\frac{P(z, x)}{P(z \mid x)}\right) d z=\int_z q(z \mid x) \log \left(\frac{P(z, x)}{q(z \mid x)} \frac{q(z \mid x)}{P(z \mid x)}\right) d z \\ & =\int_z q(z \mid x) \log \left(\frac{P(z, x)}{q(z \mid x)}\right) d z+\int_z q(z \mid x) \log \left(\frac{q(z \mid x)}{P(z \mid x)}\right) d z\\ & =\int_z q(z \mid x) \log \left(\frac{P(z, x)}{q(z \mid x)}\right) d z + KL(q(z|x)||P(z|x)) \\ & \geq \int_z q(z \mid x) \log \left(\frac{P(z, x)}{q(z \mid x)}\right) d z \end{aligned} logP(x)=zq(zx)logP(x)dz=zq(zx)log(P(zx)P(z,x))dz=zq(zx)log(q(zx)P(z,x)P(zx)q(zx))dz=zq(zx)log(q(zx)P(z,x))dz+zq(zx)log(P(zx)q(zx))dz=zq(zx)log(q(zx)P(z,x))dz+KL(q(zx)∣∣P(zx))zq(zx)log(q(zx)P(z,x))dz
K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) KL(q(z|x)||P(z|x)) KL(q(zx)∣∣P(zx))中,由于 P ( z ∣ x ) P(z|x) P(zx)不可知,所以我们使用下界 L b L_b Lb来优化 log ⁡ P ( x ) \log P(x) logP(x) L b L_b Lb越大, log ⁡ P ( x ) \log P(x) logP(x)越大。下面我们进一步变换:
L b = ∫ z q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ⁡ ( P ( z ) q ( z ∣ x ) ) d z + ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z = − K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) + ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z = − K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) + E q ( z ∣ x ) [ log ⁡ P ( x ∣ z ) ] \begin{aligned} & L_b=\int_z q(z \mid x) \log \left(\frac{P(z, x)}{q(z \mid x)}\right) d z \\ & =\int_z q(z \mid x) \log \left(\frac{P(x \mid z) P(z)}{q(z \mid x)}\right) d z \\ & =\int_z q(z \mid x) \log \left(\frac{P(z)}{q(z \mid x)}\right) d z+\int_z q(z \mid x) \log P(x \mid z) d z\\ & = -KL(q(z|x)||P(z)) + \int_z q(z \mid x) \log P(x \mid z) d z\\ & = -KL(q(z|x)||P(z)) + E_{q(z \mid x)}[\log P(x \mid z)] \end{aligned} Lb=zq(zx)log(q(zx)P(z,x))dz=zq(zx)log(q(zx)P(xz)P(z))dz=zq(zx)log(q(zx)P(z))dz+zq(zx)logP(xz)dz=KL(q(zx)∣∣P(z))+zq(zx)logP(xz)dz=KL(q(zx)∣∣P(z))+Eq(zx)[logP(xz)]

所以就把最大化下界转化为:一方面最小化 K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) KL(q(z|x)||P(z)) KL(q(zx)∣∣P(z)),一方面最大化 E q ( z ∣ x ) [ log ⁡ P ( x ∣ z ) ] E_{q(z \mid x)}[\log P(x \mid z)] Eq(zx)[logP(xz)]。一个是约束Encoder的损失,一个是约束Decoder的重构损失。又因为我们假设 P ( z ) = N ( 0 , I ) P(z)=N(0,I) P(z)=N(0,I),所以我们可以吧优化目标提炼为:希望Encoder的输出尽可能靠近标准正态分布,Decoder输出的结果尽可能和原始图像一致。

那么,有个问题:

  • 既然KL损失希望Encoder的预测是一个标准正态,Encoder直接简单预测 μ , σ \mu,\sigma μ,σ为0和1不就好了?

实际上并不是这样,因为Encoder和Decoder是同时训练的,Encoder并不单纯收到KL损失的约束,也受到Decoder重构损失的约束。假如网络学到的是Encoder永远输出标准正态,那么Decoder的输出结果理论上几乎不会有区别了,那么重构损失就会很大。在网络的训练过程中,就是在两者之间找平衡。进一步地,可以这么理解:如果没有KL损失,那么VAE退化为类似AE的模型,隐空间的编码会尽量相隔很远,变得离散化,Decoder也就难以根据新的隐变量编码生成新的图像;而有了KL损失,隐空间中不同图像的编码的界限被模糊,使得模型具有了泛化性,当输入的 z z z是新的时,Decoder也能生成出相对合理的新图像。

在这里插入图片描述

3. Generative Advesarial Network

GAN的想法比较直接:生成器输入随机向量,Generator对其进行变换(卷积、Transformer等),得到预测的图像(fake)。fake的图像和真实的图像进行混合,送入Discriminator对每张图片进行判别,判断是fake还是real。输出的判别序列和ground truth计算交叉熵损失。
生成器: L G = H ( 1 , D ( G ( z ) ) ) 生成器:L_G=H(1, D(G(z))) 生成器:LG=H(1,D(G(z)))

判别器损失: L D = H ( 1 , D ( x ) ) + H ( 0 , D ( G ( z ) ) ) 判别器损失:L_D=H(1, D(x))+H(0, D(G(z))) 判别器损失:LD=H(1,D(x))+H(0,D(G(z)))

4. Denoising Diffusion Porbalisitc Model

在这里插入图片描述

5. 上述模型的比较

以下是个人理解,如果有不同的想法,欢迎讨论!

  • GAN的特征空间,可以理解为常见CV模型的特征空间,生成器是在根据先验重新整合特征,判别器则是一个常见的classifer模型。GAN的训练是一种监督学习。AE的隐空间是图像的直接压缩编码,不具有可解释性,并且是离散的、无明显规律的。这导致如果我们输入全新的隐空间编码,Decoder无法理解,也无法生成有意义的图像。GAN和AE有一定的相似性,他们的生成部分,都是将随机输入,直接转换为一张图片。不同之处在于训练方式,GAN的训练借助判别器,G、D相互监督;AE的训练是无监督的,采用Encoder将图像先编码,再Decoder解码,直接衡量Decoder输出与原图的相似性。
  • VAE是AE的升级,它是一种概率模型,认为图像可以被建模为概率分布,采用混合高斯分布作为隐空间设计的理论指导。由于是概率模型,在训练时,相同的输入图像编码得到的z是不确定的,但是在一个值附近波动(高斯分布),所以这保证了x->code->x的映射并不是一一对应的,而是有波动性的。这模糊了不同的图像之间的code的边界,同一个x,可能生成code1也可能生成code2,而code1, code2都有可能生成x也有可能生成x附近的相似图像。因此VAE具有泛化性,对于任意的新的隐编码,Decoder都能对其做出解释,生成有意义的图像。
  • DDPM也是基于概率的模型,但与VAE不同的是,它把图像的生成看作是从高斯噪声图逐步去噪的过程,它最大的特点是把图像的生成分解到很多个时间步。GAN生成的结果往往更加锐利、接近原始图像,但缺乏多样性且容易模式崩溃;相比之下,VAE生成的结果具有多样性,但是往往较为模糊、仿佛是多个图像平滑后的结果。DDPM的表现则结合了两者的优点。它通过概率建模保证随机性,通过多步去噪来保证高保真。为什么可以通过多步去噪来实现高保真呢?我的理解是:
    • 其一,VAE采用像素级的图像损失,所以VAE会倾向于输出平滑的结果。例如黑底白字,白色的字若整体偏移一个像素,尽管视觉上还是基本一样的,但VAE的重建损失会非常大(因为相当于所有原图为1的地方这里都变成0了),因此,尽量预测为平滑的灰色是一个比较好的平衡。并且KL损失也会进一步加强这种模糊性。相比之下,DDPM尽管也是像素级损失,但它是对噪声的损失,而且只预测一个时间步的噪声,逐步还原出细节,所以可以在很大程度上避免这个问题。
    • 其二,我认为是更重要的一点,多步预测概率分布,让相同参数规模的模型,能有更强大的表达能力。例如下图(来自b站up主[大白话AI],如果我们想要一个27:23的概率分布的抽奖箱,我们既可以像红色箱子一样,用50个球,一次抽样完成;但我们也可以只用10个球、多步抽样来实现。这说明随着步数的增加,简单的模型也可以模拟出非常复杂的分布。神经网络模型的参数量数有限的,如果像VAE一样单步对概率建模,其表现能力有限;而DDPM采用很多个时间步来对噪声递进地预测,这使得有限规模的网络能有非常强大的表现能力。所以,DDPM比VAE的能力更加强大。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值