变分自编码器 VAE 浅析

        首先讲一下VE,VE全程为 auto-encoders,也就是自编码器。自编码器是指自己训练自己,即将图像进行编码后用少部分潜在变量表示,然后用解码器还原图像,这样就实现了图像特征的高度提取与压缩。应用有:压缩,降噪,分割。由于AE是固定编码,因此无法作为生成模型。

        如上图所示,自编码器中的潜在表示在编码器参数不变的情况下是固定的,称为潜在变量。

        而VAE(Variational auto-encoder,变分自编码器) 不再只是学习固定映射,而是学习获取输入数据的概率分布,也就是说中间量我们不再叫潜在变量,而是称为潜在空间(也称潜在分布,隐变量等),并使用 Z 来表示,用来凸显其是一个变化的量。下图 所示为VAE结构图。

      

        AE与VAE差距如图:

    

     

        VAE 的训练方式是 基于分布(distribution-wise) 的,核心思想是通过 变分推断(Variational Inference) 近似真实数据分布:

        编码器(Encoder):输入数据 x,输出潜在变量 z 的分布参数(如均值 μ 和方

                                                差 σ),也就是上图的 p(z|x) 。

        解码器(Decoder):从 z 的分布中采样,重构数据 x′。

        这样关键问题就是如何构建一个从 x 映射到 z 的一个后验概率的分布,而根据右下角的链式法则可以知道,\int_{z}^{}p(x|z)p(z)dz 较难求解,因此考虑使用神经网络来构建 q_{\phi }(z|x) 拟合p(z|x)

        q_{\phi }(z|x) 与p(z|x)的相似度使用KL散度来表示。

        将上式进行变换可得

        由于 p(x) 为定值,因此想要  q_{\phi }(z|x) 与p(z|x)更相似(KL散度更小)等价于让ELBO更大。那么 VAE 的损失函数就是:

        左侧为重构损失(原图像与生成图像的损失),让图像能够完成重构。

        右侧为KL散度损失(先验匹配损失),约束潜在变量 z 的分布接近标准正态分布 N(0, I),避免过拟合。

       因为

  • q(z∣x) 是编码器输出的近似后验分布(通常假设为高斯分布 N(μ,σ2))。

  • p(z) 是预先定义的先验分布(通常为标准正态分布 N(0,I))。

        想要生成图像decode时一般会给高斯分布,因此需要在训练时将模型预测的方差和均值限制在(0,1),这样即可直接生成图像。

        在预测出方差和均值后需要进行重参数化,即让z=μ+σ⊙ϵ(其中 ϵ∼N(0,I),这样可以解决随机性采样与梯度反向传播之间的矛盾。

为什么需要 ϵ
        直接采样 z∼N(μ,σ2) 是一个随机操作,无法计算梯度(因为采样不可导)。引入 ϵϵ 将随机性从计算图中分离,使得梯度可以通过 μ 和 σ 反向传播。

       

整体流程如图所示:

         VAE 直接对数据分布进行建模,并通过变分推断优化潜在空间的分布,而非像 GAN 那样直接对样本点进行对抗优化。

参考文章:

详解VAE(变分自编码器)-CSDN博客

【大白话02】一文理清 VAE 变分自编码器 | 原理图解+公式推导_哔哩哔哩_bilibili

【复现】VAE模型原理与实现_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值