WGAN-GP (improved wgan)
WGAN-GP是WGAN之后的改進(jìn)版,主要還是改進(jìn)了連續(xù)性限制的條件,因?yàn)?,作者也發(fā)現(xiàn)將權(quán)重剪切到一定范圍之后,比如剪切到[-0.01,+0.01]后,發(fā)生了這樣的情況,發(fā)現(xiàn)大多數(shù)的權(quán)重都在-0.01 和0.01上,這就意味了網(wǎng)絡(luò)的大部分權(quán)重只有兩個(gè)可能數(shù),對(duì)于深度神經(jīng)網(wǎng)絡(luò)來說不能充分發(fā)揮深度神經(jīng)網(wǎng)絡(luò)的擬合能力,簡直是極大的浪費(fèi)。并且,也發(fā)現(xiàn)強(qiáng)制剪切權(quán)重容易導(dǎo)致梯度消失或者梯度爆炸,梯度消失很好理解,就是權(quán)重得不到更新信息,梯度爆炸就是更新過猛了,權(quán)重每次更新都變化很大,很容易導(dǎo)致訓(xùn)練不穩(wěn)定。梯度消失與梯度爆炸原因均在于剪切范圍的選擇,選擇過小的話會(huì)導(dǎo)致梯度消失,如果設(shè)得稍微大了一點(diǎn),每經(jīng)過一層網(wǎng)絡(luò),梯度變大一點(diǎn)點(diǎn),多層之后就會(huì)發(fā)生梯度爆炸 。為了解決這個(gè)問題,并且找一個(gè)合適的方式滿足lipschitz連續(xù)性條件,作者提出了使用梯度懲罰(gradient penalty)的方式以滿足此連續(xù)性條件。
梯度懲罰就是既然Lipschitz限制是要求判別器的梯度不超過K,那么可以通過建立一個(gè)損失函數(shù)來滿足這個(gè)要求,即先求出判別器的梯度d(D(x)),然后建立與K之間的二范數(shù)就可以實(shí)現(xiàn)一個(gè)簡單的損失函數(shù)設(shè)計(jì)。但是注意到D的梯度的數(shù)值空間是整個(gè)樣本空間,對(duì)于圖片(既包含了真實(shí)數(shù)據(jù)集也包含了生成出的圖片集)這樣的數(shù)據(jù)集來說,維度及其高,顯然是及其不適合的計(jì)算的。作者提出沒必要對(duì)整個(gè)數(shù)據(jù)集(真的和生成的)做采樣,只要從每一批次的樣本中采樣就可以了,比如可以產(chǎn)生一個(gè)隨機(jī)數(shù),在生成數(shù)據(jù)和真實(shí)數(shù)據(jù)上做一個(gè)插值于是就算解決了在整個(gè)樣本空間上采樣的麻煩。
所以WGAN-GP的貢獻(xiàn)是:
◆ 提出了一種新的lipschitz連續(xù)性限制手法—梯度懲罰,解決了訓(xùn)練梯度消失梯度爆炸的問題。
◆ 比標(biāo)準(zhǔn)WGAN擁有更快的收斂速度,并能生成更高質(zhì)量的樣本
◆ 提供穩(wěn)定的GAN訓(xùn)練方式,幾乎不需要怎么調(diào)參,成功訓(xùn)練多種針對(duì)圖片生成和語言模型的GAN架構(gòu)
但是論文提出,由于是對(duì)每個(gè)batch中的每一個(gè)樣本都做了梯度懲罰(隨機(jī)數(shù)的維度是(batchsize,1)),因此判別器中不能使用batch norm,但是可以使用其他的normalization方法,比如Layer Normalization、Weight Normalization和Instance Normalization,論文中使用了Layer Normalization,weight normalization效果也是可以的。