VAE (Variational Autoencoder)变分自动编码器笔记

VAE (Variational Autoencoder)变分自动编码器笔记


今天在论文《Off-Policy Deep Reinforcement Learning without Exploration》中的一部分看到了算法使用的VAE,也就是变分自动编码器。
文章中给出的相关内容如下:

变分自动编码器(Variational Auto-Encoder, VAE)

一个变分自动编码器(VAE)是一个以最大化边缘对数似然 log ⁡ p ( X ) = ∑ i = 1 N log ⁡ p ( x i ) \log p(X)=\sum_{i=1}^{N} \log p\left(x_{i}\right) logp(X)=i=1Nlogp(xi) ,其中 X = { x 1 , … , x N } X=\left\{x_{1}, \ldots, x_{N}\right\} X={x1,,xN},也就是数据集。在自然情况下计算边缘似然是非常困难的,我们可以用优化变分下边界来代替。
log ⁡ p ( X ) ≥ E q ( X ∣ z ) [ log ⁡ p ( X ∣ z ) ] + D K L ( q ( z ∣ X ) ∥ p ( z ) ) \log p(X) \geq \mathbb{E}_{q(X | z)}[\log p(X | z)]+D_{\mathrm{KL}}(q(z | X) \| p(z)) logp(X)Eq(Xz)[logp(Xz)]+DKL(q(zX)p(z))
其中 p ( z ) p(z) p(z)是事先选好的,通常是多元正态分布 N ( 0 , I ) \mathcal{N}(0,I) N(0,I)。我们用 q ( z ∣ X ) = N ( z ∣ μ ( X ) , σ 2 ( X ) I ) q(z|X)=\mathcal{N}(z|\mu(X),\sigma^2(X)I) q(zX)=N(zμ(X),σ2(X)I)来表示编码器,用 p ( X ∣ z ) p(X|z) p(Xz)作为解码器。简而言之,就是说VAE是一个自动编码器,在里面一个给出的样本 x x x传到编码器中,然后产生一个随机的潜在向量 z z z,然后这个向量再传到解码器重新构建出原来的样本 x x x。VAE是通过重建损失和一个KL散度项来训练的,这个KL散度是根据潜在向量来计算的。为了在变分下边界使用梯度下降方法,我们可以使用重参数化技巧:
E z ∼ N ( μ , σ ) [ f ( z ) ] = E ϵ ∼ N ( 0 , I ) [ f ( μ + σ ϵ ) ] \mathbb{E}_{z \sim \mathcal{N}(\mu, \sigma)}[f(z)]=\mathbb{E}_{\epsilon \sim \mathcal{N}(0, I)}[f(\mu+\sigma \epsilon)] EzN(μ,σ)[f(z)]=EϵN(0,I)[f(μ+σϵ)]
这个公式就允许通过随机节点反向传播,其中 μ \mu μ σ \sigma σ可以使用确定性函数来表示。在计算的过程中, z z z的随机值是从多元正态分布中取样的,并且传输到解码器中来产生样本 x x x

你可能感兴趣的:(机器学习)