GAN基礎

Generative Adversarial Networks 算法

  1. GAN框架

        GAN框架是有兩個對象(discriminator,generator)的對抗遊戲。generator是一個生成器,generator產生來自和訓練樣本同樣的分佈的樣本。discriminator是一個判別器,判別是真實數據仍是generator產生的僞造數據。discriminator使用傳統的監督學習技術進行訓練,將輸入分紅兩類(真實的或者僞造的)。generator訓練的目標就是欺騙判別器。 網絡

    遊戲中的兩個參與對象由兩個函數表示,每一個都是關於輸入和參數的可微分函數。discriminator是一個以 x 做爲輸入和使用θ(D) 爲參數的函數D,D(x)是指判斷輸入樣本x是真實樣本的機率 ;generator由一個以z爲輸入使用 θ(G) 爲參數的函數G,G(z)是指輸入樣本z產生一個新的樣本,這個新樣本但願接近真實樣本的分佈。 框架

    discriminator與generator都用兩個參與對象的參數定義的代價函數。discriminator但願僅控制住θ(D) 情形下最小化 J(D)(D), θ(G))。generator但願在僅控制θ(D) 情形下最小化 J(G)(D)(G))由於每一個參與對象的代價依賴於其餘參與對象的參數,可是每一個參與對象不能控制別人的參數,這個場景其實更爲接近一個博弈而非優化問題。優化問題的解是一個局部最小,這是參數空間的點其鄰居有着不小於它的代價。而對一個博弈的解釋一個納什均衡。在這樣的設定下,Nash 均衡是一個元組,( θ(D), θ(G)) 既是關於θ(D)的 J(D) 的局部最小值和也是關於θ(G)的 J(G) 局部最小值。 函數

    圖 1 GAN兩種場景 性能

    如圖 1所示GAN有兩種場景,第一種場景(左圖),discriminator對象隨機從樣本集中取一個元素X做爲輸入,discriminator對象的目標是以真實樣本X做爲輸入時,儘可能判斷D(x)爲1;而第二種場景(右圖),具備discriminator和generator兩個對象的參與,generator對象以噪聲變量z做爲輸入,而後產生一個樣本G(z),discriminator對象以G(z)做爲輸入並儘可能判斷D(G(z) )爲0;而generator對象的目標是儘可能讓discriminator對象計算D(G(z) )爲1。最後這個遊戲是達到納什均衡(Nash equilibrium),即G(z)產生的數據樣本分佈與真實數據樣本分佈同樣,即對於全部的輸入x,D(x) 的計算結果爲0.5。 學習

  2. ANN函數

    GAN是由一個判別模型(discriminator)和生成模(generator)型組成。其中discriminator和generator能夠由任何可微函數來描述,如圖 4所示是採用兩個多層的神經網絡來描述discriminator和generator模型,即圖中的G和D函數。 優化

    圖 2 ui

     

    generator是一個可微分函數 G。當 z 從某個簡單的先驗分佈中採樣出來時,G(z) 產生一個從 pmodel 中的樣本。通常來講, GAN對於generator神經網絡只有不多的限制。若是咱們但願 pmodel 是 x 空間的支集(support),咱們須要 z 的維度須要至少和 x 的維度同樣大,並且 G 必須是可微分的,可是這些其實就是僅有的要求了。 spa

  3. 損失函數

  4. discriminator的代價

  5. 交叉熵[2]

    交叉熵代價函數(Cross-entropy cost function)是用來衡量人工神經網絡(ANN)的預測值與實際值的一種方式。交叉熵損失函數定義以下: .net

    其中:

  • x表示樣本
  • y表示樣本x對應的標籤
  • a表示以樣本x做爲輸入,模型的輸出標籤
  • n表示樣本的總數,當爲二分類時n爲2

 

  1. discriminator優化

    目前爲 GANs 設計的全部不一樣的博弈針對discriminator的 J(D) 使用了一樣的代價函數。他們僅僅是generator J(G) 的代價函數不一樣。

    discriminator的代價函數是:

    其中:    表示在分佈上的指望,D(x)爲機率函數。

    其實就是標準地訓練一個sigmoid 輸出的標準二分類器交叉熵代價函數。惟一的不一樣就是分類器在兩個 minibatch 的數據上進行訓練;一個來自數據集(其中的標籤均是 1),另外一個來自生成器(其標籤均是 0)。

    經過給discriminator模型定義損失函數後,將優化discriminator模型轉移爲優化等式,即訓練discriminator模型就是爲了最小化discriminator的等式。

     

  2. Minimax

    GAN框架有兩個參與對象discriminator和generator ,上一節只考慮優化discriminator模型,還須要考慮優化generator模型。GAN使用了零和博弈思想爲generator模型定義損失函數。在零和博弈遊戲中,其全部參與人的代價老是 0,即在遊戲中贏的得正數,輸的得負數,因此總和爲0。在零和博弈中,參加遊戲雙方的得分互爲相反數,因此根據discriminator的損失函數,可推導出generator的損失函數爲:

    因此優化generator模型,同樣是優化 損失函數,即最小化該損失函數。因爲和兩個損失函數只是互爲相反數,因此能夠將兩個等式合併爲一個優化等式。即

     

     

    因爲咱們訓練D來最大化分配正確標籤給不論是來自於訓練樣例仍是G生成的樣例的機率.咱們同時訓練G來最小化。換句話說,DG的訓練是關於值函數V(G,D)的極小化極大的二人博弈問題:

    其中:

  • G表示生成模型,D表示分類模型
  • x~pdata(x) 表示x取自訓練數據的分佈
  • z~p(z) 表示z取自咱們模擬數據的分佈

 

圖 3

如圖 2所示a-b是模型G和D的優化過程,黑色的虛線表示訓練數據的分佈;綠色的實線表示模型G產生的分佈;藍色的虛線表示模型D的計算值;水平X軸表示D函數的計算值;水平z軸表示噪聲值。一開始G的產生分佈於真實數據分佈偏離較大,且模型D對真實數據和僞造數據區分能力較強,即對真實數據D函數的計算值較大,而對僞造數據D函數的計算值較小,如圖a;隨着模型的訓練,G數據分佈於真實數據分佈逐漸重合,如圖d,最後D的計算值恆等爲0.5。

 

  1. 訓練過程

    訓練過程包含同時隨機梯度降低 simultaneous SGD。在每一步,會採樣兩個 minibatch:一個來自數據集的 x 的 minibatch 和一個從隱含變量的模型先驗採樣的 z 的 minibatch。而後兩個梯度步驟同時進行:一個更新 θ(D) 來下降 J(D),另外一個更新 θ(G) 來下降 J(G)。這兩個步驟均可以使用你選擇的基於梯度的優化算法。

    生成對抗網絡的minibatch隨機梯度降低訓練。判別器的訓練步數,k是一個超參數。在咱們的試驗中使用k=1,使消耗最小。

    圖 4

  2. 理論分析

    GAN的設計思想採用discriminator和generator兩個模型進行對抗優化,本章用兩個證實來從理論上論證了對抗網絡的合理性。

  3. 命題一:全局最優

    命題:當G固定的時候,D會有惟一的最優解。真實描述以下:

    證實以下:

  • 首先,根據連續函數的指望計算方式,對V(G,D)進行變換:

  • 對於任意的a,b ∈ R2 \ {0, 0}, 下面的式子在a/(a+b)處達到最優:

因此得證。

  1. 命題二:收斂性

    命題:若是G和D有足夠的性能,對於算法中的每一步,給定G時,判別器可以達到它的最優,而且經過更新pg來提升這個判別準則。

    則pg收斂爲pdata

     

    證實略,看不太懂。

     

  2. CycleGAN[5]

  3. 概述

    CycleGAN的原理能夠概述爲: 將一類圖片轉換成另外一類圖片 。也就是說,如今有兩個樣本空間X和Y,咱們但願把X空間中的樣本轉換成Y空間中的樣本。(獲取一個數據集的特徵,並轉化成另外一個數據集的特徵).

    圖 5

  4. 形式化

    CycleGAN模型的學習目標是訓練兩個映射函數:G:XàY和F:YàX,同時CycleGAN模型還包含了兩個相關的discriminator對象:Dx和Dy。Dy是爲了區分G函數產生的數據和Y數據;而Dx是爲了區分F函數產生的數據和X數據,如圖 5(a)所示。

  5. 對抗損失函數

    如3.2小節所示介紹的對抗網絡,對於一個映射函數G:XàY,和discriminator對象DY,則GAN的損失函數定義爲:

    其中,映射函數G是將X領域的數據轉換爲相似Y領域的數據,而DY就是判別真實的Y數據和G僞造的Y數據。即GAN的優化目標是:。一樣的對於映射F:YàX,和discriminator對象DX,能夠定義一個GAN損失函數的優化目標:.

  6. 循環一致損失函數

    理論上GAN可以學習兩個映射函數G和F,其可以分別從X或Y一個領域的數據生成到另外一個領域的數據。可是因爲映射函數變換可能性很是多,沒法保證映射函數可以將一個領域的輸入數據xi轉換爲其它領域的數據yi。爲了減小映射函數的變換範圍或可能性,CycleGAN增長了一些約束函數來限制這種變換範圍過大的問題。

    如圖 5(b)所示,經過映射函數G和F,能夠從X領域的數據樣本變換爲領域Y的數據樣本,再變換爲X領域的數據樣本,從而生成一個環,即:,同理有圖 5(c)的。因此原始數據樣本x和循環產生的數據F(G(x))之間確定有差別,那麼能夠定義一致性損失函數爲:

    其中式中的方括號是使用了L1規範化。

  7. 完整表達式

    綜上所述,CycleGAN的損失函數能夠完整表達爲:

    其中控制了映射函數G和F的相對重要性。因此CycleGAN的優化目標是:

    其中G和F兩個映射函數的內部結構互相彼此獨立,即它們能將一個數據樣本映射到另外一個領域的數據樣本。

  8. 實現

    CycleGAN網絡的實現就是定義四個神經網絡:G、F、Dx和Dy;而後優化這個最終的表達式,

     

  9. 參考文獻

    1. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks.
相關文章
相關標籤/搜索