【理论推导】变分自动编码器 Variational AutoEncoder(VAE)

变分推断是一种处理隐变量模型的技术,通过优化条件概率分布逼近真实分布。变分自编码器结合了变分推断和自编码器,用以学习数据的低维表示并进行图像生成,其中KL散度用于约束隐空间分布接近标准正态分布。

变分推断 (Variational Inference)

变分推断属于对隐变量模型 (Latent Variable Model) 处理的一种技巧,其概率图如下所示

在这里插入图片描述
我们将 X = { x 1 , . . . x N } X=\{ x_1,...x_N \} X={ x1,...xN} 看作是每个样本可观测的一组数据,而将对应的 Z = { z 1 , . . . , z N } Z=\{z_1,...,z_N\} Z={ z1,...,zN} 看作是该组数据对应的高维空间下的对应样本点,例如使用 X X X 表示一个班同学的所有成绩,而将 Z Z Z 看作是同学的学习能力。对于更复杂的一些情况,例如图像生成任务,使用 X X X 表示数据集中的每张图像,而使用 Z Z Z 表示更高维的信息,例如基于类别/语义等控制信息。

对于生成任务,我们经常希望利用观测数据 X X X 建模随机变量 x x x 的真实分布 p ( x ) p(x) p(x),使用 z z z 来辅助概率推导,那么核心点在于计算两个条件概率分布 p ( x ∣ z ) p(x|z) p(xz) p ( z ∣ x ) p(z|x) p(zx),通常可以使用一些先验知识假定 p ( x ∣ z ) p(x|z) p(xz) 服从某种概率分布(例如对于学习能力为 g g g 的同学成绩假定服从在 g g g 附近的高斯分布),但对于 p ( z ∣ x ) p(z|x) p(zx),注意到
p ( z ∣ x ) = p ( z ) p ( x ∣ z ) p ( x ) p(z|x) = \frac{p(z)p(x|z)}{p(x)} p(zx)=p(x)p(z)p(xz)
z z z 是辅助建模的变量,可以假定其服从某已知的分布,但对于归一化项 p ( x ) p(x) p(x),有
p ( x ) = ∫ z p ( x , z ) d z = ∫ z p ( z ) p ( x ∣ z ) d z p(x) = \int_z p(x,z)dz = \int_z p(z) p(x|z) dz p(x)=zp(x,z)dz=zp(z)p(xz)dz
由于 z z z 是一个非常高维的信息, p ( x ) p(x) p(x) 是很难直接计算积分进行处理的,所以 p ( z ∣ x ) p(z|x) p(zx) 也是很难处理的,我们通常使用优化的方法来拟合出概率分布 p ( z ∣ x ) p(z|x) p(zx)

首先,我们考虑随机变量 z z z x x x 之间的关系,假定 p ( x ) p(x) p(x) 表示真实的数据分布,即我们观测到的数据 x ∼ p ( x ) x\sim p(x) xp(x) q ( z ∣ x ) q(z|x) q(zx) 为任一条件概率分布(通常是使用模型拟合出来的分布),有
log ⁡ p ( x ) = log ⁡ p ( x , z ) − log ⁡ p ( z ∣ x ) = log ⁡ p ( x , z ) q ( z ∣ x ) − log ⁡ p ( z ∣ x ) q ( z ∣ x ) \begin{align} \log p(x) &= \log p(x,z) - \log p(z|x) \nonumber \\&=\log\frac{p(x,z)}{q(z|x)} - \log\frac{p(z|x)}{q(z|x)} \nonumber \end{align} logp(x)=logp(x,z)logp(zx)=logq(zx)p(x,z)logq(zx)p(zx)
对左右两式计算关于隐变量 z z z 的期望,有
left = E z ∼ q ( z ∣ x ) [ log ⁡ p ( x ) ] = log ⁡ p ( x ) ∫ z q ( z ∣ x ) d z = log ⁡ p ( x ) right = E z ∼ q ( z ∣ x ) [ log ⁡ p ( x , z ) q ( z ∣ x ) − log ⁡ p ( z ∣ x ) q ( z ∣ x ) ] = ∫ z q ( z ∣ x ) log ⁡ p ( x , z ) q ( z ∣ x ) d z + ∫ z q ( z ∣ x ) log ⁡ q ( z ∣ x ) p ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log ⁡ p ( x , z ) q ( z ∣ x ) d z + KL ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) \begin{align} \text{left} &= \mathbb E_{z\sim q(z|x)}[\log p(x)] = \log p(x) \int_z q(z|x) dz = \log p(x) \nonumber \\\text{right} &= \mathbb E_{z\sim q(z|x)}[\log\frac{p(x,z)}{q(z|x)} - \log\frac{p(z|x)}{q(z|x)}] = \int_z q(z|x) \log\frac{p(x,z)}{q(z|x)} dz + \int_z q(z|x) \log\frac{q(z|x)}{p(z|x)} dz \nonumber \\ &= \int_z q(z|x) \log\frac{p(x,z)}{q(z|x)} dz + \text{KL}(q(z|x)||p(z|x)) \nonumber \end{align} leftright=Ezq(zx)[logp(x)]=logp(x)zq(zx)dz=logp(x)=Ezq(zx)[logq(zx)p(x,z)logq(zx)p(zx)]=zq(zx)logq(zx)p(x,z)dz+zq(zx)logp(zx)q(z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值