真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

VAE解讀-創(chuàng)新互聯(lián)

VAE
  • VAE(Variational AutoEncoder)變分自編碼器
  • 到底什么是生成模型
  • VAE核心
  • 參考文獻(xiàn)

創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計,海原網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:海原等地區(qū)。海原做網(wǎng)站價格咨詢:028-86922220VAE(Variational AutoEncoder)變分自編碼器
  • 要講擴(kuò)散模型,不得不提VAE。VAE和GAN一樣,都是從隱變量 Z Z Z生成目標(biāo)數(shù)據(jù) X X X。

  • 它們假設(shè)隱變量服從某種常見的概率分布(比如正態(tài)分布),然后希望訓(xùn)練一個模型 X = g ( Z ) X=g(Z) X=g(Z),這個模型將原來的概率分布映射到訓(xùn)練集的概率分布,也就是分布的變換。注意,VAE和GAN的本質(zhì)都是概率分布的映射。

  • tip:關(guān)于隱變量解釋:

    • 在統(tǒng)計里,隱變量是不可觀測的隨機(jī)變量,我們通常通過可觀測變量的樣本對隱變量作出推斷。
    • 舉例1:
      • 高斯混合模型中,GMM中隱變量指的是每個observation對應(yīng)的高斯component,由于產(chǎn)生過程是不可觀測的(或者說隱藏的),故得名隱變量。我們可以通過收集樣本對隱變量的后驗概率進(jìn)行推斷,然后用估計的后驗概率來對數(shù)據(jù)進(jìn)行聚類。
    • 舉例2:
      • 一個人拿著n個袋子,里面有m種顏色不同的球?,F(xiàn)在這個人隨機(jī)地抓球,規(guī)則如下:1. 先隨機(jī)挑一個袋子2. 從這個袋子中隨機(jī)挑一個球如果你站在這個人旁邊,你目睹了整個過程:這個人選了哪個袋子、抓出來的球是什么顏色的。然后你把每次選擇的袋子和抓出來的球的顏色都記錄下來(樣本觀察值),那個人不停地抓,你不停地記。最終你就可以通過你的記錄,推測出每個袋子里每種球顏色的大致比例。并且你記錄的越多,推測的就越準(zhǔn)(中心極限定理)。然而,抓球的人覺得這樣很不爽,于是決定不告訴你他從哪個袋子里抓的球,只告訴你抓出來的球的顏色是什么。這時候,“選袋子”的過程由于你看不見,其實就相當(dāng)于是一個隱變量。隱變量在很多地方都是能夠出現(xiàn)的?,F(xiàn)在我們經(jīng)常說的隱變量主要強(qiáng)調(diào)它的“l(fā)atent”。所以廣義上的隱變量主要就是指“不能被直接觀察到,但是對系統(tǒng)的狀態(tài)和能觀察到的輸出存在影響的一種東西”。所以說,很多人在研究隱變量。以及設(shè)計出各種更優(yōu)(比如如可解釋、可計算距離、可定義運算等性質(zhì))的隱變量的表示。
        在這里插入圖片描述
  • 換句話說,大致意思就是先用某種分布隨機(jī)生成一組隱變量,然后這個隱變量會經(jīng)過一個生成器生成一組目標(biāo)數(shù)據(jù)。VAE和GAN都希望這組數(shù)據(jù)的分布 X ^ \hat{X} X^和目標(biāo)分布 X X X盡量接近。

  • 但是這種方法本質(zhì)上是難以實現(xiàn),因為“盡量接近”并沒有一個確定的關(guān)于 X ^ \hat{X} X^和 X X X的相似度的評判標(biāo)準(zhǔn)。換句話說,這種方法的難度就在于,必須去猜測“它們的分布相等嗎”這個問題,而缺少真正interpretable的價值判斷。

    • `為什么用KL散度不行?
    • KL散度的公式: D K L ( A ∣ ∣ B ) = ∑ i P A ( x i ) log ? ( P A ( X i ) P B ( x i ) ) = ∑ i [ P A ( x i ) log ? ( P A ( x i ) ) ? P A ( x i ) log ? ( P B ( x i ) ) ] D_{KL}(A||B)=\sum_iP_A(x_i)\log(\frac{P_A(X_i)}{P_B(x_i)})=\sum_i[P_A(x_i)\log(P_A(x_i))-P_A(x_i)\log(P_B(x_i))] DKL?(A∣∣B)=i∑?PA?(xi?)log(PB?(xi?)PA?(Xi?)?)=i∑?[PA?(xi?)log(PA?(xi?))?PA?(xi?)log(PB?(xi?))]
    • 從公式可以一目了然,因為KL散度是針對兩個已知的概率分布求相似度的,而 X ^ \hat{X} X^和 X X X的概率分布目前都是未知。
  • GAN的做法就是直接把這個度量標(biāo)準(zhǔn)也學(xué)過來就行,相當(dāng)生猛。但是這樣做的問題在于依然不interpretable,非常不優(yōu)雅。VAE的做法就優(yōu)雅很多了,我們先來看VAE是怎么做的,理解了VAE以后再去理解Diffussion就很自然了。

到底什么是生成模型
  • 拿到一批sample(稱為 X X X),想要用 X X X學(xué)到它的分布 P ( X ) P(X) P(X) ,這樣就能同時學(xué)到?jīng)]被sample到的數(shù)據(jù)了,用這個分布 P ( X ) P(X) P(X)就能隨意采樣,然后獲得生成結(jié)果。但是這個分布很難實現(xiàn)。所以繞個彎,整一個隱變量 Z Z Z,這東西可以生成 Z Z Z。不妨假設(shè) Z Z Z滿足正態(tài)分布,那就可以先從正態(tài)分布里面隨便取一個 Z Z Z,,然后用 Z Z Z和 X X X的關(guān)系算出 P ( X ) P(X) P(X),公式: P ( X ) = ∑ Z P ( X ∣ Z ) P ( Z ) P(X)=\sum_ZP(X|Z)P(Z) P(X)=Z∑?P(X∣Z)P(Z)
  • 公式中 X X X是結(jié)果, Z Z Z是因,所以 P ( X ∣ Z ) P(X|Z) P(X∣Z)為似然估計, P ( Z ) P(Z) P(Z)是先驗
  • 換句話說,就是不直接求 P ( X ) P(X) P(X),而是造一個別的變量(好聽的名字叫“隱變量”),獲得這個隱變量和 X X X的關(guān)系,也能得到 P ( X ) P(X) P(X),這樣也可以得到一個很棒的生成模型。
  • 接下來就是結(jié)合自編碼器來實現(xiàn)重構(gòu),保證有效信息沒有丟失,再加上一系列的推導(dǎo),最后把模型實現(xiàn)。
VAE核心
  • 在整個 VAE 模型中,我們并沒有去使用 P ( Z ) P(Z) P(Z)(先驗分布,隱變量空間的分布)是正態(tài)分布的假設(shè),我們用的是假設(shè) P ( Z ∣ X ) P(Z|X) P(Z∣X)(后驗分布)是正態(tài)分布。

  • 具體來說,給定一個真實樣本 X k X_k Xk?,我們假設(shè)存在一個專屬于 X k X_k Xk?的分布 P ( Z ∣ X k ) P(Z|X_k) P(Z∣Xk?)(后驗分布),并進(jìn)一步假設(shè)這個分布是(獨立的、多元的)正態(tài)分布。

  • 為什么要強(qiáng)調(diào)“專屬”呢?

    • 因為我們后面要訓(xùn)練一個生成器 X = g ( Z ) X=g(Z) X=g(Z),希望能夠把從分布 P ( Z ∣ X k ) P(Z|X_k) P(Z∣Xk?) 采樣出來的一個 Z k Z_k Zk? 還原為 X k X_k Xk?。
    • 如果假設(shè) P ( Z ) P(Z) P(Z)是正態(tài)分布,然后從 p ( Z ) p(Z) p(Z)中采樣一個 Z Z Z,那么我們怎么知道這個 Z Z Z對應(yīng)于哪個真實的 X X X呢?
    • 現(xiàn)在 p ( Z ∣ X k ) p(Z|X_k) p(Z∣Xk?)專屬于 X k X_k Xk?,我們有理由說從這個分布采樣出來的 Z Z Z應(yīng)該要還原到 X k X_k Xk?中去。
  • 這時,每一個 X k X_k Xk?都配上了一個專屬的正態(tài)分布,,才方便后面的生成器做還原。但這樣有多少個 X X X就有多少個正態(tài)分布了( k k k個 X X Xsample,就有 k k k個正態(tài)分布 P ( X k ∣ Z ) P(X_k|Z) P(Xk?∣Z))。

  • 我們知道正態(tài)分布有兩組參數(shù):均值 μ μ μ和方差 σ 2 σ_2 σ2?(多元的話,它們都是向量),那怎么找出專屬于 X k X_k Xk?的正態(tài)分布 P ( Z ∣ X k ) P(Z|X_k) P(Z∣Xk?)的均值和方差呢?好像并沒有什么直接的思路。那好吧,那我就用神經(jīng)網(wǎng)絡(luò)來擬合出來吧!這就是神經(jīng)網(wǎng)絡(luò)時代的哲學(xué):難算的我們都用神經(jīng)網(wǎng)絡(luò)來擬合。

    • 這里的擬合與GAN不同,本質(zhì)上是在學(xué)習(xí) X k X_k Xk?和 Z Z Z的關(guān)系,而非學(xué)習(xí)比較 X X X與 X ^ \hat{X} X^的標(biāo)準(zhǔn)
  • 于是我們構(gòu)建兩個神經(jīng)網(wǎng)絡(luò) μ k = f 1 ( X k ) , log ? σ k 2 = f 2 ( X k ) μ_k=f_1(X_k),\logσ^2_k=f_2(X_k) μk?=f1?(Xk?),logσk2?=f2?(Xk?)來算它們了,。我們選擇擬合 log ? σ k 2 \logσ^2_k logσk2?而不是直接擬合 σ k 2 σ^2_k σk2?,是因為 σ k 2 σ^2_k σk2?總是非負(fù)的,需要加激活函數(shù)處理,而擬合 log ? σ k 2 \logσ^2_k logσk2?不需要加激活函數(shù),因為它可正可負(fù)。

  • 到這里,就能知道專屬于 X k X_k Xk?的均值和方差了,也就知道它的正態(tài)分布長什么樣了,然后從這個專屬分布中采樣一個 Z k Z_k Zk?出來,然后經(jīng)過一個生成器得到 X ^ k = g ( Z k ) \hat{X}_k=g(Z_k) X^k?=g(Zk?),現(xiàn)在我們可以放心地最小化 D ( X ^ k , X k ) 2 D(\hat{X}_k,X_k)^2 D(X^k?,Xk?)2,因為 Z k Z_k Zk?是從專屬 X k X_k Xk?的分布中采樣出來的,這個生成器應(yīng)該要把開始的 X k X_k Xk?還原回來。
    在這里插入圖片描述

  • 圖中均值方差計算模塊就是兩個神經(jīng)網(wǎng)絡(luò): μ k = f 1 ( X k ) , log ? σ k 2 = f 2 ( X k ) μ_k=f_1(X_k),\logσ^2_k=f_2(X_k) μk?=f1?(Xk?),logσk2?=f2?(Xk?)

  • 均值和方差的計算本質(zhì)上都是encoder,VAE其實利用了兩個encoder去分別學(xué)習(xí)均值和方差

  • 生成器是通過最小化 D ( X ^ k , X k ) 2 D(\hat{X}_k,X_k)^2 D(X^k?,Xk?)2來訓(xùn)練的,最終會使得 X k X_k Xk?和 X ^ k \hat{X}_k X^k?趨向一致

  • 因為 Z k Z_k Zk?是通過重新采樣過的,,而不是直接通過均值和方差encoder算出來的,所以這個生成器的輸入 Z Z Z是有噪聲的,也就是重構(gòu)過程受噪聲影響

  • 顯然噪聲會增加重構(gòu)的難度,不過好在這個噪聲強(qiáng)度(也就是方差決定的)通過一個神經(jīng)網(wǎng)絡(luò)算出來的,所以最終模型為了重構(gòu)得更好(也就是最終會使得 X k X_k Xk?和 X ^ k \hat{X}_k X^k?趨向一致),肯定會想盡辦法讓方差為 0 0 0。而方差為 0 0 0的話也就沒有隨機(jī)性了,所以不管怎么采樣其實都只是得到確定的結(jié)果(也就是均值,根據(jù)方差公式就可以得出每個采樣都是均值),只擬合一個當(dāng)然比擬合多個要容易,而均值是通過另外一個神經(jīng)網(wǎng)絡(luò)算出來的,模型則會慢慢退化成普通的AutoEncoder,噪聲不再起作用,VAE就變成AE了

  • VAE就是讓所有的 P ( Z ∣ X ) P(Z|X) P(Z∣X)趨于標(biāo)準(zhǔn)的正態(tài)分布 N ( 0 , I ) N(0,I) N(0,I),這樣就防止了噪聲為零,同時保證了模型具有生成能力。

  • 怎么理解“保證了生成能力”呢?

    • 根據(jù)定義: 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)
    • 其中 ∑ X P ( X ) = 1 \sum_X P(X)=1 ∑X?P(X)=1, P ( Z ∣ X ) ~ N ( 0 , I ) P(Z|X)\sim N(0,I) P(Z∣X)~N(0,I)
  • 這樣我們的先驗假設(shè)得證: P ( Z ) P(Z) P(Z)是標(biāo)準(zhǔn)的正態(tài)分布。然后就可以從 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)看齊呢?

    • 最直接的方法應(yīng)該是在重構(gòu)誤差的基礎(chǔ)上中加入額外的loss: L μ = ∥ f 1 ( X k ) ∥ 2 L_μ=∥f_1(X_k)∥^2 Lμ?=∥f1?(Xk?)∥2 L σ 2 = ∥ f 2 ( X k ) ∥ 2 L_{σ^2}=∥f2_(X_k)∥^2 Lσ2?=∥f2(?Xk?)∥2
    • 因為它們分別代表了均值 μ k μ_k μk?和方差的對數(shù) log ? σ k 2 \log σ_k^2 logσk2?,達(dá)到 N ( 0 , I ) N(0,I) N(0,I)就是希望二者盡量接近于 0 0 0。
  • 不過,這又會面臨著這兩個損失的比例要怎么選取的問題,選取得不好,生成的圖像會比較模糊。所以,原論文直接算了一般(各分量獨立的)正態(tài)分布與標(biāo)準(zhǔn)正態(tài)分布的KL散度 K L ( N ( μ , σ 2 ) ∥ N ( 0 , I ) ) KL(N(μ,σ^2)∥N(0,I)) KL(N(μ,σ2)∥N(0,I))作為這個額外的loss,計算結(jié)果為:
    KaTeX parse error: No such environment: equation at position 7: \begin{?e?q?u?a?t?i?o?n?}? \begin{aligned…

  • 下面分別里面的三項:

    • 第一項: ? ∑ i d P ( x ) log ? σ 2 -\sum_i^d P(x)\log \sigma^2 ?∑id?P(x)logσ2實際上就是 log ? μ 2 \log \mu^2 logμ2乘以概率密度求和為1,所以就是 ? l o g σ 2 -log \sigma^2 ?logσ2
    • 第二項:正態(tài)分布的二階矩,正態(tài)分布的二階矩為 μ 2 + σ 2 μ^2+σ^2 μ2+σ2
    • 第三項:-方差除以方差,所以等與 ? 1 -1 ?1
    • 所以 K L ( N ( μ , σ 2 ) ∥ N ( 0 , 1 ) ) = 1 2 ( ? log ? σ 2 + μ 2 + σ 2 ? 1 ) KL(N(μ,σ^2)∥N(0,1))=\frac{1}{2} (-\log \sigma^2 + \mu^2 + \sigma^2-1) KL(N(μ,σ2)∥N(0,1))=21?(?logσ2+μ2+σ2?1)
  • 即 L o s s μ , σ 2 = 1 2 ∑ i = 1 d ( ? log ? σ i 2 + μ i 2 + σ i 2 ? 1 ) Loss_{μ,σ^2} = \frac{1}{2} \sum_{i=1}^squ6kqw(-\log \sigma_i^2 + \mu_i^2 + \sigma_i^2-1) Lossμ,σ2?=21?i=1∑d?(?logσi2?+μi2?+σi2??1)

  • 這里的 d d d是隱變量 Z Z Z的維度,而 μ i μ_i μi?和 σ i 2 σ^2_i σi2?分別代表一般正態(tài)分布的均值向量和方差向量的第 i i i個分量。直接用這個式子做補(bǔ)充 l o s s loss loss,就不用考慮均值損失和方差損失的相對比例問題了。顯然,這個 l o s s loss loss也可以分兩部分理解:
    L o s s μ , σ 2 = L μ + L σ 2 Loss_{μ,σ^2}= L_\mu +L_\sigma^2 Lossμ,σ2?=Lμ?+Lσ2?
    L μ = 1 2 ∑ i = 1 d = 1 2 ∥ f 1 ( X ) ∥ 2 L_\mu=\frac{1}{2}\sum_{i=1}^squ6kqw=\frac{1}{2}∥f_1(X)∥^2 Lμ?=21?i=1∑d?=21?∥f1?(X)∥2
    L σ 2 = 1 2 ∑ i = 1 d ( ? log ? σ i 2 + σ i 2 ? 1 ) L_\sigma^2=\frac{1}{2}\sum_{i=1}^squ6kqw\left(-\log \sigma_i^2 + \sigma_i^2-1\right) Lσ2?=21?i=1∑d?(?logσi2?+σi2??1)

    VAE的本質(zhì)是什么?

  • 在VAE中,它的Encoder有兩個,一個用來計算均值,一個用來計算方差,這已經(jīng)讓人意外了:Encoder不是用來Encode的,是用來算均值和方差的,還是用神經(jīng)網(wǎng)絡(luò)計算的

  • 它本質(zhì)上就是在我們常規(guī)的自編碼器的基礎(chǔ)上,對encoder的結(jié)果(在VAE中對應(yīng)著計算均值的網(wǎng)絡(luò))加上了“高斯噪聲”(正態(tài)分布的隨機(jī)采樣),使得結(jié)果decoder能夠?qū)υ肼曈恤敯粜?;而那個額外的KL loss(目的是讓均值為0,方差為1),事實上就是相當(dāng)于對encoder的一個正則項,希望encoder出來的東西均有零均值,為了防止噪聲消失,將所有$P(Z|X)$趨近于標(biāo)準(zhǔn)正態(tài)分布,將encoder的均值盡量降為 0,而將方差盡量保持住。這樣一來,當(dāng)decoder訓(xùn)練的不好的時候,整個體系就可以降低噪聲;當(dāng)decoder逐漸擬合的時候,就會增加噪聲。

  • 那另外一個encoder(對應(yīng)著計算方差的網(wǎng)絡(luò))的作用呢?它是用來動態(tài)調(diào)節(jié)噪聲的強(qiáng)度的。直覺上來想,當(dāng)decoder還沒有訓(xùn)練好時(重構(gòu)誤差遠(yuǎn)大于KL loss),就會適當(dāng)降低噪聲(KL loss增加),使得擬合起來容易一些(重構(gòu)誤差開始下降);反之,如果decoder訓(xùn)練得還不錯時(重構(gòu)誤差小于KL loss),這時候噪聲就會增加(KL loss減少),使得擬合更加困難了(重構(gòu)誤差又開始增加),這時候decoder就要想辦法提高它的生成能力了。

在這里插入圖片描述

我們希望X經(jīng)過編碼后,Z的分布都具有零均值和單位方差,這個“希望”是通過加入了KL loss來實現(xiàn)的,如果現(xiàn)在多了類別信息Y,我們可以希望同一個類的樣本都有一個專屬的均值 μ Y μ^Y μY(方差不變,還是單位方差),這個 μ Y μ^Y μY讓模型自己訓(xùn)練出來。這樣的話,有多少個類就有多少個正態(tài)分布,而在生成的時候,我們就可以通過控制均值來控制生成圖像的類別。事實上,這樣可能也是在VAE的基礎(chǔ)上加入最少的代碼來實現(xiàn)CVAE的方案了,因為這個“新希望”也只需通過修改KL loss實現(xiàn):
L o s s μ , σ 2 = 1 2 ∑ i = 1 d ( ? log ? σ i 2 + ( μ i ? μ i Y ) 2 + σ i 2 ? 1 ) Loss_{μ,σ^2} = \frac{1}{2} \sum_{i=1}^squ6kqw(-\log \sigma_i^2 + (\mu_i-\mu_i^Y)^2 + \sigma_i^2-1) Lossμ,σ2?=21?i=1∑d?(?logσi2?+(μi??μiY?)2+σi2??1)

參考文獻(xiàn)

蘇劍林

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


新聞標(biāo)題:VAE解讀-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/dhgdpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部