天天看點

“ GANs 之父 ” Goodfellow 親身傳授:深度學習未來的 8 大方向和入門 AI 必備的三大技能

“ GANs 之父 ” Goodfellow 親身傳授:深度學習未來的 8 大方向和入門 AI 必備的三大技能
近日,被稱為“GANs 之父”的 Ian Goodfellow 在 Quora 上回答網友提問。在問答環節中,Goodfellow 不僅介紹了谷歌大腦(Google Brian)目前正在進行的工作,還詳細闡述了 GANs 目前碰到的各種問題,以及未來的發展方向。作為《Deep Learning》的作者之一,Goodfellow 也對深度學習的未來發表了自己的見解。此外,作為“機器學習大師” Yoshua Bengio 曾經的學生,對于一些大學生、獨立開發者的困惑,Goodfellow 甚至給出了諸如如何選課之類的建議。 在AI科技大學營公衆号會話回複“DL”,即可獲得《Deep Learning》電子書。

作者 | Lan Goodfellow

翻譯 | AI科技大學營(rgznai100)

參與 | 彭碩,大琦

以下為 Goodfellow 的回答:

問:谷歌大腦”2017年在做些什麼?

“谷歌大腦”團隊相當龐大,每位研究人員都有很大的自由來決定自己想做的工作,實作自己的想法,是以很難對我們的工作做一個總結。

你可以在我們的網站上檢視我們所做的研究:Research at Google

(https://research.google.com/teams/brain/)

我們會做基礎研究,改進機器學習算法;開發計算機系統,驅動機器學習(比如TensorFlow);運用機器學習解決醫療保健、機器人技術以及音樂藝術創作等領域的問題。

我現在所在的基礎研究團隊緻力于研究對抗式機器學習。

問:GANs 能夠生成漂亮的名人臉部以及卧室圖檔,為什麼它們在其他上千種的類别(ImageNet)上不能做到如此完美呢?

我們其實也不知道。我們曾經以為是類似 Jensen-Shannon 離散定理小值損失函數使然。對于生成模型來說,如果這個模型足夠大,很多損失函數都能夠精确複制訓練分布。

那麼問題是,當模型不夠大的時候,發生了什麼呢?是不是模型隻處理那些實際的樣本,卻放棄了生成類似訓練中的某些類的樣本?還是說模型會盡量包括所有的類别,但有時候一些分類聚在一起會産生模糊、不切實際的樣本? 根據 Jensen-Shannon 離散定理,是前者。

這個問題我們考慮了很長時間,就是這個原因導緻了模型崩潰。之後,我又發現了少數不同的損失函數能夠被利用在生成式對抗網絡中,比如在資料和模型中間的KL離散值就會更傾向選擇後者。這些損失函數一般不會導緻模型崩潰,但問題仍然發生了.

在這之後,我認為模型崩潰是由于學習算法中的非收斂性。這也就意味着在生成對抗網絡中的 Nash 均衡能夠覆寫所有模型,但學習算法可能找不到 Nash 均衡。我當時認為有必要設計一個更好的能夠找到 Nash 均衡的可靠學習算法。在後來的幾個月裡,推理結果顯示,有幾個理由讓我們可以相信現有的算法本應該能夠找到 Nash 均衡的: [1706.04156] Gradient descent GAN optimization is locally stable (https://arxiv.org/abs/1706.04156);[1706.08500] GANs Trained by a Two Time-Scale Update Rule Converge to a Nash Equilibrium(https://arxiv.org/abs/1706.08500)

把這些理論結果闡釋清楚是很重要的,因為我們在實際操作過程中的生成式對抗網絡,未必和理論中的假設是相對應的,理論中的那些斷言并沒有“生成式對抗網絡一定會達到 Nash 均衡狀态”來的直接,等等。但是把這些理論成果放在一起,确實會降低我對模型崩潰來自于非收斂性上的自信。

最近我在考慮,模型崩潰可能來自我們利用的神經網絡的架構。如果我訓練一個自編碼器重新建構 ImageNet 圖檔,然後随機從一個高斯分布中抽取編碼值并對其進行解碼,所有生成的圖像在語義上都是相似的。我本來以為會生成各種各樣的完全不像是訓練資料的不盡人意的圖檔。相反,它的模型也崩潰了,盡管根本就沒有進行過任何的 GAN 訓練。

這讓我想到了生成器網絡的體系結構,這種結構使它更容易表達包含模式崩潰的函數,而不是對應各種不同樣本的函數。我懷疑我們是否看到了類似于幂函數的東西,在這個方法中,通過矩陣的變換,不停地将一個向量與矩陣的主特征向量相乘。顯然,生成器網絡并沒有像幂函數那樣做,因為每一層都有不同的參數,但是我想知道我們是否忽略了一些相關的影響。

問:什麼情況下,GANs 能夠從任意 ImageNet 類别中生成高品質圖檔(不僅僅是名人或者卧室)?

也許,最好的能生成多樣的 ImageNet 分類的 GAN 是輔助分類的GAN:([1610.09585] Conditional Image Synthesis With Auxiliary Classifier GANs - https://arxiv.org/abs/1610.09585)

一定要記住,在訓練流程中利用分類标記來把資料劃分成不同類别的小組,是以,它更像是幾個能夠生成不同種類圖檔的 GANs,而不是一個巨大的 GAN,這樣可以避免模型崩潰的問題。

問:一般情況下,對抗性訓練能否有效針對對抗樣本?

通常來講,不是。

一般在訓練中,如果你用優化算法 X 來建立對抗樣本,那麼模型會适應算法 X,但在鑒别由算法 Y 産生的對抗樣本的時候會出現失敗。我和Alexey通過觀察各種各樣的算法發現了這個影響。

我也聽說有人利用很強大的優化算法,發現在一些案例中,模型根本無法适應訓練中的對抗樣本。Nicholas Carlini 告訴我,在他進行上千次的疊代的 Adam-based attack 訓練中,發生了這個情況。

最近,Aleksander Madry 發現,在通過随機重新開機進行的梯度上升的對抗訓練中,他遇到了無法打破的一個模型。無論在 MNIST 資料集,還是在 CIFAR-10 上,我認為還存在很大的缺陷。

如果你想嘗試打破 Madry 模型,請看網址:MadryLab/mnist_challenge (https://github.com/MadryLab/mnist_challenge)

問:GANs 會被用于制造簽名和破壞識别軟體的惡行嗎?系統安全專家如何防範這一問題?

所有的工具都能用來做好事或者壞事。錘子可以用來建造一所房子,不幸的是錘子也可以用來當武器。會有人利用 GANs 來做一些壞事。舉個例子,下面就有一個通過 GANs 來生成惡意軟體的論文:[1702.05983] Generating Adversarial Malware Examples for Black-Box Attacks Based on GAN (https://arxiv.org/abs/1702.05983)

問:對抗學習與強化學習有何不同?他們能像 CNN+RL (卷積神經網絡+強化學習)一樣一起工作嗎?

在傳統的機器學習中,有兩個概念:成本和參數,訓練算法會通過修改參數以降低成本。在對抗式機器學習中,有不止一個“玩家”,每個玩家都有不同的成本和不同的參數。每個玩家隻能修改自己的參數,但成本取決于所有玩家。使用對抗性的方法來強化學習是可能的。例如,你可以在對抗樣本中訓練 RL 代理,以便使它的魯棒性更強.[1705.06452] Delving into adversarial attacks on deep policies(https://arxiv.org/abs/1705.06452)

問:對抗式機器學習研究有哪些新的、有趣的研究方向?

防禦對抗樣本是一個非常熱門的課題。如果你想研究這個課題,你可以看看我們的 Kaggle 競賽: NIPS 2017: Targeted Adversarial Attack(https://www.kaggle.com/c/nips-2017-targeted-adversarial-attack/rules)

Aleksander Madry 等人發現:使用随機重新開機疊代算法生成的對抗樣本,對機器學習模型進行對抗訓練,所得模型在MNIST和 CIFAR上的防禦效果非常好。

還有一個熱門課題:如何在不同模型之間更好地轉移對抗樣本(https://arxiv.org/pdf/1611.02770),如何讓對抗樣本騙過應用在現實世界中的模型([1602.02697] Practical Black-Box Attacks against Machine Learning- https://arxiv.org/abs/1602.02697),用相機從不同的距離和角度觀察對抗樣本(Robust Adversarial Examples - https://blog.openai.com/robust-adversarial-inputs/)。

我個人的很多工作主要是讓 GAN 更加穩定、可靠且易于使用。

很多人對于如何将GAN用于文本非常有興趣。

隐藏資訊的對抗技術(Generating Steganographic Images via Adversarial Training -https://arxiv.org/abs/1703.00371)

半監督學習的對抗方法([1605.07725] Adversarial Training Methods for Semi-Supervised Text Classification - https://arxiv.org/abs/1605.07725);([1705.09783] Good Semi-supervised Learning that Requires a Bad GAN - https://arxiv.org/abs/1705.09783)

當然,還有很多其他的研究正在緊鑼密鼓地進行,這裡就不列出所有研究内容了。

問:您最喜歡用哪些方法來進行超參數優化?

随機搜尋——同時利用随機超參數運作25個工作,選擇其中的最好的2-3個,接着收緊随機分布,花更多的時間在最好的工作上。然後再運作新的一組25個工作。

差不多每年我都會嘗試最新流行的超參數優化器,看看它們是否比随機搜尋更優秀。目前為止,我還沒有發現能夠哪個優化器真正打敗上文提到的随機搜尋程式。我意識到别人會有不同的體驗,相比大多數人,我傾向使用更多的超參數,因為我正在研究環境中使用超參數優化器。

問:深度學習會往哪個方向走?(https://www.quora.com/What-is-next-for-deep-learning)

深度學習接下來還有很多工作要完成。我們要做的是朝多個方向向外擴充研究工作,而不是隻朝一個方向前進:

更好的強化學習、整合深度學習和強化學習。能夠可靠地學習如何控制機器人的強化學習算法等。

更好的生成式模型。能夠可靠地學習如何生成人眼無法分辨的圖像、語音和文本的算法。

學習如何學習以及無處不在的深度學習:能實作重新設計自身架構、調整自身超參數等功能的算法。目前仍然需要人類專家來運作“學習如何學習”的算法,但是未來這種算法将更容易部署,各種非專門研究AI的企業都将能夠運用深度學習。

安全之于機器學習,機器學習之于安全:将有更多網絡攻擊利用機器學習來生成自主性更強的惡意軟體,造成欺騙性更強的漏洞等。也将有更多的網絡防禦利用機器學習做出比人類響應更快的響應,檢測出更隐秘的入侵等。攻守兩方的機器學習算法将互相欺騙,以實施攻擊或防禦。

活動的動态路由(Dynamic routing)将促使人類建構更大的模型,這種模型處理單一樣本所需的計算可能比目前的模型少。但總體而言,超大量的計算仍将是AI的關鍵;每當我們建構出某個計算量更少的模型時,我們就會想通過并行運作數千個模型來學習如何學習這些模型。

半監督學習和一次性學習将減少訓練多種模型時所需的資料量,并使AI的應用範圍更加廣泛。

未來的研究将側重于建構幾乎從不出錯的超穩健模型,這些模型可應用于安全性至關重要的程式中。

深度學習将不斷融入到大衆文化中,我們将會看到藝術家和流行文化創造者使用它來完成一些我們從未想到的事情。我認為Alexei Efros的實驗室和CycleGAN之類的項目正是這股潮流的開端。

問: 未來哪些機器學習領域将會取代深度學習?

深度學習的定義非常廣泛,我不确定它是否會被替代。

深度學習意味着學習好幾步的處理方法,而不是僅學習一步。從這點上講,相對于淺顯的算法,深度算法的數量未來會激增。

在2006年至2011年間,深度學習非常流行,但深度學習通常意味着要把無監督的學習算法堆積起來,以此來為監督式學習來定義複雜的特征。

從2012年開始,深度學習通常意味着通過反向傳播來優化具有可微分函數的深度計算圖表中的所有參數。

從目前來看,我們很快就會擁有更具有貝葉斯特性的算法(而不是建立在對最好參數的一個點估計值),這些算法會運用更多不可微分的操作,等等。當我們停下來思考這還算不算的上“深度”的時候,我們可能仍然認為這就是“深度”。

我認為我們将來不會太重視“深度學習”和其他學習算法的差別,深度學習早已經被大家接受了。

問:在未來的 5~10年内,您最期待看到 AI 領域發生哪些變化?

不同的人期待的也不一樣,我個人更渴望看到:

能産生對抗式樣本的一個有力的防禦,能夠在像ImageNet一樣的真正的資料集裡起作用。

對抗式樣本能夠理論化,類似于我們目前知道的關于一般監督式學習的知識。(比如 NFL原理、VC 理論,等等)

生成式的模型能夠起到真正的作用。

高效的樣本學習算法能夠像人類一樣,可以從很少的标記樣本中學習。

問:大二學生該如何學習人工智能?

如果你有志向,可以試着動手學習并參加我們的對抗樣本競賽:NIPS 2017: Non-targeted Adversarial Attack(https://www.kaggle.com/c/nips-2017-non-targeted-adversarial-attack)。

參加線性代數和機率論課程。

參加教你如何編寫适合現有硬體運作的FastCode的課程。這些課程多為硬體設計課程,而不是程式設計課。如果找不到這類課程,你可以向你的學業導師尋求幫助。

參加教你如何編寫高性能、實時多線程的代碼的課程。有時這個課題會被歸在另一課程中,如作業系統開發或遊戲開發。

閱讀《Deep Learning》(http://www.deeplearningbook.org/)。

選擇一個你感興趣的簡單深度學習項目。如果你對在自身愛好或課程項目中應用深度學習沒什麼想法,你可以選擇一些普通的項目,例如在TensorFlow中從零開始建構SVHN分類器。在完成這個項目的過程中,如果你對讀過的關于深度學習的材料有疑問,試着在你的項目資料集中運作試驗,通過這種方法來弄清楚這些問題。

如果你的大學開設有機器學習、計算機視覺、自然語言處理和機器人學等課程,一定要參加。

申請“谷歌大腦”項目實習。

問:你會鼓勵其他領域的人(比如機械工程)來學習 ML (機器學習)嗎?

是的,當然會。

比如我崇拜的英雄之一——Geoffrey Hinton,他的博士學位就是實驗心理學。

在我看來,在機械工程學中,你會學習很多在機器學習中經常用到的數學工具,是以你不會從零開始。

總之,我們經常發現當一個人帶着從其他領域産生的新的想法來到這個領域的時候,這個領域會發生革命性的變化。

問:沒有任何技術背景的人如何學習 ML?

掌握一些基礎知識還是很重要的,比如線性代數、機率論和Python程式設計。

但你也不需要知道所有線性代數的知識(出了校園以後,我再也沒用過QR分解),所有的機率論的知識(關于組合學、深度學習中的序列重排序我們用的也不多),或者所有的Python程式設計知識(很多比較晦澀的語言特征實際上被許多公司禁用了)。

想要入門,最好先學習足夠的線性代數、機率論和Python程式設計,隻用Python和numpy,你就可以自己進行邏輯回歸。

我認為如果你能讀懂《Deep Learning》的1-5章,你就能夠學會那個工程中除了Python程式設計之外的所有知識。這是否可行,我也不是很清楚,因為我很難從一個沒有任何技術知識的角度去想這件事。很明顯,想要從零開始吸收那麼多的知識,你需要很大的耐心和付出,但我們會盡量在書中提供更多的細節讓你達到這個目的。

問:您最想推薦哪10本書?

首先我會推薦我、Yoshua 和 Aaron 合著的《Deep Learning》。

Chris Bishop 的《Pattern Recognition and Machine Learning》

Daphne Koller 和Nir Friedman 的《Probabilistic Graphical Models》

Stuart Russel 和Peter Norvig 的《AI: A Modern Approach》

Thomas H. Cormen 的《Introduction to Algorithms》

Gayle McDowell 的《Cracking the Coding Interview》

Douglas Stone 等人合著的《Difficult Conversations: How to Discuss what matters most》(The social side of an AI career is extremely important too!)(AI事業的社會面也極其重要!)

A.N. Kolmogorov 和 S.V. Fromin 的《Elements of the Theory of Functions and Functional Analysis》

如果你對生成式模型或計算機視覺感興趣: Natural Image Statistics - http://www.naturalimagestatistics.net/

10.Georgi E. Shilov 的《Linear Algebra》

問:獨立學習者或研究人員如何與 Google、Facebook 或 OpenAI 等大公司、大機構在深度學習領域一較高下?

在“谷歌大腦”(Google Brain),我們經常思考如何選擇與他人不同、真正值得做的項目。我在OpenAI 任職期間,這家公司也将選題作為自身戰略的重要部分。

全世界對 AI 的廣泛關注,意味着AI研究已從優化轉為博弈論。過去,研究人員可以選擇研究他們所認為的好課題。現在,重要的是預測其他研究人員會研究什麼,并選擇一個可以帶來獨特優勢的課題。

原文位址 https://www.quora.com/session/Adversarial-Machine-Learning/1# 文章來源:AI科技大學營