对抗生成网络(GAN)学习笔记
生成模型與判別模型
判別模型:由數據直接學習決策函數Y=f(X)或條件概率分布P(Y|X)作為預測模型,即判別模型。判別方法關心的是對于給定的輸入X,應該預測什么樣的輸出Y。
生成模型:由數據學習聯合概率分布P(X,Y), 然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作為預測的模型。該方法表示了給定輸入X與產生輸出Y的生成關系。
如LR,SVM等均值直接根據輸入樣本的特征X來判斷得出結果Y。而樸素貝葉斯則是借助聯合分布來判斷樣本的類別,P(Y|X)=P(X,Y)/P(X)
判別模型與生成模型的比較
1、生成模型可以轉化為判別模型,但判別模型不能轉化為生成模型。
2、生成模型收斂速度比較快,當樣本數量較多時,生成模型能更快。地收斂于真實模型。
3、判別模型比較節省計算資源,需要的樣本數量也少于生成模型。
對抗生成網絡(GAN)的作用
目前在做深度學習中,大部分是使用對樣本數量比較依賴的監督學習。而實際中,很難在每一方面都能找到大量的數據樣本用于監督學習模型的訓練。而GAN將在一定程度上擺脫對大量數據樣本的依賴,因為GAN能夠去學習生成與真實樣本很像的假的樣本,這些假樣本連分類器都難以很好的區分真假,從而在一定程度上彌補了深度學習模型對樣本的依賴。
如上圖,左邊是真實的mnist數據集中的手寫數字,右邊是用GAN的生成器G生成的手寫數字,兩邊數字如果混在一起的話,一般人根本分不清誰真誰假。
GAN的工作原理
工作原理
GAN主要是由一個生成器G(Generator)和一個判別器D(Discriminator)組成。生成器去生成假樣本,而判別器則去分辨這個生成的樣本是真實的樣本還是生成的假樣本。生成器的任務是提高作假能力去生成逼真的樣本使判別器分辨不出真假,而判別器的任務則是提高分辨能力去分辨樣本的真假。
GAN的一個形象比喻:用一個形象的比喻來說,生成器就像一個作假畫的人,判別器就像一個警察。作假畫的人想要做出假畫讓警察查不出來,于是他就要學習不斷提高他的作假能力,而警察為了打假,不斷去提高他的分辨假畫的能力。兩者不斷對抗博弈,直到作假畫的人成功騙過警察,警察再也分辨不出畫的真假。
生成器
對于生成器,輸入需要一個n維度向量,輸出為圖片像素大小的圖片。因而首先我們需要得到輸入的向量。輸入向量一般只需服從某一分布即可(一般用高斯分布),且向量的長度不宜太小。
判別器
判別器就類似于一般深度學習中使用的分類器,如CNN,來分辨真偽。
訓練過程
如下圖:
黑色虛線表示真實樣本分布,綠色實線表示生成器生成的數據分布,藍色虛線表示判別器
(a)一開始的時候,生成器生成的數據并不很像真實數據,判別器能夠大致分出真偽,但分的不好
(b)生成器不動,判別器訓練若干次之后,判別器能夠較好的分別真偽
(c)判別器不動,生成器經過訓練之后,生成的樣本更加貼近真實樣本
(d)經過上面b、c步驟的循環訓練,最終生成器非常貼近真實數據,判別器已經無法分辨真偽
GAN中訓練優化的目標函數如下
公式中,先固定生成器不變,訓練得到使誤差最大的判別器(因為判別器的任務就是使誤差最大以便分辨真假),然后再固定判別器不變,訓練得到使誤差最小的生成器(因為生成器的任務就是減小誤差達到難以分辨)
論文中給出的訓練過程如下
總結
以上是生活随笔為你收集整理的对抗生成网络(GAN)学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小黄鸭调试法-程序猿修炼之道
- 下一篇: 彻底关闭Antimalware Serv