丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

本文作者: AI研習(xí)社-譯站 2019-08-14 10:34
導(dǎo)語:利用這些技巧,讓你的GAN旅程更平坦

一年前,我決定開始探索生成式對抗網(wǎng)絡(luò)(GANs)。自從我對深度學(xué)習(xí)產(chǎn)生興趣以來,我就一直對它們很著迷,主要是因為深度學(xué)習(xí)能做到很多不可置信的事情。當(dāng)我想到人工智能的時候,GAN是我腦海中最先出現(xiàn)的一個詞。 

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

GANs生成的人臉(StyleGAN)  

但直到我第一次開始訓(xùn)練GAN時,我才發(fā)現(xiàn)了這種有趣算法的雙面性:訓(xùn)練極其困難。確實,在我嘗試之前,我從論文上和其他人的嘗試中了解到這一點,但我一直認為他們夸大了一個本來很小但很容易克服的問題。

事實證明我錯了。

當(dāng)我嘗試生成與傳統(tǒng)的MNIST案例不同的東西時,我發(fā)現(xiàn)影響GAN有很大的不穩(wěn)定性問題,并且隨著我花在尋找解決方案上的時間的增加,這變得非常困擾我。

現(xiàn)在,在花費了無數(shù)天的時間研究已知的解決方案,并嘗試提出新的解決方案之后,我終于可以說我至少對GAN項目中收斂的穩(wěn)定性有了更多的掌控,您也可以。我不奢望你僅用10分鐘就解決這個問題,并在每一個項目中達到很完美的收斂結(jié)果(或用博弈論的話語表達,即納什平衡),但我想要給你一些技巧和技術(shù),你可以利用這些技巧讓你的GAN旅程更平坦,耗時更少,最重要的是,少一些的困惑。

  GANs 的現(xiàn)狀

自生成對抗性網(wǎng)絡(luò)提出以來,研究人員對其穩(wěn)定性問題進行了大量的研究。目前已有大量的文獻提出了穩(wěn)定收斂的方法,除此之外,還有大量的冗長而復(fù)雜的數(shù)學(xué)證明。此外,一些實用的技巧和啟發(fā)在深度學(xué)習(xí)領(lǐng)域浮出水面:我注意到,這些未經(jīng)證明,并沒有數(shù)學(xué)解釋的技巧,往往非常有效,不可丟棄。

隨著穩(wěn)定性的提高,生成現(xiàn)實圖像的方面也有了重大飛躍。你只需要看看來自英偉達的StyleGAN和來自谷歌的BigGAN的結(jié)果,就能真正意識到GANs已經(jīng)發(fā)展到了什么程度。

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

由BigGAN生成的圖像

在閱讀并嘗試了許多來自論文和實踐者的技巧之后,我整理了一個列表,列出了在訓(xùn)練GAN時應(yīng)該考慮和不應(yīng)該考慮的問題,希望能讓您對這個復(fù)雜且有時冗長的主題有進一步的了解。  

  1. 穩(wěn)定性和容量

當(dāng)我開始我的第一個獨立的GAN項目時,我注意到在訓(xùn)練過程的開始階段,判別器的對抗損失總是趨于零,而生成器的損失卻非常高。我立即得出結(jié)論,有一個網(wǎng)絡(luò)沒有足夠的“容量”(或參數(shù)數(shù)量)來匹配另一個網(wǎng)絡(luò):所以我立馬改變了生成器的架構(gòu),在卷積層上添加了更多的濾波器,但令我驚訝的是,什么改變都沒有。

在進一步探究網(wǎng)絡(luò)容量變化對訓(xùn)練穩(wěn)定性的影響后,我沒有發(fā)現(xiàn)任何明顯的相關(guān)性。兩者之間肯定存在某種聯(lián)系,但它并不像你剛開始想象的那么重要。 

因此,如果你發(fā)現(xiàn)自己的訓(xùn)練過程不平衡,而且也沒有出現(xiàn)一個網(wǎng)絡(luò)的容量明顯超過另一個網(wǎng)絡(luò)時,我不建議將添加或刪除濾波器作為主要解決方案。  

當(dāng)然,如果您對自己網(wǎng)絡(luò)的容量非常不確定,您可以在網(wǎng)上查看一些用于類似場景的架構(gòu)案例。

  2. 早停法(Early Stopping)

在GANs訓(xùn)練時,您可能會遇到的另一個常見的錯誤是,當(dāng)您看到生成器或鑒別器損失突然增加或減少時,立即停止訓(xùn)練。我自己也這么做過無數(shù)次:在看到損失增加之后,我立刻認為整個訓(xùn)練過程都被毀了,原因在于某些調(diào)得不夠完美的超參數(shù)。

直到后來,我才意識到,損失函數(shù)往往是隨機上升或下降的,這個現(xiàn)象并沒有什么問題。我取得了一些比較好的、實際的結(jié)果,而生成器的損失遠遠高于判別器的損失,這是完全正常的。因此,當(dāng)你在訓(xùn)練過程中遇到突然的不穩(wěn)定時,我建議你多進行一些訓(xùn)練,并在訓(xùn)練過程中密切關(guān)注生成圖像的質(zhì)量,因為視覺的理解通常比一些損失數(shù)字更有意義。

  3. 損失函數(shù)的選擇

在選擇用于訓(xùn)練GAN的損失函數(shù)時,我們應(yīng)該選擇哪一個呢?

近期的一篇論文解決了這個問題(論文地址:https://arxiv.org/abs/1811.09567),該論文對所有不同的損失函數(shù)進行了基準測試和比較:出現(xiàn)了一些非常有趣的結(jié)果。顯然,選擇哪個損失函數(shù)并不重要:沒有哪個函數(shù)絕對優(yōu)于其他函數(shù),GAN能夠在每種不同的情況下學(xué)習(xí)。  

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

論文結(jié)果:損失較少的即為更好的(https://arxiv.org/abs/1811.09567

因此,我的建議是從最簡單的損失函數(shù)開始,留下一個更具體和“最先進”的選擇作為可能的最后一步,正如我們從文獻中了解到的那樣,您很可能會得到更糟糕的結(jié)果。

  4.平衡發(fā)生器和判別器的權(quán)重更新

在許多GAN論文中,特別是一些早期的論文中,在實現(xiàn)部分中經(jīng)常可以看到,作者更新一次判別器時,都更新兩次或三次生成器。

在我的第一次嘗試中,我注意到在不平衡訓(xùn)練的情況下,判別器網(wǎng)絡(luò)幾乎每次都超過生成器(損失函數(shù)大大減少)。因此,當(dāng)我知道到即使是極其優(yōu)秀的論文作者也會有類似的問題,并采用了一個非常簡單的解決方案來解決它時,我對自己所做的事情充滿信心。

但在我看來,通過不同的網(wǎng)絡(luò)權(quán)重更新來平衡訓(xùn)練是一個目光短淺的解決方案。幾乎從不改變生成器更新其權(quán)重的頻率,成為了我穩(wěn)定訓(xùn)練過程的最終解決方案:它有時可以推遲不穩(wěn)定性的出現(xiàn),但直到收斂都無法解決它。當(dāng)我注意到這種策略無效時,我甚至試圖使它更加動態(tài)化,根據(jù)兩個網(wǎng)絡(luò)的當(dāng)前丟失狀態(tài)來改變權(quán)值更新進度;直到后來我才發(fā)現(xiàn),我并不是唯一一個試圖走這條路的人,和其他許多人一樣,我也沒有成功地克服不穩(wěn)定性。

直到后來我才明白,其他技術(shù)(稍后在本文中解釋)對提高訓(xùn)練穩(wěn)定性的作用要大得多。  

  5. Mode Collapse問題和學(xué)習(xí)率

如果您正在訓(xùn)練GANs,您將肯定知道什么是Mode Collapse。這個問題在于生成器“崩潰”了,并且總是將每一個輸入的隱向量生成單一的樣本 。在GAN的訓(xùn)練過程中,這是一個相當(dāng)常見的阻礙,在某些情況下,它會變得相當(dāng)麻煩。

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

Mode Collapse的例子

如果你遇到這種情況,我建議你最直接的解決方案是嘗試調(diào)整GAN的學(xué)習(xí)速度,因為根據(jù)我的個人經(jīng)驗,我總是能夠通過改變這個特定的超參數(shù)來克服這個阻礙。根據(jù)經(jīng)驗,當(dāng)處理Mode Collapse問題時,嘗試使用較小的學(xué)習(xí)率,并從頭開始訓(xùn)練。 

學(xué)習(xí)速度是最重要的超參數(shù)之一,即使不是最重要的超參數(shù),即使是它微小變化也可能導(dǎo)致訓(xùn)練過程中的根本性變化。通常,當(dāng)使用更大的Batch Size時,您可以設(shè)置更高的學(xué)習(xí)率,但在我的經(jīng)驗中,保守一點幾乎總是一個安全的選擇。  

還有其他方法可以緩解Mode Collapse問題,比如我從未在自己的代碼中實現(xiàn)過的特征匹配(Feature Matching)和小批量判別(Minibatch Discrimination),因為我總是能找到另一種方法來避免這種困難,但如果需要,請自行關(guān)注這些方法。  

  6. 添加噪聲

眾所周知,提高判別器的訓(xùn)練難度有利于提高系統(tǒng)的整體穩(wěn)定性。其中一種提高判別器訓(xùn)練復(fù)雜度的方法是在真實數(shù)據(jù)和合成數(shù)據(jù)(例如由生成器生成的圖像)中添加噪聲;在數(shù)學(xué)領(lǐng)域中,這應(yīng)該是有效的,因為它有助于為兩個相互競爭的網(wǎng)絡(luò)的數(shù)據(jù)分布提供一定的穩(wěn)定性。我推薦嘗試使用這種方法,因為它在實踐中一般比較有效(即使它不能神奇地解決您可能遇到的任何不穩(wěn)定問題),而且設(shè)置起來只需要很少代價。話雖如此,我開始會使用這種技術(shù),但過了一段時間后就放棄了,而是更喜歡其他一些在我看來更有效的技術(shù)。  

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

  7. 標簽平滑

達到相同目的的另一種方法是標簽平滑,這種方法更容易理解和實現(xiàn):如果真實圖像的標簽設(shè)置為1,我們將它更改為一個低一點的值,比如0.9。這個解決方案阻止判別器對其分類標簽過于確信,或者換句話說,不依賴非常有限的一組特征來判斷圖像是真還是假。我完全贊同這個小技巧,因為它在實踐中表現(xiàn)得非常好,并且只需要更改代碼中的一兩個字符。  

  8. 多尺度梯度

當(dāng)處理不是太小的圖像(如MNIST中的圖像)時,您需要關(guān)注多尺度梯度。這是一種特殊的GAN實現(xiàn),由于兩個網(wǎng)絡(luò)之間的多個跳連接,梯度流從判別器流向生成器,這與傳統(tǒng)的用于語義分割的U-Net類似。  

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

MSG-GAN架構(gòu) 

多尺度梯度論文的作者能夠通過訓(xùn)練GAN直接生成高清晰度的1024x1024圖像,沒有任何特別大的問題(Mode Collapse等),而在此之前,只有Progressively-Growing GAN(英偉達,ProGAN)才有可能。我已經(jīng)在我的項目中實現(xiàn)了它,我得到了到一個更穩(wěn)定的訓(xùn)練過程以及更有說服力的結(jié)果。查看論文(https://arxiv.org/abs/1903.06048)以獲得更多的細節(jié),并嘗試它!

  9. 雙時間尺度更新規(guī)則

當(dāng)我說雙時間尺度的更新規(guī)則(TTUR)時,您可能認為我說的是GAN訓(xùn)練中使用的一種復(fù)雜而清晰的技術(shù),但是完全不是這樣。這種技術(shù)只是為了讓生成器和鑒別器選擇不同的學(xué)習(xí)率,僅此而已。在首次引入TTUR的論文中(https://arxiv.org/abs/1706.08500),作者提供了一個該算法收斂于納什平衡的數(shù)學(xué)證明,并證明了使用不同的學(xué)習(xí)率實現(xiàn)了一些較有名的GAN(DCGAN, WGAN-GP),并取得了最先進的結(jié)果。  

但是當(dāng)我說到“使用不同的學(xué)習(xí)速率”時,我在實踐中真正的應(yīng)該怎么做呢?一般來說,我建議為判別器選擇一個更高的學(xué)習(xí)率,而為生成器選擇一個更低的學(xué)習(xí)率:這樣一來,生成器必須用更小的更新幅度來欺騙判別器,并且不會選擇快速、不精確和不現(xiàn)實的方式來贏得博弈。為了給出一個實際的例子,我經(jīng)常將判別器的學(xué)習(xí)率選為0.0004,將生成器的學(xué)習(xí)率選為0.0001,我發(fā)現(xiàn)這些值在我的一些項目中表現(xiàn)得很好。請記住,在使用TTUR時,您可能會注意到生成器有更大的損失量。 

  10. 譜歸一化

在一些論文中,如介紹SAGAN(或Self - Attention GAN)的論文中,表明譜歸一化是應(yīng)用于卷積核的一種特殊的歸一化,它可以極大地提高訓(xùn)練的穩(wěn)定性。它最初只在判別器中使用,后來被證明如果用于生成器的卷積層也是有效的,我可以完全贊同這個策略!

我?guī)缀蹩梢哉f,發(fā)現(xiàn)和實現(xiàn)譜歸一化使我的GAN旅程出現(xiàn)了方向性的改變,直率地講,我沒有看到任何理由不使用這種技術(shù):我可以保證它會給你一個更好和更穩(wěn)定的訓(xùn)練結(jié)果,同時讓您關(guān)注其他更加有趣的方面的深度學(xué)習(xí)項目!(詳見這篇論文:https://arxiv.org/abs/1802.05957

  結(jié)論

許多其他技巧,更復(fù)雜的技術(shù)和體系結(jié)構(gòu)都有望解決GANs的訓(xùn)練問題:在本文中,我想告訴您我個人的發(fā)現(xiàn)并實現(xiàn)了哪些方法來克服遇到的障礙。  

因此,如果您在學(xué)習(xí)這里介紹的每種方法和技巧時,發(fā)現(xiàn)自己陷入了困境,那么還有更多的資料需要研究。我只能說,在花了無數(shù)的時間研究和嘗試了所有可能的解決GAN相關(guān)問題的方法之后,我對我的項目更加自信了,我真的希望你們也能這樣做。  

最后,衷心感謝您閱讀并關(guān)注這篇文章,希望您能獲得一些有價值的東西。

via https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628

想要查看相關(guān)介紹和參考文獻?

點擊【被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗】即可訪問~

AI研習(xí)社全網(wǎng)獨家直播 IJCAI 2019,以下是今天的具體直播場次及日程,歡迎大家關(guān)注收看~

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

14日:

08:30-09:20: Invited Talk  

11:00-12:30:Panel:50 years of IJCAI  

14:00-14:50:Invited Talk

直播地址:https://ai.yanxishe.com/page/meeting/47

雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

被 GANs 虐千百遍后,我總結(jié)出來的 10 條訓(xùn)練經(jīng)驗

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說