另一个能够表达VAE设计思想的例子:
log p ( x ) = ∫ z q ( z ∣ x ) log p ( x ) d z = ∫ z q ( z ∣ x ) log p ( z , x ) p ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log p ( z , x ) q ( z ∣ x ) q ( z ∣ x ) p ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log p ( z , x ) q ( z ∣ x ) d z + ∫ z q ( z ∣ x ) log q ( z ∣ x ) p ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log p ( z , x ) q ( z ∣ x ) d z + K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) \begin{aligned} \log_{}{p(x)} &= \int\limits_{z}^{} q(z|x)\log_{}{p(x)}dz\\ &= \int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z,x)}{p(z|x)}}dz\\ &=\int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z,x)q(z|x)}{q(z|x)p(z|x)} } dz\\ &=\int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z,x)}{q(z|x)} } dz + \int\limits_{z}^{} q(z|x)\log_{}{\frac{q(z|x)}{p(z|x)} } dz\\ &=\int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z,x)}{q(z|x)} } dz + KL(q(z|x)||p(z|x)) \end{aligned} logp(x)=z∫q(z∣x)logp(x)dz=z∫q(z∣x)logp(z∣x)p(z,x)dz=z∫q(z∣x)logq(z∣x)p(z∣x)p(z,x)q(z∣x)dz=z∫q(z∣x)logq(z∣x)p(z,x)dz+z∫q(z∣x)logp(z∣x)q(z∣x)dz=z∫q(z∣x)logq(z∣x)p(z,x)dz+KL(q(z∣x)∣∣p(z∣x))
这里我们把 q ( z ; l a m b d a ) q(z; lambda) q(z;lambda)换成了 q ( z ∣ x ) q(z|x) q(z∣x),即 l a m b d a lambda lambda就是 x x x,用 q ( z ∣ x ) q(z|x) q(z∣x)来近似 p ( z ∣ x ) p(z|x) p(z∣x);上面式子右边一项为 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( z ∣ x ) p(z|x) p(z∣x)两个分布的KL散度,根据KL散度的非负性,我们得到 log p ( x ) \log_{}{p(x)} logp(x)的一个下界:
log p ( x ) ≥ ∫ z q ( z ∣ x ) log ( p ( x ∣ z ) p ( z ) q ( z ∣ x ) ) d z \log_{}{p(x)} \ge \int\limits_{z}^{} q(z|x)\log_{}{(\frac{p(x|z)p(z)}{q(z|x)} )} dz logp(x)≥z∫q(z∣x)log(q(z∣x)p(x∣z)p(z))dz
我们将这个下界定义为 ELBO = evidence lower bound,记为 L b = ∫ z q ( z ∣ x ) log ( p ( x ∣ z ) p ( z ) q ( z ∣ x ) ) d z L_{b}=\int\limits_{z}^{} q(z|x)\log_{}{(\frac{p(x|z)p(z)}{q(z|x)} )} dz Lb=z∫q(z∣x)log(q(z∣x)p(x∣z)p(z))dz,代入原式可以得到
log p ( x ) = L b + K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) \log_{}{p(x)} = L_{b} + KL(q(z|x)||p(z|x)) logp(x)=Lb+KL(q(z∣x)∣∣p(z∣x))
由于 log p ( x ) \log_{}{p(x)} logp(x)不包含 z z z,当通过 q ( z ∣ x ) q(z|x) q(z∣x)来最大化ELBO时, log p ( x ) \log_{}{p(x)} logp(x)为常量, K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) KL(q(z|x)||p(z|x)) KL(q(z∣x)∣∣p(z∣x))的值逐渐变小,最终趋于0,此时 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( z ∣ x ) p(z|x) p(z∣x)的分布会十分接近。通过找 p ( x ∣ z ) p(x|z) p(x∣z)和 q ( z ∣ x ) q(z|x) q(z∣x)来使ELBO达到最大值,从而使 log p ( x ) \log_{}{p(x)} logp(x)也达到最大值。此间关系变化对应下图
即给定数据集后,变分推断的目标变成了最大化证据下界ELBO,ELBO最大化过程结束时,所获得的 q ( z ∣ x ) q(z|x) q(z∣x)就是我们要的输出
那么如何使ELBO的值达到最大呢,从上面 L b L_{b} Lb的推导公式可以看出,求解 max log p ( x ) \max_{}\log_{}{p(x)} maxlogp(x),等价于求解 max L b \max_{} L_{b} maxLb
下面继续求解
log p ( x ) ≥ E L B O = L b = ∫ z q ( z ∣ x ) log p ( z , x ) p ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log p ( x ∣ z ) p ( z ) q ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log p ( z ) q ( z ∣ x ) d z + ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z = − K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) + ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z \begin{aligned} \log_{}{p(x)} \ge ELBO &= L_{b} \\ &= \int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z,x)}{p(z|x)}}dz\\ &=\int\limits_{z}^{} q(z|x)\log_{}{\frac{p(x|z)p(z)}{q(z|x)} } dz\\ &=\int\limits_{z}^{} q(z|x)\log_{}{\frac{p(z)}{q(z|x)} } dz + \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz\\ &=-KL(q(z|x)||p(z)) + \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz\\ \end{aligned} logp(x)≥ELBO=Lb=z∫q(z∣x)logp(z∣x)p(z,x)dz=z∫q(z∣x)logq(z∣x)p(x∣z)p(z)dz=z∫q(z∣x)logq(z∣x)p(z)dz+z∫q(z∣x)logp(x∣z)dz=−KL(q(z∣x)∣∣p(z))+z∫q(z∣x)logp(x∣z)dz
式子中, p ( z ) p(z) p(z)为 z z z的先验分布,要最大化 E L B O ELBO ELBO,即找到 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( x ∣ z ) p(x|z) p(x∣z),让 K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) KL(q(z|x)||p(z)) KL(q(z∣x)∣∣p(z))最小,让 ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz z∫q(z∣x)logp(x∣z)dz最大
( 1 ) (1) (1) 最小化 K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) KL(q(z|x)||p(z)) KL(q(z∣x)∣∣p(z))
最小化 K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) KL(q(z|x)||p(z)) KL(q(z∣x)∣∣p(z)),即让 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( z ) p(z) p(z)的分布尽量接近,难点在于两者分布的选择。VAE选择 q ( z ∣ x ) q(z|x) q(z∣x)和 p ( z ) p(z) p(z)为各分量独立的正态分布,其中 p ( z ) p(z) p(z)为标准正态分布,即 p ( z ) ∼ N ( 0 , I ) p(z)\sim N(0, I) p(z)∼N(0,I) q ( z ∣ x ) ∼ N ( μ , σ 2 ) q(z|x)\sim N(\mu , \sigma ^{2} ) q(z∣x)∼N(μ,σ2),由KL散度的非负性且仅当 q ( z ∣ x ) = p ( z ) q(z|x) = p(z) q(z∣x)=p(z)时,等式成立,故可直接把 K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) ≥ 0 KL(q(z|x)||p(z)) \ge 0 KL(q(z∣x)∣∣p(z))≥0当作 L o s s Loss Loss来训练,此为VAE的损失函数第一项
我们考虑的是各分量独立的多元正态分布,只需推导各分量独立的多元正态分布即可,如下
∫ z q ( z ∣ x ) log ( q ( z ∣ x ) p ( z ) ) = K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) = K L ( N ( μ , σ 2 ) ∣ ∣ N ( 0 , I ) ) = ∫ 1 2 π σ e − ( x − μ ) 2 2 σ 2 log { 1 σ 2 e { 1 2 [ x 2 − ( x − μ σ ) 2 ] } } d x = 1 2 ∫ 1 2 π σ e − ( x − μ ) 2 2 σ 2 [ − log σ 2 + x 2 − ( x − μ σ ) 2 ] d x \begin{aligned} \int\limits_{z}^{}q(z|x)\log_{}{(\frac{q(z|x)}{p(z)} )} &= KL(q(z|x)||p(z)) = KL(N(\mu ,\sigma ^{2} )||N(0, I))\\ &=\int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } } \log_{}{\left \{ \frac{1}{\sqrt{\sigma ^{2} } }e^{\left \{ \frac{1}{2}\left [ x^{2}-(\frac{x-\mu }{\sigma } )^{2} \right ] \right \} } \right \} } dx\\ &=\frac{1}{2} \int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }\left [-\log_{}{\sigma ^{2} }+x^{2}-(\frac{x-\mu }{\sigma } )^{2} \right ] dx \end{aligned} z∫q(z∣x)log(p(z)q(z∣x))=KL(q(z∣x)∣∣p(z))=KL(N(μ,σ2)∣∣N(0,I))=∫2πσ1e2σ2−(x−μ)2log{σ21e{21[x2−(σx−μ)2]}}dx=21∫2πσ1e2σ2−(x−μ)2[−logσ2+x2−(σx−μ)2]dx
第一项: ∫ 1 2 π σ e − ( x − μ ) 2 2 σ 2 ( − log σ 2 ) d x \int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }\left (-\log_{}{\sigma ^{2} } \right ) dx ∫2πσ1e2σ2−(x−μ)2(−logσ2)dx,即 ( − log σ 2 ) \left (-\log_{}{\sigma ^{2} } \right ) (−logσ2)乘以概率密度的积分1,结果是 ( − log σ 2 ) \left (-\log_{}{\sigma ^{2} } \right ) (−logσ2)
第二项: ∫ 1 2 π σ e − ( x − μ ) 2 2 σ 2 x 2 d x \int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }x^{2} dx ∫2πσ1e2σ2−(x−μ)2x2dx正态分布的二阶矩,结果为 μ 2 + σ 2 \mu ^{2} +\sigma ^{2} μ2+σ2
第三项: ∫ 1 2 π σ e − ( x − μ ) 2 2 σ 2 [ − ( x − μ σ ) 2 ] d x \int \frac{1}{\sqrt{2\pi }\sigma } e^{\frac{-(x-\mu )^{2} }{2\sigma ^{2} } }\left [- (\frac{x-\mu }{\sigma } )^{2} \right ] dx ∫2πσ1e2σ2−(x−μ)2[−(σx−μ)2]dx,即 x − μ σ ∼ N ( 0 , 1 ) \frac{x-\mu }{\sigma }\sim N(0, 1) σx−μ∼N(0,1)的二阶矩,结果为-1
故 K L L o s s KL Loss KLLoss为:
K L ( N ( μ , σ 2 ) ∣ ∣ N ( 0 , 1 ) ) = 1 2 ( − log σ 2 + μ 2 + σ 2 − 1 ) KL(N(\mu ,\sigma ^{2} )||N(0, 1))=\frac{1}{2} \left ( -\log_{}{\sigma ^{2}+\mu^{2} +\sigma ^{2} -1 } \right ) KL(N(μ,σ2)∣∣N(0,1))=21(−logσ2+μ2+σ2−1)
( 2 ) (2) (2) 最大化 ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz z∫q(z∣x)logp(x∣z)dz
我们可以将该项表达为
max ∫ z q ( z ∣ x ) log p ( x ∣ z ) d z = max E q ( z ∣ x ) [ log p ( x ∣ z ) ] \max_{} \int\limits_{z}^{} q(z|x)\log_{}{p(x|z)} dz = \max_{} E_{q(z|x)} \left [ \log_{}{p(x|z)} \right ] maxz∫q(z∣x)logp(x∣z)dz=maxEq(z∣x)[logp(x∣z)]
VAE构造了Encoder来模拟 q ( z ∣ x ) q(z|x) q(z∣x)的过程,即通过Encoder来生成 z z z的分布;构造了Decoder来模拟 p ( x ∣ z ) p(x|z) p(x∣z)的过程,即通过Decoder生成x的分布,如果不考虑方差,即通过Decoder的均值输出 μ \mu μ同原始 x x x的值尽可能地近,从而使 p ( x ∣ z ) p(x|z) p(x∣z)的观测概率更大。该期望的含义可理解为:在给定Encoder的输出 q ( z ∣ x ) q(z|x) q(z∣x)的情况下Decoder输出 p ( x ∣ z ) p(x|z) p(x∣z)的值要尽可能高。此为VAE损失函数的第二项
最后是实现模型的重参数化技巧 r e p a r a m e t e r i z a t i o n reparameterization reparameterization t r i c k trick trick
为了使模型具有生成能力,VAE模型要求每个 p ( z ∣ x ) p(z|x) p(z∣x)都向 N ( 0 , I ) N(0, I) N(0,I)看齐,这样能防止噪声为零同时保证生成能力
如下,如果所有的 p ( z ∣ x ) p(z|x) p(z∣x)都很接近标准的正态分布 N ( 0 , I ) N(0, I) N(0,I)
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|x)p(x)=\sum_{x}^{}N(0, I)p(x)=N(0, I)\sum_{x}^{}p(x)=N(0, I) 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 ) p(z) p(z)是标准正态分布,然后就可能放心地从标准正态分布 N ( 0 , I ) N(0, I) N(0,I)中采样来生成样本了,对应到4.章节中高斯混合模型的原理
参考文章:
VAE的数学推导
VAE的数学推导
对VAE的理解1
对VAE的理解2
VAE和AE及GAN的区别
VAE的通俗理解
VAE背后的数学原理
created by shuaixio, 2022.06.30