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

程序员大白

共 1519字,需浏览 4分钟

 ·

2022-03-01 21:49

点击上方“程序员大白”,选择“星标”公众号

重磅干货,第一时间送达

来源:知乎—胖西西  文仅分享,侵删

https://zhuanlan.zhihu.com/p/434394556

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

摘要

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


01

模型与说明

1.1 VAE模型基本网络结构

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

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

1.2    与    的理解

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

1.3 说明

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


02

公式推导

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

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

由贝叶斯定理:

公式1变形有:

公式2左右对    取    有:

变形有,其中    为任一分布

公式3两端对    求期望:

将公式4期望展开有:

由kl散度定义,    有:

令    ,并且由定义知道    有:

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

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

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

2.2 对    再推导

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

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

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

   二阶矩为   ,所以有:

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

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



03

总结

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

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

https://gitee.com/sulei_ustb/vae-model

13个你一定要知道的PyTorch特性

解读:为什么要做特征归一化/标准化?

一文搞懂 PyTorch 内部机制

张一鸣:每个逆袭的年轻人,都具备的底层能力




西[]


浏览 106
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报