John Langford , 微軟機器學習研究員,也是 Vowpal Wabbit 的主要研發人員。這次,他在Quora上談了自己對機器學習、Vowpal Wabbit 以及人工智慧等問題的看法。除了回答一些熱門、實用的問題,他也提供了非常豐富的專業研究資訊和文章資料,是一篇值得收藏的對話類文章。
關於機器學習
未來幾年,機器學習會解決那些重大世界難題?
未來幾年,我認為機器學習不會解決什麼重要世界難題。
不過,我確實期望它能為各個公司解決越來越多的問題,通過這種積累讓世界在點點滴滴方面變得更好一些,研發出解決未來世界難題所需的工具。人們將能夠更方便地獲取他們想要的新聞訊息,人和電腦之間的介面將運轉得更好,更多的日常任務將由機器自動實施。
在更遠的未來(10 至 30 年之後),我們可以預期機器學習在這些領域做出貢獻:
1. 自動駕駛。自動駕駛怎麼會解決掉世界難題呢?當交通運輸變成一種公用事業而不再是一種私人財產時,汽車會變少,這些汽車會產生更少的汙染,交通事故也會大大減少。還有個額外的好處,那就是大街上再也不會總是塞滿停泊的汽車了。
2. 大眾的個性化教育。在科幻小說《鑽石時代》裡,許多人都使用同一本書來進行自我教育。未來教育的細節可能和小說不一樣,但我認為,沒有什麼理由否認,機器學習技術將有效地促進這種個性化教育的到來。在未來世界,每個人都可以以自己的步調來學習,而機器學習將使這成為可能。我們需要機器學習,特別是在早期教育階段,因為在這個階段互動是關鍵。
3. 醫療保健的合理化和個性化。美國建立了一個反常的醫療系統,在這個系統中,最昂貴的解決方案總是能贏得競爭而拿到錢,這就是美國的醫療保健比其他國家貴兩倍的原因。我預期,醫療革命將從使用 Fitbit 智慧手環和微軟智慧手錶等個人裝備的個性化醫療開始,因為這些領域的風險更低,也因為這些領域尚未被做事情的舊習慣所牢固佔領。
總之,機器學習在下述情境中是一個優秀、合理的工具:
1. 當正確答案並不顯而易見的時候。
2. 當相關背景已被數字化的時候。
3. 當相同的決策將被重複多次的時候。
然而,事情也不只有好的一面。許多相對慣例化的工作將消失,社會必須很好的應對這一問題,才能維持一個良好的公民社會。社會作為一個整體可能將會更富裕。但這並不等於說,社會將會運轉良好。
機器學習裡有多大比例是電腦科學,又有多大比例是統計學呢?
這要看情況。當樣本不太多時,基本上是統計學問題。當樣例數量極大,而你又想在一個正在執行的系統中部署它時,電腦科學方面的問題常常就變成了支配性的,即便統計學方面始終是相關的。
不過,機器學習還有一些要素既不屬於傳統統計學也不屬於電腦科學。想一想優化和表徵理論(Optimization and representation theory ),它們就不太屬於這兩者。
你覺得哪家實驗室的機器學習研究最有趣呢?
哇,在機器學習領域,業界和學界中,有許多人正在做著各種有趣的事。讓我先從自家說起,再介紹些其他研究:
1. 顯然,我所在的微軟紐約研究院的實驗室在做一些非常吸引我的工作,這些工作既有對系統的研究,也有硬核理論(《Contextual-MDPs for PAC-Reinforcement Learning with Rich Observations》)的研究。
2. 其他的微軟研究院也在做有意思的事,比如解決影象識別問題(《 Deep Residual Learning for Image Recognition 》或 GPU 並行問題:《1-Bit Stochastic Gradient Descent and Application to Data-Parallel Distributed Training of Speech DNNs 》)
3. 谷歌至少有兩個實驗室做出了有趣的研究—— 倫敦的 Deepmind 在研究通關雅達利電子遊戲(《Human-level control through deep reinforcement learning 》)和圍棋。位於矽谷的另一家公司則專注於高階表徵,例如《Grammar as a Foreign Language》這篇論文。
4. Facebook 紐約實驗室的人在研究記憶和學習之間的互操作( interoperation)(《Reading Children's Books with Explicit Memory Representations 》 )
5. 加州伯克利大學的 AMP lab 實驗室正在做機器學習/資料/系統方面的研究。
6. 還有很多教授各自在大學裡做著有趣的工作。機器學習研究方面,最好的大學可能仍然是伯克利/卡耐基梅隆/史丹佛,不過,從事有趣工作的教授則分佈在幾十所大學裡。那些考慮讀研究生的人真的應該至少像瞭解大學一樣去了解自己未來的導師。如今要了解這一點要容易得多了,因為論文發表的資訊更容易獲取了。
7. 類似地,還有許多其他產業實驗室在做有趣的工作。
去紐約今年夏天的機器學習國際會議看,感知一下當下的研究方向吧。我寫了一些部落格來討論那些令我感興趣的論文。
深度學習會取代所有其他型別的機器學習嗎?
不,但它可能會成為許多種機器學習的一部分。深度學習如今是一個很火的話題。深度學習辦法為許多對大量樣本進行泛化問題(比如,很好地預測同一個問題的新例子)提供了有效回答,在我看來,這是合乎邏輯的結果,因為由線性表徵得到的優化假設,充其量只是為實踐提供方便的錯誤。不過,仍然有許多領域似乎是深度學習不能勝任的:
1. 深度學習尚未在那些訓練樣本較少的領域展現出成功跡象。在樣本較少的情況下,那些通過其他資訊來源而設計的技術仍佔據領先。(當然,深度學習將來有可能會生成這些其他資訊源,但這並沒有消除給定較少資訊源時的學習需求。)
2. 沒有解決這一需求:通過探索性技術來搜尋資料。我遇到過一些深度學習研究者不肯承認這一點,但是,如今有了 Deepmind 的研究結果後,他們安靜多了。
3. 深度學習在科學探索方面常常是無能為力的。如果你有一個關於世界如何執行的特定假設,那麼(比方說)採用一個圖模型並測驗其統計有效性將是更可行的。
4. 沒有解決圍繞部署機器學習的系統問題,在某種意義上,它(經常)讓事情變得更麻煩了。
對於上面的許多難題,深度學習可能構成解決方案中的一部分,但很明顯,深度學習不是一個完整的解決方案,無論是在以下哪種意義上:無需藉助深度學習,我們就能輕易談論解決問題,或者用深度學習生成解決方案。例子,請見論文:《State of the Art Control of Atari Games Using Shallow Reinforcement Learning》
機器學習中,有多少與理論有關,又有多少事關實踐經驗?
以我的經驗看,有著一半理論一半實踐經驗背景的人比那些只關注理論或只關注實踐的人要強很多。只注重實踐的研究者有時候會犯一些很愚蠢的錯誤,比如,分不清訓練集和測試集或者採用錯誤的方法去解決問題。只注重理論的人也許理解優秀演算法的結構,但不能有效運用,或者不能從很多可能的方法中選出合適的那個。運用方程解決問題和證明方程是兩種完全不同的能力,這在機器學習中尤其的正確,在機器學習領域,證明方程有效經常並不意味著可以用它來解決問題。理論和實踐最理想的混合狀態是很難固定的, 而且(我很肯定)這取決於你正嘗試解決的應用問題。
當前哪種機器學習框架(Tensor Flow, MLlib, Torch 等等)更讓人印象深刻?
機器學習系統不同,目標也大不同,所以,應該選擇一個被低估的,而不是我能舒適駕馭的。我想至少提幾個突出的框架。
在如此龐大的機器學習生態系統前,R 是很難被打敗的, 亞軍應該就是scikit-learn。
作為一個研究性的運載工具, 我真的偏愛 VM [ Vowpal Wabbit (Fast Learning) ]。一些過去論文的清單(見下圖)。當然了,我也是個偏見者。相比較其他的系統,VW擁有不同的客戶群,因為它突出了聯網能力、可配置能力、探索能力和減少指數級運算的漂亮技巧。
現在可能有非常多的機器學習系統,每一個都有自己無可比擬的優點。或許一切都會塵埃落定?不管怎樣,CNTK 通過 one-bit sgd 和全域性歸約結合的方式來實現(可能是)最好的擴充性。Tenserflow 擁有相對簡潔的架構,但是,相對新的競爭者們—— Torch 和 Theano 很好結合了最新研究成果,具有更長的追蹤記錄的特點。
我的期望是,我們會全部從「軟體學習」轉到 「系統學習」,這和離開汽車的發動機毫無用處是一個道理。一個用來學習的系統會支援資料收集、使用(通過學習)和部署。在這一語境下,我希望我們一直為之努力的決策服務系統會成功。
在機器學習中是否有一個「主演算法」?
也有也無。在處理小的資料集上,確實是沒有一個主演算法,在這樣的資料集中具體的資料特別的重要。
有。就我們希望人類能夠解決的非常大級別的問題而言,有主演算法的存在。這一說法短時間內明顯不會被接受。主演算法有幾個方面,比如,有效地考慮計算的能力,我們正在遺忘這也是典型機器學習挑戰之一。
奧卡姆的剃刀也適用於機器學習?
是的。奧卡姆剃刀是個基礎,在此之上,你能證明泛化 (prove generalization)。看看這個輔導(http://hunch.net ),源自我的論點。
對於無監督學習來說,流形學習仍然重要嗎?或者已經被其他技巧超越了?
說個背景:我引用率最高的論文就是 Isomap,很幸運,在自己還是研究生的時候就參與了這篇論文。我還沒有把握。有效的無監督學習相當困難,到目前為止,成功還是相對具體應用相關的。在有好的通用的無監督學習技術之前,沒人會很有把握。
本科生怎麼做才能成為機器學習、深度學習的人才?
上課,自己獨自使用資料集做實驗。在 Kaggle(資料分析競賽網站) 上總能看到一批自我訓練的人。重新完成一個簡單的學習演算法就是為了感覺下在這裡面到底會發生什麼。這些建議都不是特別新,但你確實需要課程和實踐經驗。除此之外,我推薦一些專業化內容。機器學習非常廣泛,挑選出你最感興趣的領域,讓它成為自己最擅長的。做到這些,你就成為了專家。
產業中的機器學習研究與學術研究中的機器學習,有什麼不同?
粗糙地說,機器學習研究趨於注重產業而非學術。做一些影響到人類的事情,通往這一目標的道路上,障礙會少些。
在學術界,每個教授(和他的學生)必須代表他們自己。這意味著,教授間的合作不會像你想象的那麼多。一個教授的時間也容易被各種管理任務佔去,留給個人研究時間就相對較少。大部分教授的研究都是通過指導自己學生完成的。
在一個好的產業研究實驗室裡,可能有數個專家水平的人一起完成一個專案,這就能解決很多困難的大型任務。也更容易獲取資料集、計算機設施等資源,也會得到很多有能力的程式設計師的幫助。
不過,學術界擁有一些真正的實力。很多的人單純的喜歡教課,我也能理解這一誘惑。學生總要有人來教。在不那麼過度專業化方面,學術界也非常的棒:即使缺少支援,在學界的某處,某些人也正在用正確的方法進行研究。
編寫機器學習程式會變得和寫一個常規蘋果應用一樣簡單和高效嗎?如果會是這樣,讓這一變化成真的主要技巧是什麼?
我相信有一天會和我們使用圖書館一樣簡單。為此,你需要一種通過設計避免 Bug 的機器學習系統,這種系統還需要有強健有效的預設值。 LUIS 專案就是一個用積極學習方法解決這個問題的例子。另一個就是我們一直在做的決策服務。後者使用了情景式拉霸技術( contextual bandit techniques )來避免系統偏見,否則你就需要一位資料科學家來解決這個問題。
被監視到的機器學習侷限性或者說不足有哪些?
我首先推薦閱讀這篇論文《Machine Learning: The High Interest Credit Card of Technical Debt》,它很好的總結了對機器學習的抱怨。
絕大多數深度學習方程並沒有嚴格地將因果納入考慮,因此在有些情境中機器學習模型本身會影響它自己的訓練過程,而當機器學習應用到這樣的情境中時就容易失敗。能避免這種情況的最簡單的做法大概就是情景式拉霸了。
強化學習可以駕馭眾包嗎?它在處理煽動挑釁言論( trolling )時會不會太脆弱?
我認為可以使用強化學習。個性化是一個應對煽動挑釁言論的有效辦法。參見 《Feature Hashing for Large Scale Multitask Learning》。
實現機器學習演算法的最好的程式語言是什麼?
我不知道。
對很多實現(implementation)來說,效率肯定是一個主要關注點,這意味著一種較為低階的語言是相當重要的。如果有的話,最近甚至在向更低階的語言轉變——例如使用 Cuda 在 GPU 上程式設計。於此同時,因為演算法改進的(計算)價值,它們繼續主導著實現。總的來說,這是個很難的問題,許多最好的系統是通過 C++ 實現的,但同時也結合了更高階的語言以支援更簡單的介面。
你認為深度學習會被基於理論的方法取代嗎,就像 90 年代核方法(kernel method)取代神經網路一樣?
這對我來說就像是打最後一場戰爭。泛化(generalization)很不錯。有時候那可以通過一個深度學習演算法實現,有時候則是其它方法效果良好。隨著時間的推移,我預計會有更多「防彈的」學習演算法被開發出來,這些演算法將能在不同的技術之間平滑地切換。也許理論會對此有所指導,但實際上,理論應該專注於解決新問題,而不是老調重彈。
機器學習有什麼道德上的考慮?
有一些與你所優化的東西相關的道德問題。難道「把給人們帶來的干擾最大化」這樣的事真的是目標嗎?問題就出現了。
在醫療健康背景中的演算法探索(情景式拉霸、強化學習等)涉及到一些道德問題。
還有在隱私資料的使用和確定什麼應該是或不是隱私資料方面,也有一些相關的隱私問題。
我不認為這些問題在任何意義上是機器學習所獨有的。機器學習只是這些問題產生的另一條途徑而已。
關於 Vowpal Wabbit
在2016年,Vowpal Wabbit 有多重要?
我們沒辦法精確度量這個重要性,所以,我最好指出它擅長的領域。VW 在幾件事上非常擅長,可能在多種應用上起決定性作用。
1. 互動學習。很多的學習演算法並未配置到互動設定中,因為它們不夠穩定或安全,而且他們沒有正確的演算法甚至無法工作。
2. 線上學習。絕大部分學習系統都圍著把所有資料載入進 RAM ,VW 不這樣做——它一邊執行一邊學習。這對效能的互動除錯有幫助——我經常能在數秒內發現一個 bug,而其他系統因為沒有反饋可能需要數分鐘或一個小時。這也意味著程式在有龐大資料集時不會失敗,只不過需要更多時間。
3. 學會搜尋。模仿學習方式是非常好的強化學習設定,在其他設定中看起來也相當引人注目。可以看下最近 Hal 釋出的部落格:A dagger by any other name: scheduled sampling。一個公開的系統,在促成這些方法上非常有幫助。
4. Logarithmic time prediction。這在學習框架中沒有很多選擇。看最近的論文《Logarithmic Time Online Multiclass Prediction》。
5. 可定製的快速還原。VW 有一個內部的快速還原框架,既快速又非常強大。有時,在定製部署中,這就是你想要的小竅門。
VW 的一些有趣的實踐應用是什麼?
VW 主要用於文字預測任務,比如垃圾郵件的預測、文字情感分析等。我知道的兩個特別有趣的應用是:
1. 電子證據發現:當公司 A 控告公司 B 時,他們總是聘請公司 C 的律師查詢資訊資料。VW 用於協助過濾好資訊、壞資訊,這意味著,只用更少的律師就能完成任務。
2. MSN 使用 VW 提供個性化新聞:這鍛鍊了 VW 在產品環境中的情景式拉霸程式碼庫。
情景式拉霸( contextual bandits)也被用於實踐了嗎?成績如何?
是的。我們正在從事的一個應用就是 MSN 上的個性化新聞 ,不過我還知道其他幾個應用。如果:
1. 記錄正確。
2. 探索工作正確完成。
3. 有足夠樣本(有關行動數量的,監督學習也需要),
我的經驗的是,它就會管用。
不過,上面的說明很重要——我們已經在創造一個系統來讓(1)和(2)系統地起作用。有了那種系統,我期待情景式拉霸比監督學習的命中率更高,因為完整的資料生命週期得到了支援。
你怎麼看機器學習研究和軟體開發之間的相互作用?你開發Vowpal Wabbit 的動機是什麼?
因為我是一位失意的理論家,很樂意看到自己寫的演算法得到應用。
VW 對我的研究幫助很大。除了好用為我帶來額外的影響力之外,在很多情況下也告訴我,當前演算法的侷限性所在,而從理論上來看,這些侷限性似乎是非侷限性的。還算合格的研究人員與好的研究人員之間的主要區別,就是是否用更好的辦法給自己的研究挑問題。
可以怎樣將 RNN/LSTM 用於 Vowpal Wabbit?
目前還不能(還沒有實現)。把這種能力賦予 Wabbit 的「學習搜尋」子系統,這看起來像是一個沒有腦子的人乾的事。
Vowpal Wabbit 的未來看起來如何,你認為像 AWS 這樣的雲服務會在它們的機器學習套件中使用它嗎?
VM 在 AzureML(微軟Azure 機器學習工作室)中是可用的,並且也已經有了一些有重要意義的用法。我知道亞馬遜曾將 VM 用於它們的內部機器學習服務,但我相信 NIH 能在公開發布之前獲勝 :-)
我們快要推出決策服務,這將為實現情境拉霸學習提供一種機制。過幾週迴來看吧。
人工智慧以及其他
讓你興奮的研究問題是什麼?為什麼這些問題很重要?
我最近對強化學習領域的全域性性探索很感興趣。看起來這一領域真的需要更多智力的探索。我從這篇論文(《Contextual-MDPs for PAC-Reinforcement Learning with Rich Observations》)中首次看到了一個一般性公式,通過這個公式我們可以去除所有不必要的指數級樣本複雜度。太棒了!但這離我們得到實踐上的解決還很遙遠。
就能力而言,人工智慧現在處在什麼位置?在朝什麼方面前進?
在識別物體、語音等方面,人工智慧都能粗糙的完成。而且在有限的情況下,也有一些有效的策略控制完成任務。總而言之,我認為把所有的成分組合在一起可能達到高等昆蟲水平的智商。或許是低等哺乳動物、鳥類?
人工智慧肯定正在邁向更高的智慧水平,現在有許多看似智慧的演示,但是,究其細節,並非如此。最近,我在部落格上寫了一篇關於這個內容的文章。
去年,你閱讀的最有趣的研究論文是什麼?
我不能縮小這個範圍。這裡有些來自上一次NIPS的有趣的東西。
我也很喜歡《 Deep Residual Learning for Image Recognition》。
還有 AlphaGo 發表在自然雜誌上的論文(《Mastering the game of Go with deep neural networks and tree search》),他們代表了經驗主義的勝利。最近閱讀的論文中,我現在最喜歡的是 Contextual MDP 的論文《Contextual-MDPs for PAC-Reinforcement Learning with Rich Observations》。因為我相信智慧探索能力只一個基本的障礙,但現在離實踐還有很長的距離。
要實現完全人類級別的智慧,快速途徑是什麼?
人工智慧是個奇怪的問題。既然進化從不搞大躍進,那麼要實現人工智慧也不需要多麼難的東西。此時此刻,它就是個純軟體問題。然而,幾十年來,最聰明的人們歷經深思也還沒有找到好的解決方案。
通常意義上的做法是找到必要的子問題並以構成(compose)方式解決這些問題。
與此同時避免掉入其他陷進。這比較容易,並不需要真的大躍進,我也期待對問題的逐步解決。
AlphaGo 是人工智慧的突破?
是人工智慧發展過程中的一個重要里程碑。正如之前取得的里程碑式的成就,越靠近,你反而越瞭解其侷限性。我在下文中討論過我對這場勝利的看法。
人工智慧和機器學習之間的主要不同是什麼?
目前人工智慧會議上所有論文中的很大一部分都在開發或使用學習演算法。大部分機器學習論文都不是關於人工智慧的——它們只是關於更好地解決各種資料驅動的問題。儘管如此,機器學習社群中對人工智慧感興趣的也佔到了相當大一部分。
人們也嘗試過人工智慧的其他進路。例如,有些人從邏輯開始,建造本體並試圖應用它們。在解決人工智慧方面,機器學習看來是正確的道路。機器學習是一種自下而上的通向人工智慧的進路。作為這樣一種進路,它的區域性成功能夠幫助導向進一步的成功。
如何利用科技創造出有效系統,替代目前傳統高等教育體系?
強化學習是機器學習的一個領域,注重找到優化長期結果的好策略。在以下兩個研究方面都有良好的表現,只用相對較少的樣本就能給出一致、令人滿意的結果。
1. 模仿學習:這裡的想法是,一位老師演示如何做某事,結合使用學習演算法進行的演示,能大大降低學習難度。有一個極端例子,由一位老師來演示如何解開密碼鎖,隨機搜尋所需要的樣本數會呈指數級下降。 Drew Bagnell 的論文《 InvitationToImitation 》和 Hal Daume 等發表在 ICML 上的教程都是非常好的參考文獻。最接近模仿學習平臺的是在Vowpal Wabbit (Fast Learning) 中學習搜尋實施方案,但是,在系統配置過程中依然存在一系列挑戰。
2. 情景式拉霸(Contextual Bandit ): 這裡的想法是,演算法智慧地找尋替代方案,看看哪些替代方案可行,充分利用可行替代方案高效行善。眾所周知,為了創造個性化決策,這些方法要比那些臨床測要有效地多。NIPS 上的說明書有更詳細的內容 (http://hunch.net/~jl/interact.pdf)。上文提到的決策系統僅僅是一種解決問題的方式。我們還未嘗試將其應用到教育領域,但是,它已被用於個性化新聞推薦和個性化健康中。檢視更多,請見:
優化學習內容和學習方法以便優化學生的長遠幸福,最好的實踐辦法似乎就是高效利用以上兩種方法。這有可能在短期發生(人們學會了一個特定概念?),也可能是個長期問題(得到滿意工作了?)隨著限制因素成為你可以學習的事件數量。(With the limiting factor being the number of events that you can learn with.)
你目前對於學習還原(learning reduction)的看法是怎樣的?它可以向哪些方面擴充套件
我在《Learning Reductions that Really Work》這裡有討論。從本質上說,我認為去設計那些能夠相對於之前的方法指數式地提高計算能力的方法,這是一條好的進路。
你怎麼看自然語言處理?當下神經網路不能和自然語言很好地合作嗎?
自然語言處理是個古怪的問題,因為語詞的訊號是明確的,因此,經常不需要更深的結構,或者只用給一小小的提升力(a small lift)。但是,語詞也是造出來的,因此,如果你想要一個真的可以創造(而不是操弄)語言的系統,顯然會有些難題。
人工智慧在威脅著人類嗎?
是嗎?但是,我認為,其他現有技術也對人類有威脅(在相同意義上)。據我對加密機的瞭解(是的,我發表過論文),人工智慧永遠不會是神奇的「統領所有計算機」之類的東西。這意味著天網那種情況幾乎不可能發生。我的預期是,人工智慧不會具有自主性,而是會變得很勤勉。
經濟學家們喜歡宣稱,創造出的工作機會與消失的工作機會持平。我不信——要成為對社會有貢獻的人,需要接受最低限度的教育,幾世紀以來,這個基本教育量一直在穩步上升。現在,如果不接受大學教育,那就太瘋狂了。現在的大學教育類似於我年輕時的高中教育。當只有那些擁有博士學位的人能成為對社會有用的人,會發生什麼?
曾經有一個電腦科學專案,裡面有三十位研究生,我曾是其中一員。挑選這些學生的原因是在於他們有望完成博士學位,並不是每個人都做到了。當無論怎麼努力都無法成功時,你會怎麼做?
管理好這種發展變化似乎是本世紀最根本的挑戰之一。