1. 程式人生 > >乾貨 | Generative Adversarial Networks(GAN)的現有工作(2016.02)

乾貨 | Generative Adversarial Networks(GAN)的現有工作(2016.02)

乾貨 | Generative Adversarial Networks(GAN)的現有工作

程式媛的日常(小S) · 2016-02-29 15:21

乾貨 | Generative Adversarial Networks(GAN)的現有工作

今天想與大家分享的是影象生成中一些工作。這些工作都基於一大類模型,Generative Adversarial Networks(GAN)。從模型名稱上甚至都可以看出一些發展軌跡:GAN->CGAN->LAPGAN->DCGAN->GRAN->VAEGAN 等等。所以,在今天的分享中,我會盡量以梳理論文和論文之間的聯絡、區別為主。會涉及的論文有:

1.《Generative Adversarial Nets》

2.《Conditional Generative Adversarial Nets》

3.《Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks》

4.《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》

5.《Autoencoding beyond pixels using a learned similarity metric》

6.《Generating Images with Recurrent Adversarial Networks》

GAN

既然是影象生成,就要考慮 generative models。過去的兩三年中出現的 generative models 主要可被歸於兩類。一類是基於 Variational AutoEncoder(VAE),其優點是改變了 AutoEncoder 中很容易過擬合的 reconstruction error based learning 的方法,將學習的目標變成去儘可能滿足某個預設的先驗分佈的性質。然而,可以看出,這種需要“假設先驗分佈”的方式仍然有侷限。而第二類 generative models,Generative Adversarial Networks(GAN)

則較好地避開了這個問題。GAN[1] 啟發自博弈論中的納什均衡,其包含一對模型——一個生成模型(G)和一個判別模型(D)。用一個很經典的比喻就是,生成模型(G)就像小偷,要儘可能地提高自己的偷竊手段去欺騙身為警察的判別模型(D),而D也要儘可能地訓練自己的火眼金睛去防止被欺騙。所以,真正的學習過程就變成了一種生成模型(G)和判別模型(D)之間的競爭過程——隨機從真實樣本和由生成模型(G)生成出的“假樣本”中取一個,讓判別模型(D)去判斷是否為真。所以,體現在公式上,就是下面這樣一個 minmax 的形式。


從上面的描述中可以看出,GAN 這種競爭的方式不再要求一個假設的資料分佈,也就是說我們不用 formulate p(x),而是直接進行 sampling,從而真正達到了理論上可以完全逼近真實資料。這也是 GAN 最大的優勢

然而,everything has a price. 這種不需要預先建模的方式的缺點就是在於它太過自由了,對於較大的圖片,較多的 pixel 的情形,基於簡單 GAN 的方式就不太可控了。在 GAN[1] 中,每次學習引數的更新過程,被設為 D 更新 k 回,G 才更新 1 回,也是出於類似的考慮。


CGAN

為了解決 GAN 太過自由的這個問題,一個很自然的思想便是給 GAN 加上一點點束縛,於是便有了 Conditional Generative Adversarial Nets(CGAN)[2]。這篇工作的改進非常 straightforward,就是在 D 和 G 的建模中分別加入 conditional 變數 y。後來這一方式也被證明非常有效。


LAPGAN

另一方面,為了改進 GAN 太自由的問題,還有一個想法就是不要讓 GAN 一次完成全部任務,而是一次生成一部分,分多次生成一張完整的圖片。Sounds familiar?對啊,就是去年 DeepMind 大火的一個工作 DRAW 的思想咯。DRAW 中指出,我們人類在完成一幅圖畫時,都不一定是一筆完成的,我們又為何要求機器能做到呢?所以 DRAW 用了一種 sequential VAE 的模型,讓機器一點點“寫”出了一個個數字。於是 Facebook 等人提出的 LAPGAN[3] 則是採用了這樣的思想,在 GAN 基礎上做出了改進。LAPGAN[3] 這個工作既有 project page,也有開原始碼,是非常值得重視的工作。

在實現 sequential version 的方式上,LAPGAN[3] 這個工作採用的是一種幾十年前的 Laplacian Pyramid 的方式,也因此起名做 LAPGAN。


這個方式主要的操作便是 downsample 和 upsample,而優勢是每次只考慮樣本和生成影象之間的殘差的學習效果,某種程度上和 Residual Network 的思想是一樣的。針對殘差的逼近和學習,相對更加容易。於是,在這個思想上,便有了如下 LAPGAN 的學習過程:


這個圖中,當影象是較大 pixel 時,便需要進行 Laplacian Pyramid 過程,並且在每一個 process step 時(每一個 Pyramid level),傳給 D 的只是針對殘差的 compare。另一方面,當 pixel 足夠小的時候,也就是最右邊的 step,則不再需要進行 upsample 和 downsample 的過程,這時給 D 的 傳送則是未經處理的樣本和生成的影象了。Facebook 指出,這樣的 sequential 方式減少了每一次 GAN 需要學習的內容,也就從而增大了 GAN 的學習能力。值得注意的是,LAPGAN 其實也是 LAPCGAN,都是 conditional 的。另外,每一步的 GAN 都是 independently trained 的。與此同時,這篇論文還總結出了許多工程上的經驗,都在他們的 project page 中。

DCGAN

DCGAN[4] 這篇論文的提出看似並沒有很大創新,但其實它的開原始碼現在被使用和借鑑的頻率最高。這一切必須歸功於這篇工作中比 LAPGAN 更 robust 的工程經驗分享。也就是說,DCGAN,Deep Convolutional Generative Adversarial Networks,這個工作[4],指出了許多對於 GAN 這種不穩定學習方式重要的架構設計和針對 CNN 這種網路的特定經驗。重點來看:

比如他們提出既然之前已經被提出的 strided convolutional networks 可以從理論上實現和有 pooling 的 CNN 一樣的功能和效果,那麼 strided convolutional networks 作為一個可以 fully differentiable 的 generator G,在 GAN 中會表現得更加可控和穩定。又比如,本來 Facebook 的 LAPGAN 中指出 Batch Normalization(BN) 被用在 GAN 中的 D 上會導致整個學習的 collapse,但是 DCGAN 中則成功將 BN 用在了 G 和 D 上。這些工程性的突破無疑是更多人選擇 DCGAN 這一工作作為 base 的重要原因。

另一方面,他們在 visualize generative models 也有許多貢獻。比如他們學習了 ICLR 2016 論文《Generating Sentences From a Continuous Space》中的 interpolate space 的方式,將生成圖片中的 hidden states 都 show 了出來,可以看出影象逐漸演變的過程。


與此同時,他們也講 Vector Arithmetic 運用在了影象上,得到了如下的一些結果:
GRAN

今天要推薦的倒數第二篇論文[5] 也和 DRAW 有著非常多的相似點。之前已經說了,在改進 GAN 時,可以考慮 sequential version。Sequential models 的好處便是可以讓下一步的 model 利用上一步得到的結果,在之前的結果上做出修改,類似於一種 conditional 的方式。為了讓 GAN 也擁有這種 sequential 的能力,這篇論文[5] 將把 GAN 和 LSTM 結合,稱為 GRAN,使其分割成了 step by step 的過程。每一個 step 中,就像 LSTM 的 cell 一樣,都有一個 C_t,這個決定的是 what to draw,也就是畫的 content,也是每一個 step 的 output;同時,就像 LSTM 中的 hidden states 一樣,這裡也有 h_{c,t}。與簡單的 LSTM 不同的是,這裡決定每個 cell 內容,也就是  的不僅僅是 hidden states,還有一個 “hidden of prior”,是專屬於 GAN 中的生成模型 G 的一個先驗 ,h_z。 h_z 和 h_{c,t} 拼接(concatenate)之後共同決定當前 step 的 update——what to draw。


並且,因為完美利用了 gradient of convolution 還是 convolution 的性質,這個改造後的 GRAN 可以將每次的求導看做一次 decoding 過程,而每次的 convolution 等操作變成 encoding 過程,也就可以因此對應到 DRAW 中的 decoder 和 encoder 部分。而 GAN 和 DRAW 最大的不同之處便在於,GAN 中在計算 loss 時是在 hidden space 中,而 DRAW 是在原始 input space 中

那麼在實驗中,這篇論文也確實證明了 sequential models(multi-step)生成的影象比 single step 的要好。只不過,generative models 的 evaluation 還比較模糊,所以實驗結果上並不能很好地和以前的 GAN 或者相關方法做比較。接下來另一個重點來了,這篇論文的一個創新便是提出了一種 GAN 這種特殊 generative models 的評價方法。過去用於評價 generated image 的 Parzen Windows 或者 manual evaluation 等方法都各有各的缺點。這篇論文提出,既然本來就是競爭模型,可以讓兩組 GAN 互相“競爭”評價。互為評委,互為選手。下面這個配圖也是挺萌的……


最後說說缺點吧,現階段來看這個模型的可擴充套件性還不是那麼好,儘管說是 step by step 的,在最後的實驗中也只用了幾個 discrete step 做實驗,[1,3,5] 這樣。 VAEGAN

上面說的都是通過變成 sequential versions 來減弱 GAN 的自由性。但是還有一篇工作[6],是“反其道而行之”,將 GAN 中學出來的 feature 重新運用在 VAE 的 reconstruction objective 中,從而結合了 GAN 和 VAE 的優點。於是,這個工作被稱為 VAEGAN


具體的,因為在以前的 reconstruction objective 中,都用到的是 element-wise distance metrics。這種 metrics 其實對於很多 hidden feature/space 的學習並不好。這篇論文的根本 idea 就是利用 GAN 中 Discriminator D,使其當做 learned similarity measure,來替代/彌補 reconstruction objective 中的這種 similarity measure component。D 學習到的 similarity measure 便可以被認為是一種 high-level representation 中的 measurement。可以看出,這個思想還是很有可擴充套件性的。

今天的論文全部介紹完畢,其實基於博弈論的競爭思想,還發展處了 Adversarial AutoEncoder 等工作,但是思想上大同小異,大家有興趣可以自己再去閱讀啦。

相關推薦

乾貨 | Generative Adversarial NetworksGAN現有工作2016.02

乾貨 | Generative Adversarial Networks(GAN)的現有工作 程式媛的日常(小S) · 2016-02-29 15:21 今天想與大家分享的是影象生成中一些工作。這些工作都基於一大類模型,Generative

乾貨 | Generative Adversarial NetworksGAN現有工作

今天想與大家分享的是影象生成中一些工作。這些工作都基於一大類模型,Generative Adversarial Networks(GAN)。從模型名稱上甚至都可以看出一些發展軌跡:GAN->CGAN->LAPGAN->DCGAN->GRAN->VAEGAN 等等。所以,在今

【Learning Notes】生成式對抗網路Generative Adversarial NetworksGAN

在學習 Variational Auto-Encoder時,同時注意到了 GAN 研究的火熱。但當時覺得 GAN 非常不成熟(訓練不穩定,依賴各種說不清的 tricks;沒有有效的監控指標,需要大量的人工判斷,因此難以擴展到圖像之外的高維數據)。在讀了 Good

生成對抗網路Generative Adversarial NetworksGAN初探

1. 從納什均衡(Nash equilibrium)說起 我們先來看看納什均衡的經濟學定義: 所謂納什均衡,指的是參與人的這樣一種策略組合,在該策略組合上,任何參與人單獨改變策略都不會得到好處。換句話說,如果在一個策略組合上,當所有其他人都不改變策略時,沒有人會改變自己的策略,則該策略組合就是一個

生成對抗網路Generative Adversarial Networks, GAN

  生成對抗網路(Generative Adversarial Networks, GAN)是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的學習方法之一。   GAN 主要包括了兩個部分,即生成器 generator 與判別器 discriminator。生

GAN ZOO翻譯系列】基於能量的生成對抗網路 Energy-Based Generative Adversarial Networks

趙俊博, Michael Mathieu, Yann LeCun 紐約大學計算機科學系 Facebook人工智慧研究院 {jakezhao, mathieu, yann}@cs.nyu.edu 原文連結https://arxiv.org/abs/1609.031

GAN ZOO閱讀】模式正則化的生成對抗網路 MODE REGULARIZED GENERATIVE ADVERSARIAL NETWORKS

原文地址: https://arxiv.org/abs/1612.02136 引用之請註明出處。 Tong Che 1,Yanran Li 2 3,Athul Paul Jacob 1,Yoshua Bengio 1,Wenjie Li 2 1 蒙特利爾學習演算法

FACE AGING WITH CONDITIONAL GENERATIVE ADVERSARIAL NETWORKS

文章用於生成不同年齡的圖片,採用的模型是條件對抗網路,主要創新點是,首先通過一個網路,提取影象特徵向量,並通過身份保持網路,優化影象的特徵向量,特到特徵向量 z∗ z^*,之後便可以對於每個輸入年齡,查詢其年齡向量,並將該年齡向量與輸入圖片特徵向量

論文學習:Learning to Generate Time-Lapse Videos Using Multi-StageDynamic Generative Adversarial Networks

Welcome To My Blog 這篇論文收錄於KDD2018,有關視訊生成的,論文有個專案主頁,題目翻譯過來大致是:使用多階段動態生成對抗網路學習生成time-lapse(延時)視訊. 多階段具體來說是兩階段, 1. 第一階段(Base-Net): 注重每一幀內容的真實性

Hadoop到底是什麼對一些現有文件進行整合

大資料是個鋪天蓋地的詞,而談論大資料又不可避免地要提到Hadoop,Hadoop到底是什麼玩意,以及有何功用。 Hadoop是Apache軟體基金會管理的開源軟體平臺,但Hadoop到底是什麼呢?簡單來說,Hadoop是在分散式伺服器叢集上儲存海量資料並執行分散式分析應用的一種方法。Ha

Generative Adversarial Networks: An Overview文獻閱讀筆記

Generative Adversarial Networks: An Overview筆記 Abstract Generative adversarial networks (GANs) provide a way to learn deep representations w

論文解讀:DeLiGAN: Generative Adversarial Networks for Diverse and Limited Data

前言:DeLiGAN是計算機視覺頂會CVPR2017發表的一篇論文,本文將結合Python原始碼學習DeLiGAN中的核心內容。DeLiGAN最大的貢獻就是將生成對抗網路(GANs)的輸入潛空間編碼為混合模型(高斯混合模型),從而使得生成對抗網路(GANs)在數量有限但具有多樣性的訓練資料上表現出較

Speech Bandwidth Extension Using Generative Adversarial Networks

owb codec 同時 ephone 參數 listen 註意 nbu 分數 論文下載地址。博客園文章地址。 摘要 語音盲帶寬擴展技術已經出現了一段時間,但到目前為止還沒有出現廣泛的部署,部分原因是增加的帶寬伴隨著附加的工件。本文提出了三代盲帶寬擴展技術,從矢量量化映

Dihedral angle prediction using generative adversarial networks 閱讀筆記

使用生成對抗網路的二面角預測 Abstract         為蛋白質結構預測及其他應用開發了幾種二面角預測方法。 然而,預測角度的分佈與實際角度的分佈不同。 為了解決這個問題,我們採用了生成對抗網路(GAN),它在影象生成任務中顯示了有希望的結果。 生成性對抗網路由兩

LSGAN (Least Squares Generative Adversarial Networks)

1.前言 傳統GAN出現的問題: 傳統GAN, 將Discriminator當作分類器,最後一層使用Sigmoid函式,使用交叉熵函式作為代價函式,容易出現梯度消失和collapse mode等問題,具體原因參考本部落格Wasserstein GAN。 LSG

Machine Learning is Fun Part 7: Abusing Generative Adversarial Networks to Make 8

The goal of Generative ModelsSo why exactly are AI researchers building complex systems to generate slightly wonky-looking pictures of bedrooms?The idea is

Generative Adversarial Networks and the Rise of Fake Faces: an Intellectual Property Perspective

The tremendous growth in the artificial intelligence (AI) sector over the last several years may be attributed in large part to the proliferation of so-

論文筆記:Spectral Normalization for Generative Adversarial Networks [ICLR2018 oral]

Spectral Normalization for Generative Adversarial Networks 原文連結:傳送門 一篇純數學類文章,有興趣的時候再看! Emma CUH

GaitGAN: Invariant Gait Feature Extraction Using Generative Adversarial Networks論文翻譯以及理解

GaitGAN: Invariant Gait Feature Extraction Using Generative Adversarial Networks論文翻譯以及理解 格式:一段英文,一段中文 2. Proposed method To reduce the eff

pix2pix tensorflow試驗GAN之影象轉影象的操作

GAN是一種典型的概率生成模型,其核心思想是:找出給定觀測資料內部的統計規律,並且能夠基於所得到的概率分佈模型,產生全新的,與觀測資料類似的資料。 概率生成模型可以用於自然影象的生成。假設給定1000萬張圖片之後,生成模型可以自動學習到其內部分佈,能夠解釋給定的訓練圖