障眼法修行指南:GAN是怎樣一步步學會“騙人”的?
演算法,就像是武林絕學中的“內功”,是計算機領域最重要的基石。不過,演算法多了也很麻煩。不斷推陳出新的演算法是否更新更快更好,大廠各執一詞,評價褒貶不一。
沒有“內功”,不可能成為高手;“內功”多了,難免走火入魔。
或許搞清楚一種演算法是在何時以何種方式何種面貌進化的,能更清晰地理解它的現在和未來。
今天的演算法簡史,就從火遍整個AI圈的機器學習模型GAN說起。
從傳統模型到逼真的GAN2.0,生成演算法經歷了哪些變化?
生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型,作為在無監督學習上最具前景的演算法之一,最早是在2014年由學者Ian J. Goodfellow等人提出的。
在GAN所代表的深度學習之前,已經有很多生成模型。但這種模型是從機率統計角度出發的,指的是用於隨機生成可觀測資料的模型,很難直接描述和建模。讓科研人員在遇到了不少挑戰。
比如說傳統的影像生成模型,將影像表示為一個隨機向量,其中每一維都代表一個畫素值,然後假設自然場景中的影像都服從一個未知的分佈規則,再透過一些觀測樣本來估計其分佈。
顯然,這種難以描述和直接建模的生成模型,讓科研人員遇到了不少挑戰。最為重要的一點是,系統無從判斷預測結果的質量。
而原始版GAN(我們稱之為GAN1.0),就在深度學習的浪潮下應運而生。
GAN1.0不僅可以利用深層神經網路模擬任意函式的能力,讓複雜的分佈判斷得以被建模,而且增加了判別器。
於是“生成器網路”和“判別器網路”互相博弈,一個不停地捕捉資料產生新樣本,一個不停提出質疑和挑戰來判斷所生成的樣本是否真實。透過自我對抗不斷改進,最終達到很好的輸出結果。
可以說,GAN開啟了生成演算法的“實用時代”。當然,它並非是十全十美的,針對GAN1.0一些尚未解決的問題,還產生了不少變種演算法。
比如Alec Radford et. Al對GAN做了一些架構上的最佳化,使用超引數和最佳化器改進之後,可以得到足以亂真的臥室圖片。
如果說GAN1.0的生成能力已經令人五體投地,那麼最近英偉達研究人員推出的升級版GAN(我們稱之為GAN2.0),更是足夠讓人獻上一年份的膝蓋。
GAN2.0採用了基於風格的生成器新結構,可以將面部細節分離出來,透過模型進行單獨調整,生成的面部影像結果大幅度超越了GAN1.0和其他模型。
之所以如此牛叉,一是因為GAN2.0可以更好地感知影像之間有意義的變化,並對其進行引導,讓生成的人臉更逼真,而且還能用於汽車、動物、風景影像的生成。
歷史脈絡梳理清楚了之後,不難看出,深度學習為更高擬真度的生成演算法奠定了基礎和可能。而GAN的對抗性及其應用價值,又讓影像生成演算法成為了一門人人趨之若鶩的神器。
GAN的一小步,影像生成的一大步
那麼,GAN模型發展到現在,到底經歷了什麼樣的變化,又從無到有地獲得了哪些能力呢?
主要集中在以下幾個方面:
1.找重點。GAN2.0採用的生成器架構,提取的影像風格不再是筆劃或顏色空間這種僵硬的資料,而是影像的組成和臉部物理特徵等泛屬性,因此可以感知到影像之間哪些變化是有意義的(耳朵的形狀),哪些特徵無需重點關注(襯衫的顏色),因此比例的控制更細膩,生成的效果自然也就越逼真。
2.排除法。影像中很多隨機且不起重要影響的細節,比如毛髮、雀斑的具體位置等等,只要符合基本的規則分佈,GAN2.0可以自主將一些隨機變化剔除。
3.省資源。GAN2.0可以將完整的特徵影像進行縮放,這意味著,在沒有明確指導的自主學習環境下,系統能夠自行判斷使用全域性或本地通道,從而大大提高了整體效率。
GAN可以改變影像中的季節
這背後隱藏著的,正是演算法的本源價值——那就是將嚴謹的科學求證思維,與務實的工程方法相結合,解決問題的一種最佳方案。
而具體到生成任務上時,演算法的“優越性”往往體現在三點:一是能夠更準確地判斷和預測刺激的位置;二是可以進行更小粒度地調整,讓結果更自然;最後是更具想象力和創造力,讓演算法發揮的空間更大。
顯然,GAN的發展正符合人類接近生成任務所面臨的問題時,應該遵循的基本規則。
GAN身上對映的演算法進化論
GAN這一演算法的進化,帶來了很多熱辣新鮮的想象力。
除了我們熟悉的模擬人臉、語義分割、聲音處理等常規應用之外,還有一些因模糊而具有龐大想象空間的炫酷應用。
比如,谷歌大腦用GAN讓神經網路學會聯想。系統可以在完全不相關的影像中,發現一些與狗、房子、魚等物體的相似之處,然後憑藉自己的“想象力”將其呈現出來。這些奇幻的畫作,既是一種機器創作的“先鋒藝術”,更代表著很多人類思維也無法企及的奇幻世界正在被機器路徑開啟。
另外,在GAN的作用下,能自主模仿人類動作的智慧體正在成為可能。以往的演算法總是需要海量規模的資料集和大量訓練才能夠有比較優秀的表現。但在模仿學習中,智慧體無需獎勵機制就可以自主進行學習。
更誇張的 是,機器不僅無需獎勵,甚至可以憑藉“好奇心”這一訊號去主動探索,這使得機器的學習成本、探索範圍、學習效率都要比其他方式要強得多。
總而言之,GAN的進化讓我們清晰地感受到了機器學習的模式和成本都在發生顛覆式的改變。
這背後隱藏著兩個演算法進化的核心特點:
1.自主學習,“無監督”比有監督更有潛力。從GAN1.0初問世的火爆,到GAN2.0的逆天突破,可以看出,能夠在無需任何監督資訊的情況下自主完成訓練,這樣能夠自我進化的演算法,才是通用人工智慧的基石。
2.效率至上,拋棄效率談智力都是耍流氓。實驗室裡的演算法未必能夠滿足商業應用的長期需要,在實踐中,可能要經歷成本昂貴的磨合及試錯過程,必須解決效率問題。GAN的進化過程,就是一個從呼叫全棧資源,到懂得合理分配控制空間,懂得“過日子”的演算法才適用於通用智慧化的現實世界。
GAN3.0未來可能的樣子
話題進行到這裡,或許我們可以設想一下,如果未來還將出現GAN3.0,它會是什麼樣子?
這裡不妨大開腦洞一下:
首先,GAN3.0一定是在2.0基礎上各個維度的再升級,加上機器“想象力”的加持,效果將不再侷限於高精度模擬人臉或者是模擬現實世界,創造出毫無違和感的全新物種,成為新“造物主”都是極有可能的。
另外,GAN3.0對樣本規模和精度的要求更低,這就使少樣本預測成為可能,這也意味著隨著英偉達、谷歌等不斷開發自己的資料集,很多小型公司也有可能掌握迭代和最佳化系統的能力。也許,GAN3.0的提出者,現在還在車庫裡默默寫程式碼呢。
這一可能性也帶來了競爭關鍵點的變化,未來研究者和使用者PK的重點,可能在創造力上。如何應用更強大的對抗生成網路解決更復雜的機器智慧問題,考驗的並不是演算法本身的強弱,而是一種思維和方法論。
常有AI開發者感慨,每次都感覺用的是別人家的GAN,即便是相同的程式碼和資料集,自己也從來沒有做出過相同的效果。你和別人之間是不是隻差一個演算法,自己心裡沒點數嗎?
殊途同歸,如果真有GAN3.0,它也會迴歸“演算法”的本質,那就是理解和演繹數字世界的邏輯思維和工程手段。
也因此,掌握了某一個先進的演算法,並不意味著就能捧回世界冠軍的冠冕,決定技術生命力的,是不斷精進的“內功”。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2285948/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開學啦!開學季防騙指南
- 人工智慧正在干預人類的情感。未來的世界會是怎樣的?人工智慧
- YouGov:17%的約會應用使用者的動機是欺騙別人Go
- 英語學得好的人是怎樣的
- 10年後的計算機會是怎樣的?計算機
- 寫程式碼的妹紙會是怎麼樣的?
- 能量視角下的GAN模型(二):GAN=“分析”+“取樣”模型
- 電話機器人的工作原理是怎樣的呢?機器人
- 現在企業會要求JAVA人員會怎樣的技術呢?Java
- 遊戲人避坑指南——怎樣才能減少踩坑的頻率?遊戲
- 怎樣快速學會一門技術
- 在雲端管理您的資料,會是怎樣的體驗?
- 新手指南——優秀平面設計師是怎樣煉成的
- 菜鳥指南——優秀平面設計師是怎樣煉成的
- 怎樣保證我的程式碼不會被別人破壞?
- 程式設計師是怎樣一群人程式設計師
- 看專案管理大牛們是怎樣學習的?專案管理
- 我是怎樣學習新的語言或者框架的框架
- 隨機數是騙人的,.Net、Java、C為我作證隨機Java
- 軟體研發公司的招聘實習生的工資會有6000~8000這麼高?是騙人的嗎?
- Linux運維人員的職業發展方向是怎樣的?Linux運維
- 「GAN優化」從動力學視角看GAN是一種什麼感覺?優化
- 人,人,還是人-對需求、溝通、輔導、會議、改變、學習的狂想
- 李巨集毅GAN學習(四)GAN的基本理論
- 學會怎樣尊重一個程式設計師程式設計師
- 怎樣處理投資人的退出?
- 參加第一屆宇宙 JavaScript 大會是怎樣的體驗?JavaScript
- 看資深架構師是怎樣學習RHCA的?架構
- JS是怎樣執行的JS
- 黑客是怎樣煉成的黑客
- mybatis是怎樣煉成的MyBatis
- Webpack 是怎樣執行的?Web
- React 是怎樣煉成的React
- 我是怎樣使用 Emacs 的Mac
- 黑客是怎樣煉成的?黑客
- 程式是怎樣跑起來的
- 讓維護人員抓狂的程式設計師是怎樣煉成的程式設計師
- 怎樣在工作或者學習時抵抗別人的噪音騷擾?