0
本文作者: AI研習(xí)社-譯站 | 2018-07-24 09:54 |
雷鋒網(wǎng) AI 研習(xí)社按:本文為雷鋒網(wǎng)字幕組編譯的技術(shù)博客,原標(biāo)題 GAN?—?Ways to improve GAN performance,作者為 Jonathan Hui 。
翻譯 | 姚秀清 郭蘊(yùn)哲 校對(duì) | 吳桐 整理 | 孔令雙
與其他深度網(wǎng)絡(luò)相比,GAN 模型在以下方面可能會(huì)受到嚴(yán)重影響。
不收斂:模型永遠(yuǎn)不會(huì)收斂,更糟糕的是它們變得不穩(wěn)定。
模式崩潰:生成器生成單個(gè)或有限模式。
慢速訓(xùn)練:訓(xùn)練生成器的梯度會(huì)消失。
作為 GAN 系列的一部分,本文探討了如何改進(jìn) GAN 的方法。 尤其在如下方面,
更改成本函數(shù)以獲得更好的優(yōu)化目標(biāo)。
在成本函數(shù)中添加額外的懲罰以強(qiáng)制執(zhí)行約束。
避免過(guò)度自信和過(guò)度擬合。
更好的優(yōu)化模型的方法。
添加標(biāo)簽。
生成器試圖找到最好的圖像來(lái)欺騙鑒別器。當(dāng)兩個(gè)網(wǎng)絡(luò)相互抵抗時(shí),“最佳“圖像會(huì)不斷變化。 然而,優(yōu)化可能變得過(guò)于貪婪,并使其成為永無(wú)止境的貓捉老鼠游戲。這是模型不收斂且模式崩潰的場(chǎng)景之一。
特征匹配改變了生成器的成本函數(shù),用來(lái)最小化真實(shí)圖像的特征與生成圖像之間的統(tǒng)計(jì)差異,即,它將目標(biāo)從擊敗對(duì)手?jǐn)U展到真實(shí)圖像中的特征匹配。 我們使用圖像特征函數(shù) f(x) 對(duì)真實(shí)圖像和生成圖像的均值間的L2范數(shù)距離來(lái)懲罰生成器。
其中 f(x) 是鑒別器立即層的輸出,用于提取圖像特征。
每個(gè)批次計(jì)算的實(shí)際圖像特征的平均值,都會(huì)波動(dòng)。這對(duì)于減輕模式崩潰來(lái)說(shuō)可能是個(gè)好消息。它引入了隨機(jī)性,使得鑒別器更難以過(guò)擬合。
當(dāng) GAN 模型在訓(xùn)練期間不穩(wěn)定時(shí),特征匹配是有效的。
當(dāng)模式坍塌時(shí),創(chuàng)建的所有圖像看起來(lái)都相似。為了緩解這個(gè)問(wèn)題,我們將不同批次的實(shí)際圖像和生成的圖像分別送給鑒別器,并計(jì)算圖像 x 與同一批次中其余圖像的相似度。 我們?cè)阼b別器的一個(gè)密集層中附加相似度 o(x) ,來(lái)確定該圖像是真實(shí)的還是生成的。
如果模式開始崩潰,則生成的圖像的相似性增加。鑒別器可以使用該分?jǐn)?shù)來(lái)檢測(cè)生成的圖像。這促使生成器生成具有更接近真實(shí)圖像的多樣性的圖像。
圖像 xi 與同一批次中的其他圖像之間的相似度 o(xi) 是通過(guò)一個(gè)變換矩陣 T 計(jì)算得到的。如下所示,xi 是輸入圖像,xj 是同一批次中的其余圖像。
方程式有點(diǎn)難以追蹤,但概念非常簡(jiǎn)單。(讀者可以選擇直接跳到下一部分。)我們使用變換矩陣 T 將特征 xi 轉(zhuǎn)換為 Mi , 一個(gè) B×C 的矩陣。
我們使用 L1 范數(shù)和下面的等式導(dǎo)出圖像 i 和 j 之間的相似度 c(xi, xj) 。
圖像 xi 與批次中其余圖像之間的相似度 o(xi) 為
這里是回顧:
引用自論文“ Improved Techniques for Training GANs ”
微批次鑒別使我們能夠非常快速地生成視覺(jué)上吸引人的樣本,在這方面它優(yōu)于特征匹配。
深度網(wǎng)絡(luò)可能會(huì)過(guò)自信。 例如,它使用很少的特征來(lái)對(duì)對(duì)象進(jìn)行分類。 深度學(xué)習(xí)使用正則化和 Dropout 來(lái)緩解問(wèn)題。
在 GAN 中,我們不希望模型過(guò)擬合,尤其是在數(shù)據(jù)噪聲大時(shí)。如果鑒別器過(guò)分依賴于某一小組特征來(lái)檢測(cè)真實(shí)圖像,則生成器可能迅速模仿這些特征以擊敗鑒別器。在 GAN 中,過(guò)度自信的負(fù)面作用嚴(yán)重,因?yàn)殍b別器很容易成為生成器利用的目標(biāo)。為了避免這個(gè)問(wèn)題,當(dāng)任何真實(shí)圖像的預(yù)測(cè)超過(guò) 0.9(D(實(shí)際圖像)> 0.9)時(shí),我們會(huì)對(duì)鑒別器進(jìn)行懲罰。 這是通過(guò)將目標(biāo)標(biāo)簽值設(shè)置為 0.9 而不是 1.0 來(lái)完成的。 這里是偽代碼:
p = tf.placeholder(tf.float32, shape=[None, 10])
# Use 0.9 instead of 1.0.
feed_dict = {
p: [[0, 0, 0, 0.9, 0, 0, 0, 0, 0, 0]] # Image with label "3"
}
# logits_real_image is the logits calculated by
# the discriminator for real images.
d_real_loss = tf.nn.sigmoid_cross_entropy_with_logits(
labels=p, logits=logits_real_image)
在歷史平均中,我們跟蹤最后 t 個(gè)模型的模型參數(shù)。 或者,如果我們需要保留一長(zhǎng)串模型,我們會(huì)更新模型參數(shù)的運(yùn)行平均值。
我們?yōu)槌杀竞瘮?shù)添加了如下的一個(gè) L2 成本,來(lái)懲罰不同于歷史平均值的模型。
對(duì)于具有非凸對(duì)象函數(shù)的 GAN,歷史平均可以迫使模型參數(shù)停止圍繞平衡點(diǎn)兜圈子,從而令其收斂。
為了擊敗生成器當(dāng)前產(chǎn)生的內(nèi)容,模型優(yōu)化可能變得過(guò)于貪婪。為了解決這個(gè)問(wèn)題,經(jīng)驗(yàn)回放維護(hù)了過(guò)去優(yōu)化迭代中最新生成的圖像。我們不僅僅使用當(dāng)前生成的圖像去擬合模型,而且還為鑒別器提供了所有最近生成的圖像。因此,鑒別器不會(huì)針對(duì)生成器某一特定時(shí)間段生成的實(shí)例進(jìn)行過(guò)度擬合。
許多數(shù)據(jù)集都帶有樣本對(duì)象類型的標(biāo)簽。訓(xùn)練 GAN 已經(jīng)很難了。因此,對(duì)于引導(dǎo) GAN 的訓(xùn)練來(lái)說(shuō),任何額外的幫助都可以大大提高其性能。添加標(biāo)簽作為潛在空間 z 的一部分, 有助于 GAN 的訓(xùn)練。如下所示 , CGAN 中采用的數(shù)據(jù)流就充分利用了樣本的標(biāo)簽。
成本函數(shù)重要嗎? 它當(dāng)然重要,否則那么多研究工作的心血都將是一種浪費(fèi)。但是如果你聽(tīng)說(shuō)過(guò) 2017 年 Google Brain 的一篇論文,你肯定會(huì)有疑慮。 但努力提升圖像質(zhì)量仍然是首要任務(wù)。因此在我們對(duì)成本函數(shù)的作用有一個(gè)明確的認(rèn)識(shí)之前,我們很有可能會(huì)看到研究人員仍在努力嘗試著不同的成本函數(shù)。
下圖列出了一些常見(jiàn) GAN 模型的成本函數(shù)。
表格改動(dòng)自這里:https://github.com/hwalsuklee/tensorflow-generative-model-collections
我們決定不在本文中詳細(xì)介紹這些成本函數(shù)。實(shí)際上,如果您想了解更多信息,我們強(qiáng)烈建議您細(xì)致地閱讀這些文章中的至少一篇:WGAN/WGAN-GP,EBGAN / BEGAN,LSGAN,RGAN 和 RaGAN 。 在本文的最后,我們還列出了一篇更詳細(xì)地研究成本函數(shù)的文章。 成本函數(shù)是 GAN 的一個(gè)主要研究領(lǐng)域,我們鼓勵(lì)您稍后閱讀該文章。
以下是某些數(shù)據(jù)集中的一些 FID 分?jǐn)?shù)(越低越好)。這是一個(gè)參考點(diǎn),但需要注意的是,現(xiàn)在對(duì)于究竟哪些成本函數(shù)表現(xiàn)最佳下結(jié)論還為時(shí)尚早。 實(shí)際上,目前還沒(méi)有哪一個(gè)成本函數(shù)在所有不同數(shù)據(jù)集中都具有最佳表現(xiàn)。
但缺乏好的超參數(shù)的模型不可能表現(xiàn)良好,而調(diào)參需要大量時(shí)間。所以在隨機(jī)測(cè)試不同的成本函數(shù)之前,請(qǐng)耐心地優(yōu)化超參數(shù)。
將圖像的像素值轉(zhuǎn)換到 -1 到 1 之間。在生成模型的最后一層使用 tanh 作為激活函數(shù)。
在實(shí)驗(yàn)中使用高斯分布對(duì) z 取樣。
Batch normalization 可以讓訓(xùn)練結(jié)果更穩(wěn)定。
上采樣時(shí)使用 PixelShuffle 和反卷積。
下采樣時(shí)不要使用最大池化而使用卷積步長(zhǎng)。
Adam 優(yōu)化通常比別的優(yōu)化方法表現(xiàn)的更好。
圖像交給判別模型之前添加一些噪聲,不管是真實(shí)的圖片還是生成的。
GAN 模型的動(dòng)態(tài)特性尚未得到很好的解釋。所以這些技巧只是建議,其優(yōu)化結(jié)果如何可能存在差異。例如,提出 LSGAN 的文章指出 RMSProp 在他們的實(shí)驗(yàn)中表現(xiàn)更加穩(wěn)定。這種情況非常稀少,但是也表明了提出普遍性的建議是非常困難的。
Batch normalization 已經(jīng)成為很多深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)中的事實(shí)標(biāo)準(zhǔn)。Batch normalization 的均值和方差來(lái)自當(dāng)前的 minibatch 。然而,它會(huì)在樣本之間創(chuàng)建依賴關(guān)系,導(dǎo)致生成的圖像不是彼此獨(dú)立的。
下圖顯示了在使用同一個(gè) batch 的數(shù)據(jù)訓(xùn)練時(shí),生成的圖像有著相同的色調(diào)。
上排圖像是橙色色調(diào),第二排圖像是綠色色調(diào)。 原文鏈接:https://arxiv.org/pdf/1701.00160v3.pdf
本來(lái), 我們對(duì)噪聲 z 是從隨機(jī)分布中采樣,為我們提供獨(dú)立樣本。然而,這種 batch normalization 造成的偏見(jiàn)卻抵消了 z 的隨機(jī)性。
Virtual batch normalization (VBN) 是在訓(xùn)練前從一個(gè) reference batch 中采樣。在前向傳播中,我們提前選擇一個(gè) reference batch 為 batch normalization 去計(jì)算 normalization 的參數(shù)( μ 和 σ )。 然而,我們?cè)谡麄€(gè)訓(xùn)練過(guò)程中使用同一個(gè) batch,會(huì)讓模型過(guò)擬合。為了解決這個(gè)問(wèn)題,我們將 reference batch 與當(dāng)前 batch 相結(jié)合起來(lái)計(jì)算參數(shù)。
用于初始化模型參數(shù)的隨機(jī)種子會(huì)影響 GAN 的性能。 如下表所示,測(cè)量GAN性能的FID分?jǐn)?shù)在50次獨(dú)立運(yùn)行(訓(xùn)練)中有所不同。但是波動(dòng)的范圍不大,并且可以在后續(xù)的微調(diào)中完成。
原文
一篇來(lái)自 Google Brain 的論文指出 LSGAN 偶爾會(huì)在某些數(shù)據(jù)集中失敗或崩潰,并且需要使用另一個(gè)隨機(jī)種子重新啟動(dòng)訓(xùn)練。
DGCAN 強(qiáng)力建議在網(wǎng)絡(luò)設(shè)計(jì)中加入 batch normalization 。 Batch normalization 的使用也成為許多深度網(wǎng)絡(luò)模型的一般做法。 但是,也會(huì)有例外。 下圖演示了 batch normalization 對(duì)不同數(shù)據(jù)集的影響。 y 軸是 FID 得分,越低越好。 正如 WGAN-GP 論文所建議的那樣,當(dāng)使用成本函數(shù) WGAN-GP 時(shí),不應(yīng)該使用 batch normalization 。 我們建議讀者檢查 batch normalization 上使用的成本函數(shù)和相應(yīng)的FID性能,并通過(guò)實(shí)驗(yàn)驗(yàn)證來(lái)設(shè)置。
對(duì)原文有所修改
模式崩潰可能并不全是壞事。 實(shí)際上,當(dāng)模式崩潰時(shí),圖像質(zhì)量通常會(huì)提高。 實(shí)際上,我們可以會(huì)為每種模式收集最佳模型,并使用它們來(lái)重建不同的圖像模式。
原文
判別模型和生成模型總是處于拉鋸戰(zhàn)中以相互削弱。生成模型積極創(chuàng)造最好的圖像來(lái)?yè)魯∨袆e模型。 但如果判別模型響應(yīng)緩慢,生成的圖像將收斂,模式開始崩潰。 相反,當(dāng)判別模型表現(xiàn)良好時(shí),原始生成模型的成本函數(shù)的梯度消失,學(xué)習(xí)速度慢。 我們可以將注意力轉(zhuǎn)向平衡生成模型和判別模型之間的損失,以便在訓(xùn)練 GAN 中找到最佳位置。 不幸的是,解決方案似乎難以捉摸。 在判別模型和生成模型之間的交替梯度下降中,定義它們之間的靜態(tài)比率似乎是有效的,但也有很多人懷疑它的效果。 如果說(shuō)已經(jīng)有人做過(guò)這件事的話,那就是研究人員每訓(xùn)練生成模型5次再更新判別模型的嘗試了。 其他動(dòng)態(tài)平衡兩個(gè)網(wǎng)絡(luò)的建議僅在最近才引起關(guān)注。
另一方面,一些研究人員認(rèn)為平衡這些網(wǎng)絡(luò)的可行性和愿景是很困難的。 訓(xùn)練有素的判別模型無(wú)論如何都能為生成模型提供高質(zhì)量的反饋。 然而訓(xùn)練生成模型使之能與判斷模型抗衡也并不容易。 相反,當(dāng)生成模型表現(xiàn)不佳時(shí),我們可能會(huì)將注意力轉(zhuǎn)向?qū)ふ也痪哂薪咏闾荻鹊某杀竞瘮?shù)。
然而問(wèn)題仍然是存在的。 人們提出了許多建議,研究者們對(duì)什么是最好的損失函數(shù)的爭(zhēng)論仍在繼續(xù)。
判別模型通常比生成模型更復(fù)雜(有更多濾波器和更多層),而良好的判別模型可以提供高質(zhì)量的信息。 在許多 GAN 應(yīng)用中,當(dāng)增加生成模型容量并沒(méi)有帶來(lái)質(zhì)量上的改進(jìn)時(shí),我們便遇到了瓶頸。 在我們確定遭遇了瓶頸并解決這個(gè)問(wèn)題之前,增加生成模型容量不會(huì)成為優(yōu)先考慮的選項(xiàng)。
在本文中,我們沒(méi)有對(duì)損失函數(shù)的改進(jìn)做進(jìn)一步的說(shuō)明。 這是一個(gè)重要的研究?jī)?nèi)容,我們建議讀者點(diǎn)擊下面的鏈接,對(duì)其有進(jìn)一步的了解。
GAN?—?A comprehensive review into the gangsters of GANs (Part 2)
這篇文章介紹了改進(jìn) GAN 的動(dòng)機(jī)和方向。在 medium.com 了解更多
一些 GAN 的酷酷的應(yīng)用:
GAN?—?Some cool applications of GANs.
我們?cè)?GAN 開發(fā)的最初幾年取得了不錯(cuò)的進(jìn)展。 不會(huì)再有只有郵票這么小分辨率的面部圖像……在 medium.com 了解更多
本系列所有文章:
GAN?—?GAN Series (from the beginning to the end)
一個(gè)涵蓋了 GAN 的應(yīng)用、問(wèn)題和解決方案的文章列表。
參考文獻(xiàn):
Improved Techniques for Training GANs
原文鏈接:
https://towardsdatascience.com/gan-ways-to-improve-gan-performance-acf37f9f59b
雷鋒網(wǎng) AI 研習(xí)社編譯。
號(hào)外號(hào)外~
一個(gè)專注于
AI技術(shù)發(fā)展和AI工程師成長(zhǎng)的求知求職社區(qū)
誕生啦!
歡迎大家訪問(wèn)以下鏈接或者掃碼體驗(yàn)
https://club.leiphone.com/page/home
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。