1. 程式人生 > >Nikolai Yakovenko大佬:深度學習的下一個熱點:生成對抗網路(GANs)將改變世界

Nikolai Yakovenko大佬:深度學習的下一個熱點:生成對抗網路(GANs)將改變世界

生成式對抗網路—簡稱GANs—將成為深度學習的下一個熱點,它將改變我們認知世界的方式。

準確來講,對抗式訓練為指導人工智慧完成複雜任務提供了一個全新的思路,某種意義上他們(人工智慧)將學習如何成為一個專家。

舉個對抗式訓練的例子,當你試圖通過模仿別人完成某項工作時,如果專家都無法分辨這項工作是你完成的還是你的模仿物件完成的,說明你已經完全掌握了該工作的所需的技巧。對於像寫論文這樣複雜的工作,這個例子可能不適用,畢竟每個人的最終成果多少有些不同,但對於中等難度的任務,比如造句或寫一段話,對抗式訓練大有用武之地,事實上它現在已經是計算機生成真實影象的關鍵所在了。

GANs解決問題的方式是用不同的目標分別訓練兩種不同的網路。

  • 一種網路創造答案(生成方)
  • 另一種網路分辨前者創造的答案與真實答案的區別(對抗方)

GANs的訣竅是這樣的:訓練兩種網路進行競爭,一段時間後,兩種網路都無法在對抗中取得進步,或者生成方變得非常厲害以至於即使給定足夠的線索和時間,其對抗網路也無法分辨它給的答案是真實的還是合成的。

這其中有很多有趣的細節,但我們暫時先忽略這些細節。GANs 可以在給定繪製圖像類別和隨機種子(random seed)的條件下,自主完成影象的繪製:
“給我畫一隻啄木鳥,並且它不能是我之前給你看過的那些啄木鳥。”

圖片描述

StackGAN繪製的合成鳥

在數學方面, 谷歌研究中心的科學家們用GANs創造了一種編碼協議。GANs的生成方 Alice向Bob傳遞通過卷積神經網路編碼的資訊以及金鑰。Eve則扮演對抗方,即可以拿到編碼的資訊,但沒有金鑰。Eve訓練網路來分辨資訊中的噪音和有價值的部分,然而對抗方失敗了,無法將上述兩個部分割槽分開來。

在這一網路結構興起的早期,以及現在,我還從未聽說哪個基於GAN的公開demo(演示程式)可以在完成某句話這一任務上媲美前饋LSTM。雖然前饋LSTM(比如Karpathy特徵迴圈神經網路)僅僅是一個基準(baseline),但可以想象遲早有一天,有人會創造出一個可以根據亞馬遜購物網站的商品打分來撰寫評論的GAN 來。

人類通過直接反饋來學習

對我來說,相比強化學習(RL)而言,對抗式學習更接近人類的學習方式。也許因為我是一個喜歡自己找自己麻煩的人吧。

RL通過最大化(平均)最終獎勵來達到訓練目的。當前的狀態也許與獎勵無關,但最終的結局一定會由“獎勵函式”給出。我已經做過RL領域的一些工作,並且它也極大地促進了我們研究領域的發展,但是除非你是在玩遊戲,否則很難寫出一個獎勵函式來精確衡量來自周邊環境的反饋。

二十世紀90年代,強化學習在十五子棋遊戲中取得巨大突破,它是DeepMind創造的AlphaGo的一個重要組成部分,DeepMind團隊甚至用RL來節省谷歌的資料中心的冷卻費用。

可以想象RL能在谷歌資料中心這一環境中,算得到一個最優結果,因為獎勵函式(在防止溫度高於限定值的條件下儘可能省錢)可以很好地定義。這是真實世界可以像遊戲一樣被引數化的例子,這樣的例子通常只能在好萊塢電影中見到。

對於那些更實際的問題,獎勵函式是什麼呢?即使是類似遊戲中的任務如駕駛,其目標既不是儘快達到目的地,也並非始終待在道路邊界線內。我們可以很容易地找到一個負獎勵(比如撞壞車輛,使乘客受傷,不合理地加速)但卻很難找到一個可以規範駕駛行為的正獎勵。

邊觀察,邊學習

我們是如何學習寫字的?除非你念的是要求很嚴格的小學,否則學習寫字的過程很難說是最大化某個與書寫字母有關的函式。最可能的情況是你模仿老師在黑板上的書寫筆順,然後內化這一過程 。

你的生成網路書寫字母,而你的識別網路(對抗方)觀察你的字型和教科書中理想字型的區別。

圖片描述

針對三年級學生的對抗式訓練

屬於你的最嚴厲的批評家

五年前,我在哥倫比亞大學舉行的一場橄欖球比賽中傷到了自己的頭部,導致我右半身腰部以上癱瘓。受傷兩週後我出了重症監護病房,開始教自己學習如何寫字。那時我住在布魯克林的公寓裡。

圖片描述

再次學習如何寫字, 五月

我的左腦受到了嚴重的創傷,因此我失去了控制我右胳膊的能力。然而,我大腦的其餘部分完好無損,因此我仍能夠識別正確的書寫方式。換句話說,我的文字生成網路壞了,而識別網路功能正常。

說句玩笑話,我很有可能因為這一過程學會一種新的(或更好的)書寫方式。然而結果是雖然我很快地教會了我自己如何書寫,但書寫筆跡和我受傷前的沒什麼兩樣

我不知道我們的大腦是如何使用“行為人-批評家”的模式來學習的,我也不知道這種說法是事實還是僅僅是一個生動的比喻,但是可以確定的是在有一個專家即時反饋的條件下,我們可以更有效率地學習新東西。

當學習程式設計或攀巖時,如果你一直接收某個專家的“beta(反饋建議)”,則可以進步得更快。在你獲得足夠的經驗能夠自我反饋批評之前,有一個外部的批評家來糾正你每一小步的錯誤可以更容易訓練你大腦的生成網路。即使有一個內部批評家在監督你,學習一個有效的生成網路仍然需要認真的練習。我們總不能把我們大腦的生成器換成亞馬遜推出的GPU例項吧。

圖片描述

擺脫糾結,勇往直前?

實際中,GANs 被用於解決這樣一些問題:為生成器生成的圖片新增一些真實的效果如銳化邊緣。儘管在這樣的圖片中,不一定每個動物都只有一個腦袋。

讓生成網路與合適的對抗方競爭能迫使其做出取捨。正如我的一位同事所說,你面臨一個選擇,既可以畫一隻綠色的鸚鵡,也可以畫一隻藍色的鸚鵡,但是你畫的必須是其中之一。一個沒有對抗方的監督網路接受了真實鸚鵡的識別訓練,會傾向於畫出某種摻雜藍色或綠色的平均色,導致其線條模糊不清。而一個對抗式網路則可以畫出藍色或綠色的鸚鵡,也可以在利用鸚鵡的{藍,綠}概率分佈隨機地選擇一種顏色。但它絕不會畫出某種自然鸚鵡不存在的中間色,當然這種顏色也可能存在於已經滅絕的鸚鵡上。

我的同事最近理清了關於GANs的思路,其中包括對GANs的收斂性和可推廣性的悲觀態度。

某種程度上,這是由於這種蹺蹺板式的訓練方法——一會兒訓練生成方,一會兒訓練識別方,如此反覆——並不能保證收斂於一個穩定解,更別提一個最優解了。如下圖Alex J Champandard的一則Twitter 所示:

圖片描述

圖在twitter上是一個GIF圖片,通常情況生成方和對抗方在玩一個極限博弈遊戲,但只要再走一步,其將陷入震盪

但是讓我們忽略這些細節,做一些美好的想象吧。若LSTM模型能寫出調理清楚的產品評論、圖片標題、或者在唐納德競選總統時代替他在twitter上發聲(反正競選前夜他會保持沉默),那稍微聰明一點的識別器應該都能提高這些任務的表現吧。

假設LSTM是隨機生成這些結果的,我們可以利用既有的生成器生成相應的結果,再讓識別器從生成結果中最好的20箇中選出最合適的。這不正是DeepDrumpf背後的運營團隊所做的事情嗎?

圖片描述

DeepDrumpf:對於facebook和twitter而言,我一直是一個完全的災難,而且現在比以往更加嚴重了

生成器和識別器,誰更聰明?

一個問題自然而然地出現了——到底哪種網路能夠真正理解所面臨問題,是生成器還是識別器?或者說究竟誰更會寫字,是寫字的學生,還是教寫字的老師?

現實世界通常是老師更會寫字,但在之前的例子中,我想應該是學生更會寫字。因為一個用於識別產品評論的識別器只需知道一些常見的語法錯誤,就能投入使用。正如一個人像米開朗基羅一樣畫畫,一個人僅僅是擡頭看看西斯廷大教堂的天花板(上面有米開朗基羅的畫),誰需要更多的技巧呢?

正如我所理解的,手機影象軟體Prisma在有對抗方的框架下,訓練生成網路,進行不同風格的創作。大多數風格正是通過這種方式生成了那些曲折的線條。我希望他們能增加訓練GAN的時間,這樣GAN不僅能認出照片中的陰影,並給其塗上不同的顏色,還可能以一個印象派藝術家的風格完成這些任務。當它偶爾可以正確地區分光線和陰影的時候,那麼它就是令人驚歎的。

圖片描述

順著這條思路想下去可以得出一個很自然的結論,生成式對抗方法,可以讓人工智慧有能力做實驗和A/B測試。一個人工智慧模型給出了一個很好的解決方案,然後它蒐集反饋來了解這個生成方案和標準答案是否相符,或與其他它正在學習或已經內化的人工智慧模型比較,觀察得出的結果是否相符。在這一過程中,你沒必要去設計一個損失函式,因為雖然可能會花上一點時間,但這個人工智慧模型終將找到自己的評判標準。

適可而止,見好就收

我寫了這整篇文章,卻還沒有親身嘗試一下對抗式網路。本著模仿的心態,我期望其他人能夠在GANs上取得進步,最好是在文字生成領域取得突破。我預計很快就會有合適的技術,能夠良好執行並得到令人信服的結果。我們這個領域正是這樣,通過積累前人的經驗而進步的。

與其去預測我沒有參與過的事,我更應該花時間去優化我的“撲克牌卷積神經網路”(PokerCNN)無限額德州撲克AI,為今年的年度計算機撲克大賽作準備。其程式碼將在2017年1月13日前完成。

在明年的比賽中我計劃新增一些對抗式訓練。不難想象對抗式訓練能夠幫助AI學習更好的撲克技巧。特別是當對手也是很強大的黑箱AI時,這個方法更為有用。

既然是科學為目的,並且我的撲克牌AI程式碼已經開源了(在你看到這裡時,我應該已經清理了程式碼倉庫,並且添加了一個的readme幫助文件,所以應該可以更容易著手),所以請隨意拿去嘗試吧。

連結:向後看,向先看

如果沒有點出2016年深度學習領域中我最喜歡的幾大進步,那我就太怠惰了。以下列出了幾個我最愛的進步:

  • 2016年深度學習的主要進步: GANs, 非監督學習領域的進步, 超解析度,以及其他種種突破
  • “我在神經資訊處理大會上學到的50樣東西” 作者Andreas Stuhlmller
  • 以上幾條中我最喜歡的想法是:用不同的時期間隔來訓練LSTM記憶單元,這樣可以迫使某些記憶單元記住長期資訊,而其它的記憶單元可以更加關注短期記憶。這種方法更符合直覺,也避免了過多的超引數調優
  • 大公司和有足夠資金的創業公司是否都在貪婪地尋找優質的深度學習資料?也許有專利的資料庫並不是所有人工智慧的關鍵問題所在。並且維基百科也列出了一大堆免費的資料庫,包括前文提到的亞馬遜的商品評論。隨著很多公司繼續提供其擁有的大部分資料用於研究,以後將會湧現更多的資料。