深度生成模型如何工作?一起去看看VAE和GAN背後的功與名!
生成模型是使用無監督學習來學習任何類型的數據分布的有效方式,並且在短短几年內取得了巨大的成功。所有類型的生成模型都旨在學習訓練集的真實數據分布,從而產生具有一些變化的新數據點。但是,隱式或者顯式地學習我們的數據的確切分布並不總是可能的,所以我們試圖對與真實數據分布儘可能相似的分布建模。為此,我們可以利用神經網路的能力來學習一個能夠將模型分布逼近真實分布的函數。
兩種最常用和最有效的方法是變分自動編碼器(VAE)和生成敵對網路(GAN)。 VAE的目標是最大化降低數據邏輯可能性的下限,而GAN旨在實現發生器和鑒別器之間的平衡。在這篇文章中,將解釋VAE和GAN的工作以及他們背後的故事。
變分自動編碼器
這裡假設你們已經熟悉了一個 vanilla autoencoder的工作。我們可以使用自動編碼器將輸入圖像編碼為更小的維度表示,這可以存儲有關輸入數據分布的潛在信息。但在 vanilla autoencoder中,編碼矢量只能使用解碼器映射到相應的輸入。它當然不能用於生成具有某些變化的相似圖像。
為了實現這一點,模型需要學習訓練數據的概率分布。 VAE是以非監督的方式使用神經網路學習複雜數據分布的最流行的方法之一,例如使用神經網路。這是一個基於貝葉斯推理的概率圖模型,即該模型旨在學習訓練數據的潛在概率分布,以便它可以容易地從該學習分布中提取新的數據。這個想法是學習一個被稱為潛變數的訓練數據的低維潛在表示(我們假設已經產生了我們的實際訓練數據的潛變數(這些變數不是直接觀察到的,而是通過數學模型推斷的)。這些潛在變數可以存儲有關模型需要生成的輸出類型的有用信息。潛變數z的概率分布用P(z)表示。選擇高斯分布作為學習分布P(z)的先驗,以便在推理時間內容易地採樣新的數據點。
現在主要的目標是用一些參數來模擬數據,這些參數使得訓練數據X的可能性最大化。總之,我們假設一個低維的潛在向量產生了我們的數據x(x∈X),我們可以映射這個潛在的矢量數據x使用確定性函數f(z;θ)參數化θ然後評估(見圖1)。在這個生成過程中,我們的目標是最大化X中每個數據的概率,
P(X)=∫P?(X,Z)dz =∫P?(X z)P?(z)
這裡,f(z;θ)已被分布P(X z)所取代。1
這個最大似然估計背後的直覺是,如果模型可以從這些潛在變數中產生訓練樣本,那麼它也可以產生具有一些類似的變化樣本。換句話說,如果我們從P(z)中抽取大量潛在變數,並從這些變數中生成x,則生成的x應與數據分布Pdata(x)相匹配。現在我們有兩個問題需要回答。如何捕捉潛在變數的分布以及如何將方程1整合到z的所有維數上?
顯然,手工指定想要在潛在矢量中編碼的相關信息以生成輸出圖像是一項繁瑣的任務。相反,我們依靠神經網路來計算z,假設這個潛在向量可以很好地近似為一個正態分布,以便在推理時很容易地進行採樣。如果我們在n維空間中有一個正態分布,則總是可以使用足夠複雜的函數生成任何類型的分布,並且可以使用此函數的逆來學習潛在變數本身。
在方程1中,積分在z的所有維上進行,因此是棘手的。但是,可以使用蒙特卡羅方法來計算,這是不容易實現的。所以我們採用另一種方法來近似最大化等式1中的P(X)。VAE的想法是使用我們不知道的P(z X)來推斷P(z)。我們使用稱為變分推理的方法來推斷P(z X),這種方法基本上是貝葉斯統計中的一個優化問題。我們首先使用易於發現的簡單分布Q(z X)對P(z X)進行建模,並且我們嘗試使用KL散度度量方法來最小化P(z X)和Q之間的差異,這樣我們的假設就接近真實的分布。接下來是大量的數學方程,這裡不解釋,但是你可以在原文中找到它。
VAE的最終目標是:
上面的等式有一個非常好的解釋。術語Q(z X)基本上是我們的編碼器網路,z是我們對數據x(x∈X)的編碼表示,P(X z)是我們的解碼器網路。所以在上面的方程中,我們的目標是在DKL [Q(z X))給定的一些誤差下使數據分布的對數似然最大化。 P(Z X)]。由於P(z X)不易處理,但KL發散項≥> 0,因此可以很容易地看出,VAE試圖使日誌(P(X))的下界最小。這與最大化E [logP(X z)]和最小化DKL [Q(z X)相同P(Z X)]。我們知道最大化E [logP(X z)]是最大似然估計,並且使用解碼器網路來建模。如前所述,我們希望我們的潛在表示接近高斯,因此我們假設P(z)為N(0,1)。遵循這個假設,Q(z X)也應該接近這個分布。如果我們假設它是具有參數μ(X)和Σ(X)的高斯分布,則由KL發散給出的這兩個分布(即P(z)和Q(z X))之間的差異導致的誤差的解決方案如下。
我們優化了較低的變分邊界,優化函數是:
log(P(X z)) - DKL [Q(z X)‖P(z)],其中第二個的解如上所示。
因此,我們的損失函數將包含兩個項。第一個是輸入到輸出的重建損失,第二個損失是KL散度項。現在我們可以使用反向傳播演算法來訓練網路。但是存在一個問題,那就是第一項不僅取決於P的參數,而且還取決於Q的參數,但是這個依賴性並沒有出現在上面的方程中。那麼如何從分布Q(z X)或N [μ(X),Σ(X)]中隨機地穿過我們正在採樣的層z,以便P可以解碼。漸變不能流過隨機節點。我們使用重新參數化技巧(見圖)使網路可區分。我們從N(μ(X),Σ(X))中抽樣ε~N(0,I),然後計算z =μ(X)+Σ1/ 2(X)*ε。
圖2中顯示的很清楚。應該注意的是,前饋步驟對於這兩個網路(左側和右側)是相同的,但是漸變只能通過正確的網路進行反向傳播。
在推理時,我們可以簡單地從N(0,1)中採樣z,並將其饋送到解碼器網路以生成新的數據點。由於我們正在優化較低的變分界限,所以生成的圖像的質量相對於生成的對抗網路(Artrative Adversarial Networks)之類的最新技術相比確實是有點差別的。
VAE最好的一點就是學習生成模型和推理模型。儘管VAE和GAN都是使用無監督學習來學習基礎數據分布的方法,但與VAE相比,GAN產生更好的結果。在VAE中,我們優化了較低的變分邊界,而在GAN中,沒有這樣的假設。事實上,GAN不處理任何明確的概率密度估計。 VAE在產生清晰圖像方面的失敗意味著模型不能學習真正的後驗分布。 VAE和GAN在訓練方式上主要不同。現在讓我們進入生成對抗網路。
生成對抗網路
對抗訓練徹底改變了我們教神經網路完成特定任務的方式。生成對抗網路不像任何明確的密度估計一樣工作,如變分自動編碼器。相反,它是基於博弈論的方法,目標是找到兩個網路,發電機和鑒別器之間的納什均衡。其思想是從像高斯這樣的簡單分布中抽樣,然後學習利用通用函數逼近器(如神經網路)將這種雜訊轉換為數據分布。
這是通過這兩個網路的對抗性訓練來實現的。生成器模型G學習捕獲數據分布,鑒別器模型D估計樣本來自數據分布而不是模型分布的概率。基本上,生成器的任務是生成自然的圖像,鑒別器的任務是決定圖像是假的還是真實的。這可以被認為是兩個網路的性能隨著時間的推移而改善的迷你max雙人遊戲。在這個遊戲中,發生器試圖通過儘可能地產生真實圖像來欺騙鑒別器,並且通過提高鑒別能力,發生器不會被鑒別器所愚弄。下圖顯示了GAN的基本架構。
我們定義一個先驗輸入雜訊變數P(z),然後生成器將其映射到使用具有參數?g的復微分函數的數據分布。除此之外,我們還有另一個網路稱為鑒別器,它接受輸入x並使用另一個帶參數的微分函數。輸出表示x來自真實數據分布Pdata(x)的概率的單個標量值。 GAN的目標函數被定義為
在上面的等式中,如果鑒別器的輸入來自真實的數據分布,那麼D(x)應該輸出1來使上述目標函數最大化,而如果圖像從生成器產生,則D(G(z))應該輸出1以使目標函數最小化。從本質上來說,意味著G應該產生這樣的現實圖像,它可以愚弄D。採用梯度上升法和最小二乘法對鑒別器的t參數進行分析。但是在優化發電機目標方面存在一個問題。在遊戲開始時,發電機還沒有學到任何東西,梯度通常非常小,而且運行良好時,梯度非常高(見圖4)。但是我們想要相反的行為。因此我們將E [log(D(G(z))]最大化,而不是使E [log(1-D(G(z))]最小化。
訓練過程包括同時應用隨機梯度下降的鑒別器和發生器。在訓練過程中,我們交替進行優化D的k級步驟並在小批量上優化G的一個步驟。當鑒別器不能區分ρg和ρdata,即D(x,?d)= 1/2或ρg=ρdata時,訓練過程停止。
GAN應用卷積神經網路最早的模型之一是DCGAN,它代表了深度卷積生成對抗網路(Deep Convolutional Generative Adversarial Networks)。該網路將從均勻分布畫出的100個隨機數作為輸入,並輸出所需形狀的圖像。該網路由許多卷積、反卷積和完全聯通的層組成。網路使用許多反卷積層將輸入雜訊映射到所需的輸出圖像,批量標準化用於穩定網路的訓練。 ReLU激活在生成器中除了使用tanh層的輸出層之外的所有層,並且在Discriminator中的所有層使用Leaky ReLU。這個網路是使用小批量隨機梯度下降訓練的,Adam優化器被用來加速訓練和調整的超參數。這篇論文的結果非常有趣。作者指出,這些生成器具有有趣的矢量算術性質,我們可以用想要的方式來處理圖像。
GAN最廣泛使用的變體之一是有條件的GAN,它是通過簡單地將條件向量與雜訊向量一起添加而構成的(見圖7)。在cGAN之前,我們從隨機的雜訊樣本z中隨機生成圖像。如果我們想要生成具有某些所需功能的圖像,該怎麼辦?有什麼方法可以為模型提供額外的信息,不管我們想要生成什麼類型的圖像?答案是肯定的,有條件的GAN是這樣做的。通過對提供給生成器和鑒別器的附加信息調整模型,可以指導數據生成過程。有條件的GAN用於各種任務,如文本、圖像的生成、圖像到圖像的轉換,自動圖像標記等。下圖顯示了這兩個網路的統一結構。
GAN的一個很酷的地方是,即使用小的訓練數據也可以訓練他們。事實上,GAN的結果是有希望的,但是訓練過程並不簡單,尤其是建立網路的超參數。而且,由於不容易聚合,所以GAN難以優化。當然有一些技巧和竅門來破解GAN,但是它們可能並不總是有幫助的。你可以在這裡找到一些建議。此外,除了檢查生成的圖像是否有知覺現實,我們對結果定量評價沒有任何標準。
結論
深度學習模型在監督學習中真正實現了人類水平的表現,但對於無監督學習來說,情況並非如此。儘管如此,深度學習的科學家正在努力提高無監督模型的性能。在這篇文章中,我們看到了兩個最著名的無監督生成模型的學習框架是如何工作的。我們了解了變分自動編碼器中的問題,以及為什麼敵對網路能更好地生成逼真的圖像。但是,GANs存在一些問題,比如穩定他們的訓練,這仍然是一個活躍的研究領域。然而,GAN功能非常強大,目前它們正被用於高質量圖像(參見本視頻)和視頻生成,文本到圖像轉換、圖像增強、圖像對象的3D模型重建,音樂生成,癌症藥物發現等。除此之外,許多深度學習的研究人員也正在努力將這兩種模型統一起來,並使這兩種模型得到最好的結果。看到深度學習的進步速度越來越快,相信GANs會開放許多人工智慧的封閉門,比如半監督學習和強化學習。在接下來的幾年中,生成模型對於圖形設計,有吸引力的用戶界面的設計等將會非常有幫助。使用生成敵對網路生成自然語言文本也是可能的。
※我的最愛-椰蓉麵包!
※《黃帝內經》望聞問切——診脈獨取寸口的緣由
TAG:全球大搜羅 |