十個生成模型(GANs)的最佳案例和原理 | 代碼+論文

2020-12-05 量子位

王小新 編譯原文作者:Sumeet Agrawal量子位 出品 | 公眾號 QbitAI

生成對抗網絡(GANs)是一種能「教會」計算機勝任人類工作的有趣方法。一個好的對手能讓你成長更快,而GANs背後就是「從競爭中學習」的思路。

GANs最先是由蒙特婁大學的Ian Goodfellow提出,已在圖像生成和風格遷移等領域獲得了巨大的成功,充分展示了「無監督學習」技術的潛力。

GANs是如何工作的?

GAN結構示意圖

一個GAN中包含兩個相互競爭的神經網絡模型。一個網絡稱為生成器(generator),能將噪聲作為輸入並生成樣本;另一個網絡稱為鑑別器(discriminator),能接收生成器數據和真實訓練數據,訓練得到能正確區分數據類型的分類器。

這兩個網絡互相對抗。其中,生成器通過學習來產生更逼近真實數據的新樣本,用於愚弄鑑別器,反之鑑別器也需要更好地區分生成數據與真實數據。

將這兩個網絡聯合訓練,經過大量回合「交鋒」後,鑑別器將無法區分生成樣本和實際數據。做個比喻,生成器就像是想製作一些高仿品的生產商,而鑑別器就像是試圖檢測出這些仿製品的警察。

由於整個過程是自動完成的,僅受限於實際的計算能力,因此GANs可用來實現一些很有趣的功能。

以下是一些用GANs完成的酷炫應用。

1、讓機器擁有想像力

神經網絡對於物體的本質是怎麼「想」的?

為了搞懂這個問題,谷歌大腦的研究人員使用GAN,讓神經網絡的「想法」呈現在你的眼前。當然,這些「想法」看起來十分迷幻。

其實這原本是一個圖像分類器,而生成的迷幻圖片,是故意對圖像進行過度處理的副產品。現在這套系統有個單獨的名字:「深夢(Deep Dream)」。

△ Deep Dream模型利用普通照片生成的一張奇幻照片

△ Deep Dream模型將塔樓、房屋和小鳥等對象融入圖像中的效果示例

想要運行Deep Dream模型,你只需要輸入一張圖像,然後這個模型就開始窮盡所能,尋找被訓練識別的目標。在一張完全不相關的圖像中,神經網絡可能會發現一些與狗、房子、水母等物體的相似之處。

就好像你看到雲朵會產生聯想一樣,Deep Dream模型會放大它找到的相似之處。

舉個例子,當你運行這個辨識網絡時,它指出某張圖是狗的可能性為40%,然後開始修改輸入圖像,使得這張圖為狗的可能性增加到60%。並不斷重複這個過程,直到輸入圖像明顯地轉化成一張看起來像狗的圖像。

按照這種方式,通過將圖像逐漸轉化為的另一種物體,這個神經網絡就把自己的「想像」,展現在你的面前。

谷歌提出的Deep Dream模型將傳統的思路(即給定相同輸入只產生一種輸出的想法),改變為不斷修改輸入來獲取最佳輸出。

更多信息

博客:

http://googleresearch.blogspot.ch/2015/06/inceptionism-going-deeper-into-neural.html

代碼:

https://github.com/google/deepdream

2、能模仿人的智能體

這是通過GANs實現模仿學習。不同於傳統的獎勵機制,某些AI研究人員希望針對自主學習智能體,提出一種全新的方法。

他們將實際的示範數據輸入到智能體,然後智能體從中學習並嘗試模仿相同的動作。

在這個模型中,Jonathan Ho和Stefano Ermon提出了一種模仿學習的新方法。一般來說,強化學習通常需要設計一個衡量智能體運動行為的獎勵機制。但是,在實際中,可能要經歷成本昂貴的試錯過程,才能得到合理的前進表現。

然而,在模仿學習中,智能體從示範數據(機器人的遠程操作或是人類行為)中學習,消除了設計獎勵機制的要求。關於強化學習在這方面的最新研究可移步量子位編譯過的「DeepMind智能體自學跑酷:略顯智障,結果尚好」。

更多信息

博客:

https://blog.openai.com/generative-models/

代碼:

https://github.com/openai/imitation

3、指馬為斑馬

用圖像生成圖像,這也是生成網絡的一個有趣應用。在實驗中,研究人員能夠更改視頻中的動物種類、圖片中的季節類型或是其他類似任務。

這項任務的目標是通過一系列配對圖像的訓練集,學習從輸入圖像到輸出圖像的映射關係。然而,在大多數情況下,不容易獲得所需的配對訓練數據。

為了克服這個問題,引入了兩個逆映射,使得每個映射的輸出與另一個映射的輸入相同,從而可利用少量數據來建立一個圖像間儘可能完整的映射關係(即無監督學習)。

關於這方面工作的詳細解讀可移步量子位編譯過的「帶你理解CycleGAN,並用TensorFlow輕鬆實現」。

以下是這項研究工作的一些實例。

△ 通過檢測視頻中正在移動中的野馬並把斑馬條紋疊加上去,可將野馬轉換成斑馬。

△ 改變圖像中的季節,如把優勝美地的冬天變成夏天,把冬天變成春天,反之亦可。

更多信息

首頁:

https://junyanz.github.io/CycleGAN/

代碼:

https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

4、給草圖上色

這項任務可根據物體輪廓生成逼真圖像。在現實中,圖像處理是一項具有挑戰性的工作,因為它需要以一種用戶可控的方式來修改圖像外觀,同時保留結果的逼真程度。這需要一定的技巧,一個藝術家可能需要苦練多年才能達到這一高度。

研究人員構建了一個模型,在給定物體輪廓後,它能夠識別這個物體並生成該物體的逼真圖像。

然而,在伯克利大學的一篇論文中,作者Jun-Yan Zhu提出了一種利用生成對抗網絡直接從數據中學習自然圖像流形的方法。該模型能自動調整輸出以保持所有編輯儘可能地逼真,以及所有操作都是用約束優化來表示的,處理過程近乎實時。

所提出的這種方法可進一步用於圖像生成研究,或是基於個人塗鴉完整地產生新奇圖像的研究中。

更多信息

論文:

https://arxiv.org/pdf/1609.03552v2.pdf

代碼:

https://github.com/junyanz/iGAN

首頁:

https://people.eecs.berkeley.edu/~junyanz/projects/gvm/

5、僅根據文本描述來生成圖像

能否僅根據文本來自動生成逼真圖像?這聽起來就十分有趣。

最近,研究人員提出了一種深度卷積生成對抗網絡(Deep convolutional generative adversarial networks),可以產生一些高度逼真的圖像,但是目前僅針對特定類別,如人臉、唱片封面和房間內飾。

該模型的訓練數據為一些文本描述及其對應圖像的樣本集。當給出任何物體描述時,這個模型會嘗試根據描述來生成圖像。

△ 該模型能根據詳細的文字描述來生成似乎合理的花鳥圖像。

在這項工作中,所構建的模型首先獲取關於圖像合成的文本描述,其次學習捕捉文本中描述重要視覺信息的特徵,然後使用這些特徵來合成出能愚弄人的逼真圖像。

更多信息

論文:

https://arxiv.org/pdf/1605.05396.pdf

代碼:

https://github.com/paarthneekhara/text-to-image

6、通過「好奇心」驅動學習

「好奇心」機制推動了對深層神經網絡的探索。在許多現實場景中,對操作者的外部獎勵是非常稀疏的或幾乎不存在的。因此,由於這種內在特性,操作者處於被動狀態,很難進行進化和學習。

在這種情況下,好奇心可以作為一種內在的獎勵信號,讓操作者去探索未知的新環境,學習一些在以後生活中可能有用的技能。在這些情況下,主動學習者的效果遠遠好於被動學習者。

在這個模型中,我們將操作者預測自身行為可能導致後果的能力,即預測值和真實值之間的誤差稱為好奇心(Curiosity)。當然,在此空間中,機器人也可通過程式設計師建立的獎勵機制來學習。

我們可將這個模型類比為小孩的認知過程。如果父母不告訴這個小孩,他並不知道他碰到一個熱火爐後會發生什麼,但是一旦他這麼做了,他就學會下次不這麼做,因為觸摸到爐子後,他會感到十分疼痛,這就存在前後的因果關係。

「好奇心」機制推動他去探索,同時獎勵機制會標記這個行動的好壞。

「好奇心」驅動學習有如下三個大概的研究背景:

1).極少的外部獎勵,與外部環境的相互作用遠遠少於期望值;

2).不輸入外部獎勵,好奇心促使操作者的探索更有效;

3).推廣到未接觸過的場景(例如同一遊戲的新關卡),從早期經歷獲得知識的操作者比從頭開始探索新地點的操作者學習要快得多。

我們在兩個遊戲環境中評估所提出的方法:毀滅戰士(VizDoom)和超級馬裡奧兄弟(Super Mario Bros)。

更多信息

論文:

https://pathak22.github.io/noreward-rl/resources/icml17.pdf

代碼:

https://github.com/pathak22/noreward-rl

首頁:

https://pathak22.github.io/noreward-rl/index.html#demoVideo

7、AI設計遊戲

這個研究希望使用GANs來設計遊戲的用戶界面。研究者的思路是,如果能生成一些有說服力的虛擬視頻遊戲截圖,我們可以從中得到一些啟發,並將部分圖像片材用於設計新遊戲。

△ 真實的遊戲背景圖像作為輸入

△ 隨著GANs的訓練,生成的背景圖像變得越來越好

△ 最後得到一些可能對新遊戲有啟發的場景

此程序的目標是生成一些類似的遊戲素材。為了實現這一點,該程序會從現有的各種遊戲中收集出一堆圖像。然後,程序根據這些打亂的圖像小塊來生成獨特的新圖像。這些圖像可以被用作設計新遊戲的背景。

更多信息

博客:

https://medium.com/@ageitgey/abusing-generative-adversarial-networks-to-make-8-bit-pixel-art-e45d9b96cee7

8、預測視頻中可能的發展動向

這個研究是通過場景動力學(Scene Dynamics)來生成視頻。

了解物體運動和場景動力學是計算機視覺中的一個核心問題。對於視頻識別任務(如動作分類)和視頻生成任務(如未來預測),需要構建一個能理解如何進行轉換場景的模型。然而,創建動態模型十分具有挑戰性,因為物體和場景的變化方式有很多種。

這是利用一個能從背景中分離前景的模型實現的,它通過強制背景變成靜止的,並且該網絡能學習到哪些物體正在移動以及哪些處於靜止。

這些視頻不是真實的,而是通過視頻生成模型「想像」得來的。雖然看起來不夠逼真,但根據訓練時所使用的場景類別,這些生成動作是合理的。

量子位之前也有過類似報導。

更多信息

論文:

http://carlvondrick.com/tinyvideo/paper.pdf

代碼:

https://github.com/cvondrick/videogan

首頁:

http://carlvondrick.com/tinyvideo/

9、生成逼真的假人臉

這個項目叫做「神經人臉(Neural Face)」,是一種能生成逼真臉部圖像的人工智慧技術。這個項目參考了Facebook公司AI研究團隊開發的深度卷積生成對抗網絡(DCGAN),這種方法也應用在上面提到的「僅根據文本描述來生成圖像」。

△ 由GANs生成的獨特人臉圖

該AI團隊使用一個向量Z表示每張圖像,其中該向量Z由100個[0,1]區間的實數組成。

生成器計算得到臉部圖像的分布後,利用高斯分布從向量Z中生成圖像。生成器不斷學習來生成新的臉部圖像,以愚弄鑑別器;反過來,鑑別器在競爭過程中可以更好地區分生成臉部圖像和真實臉部圖像。

更多信息

代碼:

https://github.com/carpedm20/DCGAN-tensorflow

首頁:

http://carpedm20.github.io/faces/

10、改變照片中的面部表情和容貌

這個項目是使用GANs對面部圖像進行向量運算。在實驗中,研究人員通過向系統輸入一系列樣本圖像,來生成具有多種面部表情的人臉圖像。例如,它可以將一張非微笑的臉變為微笑的臉、在臉上添加一個物體(如眼鏡),或突出某些特徵。

△ 使用算術運算,我們可以將非微笑的人臉圖像轉換為微笑的人臉圖像,或者向一張沒有戴眼鏡的人臉上添加眼鏡。

這種方法的基本原理是,把圖像的每一列都表示成一個向量X,把所有X平均後得到均值向量Y。

然後對向量Y執行諸如加法和減法的算術運算,來創建單張圖像,即向量Z是通過戴眼鏡的男人減去不戴眼鏡的男人,再加上不戴眼鏡的女人得到的。接著,這個圖形向量Z被傳輸到生成器中,以生成上圖中右側所示的效果,分別是微笑的男人和戴著眼鏡的女人。

△ 將左側臉部圖分步轉換成右側臉部圖

我們也可模擬人臉的旋轉、縮放和移位等變換,得到逼真的效果。為了實現這個,我們先拍攝了一系列左側臉部圖和右側臉部圖的圖像樣本。接著,平均所有圖像得到一個轉動圖像向量(Turn Image Vector)。然後,我們通過沿著圖像向量的軸線進行插值,將這種「變換」應用於新面孔中。

更多信息

論文:

https://arxiv.org/pdf/1511.06434.pdf

代碼:

https://github.com/Newmu/dcgan_code

博客:

https://hackernoon.com/how-do-gans-intuitively-work-2dda07f247a1

結論

GANs的提出對人工智慧和機器學習的發展有著十分深遠的意義。但是上面提到的這些還只是GANs的早期研究成果。上述的十個例子,看起來十分酷炫,但是仍然只涉及到這個網絡理論的一些皮毛。

作為一名工程師,我們應該意識到,它是一種強大的方法,可訓練出能完成任何複雜人類任務的神經網絡。GANs用實際性能證明,創造力不再是人類獨有的特質。

學習資源

如果你想深入學習有關生成模型和DCGAN的知識,這裡列出一些資源。

1.50行代碼實現生成對抗網絡:

https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f

2.GANs教程(Ian Goodfellow,NIPS 2016):

https://channel9.msdn.com/Events/Neural-Information-Processing-Systems-Conference/Neural-Information-Processing-Systems-Conference-NIPS-2016/Generative-Adversarial-Networks

3.GANs入門講解(5分鐘短視頻):

https://www.youtube.com/watch?v=deyOX6Mt_As

—— ——

相關焦點

  • 2020最佳AI論文,都在這裡了
    為了讀者的方便,Bouchard 還非常貼心地為入選的每篇論文,都提供了視頻、短文介紹、論文連結和代碼地址,幫助大家更快速理解論文的核心內容,還能最快速度上手用起來。簡單來說,僅對簡單的遊戲錄像和玩家輸入進行學習,GameGAN 就能夠模擬出接近真實遊戲的環境,還不需要遊戲引擎和底層代碼。它的底層是在 AI 領域很有名的生成對抗網絡 (GAN)。正是因為它的學習方式很簡單,任何遊戲它都能模擬出來,除了吃豆人這樣的2D遊戲,連 DOOM 這種3D遊戲都可以。英偉達指出,這項技術有助於遊戲開發者為已有的遊戲開發全新的關卡。
  • 原理+代碼|Python實戰多元線性回歸模型
    其中多元共線性這個問題將貫穿所有的機器學習模型,所以本文會「將原理知識穿插於代碼段中」,爭取以不一樣的視角來敘述和講解「如何更好的構建和優化多元線性回歸模型」。原理其實非常簡單,將無法直接用於建模的名義變量轉換成可放入模型的虛擬變量的核心就短短八個字:「四散拆開,非此即彼」。下面用一個只有 4 行的微型數據集輔以說明。
  • 最佳論文最佳學生論文一作均為華人,清華最高產機構
    在剛剛結束的CVPR 2020 開幕式上,悉數公布了本屆CVPR最佳論文、最佳學生論文等獎項。值得一提的是,兩個獎項的論文一作均為華人。最佳學生論文今年的最佳學生論文獎是《BSP-Net: Generating Compact Meshes via Binary Space Partitioning》,作者為來自西蒙弗雷澤大學和谷歌研究院的三位研究者。
  • 5分鐘入門GANS:原理解釋和keras代碼實現
    GANs允許我們生成由神經網絡生成的圖像。在我們深入討論這個理論之前,我想向您展示GANs構建您興奮感的能力。把馬變成斑馬(反之亦然)。歷史生成式對抗網絡(GANs)是由Ian Goodfellow (GANs的GAN Father)等人於2014年在其題為「生成式對抗網絡」的論文中提出的。
  • 「未卜先知」、「自學成才」:GANs奇思妙想TOP10榜單
    生成對抗網絡由兩個相互競爭的神經網絡模型組成,就好比周伯通的左右手。一個神經網絡(生成器)不斷學習怎樣生成新的樣本以欺騙判別器,另一個網絡(判別器)則不斷學習怎樣區別生成樣本數據和真實數據。在百萬輪「較量」後,生成器就可以輸出與真實數據幾乎無差別的樣本。
  • 「GANs之父」Goodfellow 38分鐘視頻親授:如何完善生成對抗網絡...
    生成對抗網絡是一種生成模型(Generative Model),其背後最基本的思想就是從訓練庫裡獲取很多的訓練樣本(Training Examples),從而學習這些訓練案例生成的概率分布。一些生成模型可以給出概率分布函數定義的估測,而另一些生成模型可以給你全新的樣本,這些新樣本來自於原有生成訓練庫的概率分布。
  • 哈佛出品,10行代碼訓練「藥神」模型
    作為一個基於PyTorch的工具包,DeepPurpose只需要不到10行代碼,就能訓練出AI「藥神」模型。由兩個編碼器組成,分別用來生成藥物分子和蛋白質的嵌入(Embedding),也就是深度學習過程中的映射。
  • ACCV 2020最佳論文等三項大獎出爐!華為諾亞獲最佳學生論文獎
    ACCV 2020 共錄用論文 255 篇,官方提供所有論文開放下載。官網連結:http://accv2020.kyoto/截止目前,大會已經公布了最佳論文獎、最佳學生論文獎、最佳應用論文獎等三項大獎,其中帝國理工和華為諾亞方舟合作獲得了最佳學生論文獎。以下AI科技評論就帶大家讓我們一起來看看這三項大獎吧 !
  • 專訪ACL2020最佳論文二作:全新NLP模型評測方法論,思路也適用於CV
    其中,最受人矚目的當屬最佳論文獎,今年該獎項由微軟團隊的《Beyond Accuracy: Behavioral Testing of NLP Models with CheckList》一舉拿下。小編看到論文題目的第一眼就覺得哪些有些不對,於是趕緊通讀了一下文章,嗯~確實不太對,這貌似和之前我們熟悉的NLP「大力出奇蹟」的模型套路不太一樣啊?
  • 生成Python函數一半沒問題,當前最「正統」的代碼生成是什麼樣?
    在這篇文章中,我們將介紹代碼生成與總結的最新進展,北大 Bolin Wei、李戈等研究者提出的對偶學習在 Python 和 Java 代碼生成上獲得了新的 SOTA,並且被接收為 NeurIPS 2019 論文。如下是北大新研究根據注釋生成的兩段代碼,其中 dcsp 表示 tab 鍵、dcnl 表示換行符,它們控制 Python 代碼的縮進結構。
  • 2018 年最棒的三篇 GAN 論文
    在本文的第一章,我會介紹三篇論文。順便一提,如果你對於此前的 GAN 相關論文感興趣,這篇文章(閱讀地址:https://medium.com/nurture-ai/keeping-up-with-the-gans-66e89343b46)將會對你有所幫助,作者提到的其中一篇論文甚至就是我今天要介紹的最佳論文。1.
  • CycleGAN模型原理
    CycleGAN模型原理前面我們了解了好幾種GAN,它們大致可分為:隨機生成模型的GAN,包括GAN,DCGAN,WGAN
  • 哈佛出品,10行代碼訓練「藥神」模型
    這款名為DeepPurpose的工具包,不僅包含COVID-19的生物測定數據集,還有56種前沿的AI模型。作為一個基於PyTorch的工具包,DeepPurpose只需要不到10行代碼,就能訓練出AI「藥神」模型。這些模型不僅能完成虛擬篩選,還能挖掘出已有藥物的新功能(例如,高血壓藥物可治療阿爾茲海默症)。下面來看看它實現的原理。
  • AAAI 2020 論文解讀:關於生成模型的那些事
    本文介紹的三篇論文就包含了三種生成模型(GNN、RL、VAE,即怎麼生成),同時也介紹了這些生成模型各自當前的應用場景(場景圖生成、序列生成、任務型對話生成,即生成什麼)。機器學習模型的一種分類方式就是將模型分為分類模型和生成模型,GAN 的出現使得生成模型一度大火,GAN 也開始被應用於各個領域,但是生成模型並不只是 GAN。
  • ACM MM最佳論文全文:通過多對抗訓練,從圖像生成詩歌
  • 一行代碼即可調用18款主流模型!PyTorch Hub輕鬆解決論文可復現性
    用戶可以提交、瀏覽模型,極大的改善了論文的可復現性難題。機器學習論文的可復現性一直是個難題。許多機器學習相關論文要麼無法復現,要麼難以重現。有時候論文讀者經常為了調用各種經典機器學習模型,還要重複造輪子。隨著提交給arXiv以及各種會議上的論文數量開始暴漲,可復現性的重要性也越來越凸顯。
  • NeurIPS18最佳論文NeuralODE,現在有了TensorFlow實現
    銅靈 發自 凹非寺量子位 出品 | 公眾號 QbitAI還記得NeurIPS 18的最佳論文Neural Ordinary Differential Equations(後簡稱NeuralODE)嗎,最近,有一個小哥用TensorFlow實現了它。
  • 騰訊摘獲最佳長論文獎
    推薦是信息過濾的一種特殊形式,它利用過去的行為和用戶相似性來生成信息項(items )列表,這些信息項是針對最終用戶的喜好量身定製的。RecSys與從事推薦系統的主要國際研究小組以及許多世界領先的電子商務公司匯聚在一起,因此,它已成為介紹和討論推薦系統研究的最重要的年度會議。
  • 102個模型、40個數據集,這是你需要了解的機器翻譯SOTA論文
    機器之心構建的 SOTA 模型項目,就旨在解決這個問題,我們可以直接從機器之心官網中找到 SOTA 平臺,並搜索想要的頂尖模型。為了探索當前最佳的 NMT 模型,我們選了幾個常見的數據集,並看看在 Transformer 之後,還有哪些激動人心的研究成果。我們發現不同的 NMT 模型都有其側重的數據集,但最常用的還是 WMT 英法數據集或英德數據集。
  • ICLR 2020 匿名評審九篇滿分論文,最佳論文或許就在其中|模型|杜克...
    ICLR 2020今年4月26日將在衣索比亞首都阿迪斯阿貝巴舉行,因為這次會議只保留了四個等級:reject、weak reject、weak accept和accept,因此有30多篇論文獲得了「滿分」。在這篇文章中,我們將簡介其中的9篇滿分(全8分)論文,它們最終都被接收為Talk 論文,屆時論文作者會在大會上做長達十多分鐘的演講報告。