摘要:也是相關的,因為它們已經成為實現和使用的主要基準之一。在本文發表之后不久,和中有容易獲得的不同實現用于測試你所能想到的任何數據集。在這篇文章中,作者提出了對訓練的不同增強方案。在這種情況下,鑒別器僅用于指出哪些是值得匹配的統計信息。
本文不涉及的內容
首先,你不會在本文中發現:
復雜的技術說明
代碼(盡管有為那些感興趣的人留的代碼鏈接)
詳盡的研究清單(點擊這里進行查看 鏈接:http://suo.im/2opXlF)
本文涉及的內容
關于 GAN 的相關主題的總結
許多其他網站、帖子和文章的鏈接,幫助你確定專注點
目錄
1. 理解 GAN
2. GAN: 一場革命
?1. DCGAN
?2. 改進的 DCGAN
?3. 條件性 GAN
?4. InfoGAN
?5. Wasserstein GAN
3. 結語
理解 GAN
如果你熟悉 GAN,可以跳過本節。
如果你正在閱讀本文,很有可能已聽說 GAN 大有前途。這種夸張說法合理嗎?以下是 Facebook 人工智能研究室主任楊立昆(Yann LeCun)對 GAN 的看法:
生成對抗網絡(GAN)是過去十年機器學習中最有趣的想法。
我個人認為,GAN 有巨大的潛力,但我們還有很多事情要搞明白。
那么,什么是 GAN?接下來我將要對其做一個簡要描述。如果你不熟悉并想了解更多,有很多很棒的網站有很好的解釋。我個人推薦 Eric Jang(鏈接:http://suo.im/4y0bxU)和 Brandon Amos(鏈接:http://suo.im/3Ur3DW)的博客。
GAN 最初由 Ian Goodfellow 提出,它有兩個網絡:生成器和鑒別器。兩個網絡在同一時間進行訓練,并在極小極大(minimax)游戲中相互博弈。生成器通過創建逼真的圖像來愚弄鑒別器,而鑒別器被訓練從而不被生成器所愚弄。
訓練概述
首先,生成器生成圖像。它通過從簡單分布中(例如正態分布)采樣向量噪聲 Z,然后將該矢量上采樣到圖像來生成圖像。在第一次迭代中,這些圖像看起來很嘈雜。然后,鑒別器被給予真、假圖像,并學習區分它們。生成器稍后通過反向傳播步驟接收鑒別器的「反饋」,在產生圖像時變得更好。最后,我們希望假圖像的分布盡可能接近真實圖像的分布。或者,簡單來說,我們希望假圖像看起來盡可能貌似真實。
值得一提的是,由于 GAN 中使用的極小極大(minimax)優化,訓練有可能相當不穩定。但是,有一些技巧可以用來使得訓練更魯棒。
這就是使得生成的臉部圖像逐漸變得更加真實的一個例子:
前兩個階段 GAN 的輸出結果。使用的數據集是 CelebA。
代碼
如果您對 GAN 的基本實現感興趣,這里是一些簡短代碼的鏈接:
Tensorflow(鏈接:http://suo.im/pLYbO)
Torch 和 Python(PyTorch):[代碼](鏈接:http://suo.im/1LcbX5)[博客文章](鏈接:http://suo.im/2V9ICE)
Torch 和 Lua
這些不是較先進的,但它們很好地抓住了核心思想。如果你正在尋找較佳實現來做自己的東西,請看下一節。
GAN: 一場革命
在這里,我將按照時間順序大體描述一下過去幾年出現的一些有關 GAN 的進展和類型。
深度卷積 GAN(DCGAN)
TL; DR:DCGAN 是 GAN 架構的第一大改進。它們在訓練方面更穩定,并產生更高質量的采樣。
[文章](鏈接:https://arxiv.org/abs/1511.06434)
DCGAN 的作者著重于改進初始 GAN 的架構。我認為他們花了很長時間來做深度學習里最令人興奮的事情:嘗試很多參數!好極了!最后,它完全有了回報。除此之外,他們發現:
兩個網絡都必須進行批量歸一化。
采用完全隱藏的連接層不是一個好主意。
避免池化(pooling),簡單地跨越你的卷積!
ReLU 激活是你的朋友(幾乎總是)。
DCGAN 也是相關的,因為它們已經成為實現和使用 GAN 的主要基準之一。在本文發表之后不久,Theano、Torch、Tensorflow 和 Chainer 中有容易獲得的不同實現用于測試你所能想到的任何數據集。因此,如果你遇到奇怪的生成數據集,你完全可以責怪這些人。
在以下情況,你可能想要使用 DCGAN:
你想要比常規 GAN 更好的東西(或者說,總是)。常規 GAN 可以在簡單的數據集上工作,但是 DCGAN 相比要好得多。
你正在尋找一個堅實的基準,以便與、較先進的 GAN 算法進行比較。
從這一點上,我將描述的所有類型的 GAN 都被假定為具有 DCGAN 架構,除非明確說明。
改進的 DCGAN
TL; DR:一系列改進以前 DCGAN 的技術。比如,這個改進的基準允許生成更好的高分辨率圖像。
[文章](鏈接:https://arxiv.org/abs/1606.03498)
與 GAN 有關的主要問題之一是它們的收斂性。它是不能保證的,而且即使優化了 DCGAN 架構,訓練仍然相當不穩定。在這篇文章中,作者提出了對 GAN 訓練的不同增強方案。這里是其中的一些:
特征匹配:他們沒有使生成器盡可能地欺騙鑒別器,而是提出了一個新的目標函數。該目標要求生成器生成與實際數據的統計信息相匹配的數據。在這種情況下,鑒別器僅用于指出哪些是值得匹配的統計信息。
歷史平均:更新參數時,還要考慮其過去值。
單邊標簽平滑:這一點很簡單:只需將你的鑒別器目標輸出從 [0 = 假圖像,1 = 真圖像] 切換到 [0 = 假圖像,0.9 =真圖像]。是的,這改善了訓練。
虛擬批量歸一化:通過使用在一個參考批處理中收集的統計信息,避免同一批次的數據依賴性。它在計算上的代價很大,所以僅用于生成器。
所有這些技術都可以使模型更好地生成高分辨率圖像,這是 GAN 的弱點之一。作為對比,請參見原始 DCGAN 與改進的 DCGAN 在 128x128 圖像上的區別:
這些應該是狗的圖像。如你所見,DCGAN 無法表征它們,而使用改進的 DCGAN,你至少可以看到有一些像小狗一樣的東西。這也暴露了 GAN 的另一個局限,即生成結構化的內容。
你也許想要使用改進的 DCGAN,如果:
你想要一個改進版本的 DCGAN(我確信你原本不指望:P)以生成更高分辨率的圖像。
條件性 GAN(CGAN)
TL; DR:這些是使用額外標簽信息的 GAN。這會帶來更好質量的圖像,并能夠在一定程度上控制生成圖像的外觀。
[來源文章](https://arxiv.org/abs/1411.1784)
條件性 GAN 是 GAN 框架的擴展。這里我們有條件信息 Y 來描述數據的一些方面。例如,如果我們正在處理人臉,則 Y 可以描述頭發顏色或性別等屬性。然后,將該屬性信息插入生成器和鑒別器。
具有面部屬性信息的條件性 GAN 概述。
條件性 GAN 有趣的原因有兩個:
1. 當你向模型輸入更多信息時,GAN 學習利用它,因此能夠生成更好的樣本。
2. 我們有 2 種方式來控制圖像表示。沒有條件性 GAN,所有的圖像信息都被編碼在 Z 中。有了 cGAN,當我們添加條件信息 Y 時,現在這兩個 Z 和 Y 將編碼不同的信息。例如,假設 Y 編碼手寫數的數字(從 0 到 9)。然后,Z 將編碼所有不在 Y 中編碼的其它變量。例如,可以是數字的樣式(大小、重量、旋轉等)。
MNIST 樣本上 Z 和 Y 之間的差異。Z 固定在行上,Y 在列上。Z 編碼數字的樣式,Y 編碼數字本身。
最近的研究
有很多關于這個主題的有趣文章。我重點說這其中的兩個:
學習畫什么和在哪里畫 [文章](鏈接:https://arxiv.org/abs/1610.02454)[代碼](鏈接:https://github.com/reedscot/nips2016):在這篇文章中,作者提出了一種機制來告訴 GAN(通過文本描述),(a)你想要得到的圖像內容是什么樣,(b)通過邊界框/地標來告知元素的位置??纯此纳山Y果:
StackGAN [article](鏈接:https://arxiv.org/abs/1612.03242)[code](https://github.com/hanzhanggit/StackGAN):這篇文章與前一篇相似。在這種情況下,他們專注于通過同時使用 2 個 GAN 來提高圖像的質量:Stage-I 和 Stage-II。Stage-I 用于獲取包含圖像「一般」構想的低分辨率圖像。Stage II 采用更多的細節和更高的分辨率來優化 Stage-I 的圖像。據我所知,這篇在生成高質量圖像里是較好的模型之一。請自己看:
你也許想要使用條件性 GAN,如果:
你有一個已標記的訓練集,并希望提高生成圖像的質量。
你想要明確控制圖像的某些方面(例如,我想在這一特定位置生成這一尺寸的紅鳥)。
InfoGANs
TL; DR:能夠以無監督的方式在噪聲向量 Z 的一部分中編碼有意義的圖像特征的 GAN。例如,對一個數字的旋轉進行編碼。
[文章](https://arxiv.org/abs/1606.03657)
你有沒有想過輸入噪聲 Z 在一個 GAN 中編碼的信息是什么?它通常以非常「嘈雜」的方式編碼圖像不同類型的特征。例如,你可以選擇 Z 向量的一個位置,并將其值從 -1 和 1 插值。這是你會在一個通過 MNIST 數字數據集訓練的模型上看到的:
對 Z 插值。左上圖像的 Z 位置設置為 -1。然后,它被內插到 1(右下圖像)。
在上圖中,生成的圖像看上去像是數字 4 慢慢變換成「Y」(最可能的是 4 和 9 之間的混合)。所以,這就是我所指的通過嘈雜的方式編碼這個信息:Z 的單一位置是圖像多個特征的參數。在這種情況下,這個位置改變了數字本身(某種程度上從 4 到 9)和樣式(從粗體到斜體)。然后,你無法定義 Z 的該位置的任何確切含義。
如果我們可以有一些 Z 的位置來表示和受限的信息會怎么樣呢,就像 cGAN 中的條件信息 Y 一樣?例如,如果第一個位置是一個 0 到 9 之間的值,它來控制數字的數量,而第二個位置控制其旋轉,這會怎樣呢?這正是作者在文章中提出的。有意思的部分是,與 cGAN 不同,他們以無監督的方式實現了這一點,無需標簽信息。
將 Z 矢量分成兩部分——C 和 Z——是他們成功的原因:
C 對數據分布的語義特征進行編碼。
Z 編碼該分布的所有非結構噪聲。
他們如何強制 C 對這些特征進行編碼?他們改變了損失函數以防止 GAN 簡單地忽略 C。因此,他們采用一個信息理論的規則,來確保 C 與生成器分配之間的高互信息。換句話說,如果 C 改變,生成的圖像也需要改變。結果,你無法明確控制哪種類型的信息會被編碼進 C,但 C 的每個位置都具有的含義??匆恍┮曈X示例:
C 的第一個位置編碼數字類別,而第二個位置編碼旋轉。
但是,不使用標簽信息需要付出代價。這里的限制是這些編碼僅適用于相當簡單的數據集,例如 MNIST 數字。此外,你仍然需要「手工制作」C 的每個位置。例如在文章中,他們需要指定 C 的第一個位置是 0 到 9 之間的整數,因此它適用于數據集的 10 個數字類別。所以,你可能會認為這不是 100% 無監督,因為你可能需要向模型提供一些小細節。
你也許想要使用 infoGAN,如果:
你的數據集不是很復雜。
你想訓練 cGAN,但你沒有標簽信息。
你希望看到數據集的主要的有意義的圖像特征是什么,并且可以控制它們。
Wasserstein GAN
TL; DR:改變損失函數以包含 Wasserstein 距離。結果,WassGAN 具有與圖像質量相關的損失函數。此外,訓練穩定性也提高了,而且不依賴于架構。
[文章](https://arxiv.org/abs/1701.07875)
GAN 一直在收斂性方面存在問題,結果是,你不知道何時停止訓練。換句話說,損失函數與圖像質量不相關。這是一個頭痛的大問題,因為:
你需要不斷查看樣本,以了解你的模型是否在正確訓練。
你不知道何時應該停止訓練(沒有收斂)。
你沒有一個量化數值告訴你調整參數的效果如何。
例如,看這兩個能夠完美生成 MNIST 樣本的 DCGAN 的毫無信息量的損失函數圖:
僅通過看這個圖你知道什么時候停止訓練嗎?我也不行。
這個可解釋性問題是 Wasserstein GAN 旨在解決的問題之一。怎么樣?GAN 可被解釋以最小化 Jensen-Shannon 發散,如果真和假的分布不重疊(通常是這種情況),則它為 0。所以,作者使用了 Wasserstein 距離,而不是最小化 JS 發散,它描述了從一個分布到另一個分布的「點」之間的距離。這大概是其主要思想,但如果你想了解更多,我強烈建議你訪問這一鏈接(http://suo.im/1wmf2t)進行更深入的分析或閱讀文章本身。
因此,WassGAN 具有與圖像質量相關的損失函數并能夠實現收斂。它也更加穩定,也就意味著它不依賴于架構。例如,即使你去掉批處理歸一化或嘗試奇怪的架構,它也能很好地工作。
這是 WassGAN 損失函數的圖。損失越低,圖像質量越高。整齊!
你也許想要使用 Wasserstein GAN,如果:
你正在尋找具有較高訓練穩定性的較先進的 GAN。
你想要一個有信息量的可解釋的損失函數。
結語
所以,現在就是這些!我知道還有更有趣的研究去評論,但在這篇文章中,我決定專注于一個有限的集合。只是舉幾個例子,下面是一些我沒有評論的文章的簡短列表,也許你想去看看:
GAN 應用于視頻: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 增加圖像質量: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)中,你會發現 Tensorflow 和 Torch 中的各種 GAN 實現。
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4514.html
摘要:生成對抗網絡的各種變體非常多,的發明者在上推薦了這份名為的各種變體列表,這也表明現在確實非常火,被應用于各種各樣的任務。了解這些各種各樣的,或許能對你創造自己的有所啟發。這篇文章列舉了目前出現的各種變體,并將長期更新。 生成對抗網絡(GAN)的各種變體非常多,GAN 的發明者 Ian Goodfellow 在Twitter上推薦了這份名為The GAN Zoo的各種GAN變體列表,這也表明現...
摘要:論文可遷移性對抗樣本空間摘要對抗樣本是在正常的輸入樣本中故意添加細微的干擾,旨在測試時誤導機器學習模型。這種現象使得研究人員能夠利用對抗樣本攻擊部署的機器學習系統。 現在,卷積神經網絡(CNN)識別圖像的能力已經到了出神入化的地步,你可能知道在 ImageNet 競賽中,神經網絡對圖像識別的準確率已經超過了人。但同時,另一種奇怪的情況也在發生。拿一張計算機已經識別得比較準確的圖像,稍作調整,...
摘要:二是精度查全率和得分,用來衡量判別式模型的質量。精度查全率和團隊還用他們的三角形數據集,測試了樣本量為時,大范圍搜索超參數來進行計算的精度和查全率。 從2014年誕生至今,生成對抗網絡(GAN)熱度只增不減,各種各樣的變體層出不窮。有位名叫Avinash Hindupur的國際友人建立了一個GAN Zoo,他的動物園里目前已經收集了多達214種有名有姓的GAN。DeepMind研究員們甚至將...
摘要:近日,英國小哥在上圖解了一系列生成式對抗網和變分自編碼器的實現。 近日,英國小哥Pawel.io在GitHub上圖解了一系列生成式對抗網(GAN)和變分自編碼器(VAE)的TensorFlow實現。生成式對抗網絡(GAN)GAN論文地址:https://arxiv.org/abs/1406.2661價值函數:結構圖:LSGAN論文地址:https://arxiv.org/abs/1611.0...
摘要:近日,谷歌大腦發布了一篇全面梳理的論文,該研究從損失函數對抗架構正則化歸一化和度量方法等幾大方向整理生成對抗網絡的特性與變體。他們首先定義了全景圖損失函數歸一化和正則化方案,以及最常用架構的集合。 近日,谷歌大腦發布了一篇全面梳理 GAN 的論文,該研究從損失函數、對抗架構、正則化、歸一化和度量方法等幾大方向整理生成對抗網絡的特性與變體。作者們復現了當前較佳的模型并公平地對比與探索 GAN ...
閱讀 2925·2023-04-26 02:22
閱讀 2286·2021-11-17 09:33
閱讀 3127·2021-09-22 16:06
閱讀 1062·2021-09-22 15:54
閱讀 3530·2019-08-29 13:44
閱讀 1905·2019-08-29 12:37
閱讀 1316·2019-08-26 14:04
閱讀 1905·2019-08-26 11:57