1. 程式人生 > >GAN-機器學習演算法

GAN-機器學習演算法

1)Networks:(深度)神經網路
    自從12年AlexNet橫空出世後,神經網路儼然已成為現在learning的主流。比起貝葉斯學派的強先驗假設(priori),SVM在核函式(kernel)上的反覆鑽研,神經網路不需要科研者過多關注細節,只需要提供好海量的資料和設定好超引數,便能達到不錯的效果。
    Deep系列的演算法不僅在眾多benchmark上霸據榜首,其衍生應用也給人工智慧帶來了一股新的浪潮,例如創作藝術品(Gatys 的 Neural Alorightm for Artistic Style),AlphaGo(CNN估值 + 蒙特卡洛剪枝),高質量的機器翻譯(Attention + seq2seq)等等。這些衍生應用在部分任務上,已經能媲美人類中的專家,讓人不禁浮想強人工智慧(strong AI)的到來。然而,縱使深度網路(Deep Neural Networks)再強大,它也有自己的侷限,生成模型上的不盡人意便是其中之一。

2)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部分解決的問題。

3)Adversarial:對抗(互懟 )

      在generative部分提到了,我們對於貓(生成結果)的期望,往往是一個曖昧不清,難以數學公理化定義的正規化。但等一下,說到處理曖昧不清、難以公理化的問題,之前提到的判別任務不也是嗎?比如影象分類,一堆RGB畫素點和最後N類別的概率分佈模型,顯然是無法從傳統數學角度定義的。那為何,不把生成模型的回饋部分,交給判別模型呢?這就是Goodfellow天才般的創意--他將機器學習中的兩大類模型,Generative和Discrimitive給緊密地聯合在了一起。

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

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