AI不僅會寫詩,會畫畫,會學習,現在連好奇心都有了......

文/Sumeet Agrawal

還記得《射鵰英雄傳》中老頑童發明的「左右互搏術」嗎?表面上看,左手與右手互為敵手,斗得不可開交。實際上,老頑童卻憑藉此練就了一門絕世武功。

這樣的故事似乎只能發生在小說中。然而,近年來興起的一項機器學習演算法卻將「左右互搏術」變為了現實。這項神奇的演算法正是生成對抗網路(GANs)。今天DT君就帶你走近生成對抗網路在產業界的十大神奇應用。

本文轉載自公眾號大數據文摘(ID:BigDataDigest)

作者 | Sumeet Agrawal

編譯 | 糖竹子、阮雪妮、Saint、錢天培

生成對抗網路由蒙特利爾大學的IanGoodfellow最先提出,目前是「教」電腦完成人類工作最有效的方法之一。它的核心想法正是令內部功能相互競爭,達到提升它們各自功能的效果。

生成對抗網路由兩個相互競爭的神經網路模型組成,就好比周伯通的左右手。一個神經網路(生成器)不斷學習怎樣生成新的樣本以欺騙判別器,另一個網路(判別器)則不斷學習怎樣區別生成樣本數據和真實數據。在百萬輪「較量」後,生成器就可以輸出與真實數據幾乎無差別的樣本。

生成對抗網路別出心裁的思想讓它在學界揚名立萬。在業界,生成對抗網路也帶來了無數強大、有趣的應用

(圖片說明:對抗生成網路的概念模型)

NO. 10 照貓畫虎:自動生成遊戲用戶界面

排在榜單第十位的GANs應用是,遊戲用戶界面自動生成。

這一應用背後的腦洞如下:如果我們能夠生成逼真的遊戲配圖,那麼我們就可以把這些配圖中的部分截取拼接在一起,從而設計出一個全新的遊戲界面。

作為輸入的遊戲背景圖像:

在生成式對抗網路(GAN)訓練過程中生成的背景圖像:

可以用於製作全新遊戲的獨特背景:

為實現這一目標,該程序會搜集大量現有遊戲的圖像,然後生成由這些圖像片段所構成的獨一無二的新圖像。這些圖像之後便可以被用作新遊戲的背景了。

來源&更多信息:

Blog:medium.com/@ageitgey/ab

No. 9 千面神君:用GANs生成以假亂真的人臉

接下來,我們要為你介紹一款能夠偽造人臉圖像的AI——Neural Face。Neural Face使用了Facebook 人工智慧研究團隊開發的深度卷積神經網路(DCGAN)。

由生成式對抗網路(GANs)產生的獨特人臉:

研發團隊用由100個0到1的實數組成的1個向量Z來代表每一張圖像。

通過計算出人類圖像的分布,生成器就可以用高斯分布(Gaussian Distribution)根據向量Z來生成圖像。在此過程中,生成器學習生成新的人臉圖像來欺騙判別器,同時判別器也能更好地區分加工生成的人臉圖像和真實的人臉圖像。

來源&更多信息:

GitHub:github.com/carpedm20/DC

Page:carpedm20.github.io/fac

No. 8 破涕為笑:改變照片中的面部表情和特徵

在這一應用中,你只需要提供一些樣本圖像,研究人員就能生成表情各異的人臉圖像。比如,你可以讓一個面無表情的人露出笑容。

讓面無表情的人露出笑容,給不戴眼鏡的人加副眼鏡:

實現這一應用的基本思想方法是:將圖像的每一列用向量X來表示,計算每一個X的平均值,從而得到一個Y向量。

然後,對向量Y進行一些加法和減法運算,生成一個單一的圖像向量Z(如:戴眼鏡的男性-不帶眼鏡的男性+不帶眼鏡的女性)。最後,把這個圖像向量Z輸入生成器中。

將一張頭像靠左的人臉圖像變為靠右的圖像:

實際上,我們還可以用該模型實現包括旋轉、放縮、位置變換在內的多種操作。以位置變換為例,我們可以將一張頭像靠左的人臉圖像轉變為靠右的圖像。

為此,我們可以先把向頭像靠左和靠右的人臉圖像作為樣本,對它們取平均值,得到一個「翻轉圖像」向量。然後,沿著坐標軸對圖像向量進行插值(zh.wikipedia.org/wiki/%),我們就可以將這種「轉變」應用到新的人臉圖像上了。

來源&更多信息:

GitHub:github.com/Newmu/dcgan_

Paper:arxiv.org/pdf/1511.0643

Blog:hackernoon.com/how-do-g

NO. 7 腦洞大開: 用GANs創造出迷幻圖像

接下來,我們將為你介紹Google Brain研發的Google Deep Dream。這一應用基於 GoogleNet對物體本質的「認知」可視化。

通過此方法,GANs能夠學會生成一些「迷幻」的圖片。這些如夢似幻的圖像是圖片分類器故意過度處理圖像的結果。

Deep Dream在圖像中「找」到了塔、建築、鳥和昆蟲:

Deep Dream 用普通圖像生成迷幻圖片:

當你向Google Deep Dream輸送一張圖像後,該應用就會開始在圖像中尋找各類曾被訓練識別的物體。神經網路會將一些毫不相關的物體聯繫起來,這就好比人們把雲想像成小狗、小鳥。然後,Google Deep Dream 會對其聯想出的物體作增強處理。

舉個例子,當神經網路第一次作出圖像識別時,它會認為這張圖有40%的可能是一隻小狗,而經過一輪處理後,神經網路就會認為可能性增加到了60%。這個過程會不斷重複,直到輸入圖片已被修改得非常像一條狗了。

就這樣,它一步步地把原圖像調整成另外一張圖像。換句話說,創造出了「四不像」的圖片。

來源&更多信息:

GitHub:github.com/google/deepd,

Blog:research.googleblog.com

NO.6 狸貓換太子:改變圖像/視頻內容

通過圖片生成另一張圖片是生成網路的另一項有趣應用。憑藉此技術,我們可以將一段視頻中的動物換成另一種動物,或者將圖片里的季節換成另一季節。

該應用的核心在於,使用一組訓練圖像對來學習映射輸入和輸出圖像。然而,在許多情況下,配對訓練圖像並不容易獲得。為了克服這一問題,我們可以採用「雙邊鏡像繪圖」的方式,將一種變換的輸入作為另一中變換的輸出。這樣,我們就能通過無監督學習克服相本容量小的問題了。

動物變形—通過偵測視頻中的奔跑的馬給它添加斑馬條紋,將馬變斑馬圖像:

季節轉換—在圖像中改變季節,例如將冬季轉為夏季,或將冬季轉為春季:

來源&更多信息:

Page:junyanz.github.io/Cycle

GitHub:github.com/junyanz/pyto

NO.5 化零為整:通過輪廓生成逼真圖像

修改逼真圖像是一項富有挑戰性的工作,它要求在寫實的基礎上以用戶控制的方式改變圖像的外觀。這一任務的技術含量相當高,一位藝術家可能要經過多年訓練才能到達穩定的水準。

GANs 能夠從輪廓中生成逼真的圖像:

給出一件物品的輪廓,這一模型就能夠識別出這個物品,並能夠生成栩栩如生的物品圖像。

在該論文中 (arxiv.org/pdf/1609.0355),作者提出一種使用生成對抗網路,從數據中直接學習自然圖像流形的方法。模型能夠自動調整輸出結果,以保證內容儘可能真實,同時所有操作均以約束優化法進行表達,且基本能被實時應用。

這個方法也可以將一張圖片變得更像另一張圖片,或者根據用戶的塗鴉產生全新的圖像。

來源&更多信息:

Paper:arxiv.org/pdf/1609.0355

GitHub:github.com/junyanz/iGAN

Page:people.eecs.berkeley.edu

NO.4 見字如面:GANs用文本生成圖片

下面這項應用既有趣又實用。通過訓練,GANs能夠依據文字描述自動合成擬真圖像。

最近,深層卷積生成對抗網路(DCGANs)用一些特定類別的圖像,如人臉,唱片封面,室內空間合成了令人嘆服的圖像。

這個模型是用由文本和與之對應的圖像組成的樣本數據進行訓練的。給定一個物體的文本描述,這個模型會嘗試根據這一描述生成圖像。

左欄為文字描述,右欄為機器想像出的圖片:

左欄的描述從上到下分別為:

  • 「這隻充滿朝氣的紅色小鳥有著尖尖的黑色的喙」,
  • 這隻黃橙色的鳥有著黑色的翅膀
  • 這隻天藍色小鳥的腹部是白色的

在這項工作中,我們首先要獲取描述圖像的文本,學習文本,抓住重要的視覺細節,然後再利用這些特徵文本來合成能夠迷惑人們的逼真圖像。

來源&更多信息:

Paper:arxiv.org/pdf/1605.0539

GitHub:github.com/paarthneekha

No. 3 未卜先知:通過「場景動態」(Scene Dynamics)預見視頻下一秒將發生什麼

理解物體運動和場景動態是計算機視覺中的核心問題。不管是視頻識別任務(如行動分類)還是視頻生成任務(如未來預測)都需要轉換場景的模型。但由於物體和場景改變的方式多種多樣,構建這樣一個動態模型是很有挑戰性的。

生成火車站、沙灘、嬰兒和高爾夫的預測短視頻:

為實現這一目標,我們需要一個能將前景和背景區分開來的模型。在保持背景的靜止的基礎上,神經網路能夠了解哪些物體是運動的,哪些物體是靜止的。

上面的預測視頻便是生成模型想像出來的。儘管這些預測並沒有實際發生,基於它們的訓練場景類別,這些動作還是相當合理的。

來源&更多信息:

Paper:carlvondrick.com/tinyvi

GitHub:github.com/cvondrick/vi

Page:carlvondrick.com/tinyvi

NO. 2 依葫蘆畫瓢:用GANs完成模仿學習

GANs也可以幫助研發自學習人工智慧機器人。此前,該領域的研究多涉及獎勵機制的應用。

運用GANs的方法,科研人員向人工智慧主體輸入真實的演示數據,然後人工智慧主體就能通過數據學習嘗試模仿相同的動作。

一個AI主體正嘗試模仿人類跑步:

該模型展示了模仿學習的一種新方法。標準加強學習模型通常要求建立一個獎勵函數,用於向代理機器反饋符合預期的行為。然而,這種方式在實踐中為了糾正細節問題會在試錯過程上消耗大量精力。

取而代之的模仿學習,則是讓人工智慧主體從實例中學習(例如遠程遙控機器或者人類活動提供的案例),省去了設計獎勵函數的麻煩。

來源&更多信息:

Blog:blog.openai.com/generat

GitHub:github.com/openai/imita

No. 1 自學成才:讓「好奇」驅動計算機學習

在很多現實世界的情境中,對人工智慧主體的外部獎勵是非常少的,或者說根本沒有。如此一來,一段被動的程序就會因為它自身的固有屬性,無法進化和學習。

在這種情況下,「好奇心」可以作為內置的獎勵信號激勵人工智慧主體去探索它周邊的環境、學習在將來對它可能有幫助的技能。在這種情況下主動學習者比被動學習者的表現要好。

在這樣的模型中,「好奇心」被設定為 AI預測它自身行為後果能力中的誤差。當然了,在這樣的語境下,AI也可以通過程序員建立的獎勵機制開展學習。

讓我們用小孩學習的過程來作個類比。一個不受大人監護的小孩不知道摸熱爐子的後果。不過一旦他這樣做了,他就會明白他不應該這樣做——因為疼痛,也因為了解了摸熱爐子和感受到所謂疼痛之間的因果關係。

貪吃蛇遊戲:通過「好奇心驅動學習」(curiosity driven learning),貪吃蛇學著去收集那些能增加它的報酬的綠球,並避開那些會減少其報酬的紅球。

好奇心驅動的學習(curiositydriven learning)以下面三點作為基礎:

  • 極少的外部獎勵——有了「好奇心」,達成目標所需與外界環境的互動更少了。
  • 沒有外部獎勵的探索,是「好奇心」使AI主體的探索行為更高效。
  • 對未知場景中(例如同一個遊戲中的新關卡)的泛化處理。此時AI主體利用過往經驗探索新大陸,這會比它從零開始探索要快很多。

來源&更多信息:

GitHub:github.com/pathak22/nor

Paper:pathak22.github.io/nore

Website:pathak22.github.io/nore

結語

看完了以上這些應用,你是不是對生成式對抗網路刮目相看了呢。然而,這些只不過是生成式對抗網路初試身手罷了。相對於生成式對抗網路所能完成的工作而言,這些應用只是冰山一角。生成式對抗網路為我們提供了一個強有力的訓練神經網路的方法,讓機器能夠完成任何一個人類能夠完成的複雜任務。

生成式對抗網路(GANs)向我們證明了:創造力不再是人類所獨有的特質了。

本文編譯自《A Dozen Times Artificial Intelligence Startled The World》。

DT君送福利:如果你想更深入地學習生成模型(generative model)和深度卷積生成式對抗網路(DCGAN), 關注DT數據俠後台回復「GANs」獲取原文鏈接。

加入數據俠

「數據俠計劃」由第一財經數據新媒體DT財經發起的數據人社群平台,旗下有數據俠專欄、數據大咖及愛好者社群、線上線下「數據俠實驗室」系列活動等項目。

+ 投稿:chengyixiang@dtcj.com

+ 合作:zhaonan@dtcj.com

+ 入群請加DT君微信:dtcaijing002


推薦閱讀:

TAG:AI初创 | 互联网 |