知乎:GAN 的發展對於研究通用人工智能有什麼意義?

資歷不深,入坑一年的我僅從我的角度談談理解,但願能拋磚引玉。html

GAN對於人工智能的意義,能夠從它名字的三部分提及:Generative Adversarial Networks。爲了方便講述,也緬懷過去兩週在某論壇上水掉的時間,我先從Networks講起。react

Networks:(深度)神經網絡git

自從12年AlexNet橫空出世後,神經網絡儼然已成爲如今learning的主流。比起貝葉斯學派的強先驗假設(priori),SVM在覈函數(kernel)上的反覆鑽研,神經網絡不須要科研者過多關注細節,只須要提供好海量的數據和設置好超參數,便能達到不錯的效果。用武俠小說的方式來講,即是各大門派高手潛心十餘載修煉一陽指/九陰真經/麒麟臂等神功,比試時卻發現有一無名小卒內力浩瀚如海,出手雖毫無章法可言,但在內功的加持下,輕鬆打得衆人擡不起頭。github

Deep系列的算法不只在衆多benchmark上霸據榜首,其衍生應用也給人工智能帶來了一股新的浪潮,例如創做藝術品(Gatys 的 Neural Alorightm for Artistic Style),AlphaGo(CNN估值 + 蒙特卡洛剪枝),高質量的機器翻譯(Attention + seq2seq)等等。這些衍生應用在部分任務上,已經能媲美人類中的專家,讓人不由浮想強人工智能(strong AI)的到來。然而,縱使深度網絡(Deep Neural Networks)再強大,它也有本身的侷限,生成模型上的不盡人意即是其中之一。算法

Generative(Model):生成模型數據庫

機器學習的模型可大致分爲兩類,生成模型(Generative Model)和判別模型(Discriminative Model)。判別模型須要輸入變量x ,經過某種模型來預測p(y|x) 。生成模型是給定某種隱含信息,來隨機產生觀測數據。舉個簡單的例子,網絡

  • 判別模型:給定一張圖,判斷這張圖裏的動物是貓仍是狗
  • 生成模型:給一系列貓的圖片,生成一張新的貓咪(不在數據集裏)

衆所周知的imagenet-1000圖像分類,自動駕駛的圖片語義分割,人體骨架點的預測都屬於判別模型,即給定輸入預測某種特徵。實際上12~14年的大部分工做都屬於判別模型,爲何呢,緣由之一即是判別模型的損失函數(loss)方便定義。機器學習

回到根源,什麼是機器學習?一句話來歸納就是,在訓練過程當中給予回饋,使得結果接近咱們的指望。對於分類問題(classification),咱們但願loss在接近bound之後,就不要再有變化,因此咱們選擇交叉熵(Cross Entropy)做爲回饋;在迴歸問題(regression)中,咱們則但願loss只有在二者一摸同樣時才保持不變,因此選擇點之間的歐式距離(MSE)做爲回饋。損失函數(回饋)的選擇,會明顯影響到訓練結果的質量,是設計模型的重中之重。這五年來,神經網絡的變種已有不下幾百種,但損失函數卻寥寥無幾。例如caffe的官方文檔中,只提供了八種標準損失函數 Caffe | Layer Catalogue函數

對於判別模型,損失函數是容易定義的,由於輸出的目標相對簡單。但對於生成模型,損失函數的定義就不是那麼容易。例如對於NLP方面的生成語句,雖然有BLEU這一優秀的衡量指標,但因爲難以求導,以致於沒法放進模型訓練;對於生成貓咪圖片的任務,若是簡單地將損失函數定義爲「和已有圖片的歐式距離」,那麼結果將是數據庫裏圖片的詭異混合,效果慘不忍睹。當咱們但願神經網絡畫一隻貓的時候,顯然是但願這張圖有一個動物的輪廓、帶質感的毛髮、和一個霸氣的眼神,而不是冷冰冰的歐式距離最優解。如何將咱們對於貓的指望放到模型中訓練呢?這就是GAN的Adversarial部分解決的問題。學習

Adversarial:對抗(互懟 )

在generative部分提到了,咱們對於貓(生成結果)的指望,每每是一個曖昧不清,難以數學公理化定義的範式。但等一下,說處處理曖昧不清、難以公理化的問題,以前提到的判別任務不也是嗎?好比圖像分類,一堆RGB像素點和最後N類別的機率分佈模型,顯然是沒法從傳統數學角度定義的。那爲什麼,不把生成模型的回饋部分,交給判別模型呢?這就是Goodfellow天才般的創意--他將機器學習中的兩大類模型,Generative和Discrimitive給緊密地聯合在了一塊兒。

模型一覽



對抗生成網絡主要由生成部分G,和判別部分D組成。訓練過程描述以下

  1. 輸入噪聲(隱藏變量)z
  2. 經過生成部分G 獲得x_{fake}=G(z)
  3. 從真實數據集中取一部分真實數據x_{real}
  4. 將二者混合x=x_{fake} + x_{real}
  5. 將數據喂入判別部分D ,給定標籤x_{fake}=0,x_{real}=1 (簡單的二類分類器)
  6. 按照分類結果,回傳loss

在整個過程當中,D 要儘量的使D(G(z))=0D(x_{real})=1 (火眼晶晶,不錯殺也不漏殺)。而G 則要使得D(G(z))=1 ,即讓生成的圖片儘量以假亂真。整個訓練過程就像是兩個玩家在相互對抗,也正是這個名字Adversarial的來源。在論文中[1406.2661] Generative Adversarial Networks ,Goodfellow從理論上證實了該算法的收斂性,以及在模型收斂時,生成數據具備和真實數據相同的分佈(保證了模型效果)。

從研究角度,GAN給衆多生成模型提供了一種新的訓練思路,催生了許多後續做品。例如根據本身喜愛定製二次元妹子(逃),根據文字生成對應描述圖片(Newmu/dcgan_code, hanzhanggit/StackGAN),甚至利用標籤生成3D宜家家居模型(zck119/3dgan-release),這些做品的效果無一不使人驚歎。同時,難人難得的是這篇論文有很強的數學論證,不一樣於前幾年的套模型的結果說話,而是從理論上保證了模型的可靠性。雖然目前訓練還時常碰到困難,後續已有更新工做改善該問題(WGAN, Loss Sensetive GAN, Least Square GAN),相信終有一日能克服。

從通用人工智能高層次來看,這個模型率先使用神經網絡來指導神經網絡,很有一種奇妙的美感:彷彿是在辯日的兩小兒同樣,一開始二者都是懵懂的幼兒,但經過觀察周圍,相互討論,逐漸進化出了對外界的認知。 這不正是吾等所指望的終極智能麼 -- 機器的知識來源再也不侷限於人類,而是能夠彼此之間相互交流相互學習。也難怪Yann Lecun讚歎GAN是機器學習近十年來最有意思的想法

相關文章
相關標籤/搜索