生成對抗網路入門指南(內含資源和代碼)
摘要: 生成對抗網路是由兩個相互競爭的網路組成的深度神經網路架構。本文對其進行詳細講解,並附上大量相關英文文章鏈接供參考。
原文:http://click.aliyun.com/m/40823/
生成對抗網路(GAN)是由兩個相互競爭的網路組成的深度神經網路架構。
2014年,Lan Goodfellow和蒙特利爾大學包括Yoshua Bengio在內的其它研究人員在論文中介紹了生成對抗網路。Facebook的AI研究主管Yann LeCun稱對抗訓練是「近10年來最有趣的機器學習(ML)」
生成對抗網路具有很大的潛力,因為它們可以學習模擬任何數據的分布。換句話說,在任何領域,我們都可以教生成對抗網路創造出與我們類似的世界:圖像,音樂,演說,散文。從某種意義上來說,它們是機器人藝術家,能夠創造出令人印象深刻甚至是傷感的東西。
生成演算法和判別演算法
為了理解生成對抗網路,首先應該了解生成演算法的是如何工作的,為此,現將生成演算法和判別演算法進行對比以便更好的理解。判別演算法試圖對輸入數據進行分類:即給定一個數據實例的特徵,來預測該數據所屬的標註或類別。
例如:給定一封電子郵件的所有單詞,判別演算法能夠預測該郵件是否為垃圾郵件。垃圾郵件是其中的一種標註,從郵件中收集到的單詞則構成了輸入數據的特徵。用數學表達式表述這一問題,y表示標註,x表示特徵,公式p(y|x)表示「給定x,y的概率」,則該事件可描述為「給定郵件中所包含的單詞,郵件為垃圾郵件的概率」。因此,判別演算法將特徵映射到標註,只關注二者之間的相關性。
一種理解生成演算法的方式是,生成演算法做相反的事情。生成演算法並不預測給定特徵的標註,而是試圖預測給定標註的特徵。
生成演算法試圖解決的問題是:假設這封電子郵件為垃圾郵件,它的特徵可能是什麼?判別模型關注y和x之間的關係,而生成模型關注的是如何得到x。這允許你得到p(x|y),即給定y,x的概率或給定一個類,特徵的概率。(也就是說,生成演算法可用作分類器,只不過它不僅僅只是對輸入數據進行分類)。
另一種區分判別模型和生成模型的理解方式是:判別模型學習類間的邊界,而生成模型模擬各個類的分布。
生成對抗網路是如何運行的?
生成器,是一個用來生成新的數據實例的神經網路;判別器,則是用來評估其真實性的神經網路。即判別器決定它所檢驗的每個數據實例是否屬於實際的訓練數據集。
比方說,我們試圖做一些比仿製蒙娜麗莎更平庸的工作。我們從現實世界中獲取並生成那些類似在MINST數據集中發現的手寫數字,當顯示來自真實MINST數據集中的實例時,判別器將其識別為可信。
同時,生成器創建傳送給判別器的新圖像。即便這是假的,我們也視為將其視為真。生成器的目標是生成像樣的手寫數字,假裝不會被發現。判別器的目標是識別生成器中的圖像是假的。
生成對抗網路的運行步驟如下:
1.生成器輸入一系列隨機數字並返回一張圖像。
2.將生成的圖像和真實數據集中的圖像流一起送入判別器。
3.判別器接受真實圖像和假圖像,並返回概率值,範圍是0~1之間的數字,其中1表示真實性的預測,0表示假的預測。
因此,得到一個雙反饋迴路:判別器在包含圖像真相的反饋迴路中;發生器在在判別器的反饋迴路中。
你可以將生成對抗網路想像成一個偽造者和一個警察在貓和老鼠遊戲中的組合,在這裡,偽造者正在學習虛假注釋,警察正在學習檢測他們。二者都是動態的,也就是說警察也在訓練中,並且每一方都在不斷升級中學習對方的方法。
判別器網路是一個可對輸入圖像進行分類的標準卷積網路——將圖像標記為真或假的一個二值分類器。從某種意義上來說,生成器是一個反向卷積網路:標準卷積分類器獲取一張圖像,採樣並輸出概率,而生成器則獲取隨機雜訊矢量並將其上採樣到一張圖像中。前者使用maxpooling這樣的下採樣技術扔掉數據,後者生成新的數據。
兩個網路都試圖在零和博奕中優化一個不同且對立的目標函數,或者是損失函數。它本質上就是一個演員-評論模型。隨著判別器改變行為,生成器也隨之改變,反之亦然。他們的損耗也相互抗衡。
生成對抗網路:自動編碼器和變分自編碼器(VAE)
自動編碼器將輸入數據編碼為矢量,創建一個隱藏或壓縮的原始數據representation,主要用於降維。也就是說,用作隱藏representation的矢量將原始數據壓縮為一個較小的主要緯度。自動編碼器可以和解碼器配對,可根據其隱藏representation重建輸入數據,這和受限玻爾茲曼機相同。
變分自編碼器是生成演算法,在對輸入數據編碼的過程中增加了額外約束,即將隱藏表示進行標準化。變分自編碼器既可以像自動編碼器一樣壓縮數據,又可以像生成對抗網路那樣合成數據。然而當生成對抗網路生成細節數據時,變分自編碼器生成的圖像往往更加模糊。Deeplearning4j』s包中包括自動編碼器和變分自編碼器。
生成演算法可分為以下三種類型:
1.給定一個標註,預測相關的特徵(樸素貝葉斯)。
2.給定一個隱藏表示,預測相關特徵(變分自編碼器,生成對抗網路)。
3.給定一些特徵,預測其餘特徵(圖像修復,圖像插補)。
訓練生成對抗網路的技巧
訓練判別器時,保持生成器的值不變;訓練生成器時,則保持判別器不變。比如:這可以讓生成器更好的讀取它必須學習的梯度變化。同樣的道理,在開始訓練生成器前,對用於MINST數據集的判別器先進行預訓練,可以建立一個更佳清晰的梯度。
生成對抗網路的每一方都可以壓制另一方。若判別器太好,返回接近0或1的值,發生器將難以讀取梯度;若生成器太好,它將不斷利用判別器的弱點導致漏報。這可以通過各自的學習率來減輕這種壓制。
注意: Maven 上的Deeplearning4j』s最新版本不包括生成對抗網路,但很快就可以通過自動分化和模型導入來構建和使用,目前這些都可以在Github上額主存儲庫中獲得。
其他機器學習教程
神經網路介紹
循環神經網路和長短期記憶網路(LSTM)
Word2Vec:Java語言實現神經嵌入
受限玻爾茲曼機
特徵向量,協方差,PCA和熵
神經網路與回歸
卷積神經網路(CNN)
生成對抗網路(GAN)
推論:機器學習模型伺服器
生成對抗網路應用案例
文本到圖像的生成
圖像到圖像的轉換
圖像解析度的提高
對視頻下一幀的預測
高質量圖像的生成
[採用深度卷積生成對抗網路的無監督表示學習][論文] [代碼]
[生成對抗文本到圖像合成][論文] [代碼][代碼]
[改進的生成對抗網路技術][論文] [代碼]
[即插即用生成網路:潛在空間圖像的條件迭代生成] [論文] [代碼]
[StackGAN:採用生成對抗網路的文本到照片般真實的圖像合成與疊加][論文] [代碼]
[對Wasserstein 生成對抗網路的改進訓練][論文] [代碼]
[邊界均衡生成對抗網路在Tensorflow中的實現][論文] [代碼]
[生成對抗網路的質量、穩定性和變異性的穩步增長][論文] [代碼]
聚類
[採用分類生成對抗網路的無監督和半監督學習] [論文]
圖像混合
[GP-GAN:高解析度圖像混合的實現] [論文] [代碼]
圖像修復
[具有感知和上下文損失的語義圖像修復] [論文] [代碼]
[上下文編碼:通過修復進行特徵學習] [論文] [代碼]
[採用上下文條件生成對抗網路的半監督學習] [論文]
[面部生成的實現][論文] [代碼]
聯合概率
[對抗學習推論] [論文] [代碼]
超解析度
[經過深度學習的超解析度圖像重建] [代碼](僅適用於人臉數據集)
[使用生成對抗網路生成照片般真實的超解析度圖像] [論文] [代碼]
[EnhanceGAN] [論文]
去除遮擋
[採用魯棒性好的LSTM自動編碼器在野外去除遮擋] [論文]
語義分割
[用於乳腺攝影質量分割的對抗深層架構網路] [論文] [編號]
[使用對抗網路進行語義分割] [論文]
對象檢測
[用於小物體檢測的感知生成對抗網路] [論文]
[A-Fast-RCNN:通過對抗進行對象檢測的硬體生成] [論文] [代碼]
RNN-GANs
[C-RNN-GAN:具有對抗訓練的連續遞歸神經網路] [論文] [代碼]
條件對抗網路
[條件生成對抗網路] [論文] [代碼]
[InfoGAN:利用信息最大化生成對抗網路的可解釋表示學習] [論文][代碼][代碼]
[輔助分類生成對抗網路的條件圖像合成] [論文] [代碼]
[像素級區域轉移] [論文] [代碼]
[用於圖像編輯的可變條件生成對抗網路] [論文] [代碼]
[即插即用生成網路:潛在空間圖像的條件迭代生成] [論文] [代碼]
[StackGAN:採用生成對抗網路的文本到照片般圖像的合成與疊加][論文] [代碼]
視頻預測和生成
[ 基於均方誤差的深度multi-scale視頻預測] [論文] [代碼]
[使用場景動態生成視頻] [論文] [網頁] [代碼]
[MoCoGAN:使用分解動作及內容生成視頻] [論文]
紋理合成 & 樣式轉換
[預計算實時紋理合成與馬爾可夫生成對抗網路] [論文] [代碼]
圖像轉譯
[無監督的跨領域圖像生成] [論文] [代碼]
[基於條件對抗網路的圖像轉譯] [論文] [代碼] [代碼]
[學習使用生成對抗網路探索跨域之間的關係][論文] [代碼]
[使用循環一致對抗網路對不成對圖像間的轉譯] [論文] [代碼]
[CoGAN:耦合生成對抗網路] [論文] [代碼]
[基於生成對抗網路的無監督圖像間轉譯] [論文]
[無監督圖像間轉譯網路] [論文]
[三角生成對抗網路] [論文]
生成對抗網路理論
[基於能量(Energy-based )的生成對抗網路] [論文] [代碼]
[改進的訓練生成對抗網路技術] [論文] [代碼]
[模式正則化生成對抗網路] [論文]
[利用去噪特徵匹配改進生成對抗網路[論文] [代碼]
[採樣生成網路] [論文] [代碼]
[如何訓練生成對抗網路][論文]
[訓練生成對抗網路的原則性方法] [論文]
[生成對抗網路的展開論述] [論文] [代碼]
[最小二乘生成對抗網路] [論文] [代碼]
[Wasserstein生成對抗網路] [論文] [代碼]
[Wasserstein生成對抗網路的改進訓練] [論文] [代碼]
[訓練生成對抗網路的原則方法] [論文]
[生成對抗網路的泛化和均衡][論文]
三維生成對抗網路
[通過三維生成對抗建模學習對象形狀的概率潛在空間] [論文] [網路] [代碼]
[用於新型3D視圖合成的Transformation-Grounded 圖像生成網路] [Web]】
音樂
[MidiNet:一維和二維條件下音符生成的卷積生成對抗網路] [論文]
面部生成和編輯
[使用已學習的相似性度量對像素進行自動編碼] [論文] [代碼]
[耦合生成對抗網路] [論文] [Caffe代碼] [Tensorflow代碼]
[用於圖像編輯的可變條件生成對抗網路] [論文] [代碼]
[為面部屬性操作學習殘留圖像] [論文] [代碼]
[採用Introspective對抗網路的神經圖像編輯] [論文] [代碼]
[Neural Face Editing with Intrinsic Image Disentangling] [論文]
[GeneGAN:從不成對數據中學習對象變形和屬性子空間] [論文][代碼]
[臉部旋轉:用於正面視圖合成的全局及局部感知生成對抗網路] [論文]
離散分布
[最大似然擴張離散生成對抗網路] [論文]
[Boundary-Seeking生成對抗網路] [論文]
[採用Gumbel-softmax分布的離散生成對抗網路] [論文]
改進的分類器和識別器
[用於多類開放集合分類的生成OpenMax] [論文]
[對抗特徵學習的可控不變性] [論文] [代碼]
[生成對抗網路生成未標記樣例改善行人重識別基線] [論文] [代碼]
[通過對抗訓練從模擬和非監督圖像中學習] [論文] [代碼]
項目
[對抗機器學習庫cleverhans] [代碼]
[重置-CPPN-GAN-Tensorflow] [代碼](使用殘餘生成對抗網路和變分自動編碼器技術生成高解析度圖像)
[HyperGAN] [代碼](專註於規模和可用性的開源GAN)
以上為譯文。
本文由阿里云云棲社區組織翻譯。
文章原標題《generative adversarial network》,譯者:Mags,審校:袁虎。
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※如何看待杭電舉辦的acm女生專場?
※如何求解遞推式 T(n) = T(n-1) + T(floor(n/2)) + 1?
※ACM中哪些演算法是應該敲的滾瓜爛熟的?
※DNN論文分享 - Item2vec: Neural Item Embedding for Collaborative Filtering
※深度增強學習之Policy Gradient方法1