​​

此总结首次完成于2021年4月25日,今日再次遇到vae模型推导问题,翻出一看,豁然开朗,故想分享于知乎社区,与大家共同分享,如有错误或不同见解请多多批评指正与交流。

摘要

VAE 模型 loss 的详细推导过程,变分自编码器的理解。

01

模型与说明

1.1 VAE模型基本网络结构

变分自编码器 (VAE) 由编码器和解码器两个部分组成。特征 x 输入编码器    生成编码特征 z,z 输入解码器    生成重构的 ; 通过生成角度来理解,该网络又可以分成推理网络和生成网络两部分。

温故知新 | VAE 模型推导与总结_人工智能

图1:VAE模型, ( | )表示推断网络, ( | )表示的生成网络(公式格式存在问题)

1.2    与    的理解

   是编码器/推理网络,    该分布是真实的、复杂的,也是我们想去逼近的;而    是我们自己定的,用来逼近或者约束    的一个分布,    是简单的,可主观决定的。

1.3 说明

变分自编码器所谓变分,指的是该模型存在泛函    ,解决该泛函问题需要采用变分法,也就是寻找一个函数/参数    。

02

公式推导

首先需要明确VAE模型的目的就是为了使得似然函数    最大。

2.1 使得似然函数    最大,为什么化成使得   (变分下界)最大?

由贝叶斯定理:

温故知新 | VAE 模型推导与总结_深度学习_02

公式1变形有:

温故知新 | VAE 模型推导与总结_机器学习_03

公式2左右对    取    有:

温故知新 | VAE 模型推导与总结_人工智能_04

变形有,其中    为任一分布

温故知新 | VAE 模型推导与总结_tensorflow_05

公式3两端对    求期望:

温故知新 | VAE 模型推导与总结_计算机视觉_06

将公式4期望展开有:

温故知新 | VAE 模型推导与总结_人工智能_07

由kl散度定义,    有:

温故知新 | VAE 模型推导与总结_人工智能_08

令    ,并且由定义知道    有:

温故知新 | VAE 模型推导与总结_tensorflow_09

当且仅当    时,    ,否则,    ,将    视为一个以    为参数的泛函有:

温故知新 | VAE 模型推导与总结_tensorflow_10

改变    并不能影响    的大小,而且    大于    ,那么欲似然    更大,可从    下手,当    越大的情况下,似然    就会更大

所以可以来最大化    使得似然最大,使用神经网络的时候要注意,对    进行优化,优化目标使得    最小即可

2.2 对    再推导

温故知新 | VAE 模型推导与总结_tensorflow_11

因为对于    ,    与    独立,所以为了与encoder    接近,故将    ,修改为    ,有:

温故知新 | VAE 模型推导与总结_tensorflow_12

设重构的x服从于高斯分布(    ),则有

温故知新 | VAE 模型推导与总结_计算机视觉_13

设    服从于多元高斯分布    ,另    (认为设定的)服从于    的分布,有(15)式:

温故知新 | VAE 模型推导与总结_深度学习_14

   二阶矩为   ,所以有:

温故知新 | VAE 模型推导与总结_人工智能_15

根据重构项和KL散度项的约束,我们可以得出(19)式

温故知新 | VAE 模型推导与总结_人工智能_16

!!!!注意,    我们想让他越大越好,但在神经网络优化中,我们对    先取负,化成-    再优化,此时,-    越小越好

温故知新 | VAE 模型推导与总结_深度学习_17

03

总结

根据以往经验,容易犯错误的地方有,使用神经网络时候,一定要对ELBO先取负再优化!

很久之前发布的文件与代码

​​

温故知新 | VAE 模型推导与总结_人工智能_18