GAN,生成對(duì)抗網(wǎng)絡(luò)鸦列,了解這種方法需要了解以下概念。
淺層的理解:
生成對(duì)抗網(wǎng)絡(luò)一般由G和D兩個(gè)網(wǎng)絡(luò)組成鹏倘,有點(diǎn)像幾年前的一個(gè)目標(biāo)跟蹤算法TLD算法薯嗤,以生成圖片為例,G網(wǎng)絡(luò)負(fù)責(zé)生成新的圖片纤泵,D網(wǎng)絡(luò)負(fù)責(zé)分辨D生成的圖片和真正dataset里面的圖片骆姐,訓(xùn)練的目的是讓G生成的圖片足夠逼真以至于D網(wǎng)絡(luò)不能分辨真假镜粤,即分辨正確率接近50%。論文中給出的例子類似于一個(gè)印刷假鈔團(tuán)伙和打假團(tuán)隊(duì)互相訓(xùn)練指導(dǎo)印假鈔團(tuán)伙印出的假鈔足以以假亂真玻褪。
一個(gè)生動(dòng)的應(yīng)用例子:
這篇知乎文章通俗易懂地解釋了GAN并給出了一個(gè)自己生成卡通人物頭像的demo肉渴,從爬數(shù)據(jù)到生成結(jié)果比較完善。
具體來說就是先輸入一張隨機(jī)生成的初始圖带射,一般是高斯噪聲同规,然后經(jīng)過多個(gè)iteration,比如經(jīng)過一個(gè)epoch之后的結(jié)果:
最后得到一個(gè)令D難以分辨真假的圖窟社,如:
這里輸入的初始圖像是噪聲圖券勺,那么如果輸入的低像素(LR)圖,輸出高分辨率(HR)圖灿里,也是類似的道理关炼。比如SRGAN。
深入探究原理
abstract :
和上面的內(nèi)容主要一致匣吊,需要注意的是There is no need for any Markov chains or unrolled approximate inference networks during either training or generation of samples.按照是否需要定義概率密度函數(shù)可以分為Implicit density和Explicit density盗扒。前者表示不需要定義概率密度函數(shù)如馬爾科夫鏈模型和這里的GAN。
不同的sampling:
原始采樣法ancestral sampling:?
①將樣本按照從小到大的順序排序缀去,保證每一個(gè)樣本的父樣本不會(huì)比當(dāng)前樣本更大
②從最小的樣本開始從分布p(x)中提取該樣本的概率p(x1), 然后一次取后面樣本的條件概率,最后相乘甸祭。如上圖所示缕碎。
采用原始采樣法的算法如:GAN和VAE
迭代采樣iterative sampling,包括多次pass over所有的變量池户,迭代地提高樣本的質(zhì)量咏雌。通常這種處理包括在整個(gè)空間內(nèi)模擬一個(gè)馬爾科夫鏈,通常是非定向模型的選擇校焦。
Adversarial nets
定義一個(gè)先驗(yàn)的噪聲變量pz(z)赊抖,然后映射到數(shù)據(jù)空間通過G(z;θg),這里G是一個(gè)通過多重感知機(jī)通過參數(shù)theta g。然后定義另一個(gè)多層感知機(jī)D(x;θd)輸出一個(gè)單一的尺度(我理解為得到一個(gè)常數(shù)也就是判斷的結(jié)果)寨典。D(x)代表x是從數(shù)據(jù)集而不是G(z;θg)也就是pz(z)的概率氛雪。我們訓(xùn)練D來最大化分辨正確的概率,同步訓(xùn)練G來最小化log(1 -D(G(z)))耸成。也就是我們常見的下面的公式:
如上圖所示:x表示數(shù)據(jù)集空間分布报亩,z表示模型給出的分布,黑點(diǎn)表示數(shù)據(jù)集中采樣數(shù)據(jù)井氢,綠線表示G得到的參數(shù)給出的結(jié)果分布弦追,藍(lán)點(diǎn)線表示D來區(qū)分黑點(diǎn)和綠線之間的分類,a中是一開始的時(shí)候x和z差很大花竞,D可以很好地將兩個(gè)空間分開劲件,為了降低D的正確率G逐漸靠近黑點(diǎn),導(dǎo)致后面藍(lán)色的點(diǎn)線不能很好地分類,變成一條直線零远。這是一種形象的對(duì)于對(duì)抗網(wǎng)絡(luò)過程的表示苗分。
這個(gè)是文章中給出的算法偽代碼,可以看到在訓(xùn)練的迭代過程中遍烦,從噪聲先驗(yàn)Pg(z)中采樣m個(gè)再從數(shù)據(jù)集采樣m個(gè)(這里采樣用到的也就是上面的ancestral sampling)上面紅色框出來的部分可以看到俭嘁,D在更新的時(shí)候方向是“ascending”梯度,也就是向著loss function上升變大的方向服猪,增大判別的正確率供填;而G則“descending”并且不是前面的function,而是只考慮了使D的正確率下降就好了罢猪。
后面是算法的細(xì)節(jié)
比如知道了D優(yōu)化的方向之后怎么求更新后的D:
證明略近她,也就是求一個(gè)超越方程的極值。確定了·D的最優(yōu)解之后優(yōu)化G:
當(dāng)且僅當(dāng)Pg=Pdata的時(shí)候有極值膳帕,為-log4粘捎,推導(dǎo)過程略,最后得到
Experiments
原作者的實(shí)驗(yàn)中主要用到了MNIST攒磨、TFD、CIFAR-10數(shù)據(jù)集汤徽,G網(wǎng)絡(luò)使用混合的整流線性激活函數(shù)和sigmoid激活函數(shù)娩缰;G網(wǎng)絡(luò)是用macout激活。
訓(xùn)練D網(wǎng)絡(luò)的過程中用到了Dropout谒府。
測試的時(shí)候通過在測試機(jī)里面加上一個(gè)Gaussian Parzen window拼坎。細(xì)節(jié)實(shí)現(xiàn)比如sigma的確認(rèn)和likelihood的計(jì)算略。
Advantages and disadvantages
劣:沒有pg(x)的明確定義完疫;D和G在訓(xùn)練的時(shí)候必須是同步的泰鸡,而且為了避免“the Helvetica scenario” G不能比D訓(xùn)練過頭太多。
優(yōu):對(duì)抗模型可能會(huì)從生成網(wǎng)絡(luò)里面獲取一些統(tǒng)計(jì)上的又是壳鹤,因?yàn)樯删W(wǎng)絡(luò)不是直接由數(shù)據(jù)及給出的盛龄,而是通過D網(wǎng)絡(luò)得到的。也就是說輸入的參數(shù)沒有直接被復(fù)制到生成網(wǎng)絡(luò)的參數(shù)中芳誓。
另外作者還給出了生成對(duì)抗網(wǎng)絡(luò)可能的擴(kuò)展讯嫂,對(duì)后面的工作有指導(dǎo)作用。