生成式对抗网络Generative Adversarial Networks(GANs)
1. 前言
2. 參考資料
3. 研究背景
4. GAN的框架
4.1 對抗框架(Adeversarial Nets)
*關于“無監督學習”的說明
4.2 Minimax two-player game(Loss)
4.3 Training procedure
5. GAN的應用
6. 結語
1. 前言
GAN(Generative Adversarial Networks),是生成對抗網絡于2014年由Ian Good fellow在他的論文Generative Adversarial Nets提出。
在GAN被提出之后,立刻在機器學習領域得到了巨大反響,并且被科學工作者們應用在許多領域,且取得了令人印象深刻的成果。在2016NIPS會議上,Goodfellow對GAN做了一次長達2個小時的報告,將GAN的原理,訓練tips,以及一些影響比較大的GAN變體等等綜合在一起,信息量比較大。
2. 參考資料
Paper: Generative Adversarial Nets.
Slide:”Generative Adversarial Networks,” NIPS 2016 tutorial.
3. 研究背景
其實在機器學習中主要分為兩類模型:
1. 判別模型(Discriminative model)
實現高維的、人可以感知的信息(如聲音、圖片等)到一個標簽(可以是語義,類別)的映射,如上圖,我們向判別模型輸入一張貓的圖片,就能輸出”cat”的標簽。
2. 生成模型(Generative model)
學習的是真實數據的概率分布,并且模擬真實數據的生成。對大家來說可能較為常見的例子就是自動編碼器(Autoencoder)和反卷積(Transposed convolution),對這兩者我稍微解釋一下。
- 自動編碼器:見上圖,自動編碼器分為encoder(編碼器)和decoder(解碼器)。將圖片輸入自動編碼器時,編碼器首先對圖像進行編碼,然后通過解碼器恢復成原圖。在整個網絡訓練好以后,如果我們將編碼器去掉,留下從code通過解碼器的一個結構,那這個就是生成真實數據的過程,因此code通過decoder這部分結構這屬于一種生成模型。
- 反卷積:卷積實際上會對圖片進行下采樣,而反卷積的過程會對圖像進行上采樣,這個上采樣的過程也是一種生成的過程,因此也屬于生成模型。在討論的時候,學長提到反卷積可以被歸為自動編碼器,因為卷積和反卷積的kernel是互為轉置的關系,與解碼器與編碼器之間的關系一致,但是我表示不同意啦,因為在訓練時,自動編碼器的編碼器和解碼器是一起訓練的,但是反卷積的核是利用訓練好的卷積核進行變換的,即不是聯合訓練得到的。(Update:17.9.14,還沒研究過反卷積,日后可能需要修改。)
生成模型的任務是學習概率密度并且生成數據,但在求解真實數據的概率密度分布的過程中有很大難度,常用的方法有最大似然估計(Maximum likelihood estimation)等,要求解概率幾乎無法進行。
而Goodfellow就想到一種超奇妙的方法,利用判別網絡(D)和生成網絡(G)兩個網絡一起訓練,成功繞開以上的難點,模擬真實數據的生成。
4. GAN的框架
論文提出了一個新的網絡,通過一個對抗的過程來估計生成模型。在這個過程中會同時訓練兩個模型:一個生成模型GG用于估計數據分布,一個判別模型DD來預測一個樣本是來自訓練集(真實數據集)而非GG的概率。對于GG來說訓練過程就是要使DD判斷錯誤的可能性最大化。
形象一點說,生成模型GG是一個造假幣的人,而辨別模型DD是一個鑒別真假幣的人,GG的目標是造出能夠以假亂真的假幣,而DD的目標是正確判別真假,倆人最開始都是新手,DD鑒別能力如果變強,則GG的造假能力也必須變強才能蒙蔽DD的雙眼;GG造假能力變強之后,DD也必須提高自己的鑒別能力才能做一個合格的鑒別師。于是DD和GG在相互博弈的過程當中不斷提高各自的能力,理論上來說,最終GG則能夠造出接近和真幣一樣的假幣。
4.1 對抗框架(Adeversarial Nets)
將這個框架應用到圖像生成上,就有了下面這個框架:
同樣,框架中涉及到兩個網絡GG和DD,對這倆網絡參數進行更加詳細的解釋:
xfake=G(z;θ(G))xfake=G(z;θ(G)):表示GG的輸入是噪聲zz(符合特定分布),輸出xx,即假的圖片,而θ(G)θ(G)則是生成器GG里的待訓練權重集合;
D(x;θ(D))∈[0,1]D(x;θ(D))∈[0,1]:表示DD的輸入是xx(分為xfakexfake和xrealxreal),DD會對輸入的圖片xx做一個判斷,得到xx是真的概率,由此輸出一個范圍在[0,1][0,1]之間的數,θ(D)θ(D)則是辨別器DD里的待訓練參數集合。
上圖中的工作流程解釋:
從符合特定分布的噪聲中采樣一定數目的點zz輸入生成器,生成假造的數據xfakexfake向DD輸入,另外向DD同時輸入的還有真實數據xrealxreal。按照DD和GG各自的目標:DD希望辨別真假的能力強,則希望相應的D(xreal)D(xreal)接近1,而D(xfake)D(xfake)(即D(G(z))D(G(z)))接近0;而GG的任務是希望D(xfake)D(xfake)(即D(G(z))D(G(z)))接近1。
上述的”1”和”0”其實可以看作是對輸入打上的標簽,那么GG和DD的矛盾點在于,對于輸入DD中的G(z)G(z),DD希望D(G(z))D(G(z))能對應標簽0,而GG希望它對應標簽1。
*關于“無監督學習”的說明
GAN還很吸引人的一點是,它是無監督學習,也就是說輸入數據時是不需要輸入標簽的,那就讓人很好奇了,要同時訓練新手GG和新手DD,GG由DD引導學習,那沒有標簽的情況下誰來引導DD學習呢?
所以這里要說明的一點是,確實我們不需要向DD輸入標簽,但不代表在訓練的時候沒有標簽。上圖有表明,xx的數據來源有兩個,一個是輸入的training data,一個是G(z)G(z),這就是說只要是輸入的數據一定是real,而生成的數據一定是fake,由此根據數據來源不同就可以確定樣本是real還是fake,在程序中就可以根據數據來源給數據打上相應標簽”1”或者”0”。所以DD在訓練的時候是有標簽的,training data(real)的標簽是”1”,generated data(fake)的標簽是”0”,所以其實DD就是一個普通的判別器,在訓練的時候既有數據又有標簽,利用標簽和DD輸出的loss利用隨機梯度下降的方法(STD)來求解DD中的參數θ(D)θ(D)。
4.2 Minimax two-player game(Loss)
前文已經到DD和GG的各自目標,以及兩者在數據G(z)G(z)上的矛盾。將這個矛盾以數學公式的形式表示出來如下:
這個公式就叫做GG和DD之間的Minimax two-player game。
以下從GG和DD的角度對這個公式進行分析:
1. DD的角度:
上述公式左邊部分表示DD希望V(D,G)V(D,G)的值盡量大。
公式右邊前半部分
————————————————
版權聲明:本文為CSDN博主「yucicheung」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yucicheung/article/details/77950324
總結
以上是生活随笔為你收集整理的生成式对抗网络Generative Adversarial Networks(GANs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的四种遍历方式
- 下一篇: SpringCloud底层原理