生成對抗網(wǎng)絡(luò)(GAN)是通過競爭(“對抗”)學(xué)習(xí)從特定分布中選取樣本(“生成”)的神經(jīng)網(wǎng)絡(luò)。GAN由生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)組成,并通過生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的相互對抗進(jìn)行訓(xùn)練。因此,要理解GAN,不僅需要理解生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)兩部分,還需要理解這兩個(gè)網(wǎng)絡(luò)在訓(xùn)練過程中是如何相互影響的。而理解這兩個(gè)網(wǎng)絡(luò)在訓(xùn)練過程中迭代、動(dòng)態(tài)、復(fù)雜的相互作用對初學(xué)者而言很有挑戰(zhàn)性,有時(shí)甚至專家也沒有完全理解整個(gè)過程。
為此,佐治亞理工學(xué)院Minsuk Kahng、Polo Chau和Google Brain的Nikhil Thorat、Fernanda Viégas、Martin Wattenberg合作開發(fā)了GAN Lab。這一交互式的可視化工具,可以幫助理解GAN的內(nèi)部機(jī)制。
GAN Lab
閑話少敘,現(xiàn)在就隨論智君一起上手體驗(yàn)下GAN Lab吧。
首先,訪問https://poloclub.github.io/ganlab/,稍等片刻,讓頁面加載完畢。之后在左上角選擇數(shù)據(jù)樣本。GAN常用于生成圖像,但可視化圖像這樣的高維數(shù)據(jù)很麻煩。為了盡可能清晰地展示數(shù)據(jù)分布,GAN Lab使用了二維數(shù)據(jù)點(diǎn)(x, y)。
如圖所示,左側(cè)的模型概覽包含數(shù)據(jù)分布的小圖,右側(cè)顯示數(shù)據(jù)分布的大圖。
點(diǎn)擊運(yùn)行按鈕,開始訓(xùn)練后,我們能在最右看到不斷更新的測度,上為生成網(wǎng)絡(luò)、判別網(wǎng)絡(luò)的損失,下為KL散度和GL散度。
而右側(cè)的數(shù)據(jù)分布視圖中,除了原先的綠點(diǎn)(真實(shí)樣本),我們還能看到一些紫點(diǎn)(生成樣本)。在訓(xùn)練過程中,生成樣本的位置持續(xù)更新,最終趨向于和真實(shí)樣本的分布重疊。GAN Lab使用了綠色和紫色,而不是通常的綠色和紅色,是因?yàn)椴幌胱屓藢⑸蓸颖韭?lián)想為負(fù)面情形。
然后左側(cè)就是GAN模型架構(gòu),訓(xùn)練過程中,虛線將示意數(shù)據(jù)流動(dòng)方向。運(yùn)行按鈕邊上有一個(gè)慢動(dòng)作按鈕,點(diǎn)擊后能放慢訓(xùn)練過程,更清楚細(xì)致地查看數(shù)據(jù)的流動(dòng)。
鼠標(biāo)懸浮于生成網(wǎng)絡(luò)(Generator),可以看到從隨機(jī)噪聲到生成樣本的流形變換過程。透明度編碼了密度,也就是說,透明度越高,生成數(shù)據(jù)點(diǎn)所在空間就越小。另外,勾選Generator下的小框后,在右側(cè)的數(shù)據(jù)分布視圖中也將顯示生成數(shù)據(jù)點(diǎn)的流形。
判別網(wǎng)絡(luò)(Discriminator)上,決策邊界可視化為二維熱圖。綠色表示判別網(wǎng)絡(luò)分類為真實(shí)樣本,紫色表示判別網(wǎng)絡(luò)分類為生成樣本。顏色深淺編碼了置信度,也就是說,顏色越深,判別網(wǎng)絡(luò)對自己的判斷就越自信。隨著訓(xùn)練的進(jìn)行,判別網(wǎng)絡(luò)的熱圖總體趨向于灰色,意味著判別網(wǎng)絡(luò)越來越難以分辨真實(shí)樣本和虛假樣本。另外,判別網(wǎng)絡(luò)輸出的預(yù)測,同樣使用顏色深淺編碼置信度。同樣,勾選Discriminator下的小框后,右側(cè)的數(shù)據(jù)分布視圖也將顯示熱圖。
最后,右側(cè)的數(shù)據(jù)分布視圖用紫線可視化了生成網(wǎng)絡(luò)的梯度。在訓(xùn)練中,梯度刺向背景熱圖的綠色區(qū)域,這意味著生成網(wǎng)絡(luò)正努力嘗試欺騙判別網(wǎng)絡(luò)。
下圖為訓(xùn)練了111個(gè)epoch后的整體效果:
交互性
慢動(dòng)作模式按鈕旁,有步進(jìn)按鈕,點(diǎn)擊一下就訓(xùn)練一個(gè)epoch。而且,甚至可以選擇只訓(xùn)練生成網(wǎng)絡(luò)或判別網(wǎng)絡(luò)。
上:只訓(xùn)練生成網(wǎng)絡(luò);中:只訓(xùn)練判別網(wǎng)絡(luò);下:同步訓(xùn)練
點(diǎn)擊模型概覽上的鉛筆圖標(biāo)可以修改模型的超參數(shù),包括隨機(jī)噪聲分布(均勻、高斯),生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的隱藏層層數(shù)、每層神經(jīng)元數(shù)、優(yōu)化方法、學(xué)習(xí)率、損失函數(shù)。
論智君胡亂調(diào)參后,模型崩塌了
除了修改模型超參數(shù)之外,還可以自行設(shè)置分布。點(diǎn)擊左上角數(shù)據(jù)分布區(qū)域的鉛筆圖標(biāo),可以自行繪制新分布。
實(shí)現(xiàn)技術(shù)
GAN Lab基于TensorFlow.js實(shí)現(xiàn)(作者之一 Nikhil Thorat是TensorFlow.js的領(lǐng)導(dǎo)開發(fā)者),整個(gè)GAN網(wǎng)絡(luò)的訓(xùn)練都在瀏覽器中完成!
作者開源了代碼,只需輸入如下幾個(gè)命令,就可以在自己的機(jī)器上運(yùn)行GAN Lab:
git clone https://github.com/poloclub/ganlab.git
cd ganlab
yarn prep
./scripts/watch-demo
>> Waitingfor initial compile...
>> 3462522 bytes written to demo/bundle.js (2.17 seconds) at 00:00:00
>> Starting up http-server, serving ./
>> Available on:
>> http://127.0.0.1:8080
>> Hit CTRL-C to stop the server
GAN網(wǎng)絡(luò)的變體很多,如果想要可視化偏愛的GAN變體,歡迎參與GAN Lab開發(fā)。
-
圖像
+關(guān)注
關(guān)注
2文章
1080瀏覽量
40378 -
GaN
+關(guān)注
關(guān)注
19文章
1910瀏覽量
72755 -
可視化
+關(guān)注
關(guān)注
1文章
1167瀏覽量
20863
原文標(biāo)題:生成對抗網(wǎng)絡(luò)交互式可視化 GAN Lab
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論