VAE介绍
VAE(变分自编码器)为一个经典的生成式模型,属于编码器-解码器结构。
编码器用于采用复杂部分的特征,之后将复杂分布转换到简单分布的隐空间(如高斯分布)。
解码器采样高斯分布中的数据,生成符合原始分布的图像。
参考视频:
参考博客
一.公式推导
1.KL散度
①信息量
- 信息量用于描述单个概率的信息,概率越小,信息量越大。
②香农熵
- 香农熵用于描述一个概率分布的平均预期信息量。
- 概率分布越均匀,产生结果越不确定,熵越大。
- 概率分布越不均匀,产生结果越确定,熵越小。
③交叉熵
- 交叉熵用于描述根据估计的概率分布,对真实概率分布的预期信息量的估计。
- p(x)为真实概率;q(x)为估计概率;估计概率分布与真实概率分布越接近,交叉熵越小
- 当真实概率分布 P(h)=0.5;p(t)=0.5时
④KL散度
- 衡量两个概率分布之间的区别
- $D ( p || q ) \geq 0 $ 恒成立,p=q时等于0
- 最小化KL散度,需要对KL散度表达式求梯度,等同于对交叉熵求梯度
- $ \nabla _ { \theta } D ( p | | q _ { \theta } ) = \nabla _ { \theta } H ( p , q _ { \theta } ) - \nabla _ { \theta } H ( p ) = \nabla _ { \theta } H ( p , q _ { \theta } )$
2.ELBO(变分推断-证据下界)
①被观测数据与隐变量
:表示被观测数据的概率分布
:表示隐变量的后验概率分布
- $p(z)$:一般为高斯分布(正态分布)
- $p(x|z)$:条件概率,即似然度
②ELBO
- 为使后验概率分布近似于隐变量的概率分布 $q_ { \theta }( z | x ) \approx p ( z )$
- 计算KL散度
- 转换为ELBO下界,变为求最大的该值
3.模型架构
- 在 VAE 中,我们希望编码器产生的潜在变量分布$ q _ { \phi } ( z | x ) = N ( z ; \mu , \sigma ^ { 2 } )$接近标准正态分布$ p ( z ) = N ( z ; 0 , 1 ) $。
- 需要使两者之间的KL散度最小$ D _ { K L } ( q _ { \phi } ( z | x ) | | p ( z ) ) = \int q _ { \phi } ( z | x ) \log \frac { q _ { \phi } ( z | x ) } { p ( z ) } d z$
- $ = \int q _ { \phi } ( z | x ) \left[ \log q _ { \phi } ( z | x ) - \log p ( z ) \right] d z$
- 编码器:输出两组编码,均值编码m与控制噪声干扰程度的方差编码$\sigma$(为噪音$e$分配权重),分配权重之前为方差编码套上一层指数运算$exp$(保证权重为正值),将原编码和经过权重分配后噪声编码进行叠加,就得到了新的latent code $c$
- ($m$均值):编码器输出的均值向量,表示潜在空间中分布的中心位置。
- ($\sigma$标准差):编码器输出的标准差向量,表示潜在空间中分布的离散程度。
解码器:进行重构
($m$均值):编码器输出的均值向量,表示潜在空间中分布的中心位置。
- ($\sigma$标准差):编码器输出的标准差向量,表示潜在空间中分布的离散程度。