1.前言
機器學習可以分為兩類模型,一種是判別模型(discrimination model),給定乙個輸入,通過模型判別輸入的類別。另一種是生成模型(generative model),給定輸入,通過模型從而逼近資料的原始概率分布。
目前,比較有名的生成模型有:deep rbm 和
vae
然而,不管是rbm還是vae,他們本身要麼是通過複雜的馬爾科夫鏈進行逼近(rbm通過馬爾科夫鏈來避免explain away),而vae則是通過複雜的變分推斷從而逼近變分下界。他們的計算都過於麻煩。而生成對抗網路最大的優點,就是避免了複雜的馬爾科夫過程。
自從 ian goodfellow 在2014 年發表 ** generative adversarial nets 以來,生成式對抗網路 gan 廣受關注,加上學界大牛 yann lecun 在 quora 答疑時曾說,他最激動的深度學習進展是生成式對抗網路,這使得 gan 成為近兩年來在機器學習領域的新寵,在深度學習領域和影象處理方面更是有著獨特的優勢。可以說,研究深度學習的人,不懂 gan,簡直就是還沒入門。
2. 生成對抗網路
對抗網路是一種深度學習的演算法構架,和之前很火的對抗樣本是兩碼事。
生成對抗網路採用了真實樣本與生成器之間相互博弈,達到均衡的目的來訓練生成網路。整個網路包含兩部分,生成器generative,簡稱g,和判別網路discrimination,簡稱d。
給定資料x,設生成器的概率分布為pg
,通過乙個雜訊的pz
(z) 進行控制。這樣就可以通過生成器g,將z對映到乙個生成的樣本x,之後將生成的樣本和真實影象輸入判別模型d。其整個網路結構如下圖所示。
其目標函式為:
mingmaxdv
(d,g
)=ep
data
[log
d(x)
]+ep
z[lo
g(1−
d(g(
z)))
]在文中可以證明: 當
pg=p
data
整個演算法收斂於最優解。整個優化的過程可以看做下圖:
當訓練完成後,整個判別器對於輸入的樣本的是否屬於生成模型生成的結果的概率停留在50%。這也就達到了博弈的均衡點
下面我們來簡單介紹一下生成式對抗網路,主要通過三篇具有標誌性的**:1)generative adversarial networks;2)conditional generative adversarial nets;3)unsupervised representation learning with deep convolutional generative adversarial networks來介紹。
首先來看下第一篇**,了解一下 gan 的過程和原理:
gan 啟發自博弈論中的二人零和博弈(two-player game),gan 模型中的兩位博弈方分別由生成式模型(generative model)和判別式模型(discriminative model)充當。生成模型 g 捕捉樣本資料的分布,用服從某一分布(均勻分布,高斯分布等)的雜訊 z 生成乙個類似真實訓練資料的樣本,追求的效果是越像真實樣本越好;判別模型 d 是乙個二分類器,估計乙個樣本來自於訓練資料(而非生成資料)的概率,如果樣本來自於真實的訓練資料,d 輸出大概率,否則,d 輸出小概率。可以做如下模擬:生成網路 g 好比假幣製造團夥,專門製造假幣,判別網路 d 好比警察,專門檢測使用的貨幣是真幣還是假幣,g 的目標是想方設法生成和真幣一樣的貨幣,使得 d 判別不出來,d 的目標是想方設法檢測出來 g 生成的假幣。如圖所示:
在訓練的過程中固定一方,更新另一方的網路權重,交替迭代,在這個過程中,雙方都極力優化自己的網路,從而形成競爭對抗,直到雙方達到乙個動態的平衡(納什均衡),此時生成模型 g 恢復了訓練資料的分布(造出了和真實資料一模一樣的樣本),判別模型再也判別不出來結果,準確率為 50%,約等於亂猜。
上述過程可以表述為如下公式:
當固定生成網路 g 的時候,對於判別網路 d 的優化,可以這樣理解:輸入來自於真實資料,d 優化網路結構使自己輸出值接近1;當輸入的內容**於生成資料時,d 優化網路結構使自己的輸出 接近於0。當固定判別網路 d 的時候,g 優化自己的網路使自己輸出盡可能和真實資料一樣的樣本,並且使得生成的樣本經過 d 的判別之後,d 輸出高概率。
第一篇文章,在 mnist 手寫資料集上生成的結果如下圖:
最右邊的一列是真實樣本的影象,前面五列是生成網路生成的樣本影象,可以看到生成的樣本還是很像真實樣本的,只是和真實樣本屬於不同的類,類別是隨機的。
第二篇文章想法很簡單,就是給 gan 加上條件,讓生成的樣本符合我們的預期,這個條件可以是類別標籤(例如 mnist 手寫資料集的類別標籤),也可以是其他的多模態資訊(例如對影象的描述語言)等。用公式表示就是:
式子中的 y 是所加的條件,結構圖如下:
圖中所加的條件 y 是類別標籤。
第三篇文章,簡稱(dcgan),在實際中是**使用率最高的一篇文章,本系列文的**也是這篇文章**的初級版本,它優化了網路結構,加入了 conv,batch_norm 等層,使得網路更容易訓練,網路結構如下:
可以有加條件和不加條件兩種網路,**還做了好多試驗,展示了這個網路在各種資料集上的結果。有興趣同學可以去看**,此文我們只從**的角度理解去理解它。
深入理解GANs 生成對抗網路
本文與前文vae出自同一作者,在此筆者進行翻譯總結。生成隨機變數 從生成隨機變數開始討論,均勻分布變數可以通過偽隨機數過程生成。生成隨機變數的方法有很多,比如拒絕取樣,metropolis hasting algorithm和逆變換放法。逆變換法的思想就是均勻分布的變數通過累積分布概率 cdf 的逆...
半監督生成對抗網路 生成對抗網路
一 生成對抗網路相關概念 一 生成模型在概率統計理論中,生成模型是指能夠在給定某些隱含引數的條件下,隨機生成觀測資料的模型,它給觀測值和標註資料序列指定乙個聯合概率分布。在機器學習中,生成模型可以用來直接對資料建模,也可以用來建立變數間的條件概率分布。通常可以分為兩個型別,一種是可以完全表示出資料確...
生成對抗網路
我們提出乙個框架來通過對抗方式評估生成模型,我們同時訓練兩個模型 乙個生成模型g捕捉資料分布,乙個鑑別模型d估計乙個樣本來自於訓練資料而不是g的概率。g的訓練過程是最大化d犯錯的概率。這個框架與minmax兩個玩家的遊戲相對應。在任意函式g和d的空間存在乙個唯一解,g恢復訓練資料的分布,d等於1 2...