各種出色的GAN變體

本文不涉及的內(nèi)容

首先乍丈,你不會在本文中發(fā)現(xiàn):

復(fù)雜的技術(shù)說明

代碼(盡管有為那些感興趣的人留的代碼鏈接)

詳盡的研究清單(點擊這里進行查看 鏈接:http://suo.im/2opXlF)

本文涉及的內(nèi)容

關(guān)于 GAN 的相關(guān)主題的總結(jié)

許多其他網(wǎng)站抹缕、帖子和文章的鏈接,幫助你確定專注點

目錄

1. 理解 GAN

2. GAN: 一場革命

1. DCGAN

2. 改進的 DCGAN

3. 條件性 GAN

4. InfoGAN

5. Wasserstein GAN

3. 結(jié)語

理解 GAN

如果你熟悉 GAN启搂,可以跳過本節(jié)。

如果你正在閱讀本文,很有可能已聽說 GAN 大有前途。這種夸張說法合理嗎儡陨?以下是 Facebook人工智能研究室主任楊立昆(Yann LeCun)對 GAN 的看法:

生成對抗網(wǎng)絡(luò)(GAN)是過去十年機器學(xué)習(xí)中最有趣的想法。

我個人認為量淌,GAN 有巨大的潛力骗村,但我們還有很多事情要搞明白。

那么呀枢,什么是

GAN胚股?接下來我將要對其做一個簡要描述。如果你不熟悉并想了解更多裙秋,有很多很棒的網(wǎng)站有很好的解釋琅拌。我個人推薦 Eric

Jang(鏈接:http://suo.im/4y0bxU)和 Brandon Amos(鏈接:http://suo.im/3Ur3DW)的博客。

GAN 最初由 Ian Goodfellow 提出摘刑,它有兩個網(wǎng)絡(luò):生成器和鑒別器进宝。兩個網(wǎng)絡(luò)在同一時間進行訓(xùn)練,并在極小極大(minimax)游戲中相互博弈泣侮。生成器通過創(chuàng)建逼真的圖像來愚弄鑒別器即彪,而鑒別器被訓(xùn)練從而不被生成器所愚弄紧唱。

訓(xùn)練概述

首先活尊,生成器生成圖像。它通過從簡單分布中(例如正態(tài)分布)采樣向量噪聲

Z漏益,然后將該矢量上采樣到圖像來生成圖像蛹锰。在第一次迭代中,這些圖像看起來很嘈雜绰疤。然后铜犬,鑒別器被給予真、假圖像,并學(xué)習(xí)區(qū)分它們癣猾。生成器稍后通過反向傳播步驟接收鑒別器的「反饋」敛劝,在產(chǎn)生圖像時變得更好。最后纷宇,我們希望假圖像的分布盡可能接近真實圖像的分布夸盟。或者像捶,簡單來說上陕,我們希望假圖像看起來盡可能貌似真實。

值得一提的是拓春,由于 GAN 中使用的極小極大(minimax)優(yōu)化释簿,訓(xùn)練有可能相當不穩(wěn)定。但是硼莽,有一些技巧可以用來使得訓(xùn)練更魯棒庶溶。

這就是使得生成的臉部圖像逐漸變得更加真實的一個例子:

前兩個階段 GAN 的輸出結(jié)果。使用的數(shù)據(jù)集是 CelebA沉删。

代碼

如果您對 GAN 的基本實現(xiàn)感興趣渐尿,這里是一些簡短代碼的鏈接:

Tensorflow(鏈接:http://suo.im/pLYbO)

Torch 和 Python(PyTorch):[代碼](鏈接:http://suo.im/1LcbX5)[博客文章](鏈接:http://suo.im/2V9ICE)

Torch 和 Lua

這些不是較先進的,但它們很好地抓住了核心思想矾瑰。如果你正在尋找較佳實現(xiàn)來做自己的東西砖茸,請看下一節(jié)。

GAN: 一場革命

在這里殴穴,我將按照時間順序大體描述一下過去幾年出現(xiàn)的一些有關(guān) GAN 的進展和類型凉夯。

深度卷積 GAN(DCGAN)

TL; DR:DCGAN 是 GAN 架構(gòu)的第一大改進。它們在訓(xùn)練方面更穩(wěn)定采幌,并產(chǎn)生更高質(zhì)量的采樣劲够。

[文章](鏈接:https://arxiv.org/abs/1511.06434)

DCGAN 的作者著重于改進初始 GAN 的架構(gòu)。我認為他們花了很長時間來做深度學(xué)習(xí)里最令人興奮的事情:嘗試很多參數(shù)休傍!好極了征绎!最后,它完全有了回報磨取。除此之外人柿,他們發(fā)現(xiàn):

兩個網(wǎng)絡(luò)都必須進行批量歸一化。

采用完全隱藏的連接層不是一個好主意忙厌。

避免池化(pooling)凫岖,簡單地跨越你的卷積!

ReLU 激活是你的朋友(幾乎總是)逢净。

DCGAN

也是相關(guān)的哥放,因為它們已經(jīng)成為實現(xiàn)和使用 GAN 的主要基準之一歼指。在本文發(fā)表之后不久,Theano甥雕、Torch踩身、Tensorflow 和

Chainer 中有容易獲得的不同實現(xiàn)用于測試你所能想到的任何數(shù)據(jù)集。因此社露,如果你遇到奇怪的生成數(shù)據(jù)集惰赋,你完全可以責怪這些人。

在以下情況呵哨,你可能想要使用 DCGAN:

你想要比常規(guī) GAN 更好的東西(或者說赁濒,總是)。常規(guī) GAN 可以在簡單的數(shù)據(jù)集上工作孟害,但是 DCGAN 相比要好得多拒炎。

你正在尋找一個堅實的基準,以便與挨务、較先進的 GAN算法進行比較击你。

從這一點上,我將描述的所有類型的 GAN 都被假定為具有 DCGAN 架構(gòu)谎柄,除非明確說明丁侄。

改進的 DCGAN

TL; DR:一系列改進以前 DCGAN 的技術(shù)。比如朝巫,這個改進的基準允許生成更好的高分辨率圖像鸿摇。

[文章](鏈接:https://arxiv.org/abs/1606.03498)

與 GAN 有關(guān)的主要問題之一是它們的收斂性。它是不能保證的劈猿,而且即使優(yōu)化了 DCGAN 架構(gòu)拙吉,訓(xùn)練仍然相當不穩(wěn)定。在這篇文章中揪荣,作者提出了對 GAN 訓(xùn)練的不同增強方案筷黔。這里是其中的一些:

特征匹配:他們沒有使生成器盡可能地欺騙鑒別器,而是提出了一個新的目標函數(shù)仗颈。該目標要求生成器生成與實際數(shù)據(jù)的統(tǒng)計信息相匹配的數(shù)據(jù)佛舱。在這種情況下,鑒別器僅用于指出哪些是值得匹配的統(tǒng)計信息挨决。

歷史平均:更新參數(shù)時请祖,還要考慮其過去值。

單邊標簽平滑:這一點很簡單:只需將你的鑒別器目標輸出從 [0 = 假圖像凰棉,1 = 真圖像] 切換到 [0 = 假圖像损拢,0.9 =真圖像]陌粹。是的撒犀,這改善了訓(xùn)練。

虛擬批量歸一化:通過使用在一個參考批處理中收集的統(tǒng)計信息,避免同一批次的數(shù)據(jù)依賴性或舞。它在計算上的代價很大荆姆,所以僅用于生成器。

所有這些技術(shù)都可以使模型更好地生成高分辨率圖像映凳,這是 GAN 的弱點之一胆筒。作為對比,請參見原始 DCGAN 與改進的 DCGAN 在 128x128 圖像上的區(qū)別:

這些應(yīng)該是狗的圖像诈豌。如你所見仆救,DCGAN 無法表征它們,而使用改進的 DCGAN矫渔,你至少可以看到有一些像小狗一樣的東西彤蔽。這也暴露了 GAN 的另一個局限,即生成結(jié)構(gòu)化的內(nèi)容庙洼。

你也許想要使用改進的 DCGAN顿痪,如果:

你想要一個改進版本的 DCGAN(我確信你原本不指望:P)以生成更高分辨率的圖像。

條件性 GAN(CGAN)

TL; DR:這些是使用額外標簽信息的 GAN油够。這會帶來更好質(zhì)量的圖像蚁袭,并能夠在一定程度上控制生成圖像的外觀。

[來源文章](https://arxiv.org/abs/1411.1784)

條件性 GAN 是 GAN 框架的擴展石咬。這里我們有條件信息 Y 來描述數(shù)據(jù)的一些方面揩悄。例如,如果我們正在處理人臉鬼悠,則 Y 可以描述頭發(fā)顏色或性別等屬性虏束。然后,將該屬性信息插入生成器和鑒別器厦章。

具有面部屬性信息的條件性 GAN 概述镇匀。

條件性 GAN 有趣的原因有兩個:

1. 當你向模型輸入更多信息時,GAN 學(xué)習(xí)利用它袜啃,因此能夠生成更好的樣本汗侵。

2.

我們有 2 種方式來控制圖像表示。沒有條件性 GAN群发,所有的圖像信息都被編碼在 Z 中晰韵。有了 cGAN,當我們添加條件信息 Y 時熟妓,現(xiàn)在這兩個

Z 和 Y 將編碼不同的信息雪猪。例如,假設(shè) Y 編碼手寫數(shù)的數(shù)字(從 0 到 9)起愈。然后只恨,Z 將編碼所有不在 Y

中編碼的其它變量译仗。例如,可以是數(shù)字的樣式(大小官觅、重量纵菌、旋轉(zhuǎn)等)。

MNIST 樣本上 Z 和 Y 之間的差異休涤。Z 固定在行上咱圆,Y 在列上。Z 編碼數(shù)字的樣式功氨,Y 編碼數(shù)字本身序苏。

最近的研究

有很多關(guān)于這個主題的有趣文章。我重點說這其中的兩個:

學(xué)習(xí)畫什么和在哪里畫

[文章](鏈接:https://arxiv.org/abs/1610.02454)[代碼](鏈接:https://github.com/reedscot/nips2016):在這篇文章中捷凄,作者提出了一種機制來告訴

GAN(通過文本描述)杠览,(a)你想要得到的圖像內(nèi)容是什么樣,(b)通過邊界框/地標來告知元素的位置纵势□獍ⅲ看看它的生成結(jié)果:

StackGAN

[article](鏈接:https://arxiv.org/abs/1612.03242)[code](https://github.com/hanzhanggit/StackGAN):這篇文章與前一篇相似。在這種情況下钦铁,他們專注于通過同時使用

2 個 GAN 來提高圖像的質(zhì)量:Stage-I 和 Stage-II软舌。Stage-I 用于獲取包含圖像「一般」構(gòu)想的低分辨率圖像。Stage

II 采用更多的細節(jié)和更高的分辨率來優(yōu)化 Stage-I 的圖像牛曹。據(jù)我所知佛点,這篇在生成高質(zhì)量圖像里是較好的模型之一。請自己看:

你也許想要使用條件性 GAN黎比,如果:

你有一個已標記的訓(xùn)練集超营,并希望提高生成圖像的質(zhì)量。

你想要明確控制圖像的某些方面(例如阅虫,我想在這一特定位置生成這一尺寸的紅鳥)演闭。

InfoGANs

TL; DR:能夠以無監(jiān)督的方式在噪聲向量 Z 的一部分中編碼有意義的圖像特征的 GAN。例如颓帝,對一個數(shù)字的旋轉(zhuǎn)進行編碼米碰。

[文章](https://arxiv.org/abs/1606.03657)

你有沒有想過輸入噪聲 Z 在一個 GAN 中編碼的信息是什么?它通常以非彻撼牵「嘈雜」的方式編碼圖像不同類型的特征吕座。例如,你可以選擇 Z 向量的一個位置瘪板,并將其值從 -1 和 1 插值吴趴。這是你會在一個通過 MNIST 數(shù)字數(shù)據(jù)集訓(xùn)練的模型上看到的:

對 Z 插值。左上圖像的 Z 位置設(shè)置為 -1侮攀。然后锣枝,它被內(nèi)插到 1(右下圖像)厢拭。

在上圖中,生成的圖像看上去像是數(shù)字

4 慢慢變換成「Y」(最可能的是 4 和 9 之間的混合)惊橱。所以,這就是我所指的通過嘈雜的方式編碼這個信息:Z

的單一位置是圖像多個特征的參數(shù)箭昵。在這種情況下税朴,這個位置改變了數(shù)字本身(某種程度上從 4 到 9)和樣式(從粗體到斜體)。然后家制,你無法定義 Z

的該位置的任何確切含義正林。

如果我們可以有一些

Z 的位置來表示和受限的信息會怎么樣呢,就像 cGAN 中的條件信息 Y 一樣颤殴?例如觅廓,如果第一個位置是一個 0 到 9

之間的值,它來控制數(shù)字的數(shù)量涵但,而第二個位置控制其旋轉(zhuǎn)杈绸,這會怎樣呢?這正是作者在文章中提出的矮瘟。有意思的部分是瞳脓,與 cGAN

不同,他們以無監(jiān)督的方式實現(xiàn)了這一點澈侠,無需標簽信息劫侧。

將 Z 矢量分成兩部分——C 和 Z——是他們成功的原因:

C 對數(shù)據(jù)分布的語義特征進行編碼。

Z 編碼該分布的所有非結(jié)構(gòu)噪聲哨啃。

他們?nèi)绾螐娭?/p>

C 對這些特征進行編碼烧栋?他們改變了損失函數(shù)以防止 GAN 簡單地忽略 C。因此拳球,他們采用一個信息理論的規(guī)則审姓,來確保 C

與生成器分配之間的高互信息。換句話說祝峻,如果 C 改變邑跪,生成的圖像也需要改變。結(jié)果呼猪,你無法明確控制哪種類型的信息會被編碼進 C画畅,但 C

的每個位置都具有的含義∷尉啵看一些視覺示例:

C 的第一個位置編碼數(shù)字類別轴踱,而第二個位置編碼旋轉(zhuǎn)。

但是谚赎,不使用標簽信息需要付出代價淫僻。這里的限制是這些編碼僅適用于相當簡單的數(shù)據(jù)集诱篷,例如

MNIST 數(shù)字。此外雳灵,你仍然需要「手工制作」C 的每個位置棕所。例如在文章中,他們需要指定 C 的第一個位置是 0 到 9

之間的整數(shù)悯辙,因此它適用于數(shù)據(jù)集的 10 個數(shù)字類別琳省。所以,你可能會認為這不是 100% 無監(jiān)督躲撰,因為你可能需要向模型提供一些小細節(jié)针贬。

你也許想要使用 infoGAN,如果:

你的數(shù)據(jù)集不是很復(fù)雜拢蛋。

你想訓(xùn)練 cGAN桦他,但你沒有標簽信息。

你希望看到數(shù)據(jù)集的主要的有意義的圖像特征是什么谆棱,并且可以控制它們快压。

Wasserstein GAN

TL; DR:改變損失函數(shù)以包含 Wasserstein 距離。結(jié)果垃瞧,WassGAN 具有與圖像質(zhì)量相關(guān)的損失函數(shù)嗓节。此外,訓(xùn)練穩(wěn)定性也提高了皆警,而且不依賴于架構(gòu)拦宣。

[文章](https://arxiv.org/abs/1701.07875)

GAN 一直在收斂性方面存在問題,結(jié)果是信姓,你不知道何時停止訓(xùn)練鸵隧。換句話說,損失函數(shù)與圖像質(zhì)量不相關(guān)意推。這是一個頭痛的大問題豆瘫,因為:

你需要不斷查看樣本,以了解你的模型是否在正確訓(xùn)練菊值。

你不知道何時應(yīng)該停止訓(xùn)練(沒有收斂)外驱。

你沒有一個量化數(shù)值告訴你調(diào)整參數(shù)的效果如何。

例如腻窒,看這兩個能夠完美生成 MNIST 樣本的 DCGAN 的毫無信息量的損失函數(shù)圖:

僅通過看這個圖你知道什么時候停止訓(xùn)練嗎昵宇?我也不行。

這個可解釋性問題是

Wasserstein GAN 旨在解決的問題之一儿子。怎么樣瓦哎?GAN 可被解釋以最小化 Jensen-Shannon

發(fā)散,如果真和假的分布不重疊(通常是這種情況),則它為 0蒋譬。所以割岛,作者使用了 Wasserstein 距離,而不是最小化 JS

發(fā)散犯助,它描述了從一個分布到另一個分布的「點」之間的距離癣漆。這大概是其主要思想,但如果你想了解更多剂买,我強烈建議你訪問這一鏈接(http://suo.im/1wmf2t)進行更深入的分析或閱讀文章本身惠爽。

因此,WassGAN 具有與圖像質(zhì)量相關(guān)的損失函數(shù)并能夠?qū)崿F(xiàn)收斂雷恃。它也更加穩(wěn)定疆股,也就意味著它不依賴于架構(gòu)费坊。例如倒槐,即使你去掉批處理歸一化或嘗試奇怪的架構(gòu),它也能很好地工作附井。

這是 WassGAN 損失函數(shù)的圖讨越。損失越低,圖像質(zhì)量越高永毅。整齊把跨!

你也許想要使用 Wasserstein GAN,如果:

你正在尋找具有較高訓(xùn)練穩(wěn)定性的較先進的 GAN沼死。

你想要一個有信息量的可解釋的損失函數(shù)着逐。

結(jié)語

所以,現(xiàn)在就是這些意蛀!我知道還有更有趣的研究去評論耸别,但在這篇文章中,我決定專注于一個有限的集合县钥。只是舉幾個例子秀姐,下面是一些我沒有評論的文章的簡短列表,也許你想去看看:

GAN 應(yīng)用于視頻:https://github.com/SKTBrain/DiscoGAN

圖像完成:https://arxiv.org/abs/1609.04802

GAN + 可變性 AutoEncoder 混合:https://github.com/junyanz/iGAN

向 GAN 添加一個編碼器以重建樣本:https://phillipi.github.io/pix2pix/

圖像到圖像的翻譯:https://ishmaelbelghazi.github.io/ALI/

交互式圖像生成:https://arxiv.org/abs/1512.09300

使用 GAN 增加圖像質(zhì)量:https://bamos.github.io/2016/08/09/deep-completion/

將鞋子變成等價的包(DiscoGAN):http://web.mit.edu/vondrick/tinyvideo/

更廣泛的研究列表若贮,請查看此鏈接:https://github.com/zhangqianhui/AdversarialNetsPapers省有。

此外,在這個 repo(https://github.com/wiseodd/generative-models)中谴麦,你會發(fā)現(xiàn) Tensorflow 和 Torch 中的各種 GAN 實現(xiàn)蠢沿。


原文參考:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匾效,隨后出現(xiàn)的幾起案子搏予,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雪侥,死亡現(xiàn)場離奇詭異碗殷,居然都是意外死亡,警方通過查閱死者的電腦和手機速缨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門锌妻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旬牲,你說我怎么就攤上這事仿粹。” “怎么了原茅?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵吭历,是天一觀的道長。 經(jīng)常有香客問我擂橘,道長晌区,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任通贞,我火速辦了婚禮朗若,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昌罩。我一直安慰自己哭懈,他們只是感情好,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布茎用。 她就那樣靜靜地躺著遣总,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轨功。 梳的紋絲不亂的頭發(fā)上旭斥,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天,我揣著相機與錄音夯辖,去河邊找鬼琉预。 笑死,一個胖子當著我的面吹牛蒿褂,可吹牛的內(nèi)容都是我干的圆米。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼啄栓,長吁一口氣:“原來是場噩夢啊……” “哼娄帖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昙楚,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤近速,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體削葱,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡奖亚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了析砸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔字。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖首繁,靈堂內(nèi)的尸體忽然破棺而出作郭,到底是詐尸還是另有隱情,我是刑警寧澤弦疮,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布夹攒,位于F島的核電站,受9級特大地震影響胁塞,放射性物質(zhì)發(fā)生泄漏咏尝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一闲先、第九天 我趴在偏房一處隱蔽的房頂上張望状土。 院中可真熱鬧无蜂,春花似錦伺糠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酣倾,卻和暖如春舵揭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躁锡。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工午绳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人映之。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓拦焚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杠输。 傳聞我的和親對象是個殘疾皇子赎败,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容