抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

VAE

VAE

  • VAE模型

  • VAE公式推导

    知乎文章

  • KL项的作用

    KL loss类似于一个正则项,用于规范latent的范围,这也是与AE的最大区别。

VQ-VAE

  • VQ-VAE模型结构

    前向时,Encoder出来的latent会与codebook中的code做最近邻,直接使用codebook中的code作为latent。

    VQ-VAE实质上是AE,用来将图像进行压缩。如果要做到图像生成,可以使用PixelCNN来拟合离散的分布。(原文中做法)

  • VQ-VAE的优化目标

    有三部分组成:reconstruction loss,VQ loss, commitment loss。

    • Reconstruction loss: 反向过程,encoder无法得到反传的梯度,这里采取的方法是将decoder的梯度复制到encoder。具体实现如下图。

      即 L = x - decoder(z_e+(z_q-z_e).detach())
    • VQ loss:为了学习codebook,将codebook中的code与encoder的输出拉近。这一部分不反传给encoder。可以使用EMA算法实现。

    • Commitment loss:Encoder和codebook的学习速度不同,为了不让encoder的输出偏离codebook太多,使用了commitment loss。这一部分不反传给codebook。

Encoder由Reconstruction loss和commitment loss优化,Decoder由Reconstruction loss优化,Codebook由VQ loss优化。

  • VAE与VQ-VAE的区别

    VAE是假设latent分布为高斯分布;VQ-VAE则是假设latent分布为类别分布。

GAN

GAN

  • GAN模型结构

    生成器G,判别器D,先验分布Z(可以采用高斯噪声)。

  • GAN的损失函数

    首先考虑判别器D,这是一个二分类问题,那么其损失函数为:

    再考虑生成器G。G是要与D唱反调,那么G的目标就是最小化-L_D,即:
    最终形成的损失函数,是如下的形式:
    改进的版本如下:
    该损失函数可以证明其收敛性。(如果D对于所有的G都能够迅速变化为最优判别器,那么生成器G实际上是在最小化真实数据分布P_r与伪造数据分布P_f之间的JS散度)
  • GAN的训练流程

    每一轮更新中,(1)固定G,更新D;(2)固定D,更新G。

  • GAN的问题

    • Mode collapse:生成器生成的图像都特别像。可能是数据集过小导致过拟合。
    • Diminished gradient:判别器太强,导致gradients vanish使得生成器学不到新东西。
    • 不收敛、经常过拟合、对超参数敏感。
  • WGAN与GAN的区别

    除此之外还需要做梯度裁剪。

VQ-GAN

  • VQ-GAN与VQ-VAE的区别

    • 将VQ-VAE中的先验生成器从PixelCNN改成了Transformer。
    • 重建损失中将L2 loss换成了Perceptual loss。
    • 在训练过程中使用PatchGAN的判别器加入对抗损失。
  • VQ-GAN的GAN部分训练过程

    这一部分学习训练CNN Encoder,CNN Decoder和Codebook。

    对于VQ部分,与VQ-VAE类似。将图片H* W* 3经过卷积后得到h* w* n的feature,与codebook进行最近邻后得到新的latent。这里将重建的L2 loss换成了Perceptual loss。

    判别器使用了PatchGAN,这部分的loss为:
    最后的优化目标为:
  • Perceptual loss是什么?

  • VQ-GAN的Transformer部分

    这一部分训练Transformer作为先验分布来自回归地生成图像code,然后送给decoder得到生成的图像。训练过程与GPT训练过程类似,做Next-word-prediction;同时这里还进行了mask,所以不是传统的GPT训练方法。

Classifier Guidance

  • Classifier Guidance的推导

    分类器是需要预训练的,训练数据和扩散模型的训练数据一致,且由于分类过程贯穿整个采样(i.e. t从T到0),因此分类器的训练数据还需要加上不同程度的噪音,来使得该分类器在噪音图片下依然可以起到引导作用。

    s是一个大于1的系数。当s较大时,会更关注分类器,生成样本更符合y,但多样性更低,因此是一个保真度与多样性之间的trade-off。

  • DDPM中Classifier Guidance采样过程

  • DDIM中Classifier Guidance采样过程

  • Classifier Guidance的优点和缺点

    优点: 不需要重新训练扩散模型,只需要在采样时根据分类器梯度修改采样的均值即可。

    缺点:推理时每一步需要过分类器,速度较慢。

Classifier-free Guidance

  • CFG的推导

  • CFG的训练过程

    训练时,Classifier-Free Guidance需要训练两个模型,一个是无条件生成模型,另一个是条件生成模型。但这两个模型可以用同一个模型表示,训练时只需要以一定概率将条件置空即可。

  • CFG的推理过程

    推理时,需要同时得到cond和uncond的推理结果,按照上述公式对预测噪声进行线性外推。

    其中,uncond也可以用negative prompt代替,这样可以实现不生成某些内容。

  • 为什么需要两次推理分别得到cond和uncond?

    通过线性外推方式,获得更多的生成多样性。

  • CFG的guidance_scale的作用

    一般取7.5。guidance scale越大,生成的结果越倾向于输入条件,图像质量更高,多样性会下降;越小,多样性越大。

  • 相比于Classifier Guidance的优点

    1. 不需要额外训练分类器。
    2. 更加灵活,因为它不依赖于特定的分类器,可以处理更广泛的条件。
    3. 采样时效率更高。
  • DPM,DPM++