VAE(变分自编码器 Variational Auto-Encoder)学习笔记

图片生成任务

一张图片上像素的所有可能值决定了一张图片的分布空间,假设我们进行的是人脸生成任务,那整个人脸片只占整个空间的很小一部分,并且这个分布十分难表示。

隐变量

当我们在人脸图像中改变很小一些像素,整个图片看起来还是人脸,这就表明人脸图片的分布其实有一定的容错率,那么我们可以只保留更加粗糙的特征,任然能表示一张人脸。由此我们引入隐变量:

VAE当中使用的就是128维的隐变量。

AE(Auto - Encoder)

传统的AE方法就是找到这个隐变量,但是在生成问题中面临一个问题,就是随机选取一个隐变量可能只会生成出噪声。因为由图片生成的隐向量在整个分布空间中是稀疏的。

VAE

所以我们采用两种方法:

  • 图片不输出一个隐向量,而输出一个正太分布
  • 使所有输出的正态分布的叠加尽可能的接近一个正太分布。

上图中我们分别维编码器,隐空间和解码器设定了数学表达

输出从隐向量变为正态分布的两个参数

反向传播

上述训练的网络中有一步是不可导的,就是随机采样的哪个步骤。

因此,我们通过下面这个步骤使其可导

loss函数

包括两部分:图片重建loss和Kl散度loss(用于约束为正太分布)

优化目标

公式推导

这部分推导类似于DDPM

分别对两部分进行推导

注意到−d2log⁡(2π)-\frac{d}{2}\log(2\pi)−2dlog(2π)抵消。

然后再分开求这三项

带回式子后:

这样就得到了KL三度的计算方法。

相关推荐
sensen_kiss2 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习
red_redemption3 小时前
自由学习记录(116)
学习
r i c k4 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦4 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
shandianchengzi5 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-5 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH15455891315 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter
爱吃生蚝的于勒5 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
奶茶精Gaaa5 小时前
工具分享--F12使用技巧
学习
The森6 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix