<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          變分自動編碼器(VAE)簡介

          共 5415字,需瀏覽 11分鐘

           ·

          2022-06-27 16:58

          本文授權(quán)轉(zhuǎn)載自數(shù)據(jù)派THU,作者數(shù)據(jù)派

          1. VAE 概述

          變分自動編碼器(Variational autoEncoder,VAE)是生成模型的一種。這些方法的主要目標是從對象的學(xué)習(xí)分布中生成新的采樣數(shù)據(jù)。2014 年,Kingma et al. [3]提出了這種生成模型,該模型可以從隱變量空間的概率分布中學(xué)習(xí)潛在屬性并構(gòu)造新的元素。

          VAE 包含兩個部分:編碼器 encoder 和解碼器 decoder。如圖 1 所示,編碼器計算每個輸入數(shù)據(jù)的低維均值μ和方差,然后從隱變量空間采樣,得到Z={Z1,Z ...,Zn},通過解碼器生成新數(shù)據(jù)Y ={Y1,Y2...,Yn}。我們希望從隱變量空間中的采樣的數(shù)據(jù) Z 遵循原始數(shù)據(jù) X 的概率分布,這樣我們根據(jù)采樣數(shù)據(jù) Z 生成的新數(shù)據(jù) Y也就可以遵循原始數(shù)據(jù)的概率分布[2]。


          Fig. 1. The structure of the VAE.


          2. 概率分布

          但是問題來了,如何才能保證采樣數(shù)據(jù) Z 的概率分布是符合輸入 X 的呢?首先假設(shè)存在一個 Z 關(guān)于 X 的后驗后驗概率,并進一步假設(shè)這個概率分布是正態(tài)分布:

          p(Z | X ) = N(0, I)

          那么采樣數(shù)據(jù) Z 的概率分布就為:



          這樣 (先驗分布)和 (后驗分布)就都符合標準正態(tài)分布了。

          3. 損失函數(shù)

          VAE 生成圖片的性能可以通過 evidence lower bound(ELBO) loss 來評估,該損失由
          Reconstruction loss 和 Kullback–Leibler loss(KL loss)組成。Reconstruction loss 用于計算生成的數(shù)據(jù)與原始數(shù)據(jù)的相似程度,而 KL loss 作為一個額外的 loss,用于測量一般正態(tài)分布與標準正態(tài)分布的差異,也就是均值 μ 和方差之間的差異[1][4]。

          在給定的隱變量空間維度為 n 的條件下,已知均值 μ 和方差,KL loss 定義為:



          Reconstruction loss 在這里可以使用標準的 L2 Loss 也就是 MSE。給定 m 個數(shù)據(jù),已知真實值 x 和預(yù)測值X^。Reconstruction loss 定義為:


          最終,ELBO loss 由上述兩個損失函數(shù)組成,系數(shù)為 α 和 β:



          簡單來說,這里的 Reconstruction loss 是用來讓 decoder 的輸出 Y 和輸入 X 盡可能相似。而 KL loss 希望隱變量空間可以符合標準的正態(tài)分布,但實際 X 的分布其實并不是標準的正態(tài)分布,也就是說 KL loss 會讓輸出 Y 具有多樣性,與輸入 X 產(chǎn)生一部分的差異。

          在 MATLAB 的實例中[4],Reconstruction loss 和 KL loss 的比例是 1:1,這樣既能保證生成圖像的質(zhì)量,又可以引入一定的噪聲,使生成圖片有一定的泛化能力。關(guān)于ELBO Loss 的具體實現(xiàn)如下所示:

          Fig. 2. ELBO loss in the MATLAB example.

            
          在圖 2 所示代碼中,方差是用log ()表示的,這是因為的結(jié)果永遠是非負的,在神經(jīng)網(wǎng)絡(luò)擬合的過程中需要加激活函數(shù),但是log ()的結(jié)果可正可負,可以不加激活函數(shù)處理。

          4. 重參數(shù)技巧

          除了這個特殊的損失函數(shù),作者還介紹了一種名為重參數(shù)技巧(Reparameterization
          trick)的方法。


          Fig. 3. Reparameterization trick.

          正因為我們假設(shè) p(Z | X ) = N(0, I) , 但是均值和方差都是靠 encoder 計算出來的,然后我們要靠這個均值和方差反向優(yōu)化 encoder。但是隨機采樣這個操作是不可導(dǎo)的,我們不可能通過隨機采樣操作進行反向傳播。因此我們可以利用隨機采樣的結(jié)果,本來我們需要從均值和方差的分布中隨機采樣,現(xiàn)在我們只需要生成一組符合正態(tài)分布的變量ε。如圖 3 所示,從中采樣一個 Z,相當(dāng)于從 N(0,I) 中采樣一個 ε,然后讓。這樣隨機采樣就不用參與梯度下降了,只需要更新采樣的結(jié)果。圖 4 的示例代碼展示了如何從 encoder 中采樣并且進行重參數(shù)技巧:

          Fig. 4. Sampling function in the MATLAB example.
           
          5. 維度對 VAE 的影響

          在變分自編碼器中,隱變量空間的維度(dimensionality)是一個非常重要的變量,在一般的編碼器(AE)中,這個變量也被稱為 bottleneck。如果給定 m 個數(shù)據(jù),維度的大小為 n,那么每個數(shù)據(jù)就會產(chǎn)生 n 個均值和 n 個方差。不同的維度會導(dǎo)致 decoder 生成不同的圖片,我們這里使用 MNIST 的訓(xùn)練集,在ELBO = 0.5*MSE + 0.5*KL的情況下來訓(xùn)練變分自動編碼器,用 MNIST 的測試集來測試重構(gòu)的效果。如圖 5,在維度為 2,5,10,20 的情況下,左邊圖片代表 ground truth,也就是 encoder 的輸入,右邊圖片代表生成的圖片,也就是 decoder 的輸出。



          Fig. 5. Comparison between the ground truth digits and the reconstruction based on different dimensionality.

          我們可以看出,在隱變量空間的維度較低時,生成的數(shù)字較為模糊,在隱變量空間的維度較高時,生成的數(shù)字相對而言噪聲小,更加清晰,并且與原圖像有著一定的相似度。

          6. 損失函數(shù)對 VAE 的影響

          從第五節(jié)可以看出,不同維度的大小會影響生成圖片的質(zhì)量。同樣的,不同的損失函數(shù)也會導(dǎo)致 VAE 生成不同質(zhì)量的圖片。在第三節(jié)的最后一段我們提到過,Reconstruction loss 希望輸出和輸出保持相同,而 KL loss 在原有的基礎(chǔ)上引入了一定的噪聲。因此,我們可以通過修改兩個損失函數(shù)的權(quán)重,來控制不同的損失函數(shù)對輸出的影響程度。在 0.1*MSE + 0.9*KL 0.9*MSE + 0.1*KL 的情況下,生成的圖片又會有什么差別呢?圖 6 展示了不同損失函數(shù)下生成圖片的質(zhì)量(隱變量空間維度為 20),就像我們想得那樣,在 MSE 權(quán)重較大的情況下,生成的圖片幾乎與原圖片一模一樣,幾乎沒有噪聲。而在 KL loss 占主導(dǎo)時,生成的圖片由于噪聲過大已經(jīng)完全看不出來是什么了。


          Fig. 6. Comparison between the ground truth digits and the reconstruction based on different loss function.


          除了觀察生成的圖片的質(zhì)量,我們還可以通過對隱變量空間的分析來查看數(shù)據(jù)的分布情況。當(dāng) MSE 權(quán)重較大的時候(0.9*MSE + 0.1*KL),隱變量空間的分布情況更像原數(shù)據(jù)的分布情況,我們通過使用 t-SNE 降維[5]分析均值(代碼見圖 7),可以得到如圖8 所示的聚類圖。這里每組數(shù)據(jù)的標簽使用的原數(shù)字的標簽。顯然,隱變量空間均值的分布情況與原數(shù)據(jù)的分布情況(數(shù)字 0-9 的聚類)幾乎一樣。當(dāng)然了,由于我們保留了一定的 KL loss,采樣過程中引入了一定的噪聲,每組聚類的周圍會有一些 outliers。

          Fig. 7. Code for t-SNE clustering based on the mean.


           Fig. 8. Clusters generated by t-SNE based on the mean,ELBO = 0.9 ? MSE + 0.1 ? KL.


          類似的,在0.1*MSE + 0.9*KL的情況下,由于隱變量空間的均值被擬合為正態(tài)分布,它很難反映出原數(shù)據(jù)的分布情況,如圖 9。

          Fig. 9. Clusters generated by t-SNE based on the mean,ELBO = 0.1 ? MSE + 0.9 ? KL.


          7. 總結(jié)

          盡管 VAE 在名字上很像 AE(自動編碼器),但其方法(或其對網(wǎng)絡(luò)的解釋)是獨特的。在 VAE 中 ,encoder 用于計算平均值和方差,這與平時的 AE 完全不是一個類型的模型。對于不同的隱變量空間維度,VAE 具有不同的性能,相對而言,隱變量空間越大,可以保留的概率分布的信息就越多。但我們并不能說,隱變量空間越大就一定越好,考慮一個極限的情況就是當(dāng)輸入圖片是 28*28*1 的情況下,隱變量空間的大小設(shè)置為 784,也就是原數(shù)據(jù)的大小,VAE 也就失去了 encoding 的意義了。

          對于損失函數(shù) ELBO loss,我們可以調(diào)整它的權(quán)重來達到不同的生成效果,畢竟我們在生活中也會遇到相當(dāng)多的噪聲,這對于模型的魯棒性來說是非常有意義的。


          除了VAE,后續(xù)還有很多類似的模型比如條件變分自編碼器
          (Conditional VariationalautoEncoder),生成對抗編碼器(VAEGAN)等等,這個領(lǐng)域的不斷發(fā)展也帶了更更好的生成類模型,感興趣的同學(xué)可以去搜一搜論文。

          Reference:

          1. Bishop, C.M., 2006. Pattern recognition and machine learning. springer. pp. 55–58.

          2.Doersch, C., 2016. Tutorial on variational autoencoders. arXiv preprintarXiv:1606.05908.

          3. Kingma, D.P. and Welling, M., 2013. Auto-encoding variational bayes. arXiv

          preprint arXiv:1312.6114.

          4. MathWorks, “Train Variational Autoencoder (VAE) to Generate Images”,

          https://www.mathworks.com/help/deeplearning/ug/trainavariationalautoencoder-vae-to-generate-images.html (accessed Sep. 5, 2021).

          5. Van der Maaten, L. and Hinton, G., 2008. Visualizing data using t-SNE. Journal ofmachine learning research, 9(11).

           

          作者:趙健愚

          校對:汪雨晴

          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一区二区三区四区五区六区七区 | 波多野结衣av中文字幕 | 欧美在线se | 在线黄| 悠悠资源音影先锋在线观看 |