大數據文摘作品,轉載要求見文末
編譯 | Aileen,張禮俊
笪潔瓊,錢天培
近日,GAN之父Ian Goodfellow在Quora上舉行了一年一度的live問答活動。不同於去年的獨挑大梁,他今年還叫來了他在Google Brain的好基友Alexey Kurakin。本次互動吸引了將近2萬Quora用戶的參與,兩人總共回答了網友提出的35個機器學習相關的問題。
大數據文摘從中精選出10個問題,從機器學習入門到深入探討都有涉及,帶你了解大佬眼中的機器學習。當然,我們也摘錄了Ian Goodfellow對他的「愛子」GAN的點評。
此外,文摘將在本周推出Quora問答精選專欄,大家敬請關注!
給新人的學習建議
1. 你建議其他領域的人(比如機械工程)來學習機器學習嗎?
Ian Goodfellow:當然了!我最崇拜的Geoffrey Hinton在博士階段研究領域是實驗心理學!
在機械工程裡,我想你已經學了很多能用到機器學習領域的數學工具,所以你並不需要從頭開始。通常而言,我們發現某一領域的變革往往是因為另一個領域的人帶來了其領域中已成型的新想法!
2. 一個幾乎沒有任何技術背景的人怎麼學習機器學習?
Ian Goodfellow:你應該要掌握一些基本的線性代數、概率和python的編程知識!
但是你不必知道所有的線性代數知識(比如QR分解就是不必要的),所有的概率論知識(通常我們也不會在深度學習中用到太多排列組合,序列重排序之類的知識),或者所有python編程的知識(實際上一些很晦澀難度的語言特性在一些公司是被禁用的)。
我覺得你應該從學習足夠的線性代數、概率論和python編程做起,目標是你可以只用python和numpy庫實現邏輯回歸!
通過閱讀我的深度學習(http://www.deeplearningbook.org)那本書的第一章到第五章,你就能學到完成邏輯回歸編寫所需的所有知識了,python的部分除外。當然我很難說這是否可行,因為我很難把自己放在一個沒有任何技術背景的人的角度去考慮,但是我們已經嘗試在書裡放入了足夠多的細節,所以你應該是沒問題的。你需要一些耐心和努力,從零開始學習知識!
3. 作為一個大二學生,我該如何進入人工智慧領域?
Ian Goodfellow:
如果你野心勃勃,邊實踐邊學習,並參與我們的對抗樣本競賽吧(NIPS 2017: Non-targeted Adversarial Attack)
學習教你線性代數和概率論的課。
學習可以教你寫出適合你所用硬體的高效代碼的課。有時這會是硬體設計的課,而不是編程課。如果你不確認的話可以詢問你的導師。
學習教你寫高效實時多線程代碼的課。有時這個課題會被包含在其他課裡,比如計算機系統開發和遊戲開發。
讀《深度學習》這本書。
選一個你感興趣的機器學習項目。如果不知道怎麼將深度學習應用到你的愛好或者課程項目上,那就做一些比較常用的項目,比如在TensorFlow上從頭開始構建一個SVHN(Street View House Numbers)分類器。做一遍這個項目,當你對某些你讀到的問題有疑問的時候,嘗試用你的代碼作一些實驗,從而回答這個問題。
如果你的學校有機器學習、計算機視覺、自然語言處理和機器人學的課,那就趕緊去上吧。
當然也可以來申請谷歌大腦的實習啦!
4. 說3本你最推薦的機器學習的書吧?
Ian Goodfellow:哈哈,我當然會推薦我和Yoshua還有Aaron一起寫的《深度學習》。十年前,當我在學習機器學習的時候,我最喜歡的書有:
Chris Bishop的《模式識別和機器學習》(Pattern Recognition and Machine Learning)以及Daphne Koller 和Nir Friedman 的《概率圖模型》(Probabilistic Graphical Models)。而在我對機器學習頗有了解之後,我就不怎麼看新書了,比如說Kevin Murphy’s 寫的《Machine learning: A Probabilistic Perspective》,所以我推薦的不一定就是最佳的。
一般機器學習類問題
5. 你最喜歡的超參數(hyperparameters)優化的方法是什麼?
Ian Goodfellow:隨機搜索。用隨機的超參數並行跑25次算法,選擇其中最好的兩三組超參數,在這些最好的超參數的附近再隨機選25組跑。
我幾乎每年都會試一些近來比較流行的超參數優化器,把他們和隨機搜索進行對比。到現在為止,我還沒看到哪一個專門的優化器能找到比隨機搜索更好的超參數。當然,我也知道其他人會有不同的看法。鑑於我更偏向研究領域,我通常會比別人用更多的超參數,我用到的算法也會更奇怪。
6. 谷歌大腦今年正在從事哪方面的研究呢?
Ian Goodfellow:谷歌大腦是一個很大的團隊,獨立研究者們有很大的自由度去實現他們自己的想法,所以我很難將這些研究方向總結出來。
你可以在我們的網站上看到更多的信息:Research at Google(https://research.google.com/teams/brain/)
我們的基礎研究試圖改進機器學習的算法,建造出使機器學習更強有力的計算機系統(像TensorFlow),我們也將機器學習應用到醫療保健、機器人學、音樂與藝術生成的問題中。
我和Alexey是聚焦對抗性機器學習的基礎研究團隊的一員。我們製造虛構的對抗器,令算法有表現的更好(像GAN),我們也試圖找到真實世界中的對抗器(像對抗樣本)。
7. 深度學習的下一步是什麼?
Ian Goodfellow:
深度學習還有好多需要發展的領域呢。試著開闊你的思維,不要僅僅只在一個方向上思考。
更好的強化學習/深度學習和強化學習的整合;能夠可靠地學習如何控制機器人的強化學習算法等。
更好的生成式模型;可以穩定地學習如何生成人類分不出真假的圖像、語音、文字的算法。
學習如何學習的算法,以及普適深度學習算法(可以重新設計它們自己的架構,自行優化超參數的算法)。現在,我們依然需要人類專家來運行「學習如何學習」的算法,未來我們希望這一過程能被簡化,而那些當前與AI關聯甚少的行業也能受益於AI的成果。
服務於網絡安全的機器學習,以及機器學習自身的網絡安全:越來越多的網絡攻擊使用機器學習來生成惡意軟體,這些軟體能有效率地躲過漏洞模糊測試。同時,更多的網絡防守軟體也會用到機器學習,從而給出比人類更快的反應,檢測更多細微的入侵。不同陣營的機器學習算法會互相欺騙對方,進行攻防大戰。
計算力提升:動態活動分配會讓更大的模型使用更少的計算操作來處理一個簡單的樣本。但總體來說,大量的計算依然會是人工智慧的關鍵。
半監督學習和極小樣本學習(one-shot learning):這能夠減少訓練所需的數據,使人工智得到更廣泛的應用。
幾乎不犯錯誤、具有極高穩定性的模型:這樣的模型會被用於對安全性有高要求的領域。
深度學習會繼續在大眾文化中擴張,我們會看到越來越多的藝術家和流行文化引領者們用深度學習去做我們意想不到的事。我認為Alexei Efros的實驗室和像CycleGAN這樣的項目就是這個潮流的開端。
8. 在未來,哪個機器學習領域會取代深度學習?
Ian Goodfellow:「深度學習」是一個非常廣泛的概念,我不確定它是否可以被取代。深度學習只是意味著用更多的處理步驟來學習,而不是僅僅只有一步。從這點來說,相比於「淺」的算法,「深」的算法會遇到組合爆炸的問題。
在2006-2011,「深度學習」很流行,但是這裡的「深度學習」多是把許多無監督學習算法疊起來,從而為監督學習定義複雜的特徵。
2012年之後,「深度學習」往往意味用反向傳播來優化一個代表某個可微分函數的深計算圖的所有參數。
在不久後,我們可能會更多地用到貝葉斯化算法(而不是基於最優參數的點估計),以及更多的不可微操作。(譯者註:貝葉斯算法從概率推斷的角度構建算法,通常對模型有先驗概率,通過觀察到的樣本和貝葉斯定理來進行推斷。)我們當然也可以繼續認為它們是「深」的,也可以不去思考它們是否是「深」的。我認為,試圖將深度學習和其他學習算法區分開是不必要的。我們對深度學習早已司空見慣,不需要再給它一個特殊的名字了。
9. 現今人工智慧和機器學習系統有什麼缺陷?
Alexey Kurakin:就我看來,一個最大的限制是大多數機器學習系統只能解決一個特定的問題(圖像、文字、強化學習等)和特定的任務。所以每次面對一個新任務,你都需要重新設計一個分類器,搜集訓練數據,訓練你的模型,或者至少要調整你上一個任務所獲得的分類器。
比如說如果你在一個圖像集上訓練一個分類器,可能在另一個圖像集上準確度就會降低。並且也可能難以解決不同類型的問題(比如說自然語言處理)。
現在有研究在試圖解決這些挑戰。近來谷歌大腦的一篇文章(One Model To Learn Them All)提出了一個能解決不同類型問題的架構,然而這個問題還遠沒被完全解決。
GAN類問題
10. 機器學習領域的新人應該了解對抗性機器學習(adversarial machine learning)的哪些內容?
Alexey Kurakin:首先,你要對機器學習和深度學習有一定的了解,這樣才能理解這個問題的背景。
對抗性機器學習研究的是,當同一個機器學習分類器的不同子部分有完全相反的獎勵函數(或是損失函數)時我們的應對技術。對抗式機器學習最典型的應用是:生成式對抗網絡和對抗樣本(Adversarial examples)。你也可以在其他機器學習論文中找到這個方法的應用。
在生成式對抗性網絡(generative adversarial network, GAN)中,你有兩個網絡:生成網絡和判別網絡。生成網絡的目標是生成「仿真」的數據樣本,判別網絡則是要將生成的「仿真」樣本和真實樣本區分開。
對抗樣本是那些被微調而導致錯誤分類的樣本。對抗樣本通常會在機器學習穩定性和安全性問題中被考慮到。有相反獎勵函數的兩個子部分如下:一個分類器被優化後能夠有很高的分類精確度和很好的泛化特性,而另一個對抗器則是要通過幹擾輸入試圖「欺騙」之前的分類器。
如果你想了解更多的信息,github網頁提供了很不錯的對抗性機器學習的論文和閱讀材料(yenchenlin/awesome-adversarial-machine-learning。)