Ian Goodfellow 最新問答:11 歲學會編程,因為喜歡遊戲編程入坑深度學習

Ian Goodfellow 最新問答:11 歲學會編程,因為喜歡遊戲編程入坑深度學習

來自專欄 新智元

今天,Ian Goodfellow 開展了一場有關生成對抗網路(GAN)的最新 AMA 問答,從他小時候如何學習編程,如何想出 GAN 這個 idea,到具體的技術和應用,Goodfellow 都作出了專業而且誠懇的回答。Goodfellow 認為不止是 GAN,膠囊網路、強化學習、半監督學習等等方法都很重要,也值得更多人重視。

關於 GAN:想法來自酒後與同行的爭論

問:有傳言說你是在一家小酒館裡想出了 GAN 的 idea,是這樣嗎?

Ian Goodfellow :這是真事,不僅僅是傳言。我之前在好幾次採訪中都講過這個故事了。

參考:專訪 Ian Goodfellow:欲在谷歌打造 GAN 團隊,用假數據訓練真模型

問:在訓練 GAN 方面似乎有兩三個陣營(camp),你和在 OpenAI、谷歌的人,Mescheder, Sebastian Nowozin 和微軟研究院的人,以及其他。在這些陣營中你有看到什麼相似點嗎?

Ian Goodfellow:實際上有更多陣營。FAIR/NYU 也是重鎮,實際上是 FAIR/NYU 最先把 GAN 帶進了我們的視野(LAPGAN)。那是第一次 GAN 生成了逼真的高清圖像,也是第一次 GAN 得到媒體曝光,等等。另外一個重要陣營是伯克利 + 英偉達,他們專註超高清逼真圖像和視頻,無監督翻譯,等等。我不太清楚你用 「陣營」(camps)想表達什麼,如果是說用不同的思路和方法在研究 GAN,那麼確實如此。但「陣營」 一般多指相互敵對的團隊,在這裡並不適用。

要從根本上重新考慮使用的策略,現有神經元難以抵禦對抗攻擊

問:問個有點偏的問題——有人認為重新思考深度學習模型中 「神經元」 的工作方式,是應對對抗樣本的唯一方法,你怎麼看?在以前的演講中你提到過,這種通用樣本的存在是因為這些模型的「線性」(對應之前人們說的「非線性」)。繼續採用使用了這些神經元的模型,在方向性上說會不會是錯誤的?或者說,好好選擇激活函數,做好數據增強 / 防禦,能從整體上解決這個問題?

Ian Goodfellow:我不認為這個問題有點偏,因為 GAN 的判別器需要具有魯棒性,應對生成器的對抗攻擊。同時,我確實認為我們當前使用的神經元,很難在應對對抗樣本方面具有魯棒性。但我並不認為這是唯一有問題的地方。一些最新的工作,比如(arxiv.org/abs/1801.0277)表明,要讓圖像分類安全可靠,我們真的需要從根本上重新考慮我們使用的策略,而不僅僅是訓練的模型。

膠囊網路(Capsule networks)能比普通模型更好的應對對抗攻擊openreview.net/forum?)。目前還不清楚這是不是最好的防禦方法——我還沒看到有使用最先進的攻擊方法來一對一測試模型可靠性的工作。

問:定量評估 GAN 的指標是什麼?

Ian Goodfellow:這取決於你想用 GAN 來做什麼。如果你想將其用於半監督式學習,請使用測試集精度作為評估指標,如果你想使用它來生成高質量的圖像(例如超解析度),那麼可能需要使用人類評分員來評估。如果你只是想得到一個通用的自動化的質量得分,那麼我認為 Frechet Inception Distance(arxiv.org/abs/1706.0850)可能是最好的,尤其是對於 class-specific(arxiv.org/pdf/1802.0595)的模型來說。這些指標本身現在仍是一個正在進行的重要的研究領域。

問:有沒有辦法將潛變數(latent variables)映射到 fake image 的部分?換句話說,是否可以這樣說:這 2 個變數改變圖像的背景顏色,這些 x 變數修改了形狀,等等?

Ian Goodfellow:這不是總是可行的,但你可以訓練模型這樣表現。例如 InfoGAN:https://arxiv.org/abs/1606.0365

ArXiv 讓人繞過同行評議,降低深度學習論文質量

問:1)如何在 GAN 和其他生成模型,比如 VAE 和 FVBN(NADE, MADE, PixelCNN)之間選擇?選擇的時候有什麼比較標準嗎?2)像 Librarian/Fermats Library 這樣的在線文庫對於 ML/DL 論文來說重要嗎?現在 ML/DL 論文一般都是直接發表在 arXiv。

Ian Goodfellow:我在 Fermat』s Library 這裡做 AMA,就是為了推廣這些工具,我認為它們很重要,也值得更多人重視。ArXiv 現在基本成了繞過同行評議的捷徑,讓深度學習論文的信噪比驟降。現在仍然有很多優秀的深度學習研究在進行,但同樣也存在大量的低質量工作。如今就連最好的那些工作也是好壞摻半——有很好的想法,但卻用宣傳推廣的套路在寫,跟其他工作的比較也不準確,等等。這都是因為這些論文沒有經過同行評議。

至於方法選擇,如果你想生成連續變數的真實樣本,做無監督翻譯(例如 GycleGAN),或者做半監督學習,那麼你很可能用得著 GAN。如果你想生成的是離散標記(token),你或許還用不著 GAN,但我們也在不斷改進。如果你想要的是最大似然,就不要用 GAN 了。

關於 GAN 和其他方法:GAN 基本上可以說就是強化學習

問:GAN 與強化學習(RL)原則之間有什麼相似之處(如果有的話)?我對這兩者都不是專家(只有非常基本的了解),我覺得 GAN 的 「generator - discriminator」 的想法和 RL 的 「agent - environment interaction」 有著緊密的聯繫。是這樣嗎?

Ian Goodfellow:我也不是 RL 的專家,但我認為 GAN 是使用 RL 來解決生成建模問題的一種方式。GAN 的不同之處在於,獎勵函數對行為是完全已知和可微分的,獎勵是非固定的,以及獎勵是 agent 的策略的一個函數。但我認為 GAN 基本上可以說就是 RL。

問:有測試生成模型可遷移性的論文或研究嗎?例如我有一個生成狗或者貓的模型,之後想用早一些的層生成狼和老虎。

Ian Goodfellow:我不知道,但肯定有。對於生成器來說,可能偏後期的層(靠近輸出的)更容易共享。

關於 GAN 的應用:GAN 適用於半監督學習問題

問:GAN 能用於話題建模(Topic Modeling)嗎?除了生成建模(目前主要用於圖像),還有其他領域使用 GAN 框架嗎?

Ian Goodfellow:我猜應該有,但我不知道具體的。文檔是離散 token,比如文字、單詞,而 GAN 需要計算生成器的輸出的梯度,因此在有連續輸出的地方才能很好的工作。或許你可以用對抗自編碼器,或者 AVB,在這裡生成器實際上是編碼器,能夠輸出連續的代碼。這對於文檔建模有很大幫助,因為能對 topics 給出一個分散式表示。

問:GAN 在基因組學裡有什麼應用?

Ian Goodfellow:我不太了解基因組學,但我認為 GAN 這類的模型可以用於半監督學習。我想在基因組學中,未標記的數據應該比有標記的更多,利用大量的未標記數據從少量標記數據中學習的話,半監督學習會很有幫助。這方面 Tim Salimans 提出了一些方法,在 MNIST、SVHN 等基準上特別好用:arxiv.org/abs/1606.0349

但需要注意,我們發現其他半監督方法實際上並不怎麼好用(openreview.net/forum? ),但半監督 GAN 並沒有接受這些測試。

11 歲學會編程,一切源於對遊戲編程的喜愛

問:您最近在 Twitter 上列舉了你覺得最好的 10 論文 GAN 論文。你可以寫一篇博客文章,介紹從 GAN 的初學者到 GAN 專家都適合的所有論文和其他資源嗎?

Ian Goodfellow:我可能沒有時間做這件事情,而且就算寫一篇這樣的文章,它會很快就過時。

我在 2016 年 12 月寫了關於 GAN 的長文教程:NIPS 2016 Tutorial: Generative Adversarial Networks (arxiv.org/abs/1701.0016

裡面的許多想法在今天仍然有價值,儘管這個教程沒有包含 2017 年以來的最新模型,例如 Progressive GANs,spectrally normalized GANs, GANs with projection discriminator 等等。

問:你是怎樣提高你的編程技巧,以便快速嘗試各種瘋狂的想法,例如 GANs?有沒有推薦的編程技能的書?以及請推薦一些 TensorFlow 學習或深度學習框架的書籍。謝謝。

Ian Goodfellow:

回答推薦書籍:我自己學習現代深度學習編程的路徑是相當間接的(在我開始使用 Python 之前,我已經學會了各種 C,assembly,web 等編程語言),因此我不知道對於今天的學習者來說最好的方法是什麼。

在編程能力方面,對我來說一個非常重要的轉折點是在斯坦福大學 Jerry Cain 開的 CS107 課程,我記得是在 2006 年春季學習了這門課程。在那之前,我只是一名編程愛好者,系統工作的時候我感到興奮,但很多時候,系統宕機時我只能感到困惑,不知道是什麼地方錯了。學完這門課後,我就再沒有因為軟體開發方面的任何事情困惑過。你可以在 YouTube 或 iTunes U 之類的網站上找到這門課的講座。

回答 「你怎樣提高編程技能,以便快速嘗試各種瘋狂的想法,比如 GANs」:

我編程的時間很長!我在 11 歲就學會了編程,中學時我們的數學課有圖形計算器,有人在上面用 TI-BASIC 編了一個遊戲。為了了解這個遊戲的工作原理,我從圖書館複製了一本 「MacFroggy Teaches Basic」 來學習 BASIC 語言。

我入坑 deep learning 的部分原因是我一直在出於愛好做遊戲編程。我一直在使用 OpenGL Shading Language(GLslang)來編寫通用的 GPU 程序。當 CUDA 推出時,利用 GPU 進行 CUDA 編程實際上比試圖將數學問題轉換為專為圖形設計的語言要容易得多。在 Geoff Hinton 的關於 deep belief nets 的論文發表後不久,我的朋友 Ethan Dreyfuss 就給我講了有關深度學習的內容,然後我和 Ethan 一起搭建了斯坦福大學的第一台用於深度學習的 CUDA 機器。我最初編寫的深度學習程序是在 CUDA 中實現 RBM。與我編寫 GAN 時所做的努力相比,這要困難得多。在寫 GAN 時,我已經有很多很好的工具,例如 Theano,LISA lab 等等。

編寫 GAN 代碼很容易,部分原因是我有一個很好的代碼庫,可以從早期的項目開始。我的整個博士學位期間都在搞深度學習,有很多類似的代碼可以隨時待命。我的第一個 GAN 實現主要是從 MNIST 分類器(arxiv.org/pdf/1302.4389)的代碼中複製粘貼來的。

Ian Goodfellow 關於 GAN 的資料大全

Invited Talks

Adversarial Examples and Adversarial Training

  • "Defending Against Adversarial Examples". NIPS 2017 Workshop on Machine Learning and Security. [slides(pdf)] [slides(key)]
  • "Thermometer Encoding: One hot way to resist adversarial examples," 2017-11-15, Stanford University [slides(pdf)] [slides(key)]
  • "Adversarial Examples and Adversarial Training," 2017-05-30, CS231n, Stanford University [slides(pdf)] [slides(key)]
  • "Adversarial Examples and Adversarial Training," 2017-01-17, Security Seminar, Stanford University [slides(pdf)] [slides(key)]
  • "Adversarial Examples and Adversarial Training," 2016-12-9, NIPS Workshop on Reliable ML in the Wild [slides(pdf)] [slides(key)]
  • "Adversarial Examples and Adversarial Training," presentation at Uber, October 2016. [slides(pdf)]
  • "Physical Adversarial Examples," presentation and live demo at GeekPwn 2016 with Alex Kurakan. [slides(pdf)]
  • "Adversarial Examples and Adversarial Training," guest lecture for CS 294-131 at UC Berkeley. [slides(pdf)] [slides(key)]
  • "Exploring vision-based security challenges for AI-driven scene understanding," joint presentation with Nicolas Papernot at AutoSens, September 2016, in Brussels. Access to the slides and video may be purchased at the conference website. They will be freely available after six months.
  • "Adversarial Examples and Adversarial Training" at HORSE 2016. [slides(pdf)] [youtube]
  • "Adversarial Examples and Adversarial Training" at San Francisco AI Meetup, 2016. [slides(pdf)]
  • "Adversarial Examples and Adversarial Training" at Quora, Mountain View, 2016. [slides(pdf)]
  • "Adversarial Examples" at the Montreal Deep Learning Summer School, 2015. [slides(pdf)]
  • "Do statistical models understand the world?" Big Tech Day, Munich, 2015. [youtube]
  • "Adversarial Examples" Re-Work Deep Learning Summit, 2015. [youtube]

Generative Adversarial Networks

  • "Overcoming Limited Data with GANs". NIPS 2017 Workshop on Limited Labeled Data. [slides(pdf)] [slides(key)]
  • "Bridging theory and practice of GANs". NIPS 2017 Workshop on Bridging Theory and Practice of Deep Learning. [slides(pdf)] [slides(key)]
  • "GANs for Creativity and Design". NIPS 2017 Workshop on Creativity and Design. [slides(pdf)] [slides(key)]
  • "Giving artificial intelligence imagination using game theory". 35 under 35 talk at EmTech 2017. [slides(pdf)][slides(key)]
  • "Generative Adversarial Networks". Introduction to ICCV Tutorial on Generative Adversarial Networks, 2017. [slides(pdf)] [slides(key)]
  • "Generative Adversarial Networks". NVIDIA Distinguished Lecture Series, USC, September 2017. [slides(pdf)] [slides(key)]
  • "Generative Adversarial Networks". Adobe Research Seminar, San Jose 2017. [slides(pdf)] [slides(keynote)]
  • "Generative Adversarial Networks". GPU Technology Conference, San Jose 2017. [slides(pdf)] [slides(keynote)]
  • "Generative Adversarial Networks". Re-Work Deep Learning Summit, San Francisco 2017. [slides(pdf)] [slides(keynote)]
  • Panel discussion at the NIPS 2016 Workshop on Adversarial Training: Facebook video
  • "Introduction to Generative Adversarial Networks," NIPS 2016 Workshop on Adversarial Training. [slides(keynote)] [slides(pdf)]
  • "Generative Adversarial Networks," NIPS 2016 tutorial. [slides(keynote)] [slides(pdf)] [tech report(arxiv)]
  • "Generative Adversarial Networks," a guest lecture for John Cannys COMPSCI 294 at UC Berkeley. Oct 2016. [slides(keynote)] [slides(pdf)] [youtube]
  • "Generative Adversarial Networks" at AI With the Best (online conference), September 2016. [slides(pdf)]
  • "Generative Adversarial Networks" keynote at MLSLP, September 2016, San Francisco. [slides]
  • "Generative Adversarial Networks" at Berkeley AI Lab, August 2016. [slides(pdf)]
  • "Generative Adversarial Networks" at NVIDIA GTC, April 2016. [slides(pdf)]
  • "Generative Adversarial Networks" at ICML Deep Learning Workshop, Lille, 2015. [slides(pdf)]
  • "Generative Adversarial Networks" at NIPS Workshop on Perturbation, Optimization, and Statistics, Montreal, 2014. [slides(pdf)]

Other Subjects

  • "Adversarial Robustness for Aligned AI". NIPS 2017 Workshop on Aligned AI. [slides(pdf)] [slides(key)]
  • "Defense Against the Dark Arts: Machine Learning Security and Privacy," BayLearn, 2017-10-19. [slides(pdf)]
  • "Adversarial Machine Learning for Security and Privacy," Army Research Organization workshop, Stanford, 2017-09-14. [slides(pdf)]
  • "Generative Models I," 2017-06-27, MILA Deep Learning Summer School. [slides(pdf)] [slides(key)]
  • "Adversarial Approaches to Bayesian Learning and Bayesian Approaches to Adversarial Robustness," 2016-12-10, NIPS Workshop on Bayesian Deep Learning [slides(pdf)] [slides(key)]
  • "Design Philosophy of Optimization for Deep Learning" at Stanford CS department, March 2016. [slides(pdf)]
  • "Tutorial on Optimization for Deep Networks" Re-Work Deep Learning Summit, 2016. [slides(keynote)] [slides(pdf)]
  • "Tutorial on Neural Network Optimization Problems" at the Montreal Deep Learning Summer School, 2015. [slides(pdf)]
  • "Practical Methodology for Deploying Machine Learning" Learn AI With the Best, 2015. [slides(pdf)] [youtube]

Contributed Talks

  • "Qualitatively characterizing neural network optimization problems" at ICLR 2015. [slides(pdf)]
  • "Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks" with Yaroslav Bulatov and Julian Ibarz at ICLR 2014. [youtube]
  • "Maxout Networks" at ICML 2013.
  • "Joint Training Deep Boltzmann Machines for Classification" at ICLR 2013 (workshop track).

Miscellaneous

  • Ive made several presentations for the Deep Learning textbook, and presented some of them at a study group for the book.
  • PhD thesis defense. [youtube] [slides]

Ian Goodfellow GAN 資料地址:iangoodfellow.com/slide


2018 新智元 AI 技術峰會倒計時 13 天】

搶票鏈接:

2018新智元AI技術峰會--產業.躍遷?

www.huodongxing.com圖標


推薦閱讀:

TAG:深度學習DeepLearning | 編程 | 生成對抗網路GAN |