VAE(Variational Autoencoder)简单推导及理解 您所在的位置:网站首页 变分公式推导 VAE(Variational Autoencoder)简单推导及理解

VAE(Variational Autoencoder)简单推导及理解

2024-07-04 16:29| 来源: 网络整理| 查看: 265

VAE的简单推导及理解 概述VAE公式推算VAE训练过程训练的最终目标训练步骤,两步走1、调整Encoder( 即$q(z|x)$ )增大 $L_b$ :2、调整Decoder( 即$P(x|z)$ )增大 $L_b$ : 实际训练的损失函数训练结果

概述

  变分自编码器(Variational auto-encoder,VAE) 是一类重要的生成模型(generative model),它于2013年由Diederik P.Kingma和Max Welling提出1。2016年Carl Doersch写了一篇VAEs的tutorial2,对VAEs做了更详细的介绍,比文献1更易懂(墙裂推荐)。   vae是什么:vae就是通过Encoder对输入(我们这里以图片为输入)进行高效编码,然后由Decoder使用编码还原出图片,在理想情况下,还原输出的图片应该与原图片极相近。   vae网络结构组成:可以大致分成Encoder和Decoder两部分(如下图)。对于输入图片,Encoder将提取得到编码:一个mean vector和一个deviation vector,然后将这个编码(两个vector)作为Decoder的输入,最终输出一张和原图相近的图片。 VAE框架

VAE公式推算

  定义函数: 由上面可知,vae想要还原输出的图片与原图片尽量相似。对于这个目标,我们也可以换一个角度想:只看decode,其输入是从一个固定分布中抽取的编码,只要decode最后输出的图片与我们训练的数据库中的图片尽量相似就好。那么如何衡量这个相似程度呢,如果还原输出的图片集中出现训练集中的原图的概率越大,那么我们也可以认为输出与原图片越相似了,即:相似度=原图出现的概率。也即通过训练使得下式最大化。 max ⁡    L = ∑ x log ⁡ P ( x ) w h i l e    P ( x ) = ∫ z P ( z ) P ( x ∣ z ) d z \max\ \ L=\sum_x \log P(x)\\ while\ \ P(x)=\int_{z}P(z)P(x|z)dz max  L=x∑​logP(x)while  P(x)=∫z​P(z)P(x∣z)dz   上式中假设整个系统产生某张图片 x x x的概率是 P ( x ) P(x) P(x);编码器Encoder使用 q ( z ∣ x ) q(z|x) q(z∣x)来表示,表示当输入图片 x x x时,Encoder输出编码 z z z的概率; P ( z ) P(z) P(z)表示从某一固定分布(常用标准正态分布)中随机采样得到编码z的概率;解码器Decoder使用 P ( x ∣ z ) P(x|z) P(x∣z)来表示,表示当输入编码 z z z时,输出图片 x x x的概率。   公式推导: 对于上述公式,并没有出现编码器Encoder,所以下面通过将 q ( z ∣ x ) q(z|x) q(z∣x)加入式子中,然后通过推导,以解释训练的过程及损失函数的定义。 { 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 ⎵ l o w e r   b o u n d   L b + ∫ z q ( z ∣ x ) log ⁡ ( q ( z ∣ x ) P ( z ∣ x ) ) d z ⎵ K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ≥ 0 ≥ ∫ z q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z ⎵ l o w e r   b o u n d   L b \begin{cases} \log P(x) ; =\int_{z}q(z|x)\log P(x)dz\\\\ ; =\int_{z}q(z|x)\log(\frac{P(z,x)}{P(z|x)})dz = \int_{z}q(z|x)\log(\frac{P(z,x)}{q(z|x)}\frac{q(z|x)}{P(z|x)})dz\\\\ ; = \underbrace{\int_{z}q(z|x)\log(\frac{P(z,x)}{q(z|x)})dz}_{lower\ bound\ L_b}+\underbrace{\int_{z}q(z|x)\log(\frac{q(z|x)}{P(z|x)})dz}_{KL(q(z|x)||P(z|x)\geq 0}\\\\ ; \geq \underbrace{\int_{z}q(z|x)\log(\frac{P(x|z)P(z)}{q(z|x)})dz}_{lower\ bound\ L_b} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​logP(x)​=∫z​q(z∣x)logP(x)dz=∫z​q(z∣x)log(P(z∣x)P(z,x)​)dz=∫z​q(z∣x)log(q(z∣x)P(z,x)​P(z∣x)q(z∣x)​)dz=lower bound Lb​ ∫z​q(z∣x)log(q(z∣x)P(z,x)​)dz​​+KL(q(z∣x)∣∣P(z∣x)≥0 ∫z​q(z∣x)log(P(z∣x)q(z∣x)​)dz​​≥lower bound Lb​ ∫z​q(z∣x)log(q(z∣x)P(x∣z)P(z)​)dz​​​   于是得到下面的式子: { log ⁡ P ( x ) = { L b + K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) } ≤ 0 K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) ≥ 0 L b = ∫ z q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z ≤ 0 \begin{cases} \log P(x)=\{L_b+KL(q(z|x)||P(z|x))\} \leq 0\\\\ KL(q(z|x)||P(z|x)) \geq0 \\\\ L_b=\int_{z}q(z|x)\log(\frac{P(x|z)P(z)}{q(z|x)})dz \leq0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​logP(x)={Lb​+KL(q(z∣x)∣∣P(z∣x))}≤0KL(q(z∣x)∣∣P(z∣x))≥0Lb​=∫z​q(z∣x)log(q(z∣x)P(x∣z)P(z)​)dz≤0​   对于 L b L_b Lb​,可以再次进行分解如下: { L b = ∫ q ( z ∣ x ) log ⁡ ( P ( z , x ) q ( z ∣ x ) ) d z = ∫ q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z = ∫ q ( z ∣ x ) log ⁡ ( P ( z ) q ( z ∣ x ) ) d z ⎵ − K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) + ∫ q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z \begin{cases} L_b ; =\int q(z|x) \log (\frac{P(z,x)}{q(z|x)})dz = \int q(z|x) \log (\frac{P(x|z)P(z)}{q(z|x)})dz \\\\ ; =\underbrace{\int q(z|x) \log (\frac{P(z)}{q(z|x)})dz}_{-KL(q(z|x)||P(z))}+\int q(z|x) \log P(x|z)dz \end{cases} ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​Lb​​=∫q(z∣x)log(q(z∣x)P(z,x)​)dz=∫q(z∣x)log(q(z∣x)P(x∣z)P(z)​)dz=−KL(q(z∣x)∣∣P(z)) ∫q(z∣x)log(q(z∣x)P(z)​)dz​​+∫q(z∣x)logP(x∣z)dz​

VAE训练过程 训练的最终目标

max ⁡   L = ∑ x log ⁡ P ( x ) = ∑ x log ⁡ ∫ z P ( z ) P ( x ∣ z ) d z \max \ L=\sum_x \log P(x)=\sum_x \log\int_{z}P(z)P(x|z)dz max L=x∑​logP(x)=x∑​log∫z​P(z)P(x∣z)dz   其中 x x x表示从真实图片数据中随机抽取的图片。实际上,要最大化上式,也就是最大化每张真实图片 x x x出现的概率,也就是说对于某一张图片 x x x,上式等同于: max ⁡   L = ∑ x log ⁡ P ( x )    ⟹ max ⁡ e a c h   x    log ⁡ P ( x ) \max \ L=\sum_x \log P(x)\ \ \Longrightarrow \max_{each\ x} \ \ \log P(x) max L=x∑​logP(x)  ⟹each xmax​  logP(x)   下面的过程中,仅仅是以一张图片 x x x作为讨论对象,通过训练达到: max ⁡    log ⁡ P ( x ) \max\ \ \log P(x) max  logP(x)

训练步骤,两步走

在这里插入图片描述   VAE的训练过程中,我认为实际上就是如同EM 算法,实际也是分为两步,然后两个步骤不断迭代进行(你拍一我拍一),最终使得目标函数不断变大,迭代步骤大致如上面的流程图所示(图中对于 ≥ 0 \geq0 ≥0的数使用红色表示,对于 ; 0 ;0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有