变分自编码器VAE

本文图片和公式统一和原始paper保持一致
Auto-Encoding Variational Bayes
部分公式参考 https://spaces.ac.cn/archives/5253

  • 问题描述

考虑数据集 X = { x ( i ) } i = 1 N \mathbf{X}=\left\{\mathbf{x}^{(i)}\right\}_{i=1}^{N} X={x(i)}i=1N包括 N N N 个 独立的来自连续或离散变量 x \mathrm{x} x的样本.
我们想得到概率分布 p θ ( x ) p_{\boldsymbol{\theta}}(\mathbf{x}) pθ(x)
该变量x由 z \mathbf{z} z生成,有以下两个步骤:
z ( i ) \mathbf{z}^{(i)} z(i) 由先验概率 p θ ∗ ( z ) p_{\boldsymbol{\theta}^{*}}(\mathbf{z}) pθ(z) 生成
x ( i ) \mathbf{x}^{(i)} x(i)由条件概率 p θ ∗ ( x ∣ z ) p_{\boldsymbol{\theta}^{*}}(\mathbf{x} \mid \mathbf{z}) pθ(xz) 生成

遗憾的是很多过程是不可见的,参数 θ ∗ \boldsymbol{\theta}^{*} θ和隐变量 z ( i ) \mathbf{z}^{(i)} z(i) 的值也是未知的。
并且边际似然函数 p θ ( x ) = p_{\boldsymbol{\theta}}(\mathbf{x})= pθ(x)= ∫ p θ ( z ) p θ ( x ∣ z ) d z \int p_{\boldsymbol{\theta}}(\mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) d \mathbf{z} pθ(z)pθ(xz)dz 的计算是十分复杂的(intractable (so we cannot evaluate or differentiate the marginal likelihood)

后验概率 p θ ( z ∣ x ) = p θ ( x ∣ z ) p θ ( z ) / p θ ( x ) p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})=p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{z}) / p_{\boldsymbol{\theta}}(\mathbf{x}) pθ(zx)=pθ(xz)pθ(z)/pθ(x) 也是 intractable的 (so the EM algorithm cannot be used)
在这里插入图片描述
其中:
p θ ( z ) p θ ( x ∣ z ) p_{\boldsymbol{\theta}}(\mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) pθ(z)pθ(xz)是生成模型
q ϕ ( z ∣ x ) q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x}) qϕ(zx)是后验概率 p θ ( z ∣ x ) p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) pθ(zx)的近似
变分参数 ϕ \phi ϕ和生成模型的参数 θ \boldsymbol{\theta} θ可以同时被模型学习

假设和datapoint对应的后验概率 p θ ( z ∣ x ) p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) pθ(zx)是正态分布,每次从中采用一个 z i z_i zi去还原 x i x_i xi,原文中也指出针对每个datapoint都有一个对应的 q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) qϕ(zx(i)),然后利用神经网络拟合均值和方差
在这里插入图片描述

VAE的目标是通过从encoder生成的Z中进行采样并进行X的重构,但噪声(方差)会增加重构的难度,但好在方差是神经网络训练出来的,于是模型为了重构质量会尽力让方差为0,但这样做的结果就是失去随机性,也就是不管怎么采样Z最后得到的结果都是均值,也就是另一个神经网络拟合的结果。于是退化成AE。

好在VAE假设后验概率 p θ ( z ∣ x ) p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) pθ(zx)服从标准正态分布,于是
p ( Z ) = ∑ X p ( Z ∣ X ) p ( X ) = ∑ X N ( 0 , I ) p ( X ) = N ( 0 , I ) ∑ X p ( X ) = N ( 0 , I ) p(Z)=\sum_{X} p(Z \mid X) p(X)=\sum_{X} \mathcal{N}(0, I) p(X)=\mathcal{N}(0, I) \sum_{X} p(X)=\mathcal{N}(0, I) p(Z)=Xp(ZX)p(X)=XN(0,I)p(X)=N(0,I)Xp(X)=N(0,I)
先验 P ( Z ) P(Z) P(Z)也就服从标准正态分布

  • 变分下限
    边际似然由对每个数据点的边际似然求和组成
    log ⁡ p θ ( x ( 1 ) , ⋯   , x ( N ) ) = ∑ i = 1 N log ⁡ p θ ( x ( i ) ) \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(1)}, \cdots, \mathbf{x}^{(N)}\right)=\sum_{i=1}^{N} \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right) logpθ(x(1),,x(N))=i=1Nlogpθ(x(i))
    可以被写成如下形式
    log ⁡ p θ ( x ( i ) ) = D K L ( q ϕ ( z ∣ x ( i ) ) ∥ p θ ( z ∣ x ( i ) ) ) + L ( θ , ϕ ; x ( i ) ) \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right)=D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)\right)+\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right) logpθ(x(i))=DKL(qϕ(zx(i))pθ(zx(i)))+L(θ,ϕ;x(i))
    推导过程如下
    q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x}^{(i)}) qϕ(zx(i))是假设的分布
    在这里插入图片描述

等式右边第一项是假设和真正后验概率的KL散度,第二项 L ( θ , ϕ ; x ( i ) ) \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right) L(θ,ϕ;x(i)) 是数据点I边际似然的(变分)下界,可以被写作
log ⁡ p θ ( x ( i ) ) ≥ L ( θ , ϕ ; x ( i ) ) = E q ϕ ( z ∣ x ) [ − log ⁡ q ϕ ( z ∣ x ) + log ⁡ p θ ( x , z ) ] \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right) \geq \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\phi}(\mathbf{z} \mid \mathbf{x})}\left[-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right] logpθ(x(i))L(θ,ϕ;x(i))=Eqϕ(zx)[logqϕ(zx)+logpθ(x,z)]

L ( θ , ϕ ; x ( i ) ) = − D K L ( q ϕ ( z ∣ x ( i ) ) ∥ p θ ( z ) ) + E q ϕ ( z ∣ x ( i ) ) [ log ⁡ p θ ( x ( i ) ∣ z ) ] \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=-D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}(\mathbf{z})\right)+\mathbb{E}_{q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)} \mid \mathbf{z}\right)\right] L(θ,ϕ;x(i))=DKL(qϕ(zx(i))pθ(z))+Eqϕ(zx(i))[logpθ(x(i)z)]
推导如下
在这里插入图片描述

此时需要优化下界 L ( θ , ϕ ; x ( i ) ) \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right) L(θ,ϕ;x(i)) 但是梯度求解释一个问题用蒙特卡洛方法求解的一般形式如下:
∇ ϕ E q ϕ ( z ) [ f ( z ) ] = E q ϕ ( z ) [ f ( z ) ∇ q ϕ ( z ) log ⁡ q ϕ ( z ) ] ≃ 1 L ∑ l = 1 L f ( z ) ∇ q ϕ ( z ( l ) ) log ⁡ q ϕ ( z ( l ) ) \nabla_{\phi} \mathbb{E}_{q_{\phi}(\mathbf{z})}[f(\mathbf{z})]=\mathbb{E}_{q_{\phi}(\mathbf{z})}\left[f(\mathbf{z}) \nabla_{q_{\phi}(\mathbf{z})} \log q_{\phi}(\mathbf{z})\right] \simeq \frac{1}{L} \sum_{l=1}^{L} f(\mathbf{z}) \nabla_{q_{\phi}\left(\mathbf{z}^{(l)}\right)} \log q_{\phi}\left(\mathbf{z}^{(l)}\right) ϕEqϕ(z)[f(z)]=Eqϕ(z)[f(z)qϕ(z)logqϕ(z)]L1l=1Lf(z)qϕ(z(l))logqϕ(z(l))
where z ( l ) ∼ q ϕ ( z ∣ x ( i ) ) . \mathbf{z}^{(l)} \sim q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) . z(l)qϕ(zx(i)).
但该方法存在很大方差

如果假设和真实的后验概率越接近则KL散度越小,下界越接近边际似然函数 l o g p θ ( x ) logp_{\boldsymbol{\theta}}(\mathbf{x}) logpθ(x)
在这里插入图片描述

下届又可以分为
在这里插入图片描述
q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) qϕ(zx(i)) P ( z ) P(\mathbf{z}) P(z)的KL散度和期望在这里插入图片描述

于是最大化下界,第一步是最小化LB中的KL散度,即让 q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) qϕ(zx(i)) P ( z ) P(\mathbf{z}) P(z)接近,而 P ( z ) P(\mathbf{z}) P(z)是标准正态分布。
第二步最大化上面的期望
总结就是给定一个X,通过 q ϕ ( z ∣ x ( i ) ) q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) qϕ(zx(i))sample一个Z,使得 P ( x ∣ z ) P(x | z) P(xz)最大

其中第一项结果参考

  • 重参数技巧
    由于 log ⁡ q ϕ ( z ∣ x ( i ) ) = log ⁡ N ( z ; μ ( i ) , σ 2 ( i ) I ) \log q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)=\log \mathcal{N}\left(\mathbf{z} ; \boldsymbol{\mu}^{(i)}, \boldsymbol{\sigma}^{2(i)} \mathbf{I}\right) logqϕ(zx(i))=logN(z;μ(i),σ2(i)I)
    采样的操作不可导,但结果可导,利用
    1 2 π σ 2 exp ⁡ ( − ( z − μ ) 2 2 σ 2 ) d z = 1 2 π exp ⁡ [ − 1 2 ( z − μ σ ) 2 ] d ( z − μ σ ) \begin{aligned} & \frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(z-\mu)^{2}}{2 \sigma^{2}}\right) d z \\ =& \frac{1}{\sqrt{2 \pi}} \exp \left[-\frac{1}{2}\left(\frac{z-\mu}{\sigma}\right)^{2}\right] d\left(\frac{z-\mu}{\sigma}\right) \end{aligned} =2πσ2 1exp(2σ2(zμ)2)dz2π 1exp[21(σzμ)2]d(σzμ)

这说明 ( z − μ ) / σ = ε (z-\mu) / \sigma=\varepsilon (zμ)/σ=ε 是服从均值为 0 、方差为 1 的标准正态分布的, 要同时把 d z d z dz 考虑进去, 是因为乘 上 d z d z dz 才算是概率, 去掉 d z d z dz 是概率密度而不是概率。
这时候我们得到:
N ( μ , σ 2 ) \mathcal{N}\left(\mu, \sigma^{2}\right) N(μ,σ2) 中采样一个 Z Z Z, 相当于从 N ( 0 , I ) \mathcal{N}(0, I) N(0,I) 中采样一个 ε \varepsilon ε, 然后让 Z = μ + ε × σ Z=\mu+\varepsilon \times \sigma Z=μ+ε×σ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值