变分自编码器(VAE)

变分自编码器(VAE)

从EM到变分推断

我们假设有一个隐变量z,我们的样本 x ( i ) x^{( i)} x(i)是从 p θ ( x ∣ z ) p_{\theta }( x|z) pθ(xz)中产生,因为有隐变量的存在,通常 p θ ( x ) = ∫ p θ ( z ) p θ ( x ∣ z ) d z p_{\theta }( x) =\int p_{\theta }( z) p_{\theta }( x|z) dz pθ(x)=pθ(z)pθ(xz)dz的边缘分布是没法算的。

所以传统来说,我们会构造出一个下界:
log ⁡ p ( x ) = E z ∼ q ( z ) ( log ⁡ p ( x , z ) ) − H ( q ) ⏟ E L B O + K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) \begin{aligned} \log p( x) & =\underbrace{E_{z\sim q( z)}(\log p( x ,z)) -H( q)}_{ELBO} +KL( q( z) ||p( z |x)) \end{aligned} logp(x)=ELBO Ezq(z)(logp(x,z))H(q)+KL(q(z)p(zx))
因此当我们最大化下界(ELBO)时,就相当于在最小化 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) KL( q( z) ||p( z |x)) KL(q(z)p(zx))
这里写图片描述

而EM算法,就是通过精心选择这个下界中的q,从而使得下界最大化,也就是计算 q ( z ) = p ( z ∣ x ) q( z) =p( z|x) q(z)=p(zx)来近似该模型的似然度。进一步可以参考我之前写的文章《带你理解EM算法

然而如果我们令 q ( z ) = p ( z ∣ x ) = p θ ( x ∣ z ) p θ ( z ) p θ ( x ) q( z) =p( z|x) =\frac{p_{\theta }( x|z) p_{\theta }( z)}{p_{\theta }( x)} q(z)=p(zx)=pθ(x)pθ(xz)pθ(z)也是不可计算的呢,比如你的z有很多很多维,那么你在算那个期望的时候就会出现一堆积分,这是非常难算的。

此时我们可以使用变分推断的方法,那就是,我们不直接令 q ( z ) = p ( z ∣ x ) q( z) =p( z|x) q(z)=p(zx)了,而是选一个相对简单的分布 q ( z ) q(z) q(z)去近似 p ( z ∣ x ) p( z|x) p(zx),(注意,这个q不一定是q(z)还可以是q(z|x),这种情况称为amortized variational),这个“近似”的数学形式写作 min ⁡ q K L ( q ( z ) ∥ p ( z ∣ x ) ) \min_q KL(q(z)\| p(z|x)) minqKL(q(z)p(zx)) min ⁡ q K L ( q ( z ∣ x ) ∥ p ( z ∣ x ) ) \min_q KL(q(z|x)\| p(z|x)) minqKL(q(zx)p(zx))。那么简单的q怎么来?最常用的就是对q作平均场(mean-field)假设,即,我们可以认为:
q ( z ) = ∏ i q i ( z i ) q(\mathbf{z}) =\prod _{i} q_{i}( z_{i}) q(z)=iqi(zi)
这个假设的意思是,虽然你的z有很多维,但是他们都是相互独立的,也就是说,你算很多很多积分的时候,每个 z i z_{i} zi可以分别积分,所以一个联合积分的问题就简化成了仅需一个积分的问题,于是我们在优化ELBO的时候,只需分别优化 q i q_{i} qi就可以了。将平均场假设代进ELBO中,化简可以得到
E L B O = ∫ z j q j ( z j ) [ ∫ … ∫ z i ≠ j q ( z ) log ⁡ p ( x , z ) d z i ] d z j − ∑ i ∫ z i q i ( z i ) log ⁡ q i ( z i ) d z i = ∫ z j q j ( z j ) E i ≠ j [ log ⁡ p ( x , z ) ] d z j − ∫ z j q j ( z j ) log ⁡ q j ( z j ) d z j − ∑ i ≠ j ∫ z i q i ( z i ) log ⁡ q i ( z i ) d z i ⏟ C o n s t   f o r   j = ∫ z j q j ( z j ) log ⁡ E i ≠ j [ log ⁡ p ( x , z ) ] q j ( z j ) d z j − ∑ i ≠ j M ∫ z i q i ( z i ) log ⁡ q i ( z i ) d z i ⏟ C o n s t   f o r   j = − K L ( E i ≠ j [ log ⁡ p ( x , z ) ∣ ∣ q j ( z j ) ] ) + c o n s t \begin{aligned} ELBO & =\int _{z_{j}} q_{j}( z_{j})\left[\underset{z_{i\neq j}}{\int \dotsc \int } q( z)\log p( x,z) dz_{i}\right] dz_{j} -\sum _{i}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}\\ & =\int _{z_{j}} q_{j}( z_{j}) E_{i\neq j}[\log p( x,z)] dz_{j} -\int _{z_{j}} q_{j}( z_{j})\log q_{j}( z_{j}) dz_{j} -\underbrace{\sum _{i\neq j}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}}_{Const\ for\ j}\\ & =\int _{z_{j}} q_{j}( z_{j})\log\frac{E_{i\neq j}[\log p( x,z)]}{q_{j}( z_{j})} dz_{j} -\underbrace{\sum ^{M}_{i\neq j}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}}_{Const\ for\ j}\\ & =-KL( E_{i \neq j}[\log p( x,z) ||q_{j}( z_{j})]) +const \end{aligned} ELBO=zjqj(zj)zi=jq(z)logp(x,z)dzidzjiziqi(zi)logqi(zi)dzi=zjqj(zj)Ei=j[logp(x,z)]dzjzjqj(zj)logqj(zj)dzjConst for j i=jziqi(zi)logqi(zi)dzi=zjqj(zj)logqj(zj)Ei=j[logp(x,z)]dzjConst for j i=jMziqi(zi)logqi(zi)dzi=KL(Ei=j[logp(x,z)qj(zj)])+const

因为每个 z j z_{j} zj都是相互独立,于是,只需分别最大化每个 z j z_{j} zj的ELBO就可以实现ELBO最大化,而其他的项都视作了常数,此时,ELBO就简单地变成了一个负的KL距离,所以,想要最大化这个ELBO,我们只需要令
q j ( z j ) = E i ≠ j [ log ⁡ p ( x , z ) ] q_{j}( z_{j}) =E_{i\neq j}[\log p( x,z)] qj(zj)=Ei=j[logp(x,z)]
就可以了。这实际上是一个迭代的问题,因为在constant中,包含了其他的项的q,所以,我们只需不断地更新各个元素q的分布直到收敛就可以了。

从变分推断到VAE

但是,如果即使用了平均场假设也没法算,而使用MCMC又太慢怎么办?为了解决这个问题,我们回到最初的那个下界的表达式中

log ⁡ p ( x ∣ θ ) = E z ∼ q ( z ) ( log ⁡ p ( x , z ) ) − H ( q ) ⏟ E L B O + K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) \begin{aligned} \log p( x |\theta ) & =\underbrace{E_{z\sim q( z)}(\log p( x ,z)) -H( q)}_{ELBO} +KL( q( z) ||p( z |x)) \end{aligned} logp(xθ)=ELBO Ezq(z)(logp(x,z))H(q)+KL(q(z)p(zx))
实际上ELBO有几种不同的,但是等价的表达方式:

KL form :
L ( θ ; x ) = E z ∼ q ( z ) ( log ⁡ p θ ( x ∣ z ) ) − K L ( q ( z ) ∣ ∣ p θ ( z ) ) \mathcal{L}( \theta ;x) =E_{z\sim q( z)}(\log p_{\theta }( x|z)) -KL( q( z) ||p_{\theta }( z)) L(θ;x)=Ezq(z)(logpθ(xz))KL(q(z)pθ(z))
Entropy form:
L ( θ ; x ) = E z ∼ q ( z ) ( log ⁡ p θ ( x , z ) ) − H ( q ) \mathcal{L}( \theta ;x) =E_{z\sim q( z)}(\log p_{\theta }( x ,z)) -H( q) L(θ;x)=Ezq(z)(logpθ(x,z))H(q)
Fully Monte Carlo(FMC) form:
L ( θ ; x ) = E z ∼ q ( z ) [ log ⁡ p θ ( x , z ) − log ⁡ q ( z ) ] \mathcal{L}( \theta ;x) =E_{z\sim q( z)}[\log p_{\theta }( x,z) -\log q( z)] L(θ;x)=Ezq(z)[logpθ(x,z)logq(z)]

其中q是一个任意的分布,那么现在,我们令 q ( z ) ≜ q ϕ ( z ∣ x ) q( z) \triangleq q_{\phi }( z|x) q(z)qϕ(zx),用KL形式的下界可以得到:
L ( θ , ϕ ; x ) = E z ∼ q ϕ ( z ∣ x ) ( log ⁡ p θ ( x ∣ z ) ) − K L ( q ϕ ( z ∣ x ) ∣ ∣ p θ ( z ) ) \mathcal{L}( \theta ,\phi ;x) =E_{z\sim q_{\phi }( z|x)}(\log p_{\theta }( x|z)) -KL( q_{\phi }( z|x) ||p_{\theta }( z)) L(θ,ϕ;x)=Ezqϕ(zx)(logpθ(xz))KL(qϕ(zx)pθ(z))
现在引入了一个带参数的 q ϕ q_{\phi } qϕ来表示这个上界,如果要最大化这个上界,我们只要用梯度上升不断更新参数 ϕ \phi ϕ就可以了。一般情况下,KL距离的那一项是有解析解的,所以梯度很好求。然而对第一项求梯度则没那么简单,一个常用的方法是 ∇ ϕ E z ∼ q ϕ ( z ) ( f ( z ) ) = E z ∼ q ϕ ( z ) [ f ( z ) ∇ ϕ log ⁡ q ϕ ( z ) ] ≃ 1 L ∑ l = 1 L f ( z l ) ∇ ϕ log ⁡ q ϕ ( z l ) \nabla _{\phi } E_{z\sim q_{\phi }( z)}( f( z)) =E_{z\sim q_{\phi }( z)}[ f( z) \nabla _{\phi }\log q_{\phi }( z)] \simeq \frac{1}{L}\sum ^{L}_{l=1} f\left( z^{l}\right) \nabla _{\phi }\log q_{\phi }\left( z^{l}\right) ϕEzqϕ(z)(f(z))=Ezqϕ(z)[f(z)ϕlogqϕ(z)]L1l=1Lf(zl)ϕlogqϕ(zl),但是这么做的方差太高。

reparameterization

如上图,我们可以用reparameterize trick来解决这个问题,这时z对于x来说就是一个固定的值,只要我们从 ϵ \epsilon ϵ中抽样后,固定住就可以了,设
z = g ϕ ( ϵ , x ) , ϵ ∼ p ( ϵ ) z=g_{\phi }( \epsilon ,x) ,\epsilon \sim p( \epsilon ) z=gϕ(ϵ,x),ϵp(ϵ)
其中$\epsilon $是一个已知的简单分布,比如说标准正态分布,次数z的产生就变成了从某个固定的标准分布中采样,于是下界中的期望那一项可以改写成:
E z ∼ q ϕ ( z ∣ x ) ( log ⁡ p θ ( x ∣ z ) ) = E ϵ ∼ p ( ϵ ) ( log ⁡ p θ ( x ∣ g ϕ ( ϵ , x ) ) ) ≃ 1 L ∑ l = 1 L log ⁡ p θ ( x ∣ g ϕ ( ϵ , x ) ) E_{z\sim q_{\phi }( z|x)}(\log p_{\theta }( x|z)) =E_{\epsilon \sim p( \epsilon )}(\log p_{\theta }( x|g_{\phi }( \epsilon ,x))) \simeq \frac{1}{L}\sum ^{L}_{l=1}\log p_{\theta }( x|g_{\phi }( \epsilon ,x)) Ezqϕ(zx)(logpθ(xz))=Eϵp(ϵ)(logpθ(xgϕ(ϵ,x)))L1l=1Llogpθ(xgϕ(ϵ,x))
于是对于一个样本 x ( i ) x^{( i)} x(i)的下界可以写作:
L ( θ , ϕ ; x ( i ) ) = 1 L ∑ l = 1 L log ⁡ p θ ( x ( i ) ∣ z ( i , l ) ) − K L ( q ϕ ( z ( i ) ∣ x ( i ) ) ∣ ∣ p θ ( z ( i ) ) ) \mathcal{L}\left( \theta ,\phi ;x^{( i)}\right) =\frac{1}{L}\sum ^{L}_{l=1}\log p_{\theta }\left( x^{( i)} |z^{( i,l)}\right) -KL\left( q_{\phi }\left( z^{( i)} |x^{( i)}\right) ||p_{\theta }\left( z^{( i)}\right)\right) L(θ,ϕ;x(i))=L1l=1Llogpθ(x(i)z(i,l))KL(qϕ(z(i)x(i))pθ(z(i)))
其中 z ( i , l ) = g ϕ ( ϵ ( i , l ) , x ( i ) ) , ϵ ( l ) ∼ p ( ϵ ) z^{( i,l)} =g_{\phi }\left( \epsilon ^{( i,l)} ,x^{( i)}\right) ,\epsilon ^{( l)} \sim p( \epsilon ) z(i,l)=gϕ(ϵ(i,l),x(i)),ϵ(l)p(ϵ)
在这里,如果我们用一个MLP来表示 p θ p_{\theta } pθ q ϕ q_{\phi } qϕ和就可以对用这个目标函数求梯度来最大化了,注意产生z的分布 q ϕ q_{\phi } qϕ其实是由一个标准正态分布的 ϵ \epsilon ϵ和一个用MLP表示的映射函数 g ϕ g_{\phi } gϕ构成的,所以训练过程实际上是更新 p θ p_{\theta } pθ g ϕ g_{\phi } gϕ这两个MLP的参数,我们称 p θ p_\theta pθ为encoder network, q ϕ q_{\phi } qϕ为decoder network。而z的产生则是从 p ( ϵ ) p( \epsilon ) p(ϵ)抽一个样本,然后经过一个确定性 g ϕ g_{\phi } gϕ来产生。

更直观一点,如果我们假设先验分布 p ( z ) p( z) p(z), p ( ϵ ) p( \epsilon ) p(ϵ)服从标准正态分布,
z = q ϕ ( z ∣ x ) = g ϕ ( ϵ , x ) = μ ϕ ( x ) + Σ ϕ 1 / 2 ( x ) ϵ z=q_{\phi }( z|x) =g_{\phi }( \epsilon ,x) =\mu _{\phi }( x) +\Sigma _{\phi }^{1/2}( x) \epsilon z=qϕ(zx)=gϕ(ϵ,x)=μϕ(x)+Σϕ1/2(x)ϵ
也就是说, q ϕ ( z ∣ x ) ∼ N ( μ ϕ ( x ) , Σ ϕ 1 / 2 ( x ) ) q_{\phi }( z|x) \sim N\left( \mu _{\phi }( x) ,\Sigma _{\phi }^{1/2}( x)\right) qϕ(zx)N(μϕ(x),Σϕ1/2(x))也是正态分布,不过其参数由x决定。于是对于两个正态分布的KL距离,对于有J个维度的z,我们完全可以算出其解析解:
− K L ( q ϕ ( z ∣ x ) ∣ ∣ p θ ( z ) ) = − K L ( N ( μ ϕ , σ ϕ ) ∣ ∣ N ( 0 , I ) ) = 1 2 ∑ j = 1 J ( ( 1 + log ⁡ σ j 2 ) − μ j 2 − σ j 2 ) \begin{aligned} -KL( q_{\phi }(\mathbf{z} |\mathbf{x}) ||p_{\theta }(\mathbf{z})) & =-KL( N(\mathbf{\mu }_{\phi } ,\mathbf{\sigma }_{\phi }) ||N(\mathbf{0} ,\mathbf{I}))\\ & =\frac{1}{2}\sum ^{J}_{j=1}\left(\left( 1+\log \sigma ^{2}_{j}\right) -\mu ^{2}_{j} -\sigma ^{2}_{j}\right) \end{aligned} KL(qϕ(zx)pθ(z))=KL(N(μϕ,σϕ)N(0,I))=21j=1J((1+logσj2)μj2σj2)
这个公式其实来自于两个n元高斯分布的KL距离,他的详细推导过程如下:
D ( P 1 ∥ P 2 ) =   E P 1 [ log ⁡ P 1 − log ⁡ P 2 ] = 1 2 E P 1 [ − log ⁡ det ⁡ Σ 1 − ( x − μ 1 ) T Σ 1 − 1 ( x − μ 1 ) + log ⁡ det ⁡ Σ 2 + ( x − μ 2 ) T Σ 2 − 1 ( x − μ 2 ) ] = 1 2 log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 + 1 2 E P 1 [ − ( x − μ 1 ) T Σ 1 − 1 ( x − μ 1 ) + ( x − μ 2 ) T Σ 2 − 1 ( x − μ 2 ) ] = 1 2 log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 + 1 2 E P 1 [ − tr ⁡ ( Σ 1 − 1 ( x − μ 1 ) ( x − μ 1 ) T ) + tr ⁡ ( Σ 2 − 1 ( x − μ 2 ) ( x − μ 2 ) T ) ] = 1 2 log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 + 1 2 E P 1 [ − tr ⁡ ( Σ 1 − 1 Σ 1 ) + tr ⁡ ( Σ 2 − 1 ( x x T − 2 x μ 2 T + μ 2 μ 2 T ) ) ] = 1 2 log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 − 1 2 n + 1 2 tr ⁡ ( Σ 2 − 1 ( Σ 1 + μ 1 μ 1 T − 2 μ 2 μ 1 T + μ 2 μ 2 T ) ) = 1 2 ( log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 − n + tr ⁡ ( Σ 2 − 1 Σ 1 ) + tr ⁡ ( μ 1 T Σ 2 − 1 μ 1 − 2 μ 1 T Σ 2 − 1 μ 2 + μ 2 T Σ 2 − 1 μ 2 ) ) = 1 2 ( log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 − n + tr ⁡ ( Σ 2 − 1 Σ 1 ) + ( μ 2 − μ 1 ) T Σ 2 − 1 ( μ 2 − μ 1 ) ) \begin{aligned} & D( P_{1} \| P_{2})\\ = & \ \mathrm{E}_{P_{1}}[\log P_{1} -\log P_{2}]\\ = & \frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\log\operatorname{det} \Sigma _{1} -( x-\mu _{1})^{T} \Sigma ^{-1}_{1}( x-\mu _{1}) +\log\operatorname{det} \Sigma _{2} +( x-\mu _{2})^{T} \Sigma ^{-1}_{2}( x-\mu _{2})\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -( x-\mu _{1})^{T} \Sigma ^{-1}_{1}( x-\mu _{1}) +( x-\mu _{2})^{T} \Sigma ^{-1}_{2}( x-\mu _{2})\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\operatorname{tr}\left( \Sigma ^{-1}_{1}( x-\mu _{1})( x-\mu _{1})^{T}\right) +\operatorname{tr}\left( \Sigma ^{-1}_{2}( x-\mu _{2})( x-\mu _{2})^{T}\right)\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\operatorname{tr}\left( \Sigma ^{-1}_{1} \Sigma _{1}\right) +\operatorname{tr}\left( \Sigma ^{-1}_{2}\left( xx^{T} -2x\mu ^{T}_{2} +\mu _{2} \mu ^{T}_{2}\right)\right)\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -\frac{1}{2} n+\frac{1}{2}\operatorname{tr}\left( \Sigma ^{-1}_{2}\left( \Sigma _{1} +\mu _{1} \mu ^{T}_{1} -2\mu _{2} \mu ^{T}_{1} +\mu _{2} \mu ^{T}_{2}\right)\right)\\ = & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +\operatorname{tr}\left( \mu ^{T}_{1} \Sigma ^{-1}_{2} \mu _{1} -2\mu ^{T}_{1} \Sigma ^{-1}_{2} \mu _{2} +\mu ^{T}_{2} \Sigma ^{-1}_{2} \mu _{2}\right)\right)\\ = & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +( \mu _{2} -\mu _{1})^{T} \Sigma ^{-1}_{2}( \mu _{2} -\mu _{1})\right) \end{aligned} ========D(P1P2) EP1[logP1logP2]21EP1[logdetΣ1(xμ1)TΣ11(xμ1)+logdetΣ2+(xμ2)TΣ21(xμ2)]21logdetΣ1detΣ2+21EP1[(xμ1)TΣ11(xμ1)+(xμ2)TΣ21(xμ2)]21logdetΣ1detΣ2+21EP1[tr(Σ11(xμ1)(xμ1)T)+tr(Σ21(xμ2)(xμ2)T)]21logdetΣ1detΣ2+21EP1[tr(Σ11Σ1)+tr(Σ21(xxT2xμ2T+μ2μ2T))]21logdetΣ1detΣ221n+21tr(Σ21(Σ1+μ1μ1T2μ2μ1T+μ2μ2T))21(logdetΣ1detΣ2n+tr(Σ21Σ1)+tr(μ1TΣ21μ12μ1TΣ21μ2+μ2TΣ21μ2))21(logdetΣ1detΣ2n+tr(Σ21Σ1)+(μ2μ1)TΣ21(μ2μ1))

我们可以稍微试验一下,设 Σ 2 = α E , μ 2 = 0 \displaystyle \Sigma _{2} =\alpha E,\mu _{2} =0 Σ2=αE,μ2=0,并且 Σ 1 \displaystyle \Sigma _{1} Σ1是对角矩阵,于是

1 2 ( log ⁡ det ⁡ Σ 2 det ⁡ Σ 1 − n + tr ⁡ ( Σ 2 − 1 Σ 1 ) + ( μ 2 − μ 1 ) T Σ 2 − 1 ( μ 2 − μ 1 ) ) = 1 2 ( n log ⁡ α − log ⁡ det ⁡ Σ 1 − n + α − 1 tr ⁡ ( Σ 1 ) + α − 1 μ 1 T μ 1 ) = 1 2 ( ∑ j = 1 n ( log ⁡ α − log ⁡ σ j − 1 + α − 1 σ j + α − 1 μ j 2 ) ) \begin{aligned} & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +(\mu _{2} -\mu _{1} )^{T} \Sigma ^{-1}_{2} (\mu _{2} -\mu _{1} )\right)\\ = & \frac{1}{2}\left( n\log \alpha -\log\operatorname{det} \Sigma _{1} -n+\alpha ^{-1}\operatorname{tr}( \Sigma _{1}) +\alpha ^{-1} \mu ^{T}_{1} \mu _{1}\right)\\ = & \frac{1}{2}\left(\sum ^{n}_{j=1}\left(\log \alpha -\log \sigma _{j} -1+\alpha ^{-1} \sigma _{j} +\alpha ^{-1} \mu _{j}^2\right)\right) \end{aligned} ==21(logdetΣ1detΣ2n+tr(Σ21Σ1)+(μ2μ1)TΣ21(μ2μ1))21(nlogαlogdetΣ1n+α1tr(Σ1)+α1μ1Tμ1)21(j=1n(logαlogσj1+α1σj+α1μj2))

接下来我们看看这个网络的架构
vae

encoder network将一只喵星人映射成一个均值和一个方差,然后产生一个z样本,通过decoder network再变成一只喵~

然而VAE对比GAN确实存在一些问题。
vse vs gan

可以看到VAE的“拟合”能力没有GAN的强,VAE会趋于平滑而GAN则不会。而且VAE产生的图像会比较模糊,这似乎所有优化对数似然的目标函数 K L ( p d a t a ∣ ∣ p m o d e l ) KL(p_{data}||p_{model}) KL(pdatapmodel)都有这问题(《Deep learning》),这一点,或许与KL距离的性质有关系,可以看我的另外一篇文章,《正向跟反向KL距离到底有什么区别?

参考资料

Auto-encoding variational bayes

Tutorial on variational autoencoders

How does the reparameterization trick for VAEs work and why is it important?

Variational Autoencoders Explained
Deep learning

徐亦达机器学习课程

带你理解EM算法

作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者Jie Qiao专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值