VAE


VAE學習總結

VAE是變分推斷(variational inference )以及自編碼器(Auto-encoder)的組合,是一種非監督的生成模型。

 

 

 

                            圖1 自編碼器(Auto-encoder)


其中,自編碼器(Auto-encoder)的結構如圖1所示。由Encoder和Decoder組成,其中Encoder和Decoder通常使用神經網絡來實現。

Encoder將輸入$x$映射到一個隱狀態$z$,Decoder將$z$再映射回$tilde{x}$。

AE的訓練目標就是使得輸入$x$和輸出tilde{x}盡可能相似, 同時AE是完全確定的,AE的輸入直接決定了生成結果。自編碼器是通過無監督的方式來訓練來獲取輸入數據在較低維度的表達。

自編碼器的主要應用場景有:

1. 降維

2. 圖像壓縮

3. 圖像降噪

4. 圖像生成

5. 特征提取

 

從變分推斷理解VAE

設:

$x$:為觀測數據,可以看作是樣本

$y$:為隱變量,包含但不限於模型的參數

首先變分推斷的核心思想是:因為一般情況下后驗概率$p(z|x)$是不可求解的,所以變分推斷采用了一種迂回的策略,即使用$q(z)$去近似$p(z|x)$。

其實,可以把$p(z|x)$看作是AE中的編碼器,$p(x|z)$看作是AE中的解碼器。

VAE是典型的生成模型,$q(z)$導如下:

\[logp(x)=log\frac{p(x,z)}{p(z|x)}=log\frac{p(x,z)}{q(z|x)}-log\frac{p(z|x)}{q(z|x)} \]

兩邊對$q(z|x)$求期望得到:

\[logp(x)=\int q(z|x)log\frac{p(x,z)}{q(z|x)}dz-\int q(z|x)log\frac{p(z|x)}{q(z|x)}dz=ELBO+KL(q(z|x)||p(z|x)) \]

 

 使用不同 $q(z|x)$時,ELBO和KL的和是一定的,那我調整 $q(z|x)$ 使ELBO最大時,KL也必然最小了。KL最小意味着 $q(z|x)$和 $q(z|x)$很接近。其中,最大化ELBO就是最小化 -ELBO。

\[ELBO=\int q(z|x)log\frac{p(x|z)p(z)}{q(z|x)}dz=\int q(z|x)logp(x|z)dz+\int q(z|x)log\frac{p(z)}{q(z|x)}dz\]

\[-ELBO=-\int q(z|x)logp(x|z)dz+\int q(z|x)log\frac{q(z|x)}{p(z)}dz\]

其中,第一項為重構誤差$-\int q(z|x)logp(x|z)dz$,需要最小化,即:

\[Maximum\int q(z|x)logp(x|z)dz=MaximumE_{q(z|x)}[logp(x|z)]\]

上述的這個期望,也就是表明在給定$q(x|z)$(編碼器輸出)的情況下p(x|z)(解碼器輸出)的值盡可能高,這其實就是一個類似於Auto-Encoder的損失函數(方差忽略不計的話):

 

                                  圖2 VAE

第二項為KL散度誤差($KL(q(z|x)||p(z))$)。

其實$-KL(q(z|x)||p(z))$的展開式如下所示(具體的展開計算過程可以參閱《Auto-Encoding Variational Bayes》的Appendix B):

\[\sum_{i=1}^{J}(exp(\sigma _{i})-(1+\sigma _{i})+{m_{i}}^{2})\]

 

因此任務變成了最小化重構誤差和KL散度誤差之和。

 

 

                                                                    圖3 VAE網絡結構

 

我們分別構造兩個子網絡,左側為推斷網絡,又叫Encoder,他是為了擬合$q(z|x)$的;右側為生成網絡,又叫Decoder,他是為了擬合$p(x|z)$的。

整個過程大致為:我們從${x_{1},x_{2},...,x_{n}}$通過推斷網絡計算,得到每個樣本對應隱變量的后驗概率$q(z_{n}|x_{n})$,

再從這個后驗概率分布中隨機抽取一個$z$交給生成網絡,計算得出的重構后的${\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{n}}$。

我們的目標是使$q(z_{n}|x_{n})$更接近於$p(z)$的分布,同時${x_{1},x_{2},...,x_{n}}$和原數據集的${\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{n}}$更加接近。

                                          圖4 VAE訓練過程

 

如圖4所示,我們要最小化的-ELBO分成的兩項:重構損失和$KL(q(z|x)||p(z))$分別就是生成網絡和推斷網絡的損失函數,我們要求這兩項損失之和的最小值。

可以使用梯度下降方法進行優化,網絡優化的過程就是我們估計參數的過程,網絡收斂后,我們就得到了一個良好的生成模型。

 

參考:

https://zhuanlan.zhihu.com/p/365447917

https://blog.csdn.net/weixin_42217488/article/details/108954885

https://zhuanlan.zhihu.com/p/434394556

https://zhuanlan.zhihu.com/p/39063974

https://zhuanlan.zhihu.com/p/368959795 

http://www.gwylab.com/note-vae.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM