「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

演算法,就像是武林絕學中的「內功」,是電腦領域最重要的基石。不過,演算法多了也很麻煩。不斷推陳出新的演算法是否更新更快更好,大廠各執一詞,評價褒貶不一。沒有「內功」,不可能成為高手;「內功」多了,難免走火入魔。

或許搞清楚一種演算法是在何時以何種方式何種面貌進化的,能更清晰地理解它的現在和未來。今天的演算法簡史,就從現在整個AI圈最熱門的機器學習模型GAN說起。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

從傳統模型到逼真的GAN2.0,生成演算法經歷了哪些變化?

生成對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型,作為在無監督學習上最具前景的演算法之一,最早是在2014年由學者Ian J. Goodfellow等人提出的。

在GAN所代表的深度學習之前,已經有很多生成模型。但這種模型是從機率統計角度出發的,指的是用於隨機生成可觀測數據的模型,很難直接描述和建模。讓研究人員遇到了不少挑戰。

比如說傳統的圖像生成模型,將圖像表示為一個隨機向量,其中每一維度都代表一個像素值,然後假設自然場景中的圖像都服從一個未知的分佈規則,透通過一些觀測樣本來估計其分佈。

顯然,這種難以描述和直接建模的生成模型,讓科研人員遇到了不少困難。最為重要的一點是,系統無從判斷預測結果的品質好壞。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

而原始版GAN(我們稱之為GAN1.0),就在深度學習的浪潮下應運而生。

GAN1.0不僅可以利用深層神經網路模擬任意涵數的能力,讓複雜的分佈判斷得以被建模,而且增加了鑑別器。

於是「生成器網路」和「鑑別器網路」互相博弈,一個不停地捕捉數據產生新樣本,一個不停提出質疑和挑戰來判斷所生成的樣本是否真實。透過自我對抗不斷改進,最終達到很好的輸出結果。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

可以說,GAN開啟了生成演算法的「實用時代」。當然,它並非是十全十美的,針對GAN1.0一些尚未解決的問題,還產生了不少變種演算法。

比如Alec Radford et. Al對GAN做了一些架構上的最佳化,使用超參數和優化器改進之後,可以得到足以亂真的臥室圖片。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

如果說GAN1.0的生成能力已經令人五體投地,那麼最近NIVIDA研究人員推出的升級版GAN(我們稱之為GAN2.0),更是足夠感到驚訝。

GAN2.0採用了基於風格的生成器新結構,可以將臉部細節分離出來,透過模型進行單獨調整,產生的臉部圖像結果大幅度超越了GAN1.0和其他模型。

之所以如此驚人,一是因為GAN2.0可以更好地感知圖像之間有意義的變化,並對其進行引導,讓產生的人臉更逼真,而且還能用於汽車、動物、風景圖像的產生。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

歷史脈絡整理清楚了之後,不難看出,深度學習為更高擬真度的生成演算法奠定了基礎和可能。而GAN的對抗性及其應用價值,又讓圖像生成演算法成為了一門人人趨之若鶩的神器。

GAN的一小步,圖像生成的一大步

那麼,GAN模型發展到現在,到底經歷了什麼樣的變化,又從無到有地獲得了哪些能力呢?

主要集中在以下幾個方面:

1.找重點。GAN2.0採用的生成器架構,提取的圖像風格不再是筆劃或顏色空間這種僵硬的數據,而是圖像的組成和臉部物理特徵等泛屬性,因此可以感知到圖像之間哪些變化是有意義的(耳朵的形狀),哪些特徵無需重點關注(襯衫的顏色),因此比例的控制更細膩,生成的效果自然也就越逼真。

2.排除法。圖像中很多隨機且不起重要影響的細節,比如毛髮、雀斑的具體位置等等,只要符合基本的規則分佈,GAN2.0可以自主將一些隨機變化剔除。

3.省資源。GAN2.0可以將完整的特徵圖像進行縮放,這意味著,在沒有明確指導的自主學習環境下,系統能夠自行判斷使用全局變量或本地管道,進而大大提高了整體效率。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

這背後隱藏著的,正是演算法的本源價值——那就是將嚴謹的科學求證思維,與務實的工程方法相結合,解決問題的一種最佳方案。

而具體到生成任務上時,演算法的「優越性」往往體現在三點:一是能夠更準確地判斷和預測刺激的位置;二是可以進行更小粒度地調整,讓結果更自然;最後是更具想像力和創造力,讓演算法發揮的空間更大。

顯然,GAN的發展正符合人類接近生成任務所面臨的問題時,應該遵循的基本規則。

GAN身上映射的演算法進化論

GAN這一演算法的進化,帶來了很多新鮮的想像力。

除了我們熟悉的仿真人臉、語義分割、聲音處理等常規應用之外,還有一些因模糊而具有龐大想像空間的炫酷應用。

比如,谷歌大腦用GAN讓神經網路學會聯想。系統可以在完全不相關的圖像中,發現一些與狗、房子、魚等物體的相似之處,然後憑藉自己的「想像力」將其呈現出來。這些奇幻的畫作,既是一種機器創作的「先鋒藝術」,更代表著很多人類思維也無法企及的奇幻世界正在被機器路徑打開。

「生成對抗網路」GAN是怎樣一步步學會「騙人」的?

 

另外,在GAN的作用下,能自主模仿人類動作的智慧體正在成為可能。以往的演算法總是需要巨量規模的數據集和大量訓練才能夠有比較優秀的表現。但在模仿學習中,智慧體無需獎勵機制就可以自主進行學習。

更誇張的 是,機器不僅無需獎勵,甚至可以憑藉「好奇心」這一信號去主動探索,這使得機器的學習成本、探索範圍、學習效率都要比其他方式要強得多。

總而言之,GAN的進化讓我們清晰地感受到了機器學習的模式和成本都在發生顛覆式的改變。

這背後隱藏著兩個演算法進化的核心特點:

1.自主學習,「無監督」比有監督更有潛力。從GAN1.0初問世的火爆,到GAN2.0的逆天突破,可以看出,能夠在無需任何監督信息的情況下自主完成訓練,這樣能夠自我進化的演算法,才是通用人工智慧的基石。

2.效率至上,拋棄效率談智力都是空談。實驗室裡的演算法未必能夠滿足商業應用的長期需要,在實踐中,可能要經歷成本昂貴的磨合及試錯過程,必須解決效率問題。GAN的進化過程,就是一個從調用全棧資源,到懂得合理分配控制空間,懂得「過日子」的演算法才適用於通用智能化的現實世界。

GAN3.0未來可能的樣子

話題進行到這裡,或許我們可以設想一下,如果未來還將出現GAN3.0,它會是什麼樣子?

這裡不妨大開腦洞一下:

首先,GAN3.0一定是在2.0基礎上各個維度的再升級,加上機器「想像力」的加持,效果將不再侷限於高精度模擬人臉或者是模擬現實世界,創造出毫無違和感的全新物種,成為新「造物主」都是極有可能的。

另外,GAN3.0對樣本規模和精度的要求更低,這就使少樣本預測成為可能,這也意味著隨著NIVIDA、Google等不斷開發自己的數據集,很多小型公司也有可能掌握迭代和優化系統的能力。也許,GAN3.0的提出者,現在還在車庫裡默默寫程式碼呢。

這一可能性也帶來了競爭關鍵點的變化,未來研究者和使用者PK的重點,可能在創造力上。如何應用更強大的對抗生成網路解決更複雜的機器智慧問題,考驗的並不是演算法本身的強弱,而是一種思維和方法論。

常有AI開發者感慨,每次都感覺用的是別人家的GAN,即便是相同的程式碼和數據集,自己也從來沒有做出過相同的效果。你和別人之間是不是只差一個演算法,自己心裡難道不知道嗎?

殊途同歸,如果真有GAN3.0,它也會回歸「演算法」的本質,那就是理解和演繹數位世界的邏輯思維和工程手段。

也因此,掌握了某一個先進的演算法,並不意味著就能捧回世界冠軍的冠冕,決定技術生命力的,是不斷精進的「內功」。

 

 

 

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則