Google研究總監談人工智能的另一面
大小:0.6 MB 人氣: 2017-10-10 需要積分:1
標簽:人工智能(227935)
本文為《程序員》文章,未經允許不得轉載,更多精彩文章請訂閱2016年《程序員》Peter Norvig是譽滿全球的人工智能專家,Google研究總監(Director of Research),他同時也是經典書籍《人工智能編程范式:Common Lisp案例研究》(Paradigms of AI Programming: Case Studies in Common Lisp)和《人工智能:一種現代方法》(Artificial Intelligence: A Modern Approach)的作者/合著者。在本文中,我們將看到Peter Norvig對人工智能目前進展和未來發展的思考,對人工智能技術在Google應用的解讀,以及對最新軟件工程師在人工智能時代的成長的觀點。
Peter Norvig眼中的人工智能
問:人工智能領域在哪些方面發生了您未曾預料的演變?
Peter Norvig:在1980年我開始從事人工智能研究時人工智能意味著:一位研究生用說明性語言寫下事實,然后撥弄這些事實和推理機制,直到從精心挑選的樣本上得到不錯的結果,然后寫一篇關于它的論文。
雖然我接受并遵循這種工作模式,在我獲得博士學位的過程中,我發現了這種方法的三個問題:
寫下事實太慢了。
我們沒有處理異常情況或模糊狀態的良好方法。
這個過程不科學——即使在選定的樣本上它能工作,但是在其他樣本上工作效果會如何呢?
整個領域的演變回答了這三個問題:
我們依靠機器學習,而不是研究生付出的辛苦努力。
我們使用概率推理,而不是布爾邏輯。
我們希望使用科學嚴格的方式;我們有訓練數據和測試數據的概念,而且我們也有比較不同系統處理標準問題所得到的結果。
1950年,阿蘭圖靈寫道:“我們只能看到未來很短的一段距離,但是我們很清楚還有什么需要完成。”自從1950年,我們已經得到許多發展并實現了許多目標,但圖靈的話仍然成立。
問:對于機器學習研究,工業界與學術界有何不同呢?
Peter Norvig:我認為,在教育機構、商業機構還是政府機構并不是很重要——我曾經在這三種機構都學到很多東西。
我建議你在有著一群出色同事和有趣問題的環境下工作。可以是工業界、學術界、政府或者非營利企業,甚至開源社區。在這些領域里,工業界往往有更多的資源(人、計算能力和數據),但如今有很多公開可用的數據供你使用,一個小團隊,一臺筆記本電腦,或者一個小而廉價的GPU集群,或者在云計算服務上租賃或捐獻時間。
問:您對深度學習有什么看法?
Peter Norvig:我清楚地記得80年代初的那一天,Geoff Hinton來到伯克利進行了關于玻爾茲曼機的講座。對我來說,這是個了不起的視角——他不贊同符號主義人工智能很強大很有用,而我了解到了一種機制,有三件令人興奮的新(對我而言)事情:根據大腦模型得出的認知合理性;從經驗而不是手工編碼中學習的模型;還有表示是連續的,而不是布爾值,因此可以避免傳統符號專家系統的一些脆弱問題。
事實證明,玻爾茲曼機在那個時代并沒有廣泛普及,相反,Hinton、LeCun、Bengio、Olshausen、Osindero、Sutskever、Courville、Ng以及其他人設計的架構得到很好的普及。是什么造成了這種不同呢?是一次一層的訓練技術嗎?是ReLU激活函數?是需要更多的數據?還是使用GPU集群可以更快地訓練?我不敢肯定,我希望持續的分析可以給我們帶來更好的了解。但我可以說,在語音識別、計算機視覺識別物體、圍棋和其他領域,這一差距是巨大的:使用深度學習可以降低錯誤率,這兩個領域在過去幾年都發生了徹底變化:基本上所有的團隊都選擇了深度學習,因為它管用。
許多問題依然存在。在計算機視覺里,我們好奇深度網絡實際上在做什么:我們可以在一個級別上確定線條識別器,在更高層次確定眼睛和鼻子識別器,然后就是臉部識別器,最終就是整個人的識別器。但在其他領域,一直很難了解網絡在做什么。是因為我們沒有正確的分析和可視化工具嗎?還是因為實際上表示不一致?
在有許多數據的時候,深度學習在各種應用中表現不錯,但對于一次性或零次學習,需要將一個領域的知識轉移并適應到當前領域又如何呢?深度網絡形成了什么樣的抽象,我們可以如何解釋這些抽象并結合它們?網絡會被對抗性輸入愚弄;我們如何預防這些,它們代表了根本缺陷還是不相干的把戲?
我們如何處理一個領域中的結構?我們有循環網絡(Recurrent Networks)來處理時間,遞歸網絡(Recrsive Networks)來處理嵌套結構,但這些是否已經足夠,現在討論還為時過早。
我對深度學習感到興奮,因為很多長期存在的領域也是如此。而且我有興趣了解更多,因為還有許多剩余問題,而且這些問題的答案不僅會告訴我們更多關于深度學習的東西,還可以幫助我們大體理解學習、推理和表示。
問:在深度學習最近取得的成就之后,符號主義人工智能是否還有意義?
Peter Norvig:是的。我們圍繞著符號主義人工智能開發了許多強大的原理:邏輯預測、約束滿足問題、規劃問題、自然語言處理,乃至概率預測。因為這些算法的出色表現,我們處理問題的能力比原來提升了幾個數量級。放棄這一切是件可恥的事。我認為其中一個有意識的研究方向是回過頭看每一種方法,探索非原子式符號被原子式符號取代的這個過程究竟發生了什么,諸如Word2Vec產生的Word Embedding之類的原理。
下面是一些例子。假設你有這些邏輯“事實”:
人會說話;
除人以外的動物不會說話;
卡通人物角色會說話;
魚會游泳;
魚是除人以外的動物;
Nemo是一個卡通人物;
Nemo是一條魚;
那么我們要問了:
Nemo會說話嗎?
Nemo會游泳嗎?
用邏輯來表述和解釋這個場景的時候遇到了兩個大問題。首先,這些事實都有例外,但是用邏輯很難窮舉這些例外情況,而且當你邏輯出錯的時候預測就會出問題了。其次,在相互矛盾的情況下則邏輯無能為力,就像這里的Nemo既會說話又不會說話。也許我們可以用Word Embedding技術來解決這些問題。我們還需要Modus Ponens Embedding(分離規則,一種數學演繹推理規則)嗎?不學習“如果A且A暗示B,則B”這樣一種抽象的規則,我們是否可以學習何時應用這種規則是恰當的?我覺得這是一個重要的研究領域。
再說一點:許多所謂的符號主意人工智能技術實際上還是優秀的計算機科學算法。舉個例子,搜索算法,無論A*或是蟻群優化,或是其它任何東西,都是一種關鍵的算法,永遠都會非常有用。即使是基于深度學習的AlphaGo,也包含了搜索模塊。
問:我們哪兒做錯了?為什么Common Lisp不能治愈世界?
Peter Norvig:我認為Common Lisp的思想確實能治愈這個世界。如果你回到1981年,Lisp被視作是另類,因為它所具有的下面這些特性還不被C語言程序員所知:
垃圾回收機制;
豐富的容器類型及相應的操作;
強大的對象系統,伴隨著各種繼承和原生函數;
定義測試例子的亞語言(sublanguage)(并不屬于官方版本的一部分,但我自己配置了一套);
有交互式的讀入-運算-打印循環;
敏捷的、增量式的開發模式,而不是一步到位的模式;
運行時對象和函數的自省;
能自定義領域特定語言的宏。
如今,除了宏之外的所有這些特性都在主流編程語言里非常常見。所以說它的思想取勝了,而Common Lisp的實現卻沒有 —— 也許是因為CL還遺留了不少1958年編程語言的陋習;也許只是因為一些人不喜歡用大括號。
至于說宏,我也希望它能流行起來,但當用到宏的時候,你成為了一名語言設計者,而許多開發團隊喜歡保持底層語言的穩定性,尤其是那些大團隊。我想最好有一套使用宏的實用指南,而不是把它們全部拋棄(或是在C語言里嚴格限制的宏)。
問:在未來10年里,有沒有哪些情況下軟件工程師不需要學習人工智能或機器學習的,還是每個人都需要學習?
Peter Norvig:機器學習將會是(或許已經是)軟件工程的一個重要部分,每個人都必須知道它的運用場景。但就像數據庫管理員或用戶界面設計一樣,并不意味著每個工程師都必須成為機器學習專家——和這個領域的專家共事也是可以的。但是你知道的機器學習知識越多,在構建解決方案方面的能力就越好。
我也認為機器學習專家和軟件工程師聚在一起進行機器學習系統軟件開發最佳實踐將會很重要。目前我們有一套軟件測試體制,你可以定義單元測試并在其中調用方法,比如assertTrue或者assertEquals。我們還需要新的測試過程,包括運行試驗、分析結果、對比今天和歷史結果來查看偏移、決定這種偏移是隨機變化還是數據不平穩等。這是一個偉大的領域,軟件工程師和機器學習人員一同協作,創建新的、更好的東西。
問:我想從軟件工程師轉行成為人工智能研究員,應該如何訓練自己呢?
Peter Norvig:我認為這不是轉行,而是一種技能上的提升。人工智能的關鍵點在于搭建系統,這正是你手頭上的工作。所以你在處理系統復雜性和選擇合適的抽象關系方面都有經驗,參與過完整的設計、開發和測試流程;這些對于AI研究員和軟件工程師來說都是基本要求。有句老話這樣說,當一項人工智能技術成功之后,它就不再屬于人工智能,而是成為了軟件工程的一部分。人工智能工作者抱怨上述觀點的意思就是他們的工作永遠離成功有一步之遙,但你可以認為這表明你只是需要在已知的基礎上再添加一些新概念和新技術。
人工智能在Google
問:Google“沒有更好的算法,只是多了點數據而已”這種說法是真的嗎?
Peter Norvig:我曾引用微軟研究院Michele Banko和Eric Brill發表的一篇關于分析詞性辨析算法的論文,他們發現增加訓練數據得到的效果提升比更換算法更明顯。我說過有些問題確實如此,而另一些問題則不見得。你可以認為這篇論文是“大數據”的功勞,但要注意,在這個領域十億個單詞規模的訓練數據集就能看出效果 —— 在筆記本電腦的處理范圍內 —— 還不到數據中心的量級。所以,如果你用不了數據中心,不必擔心 —— 你擁有的計算資源和數據量幾乎完勝任何一個上一代的人,你可以有更多的新發現。
所以沒錯,大量與任務相契合的高質量數據必然會有幫助。然而真正有挑戰的工作在于發明新學習系統的研究和讓其真正落實到產品中的工程實現。這個工作正是大多數機器學習成功案例的驅動力。正如Pat Winston所說:“人工智能就像葡萄干面包里的葡萄干,葡萄干面包的主要成分還是面包,人工智能軟件主體也是常規的軟件工程和產品開發。”
問:成為一家“AI-first”公司對Google意味著什么?
Peter Norvig:“傳統”的Google是一個信息檢索公司:你提供一個查詢,我們快速返回10個相關網頁結果,然后你負責找到與查詢詞相關的返回結果。“現代”的Google,CEO Sundar Pichai設定了愿景,它不僅基于相關信息建議,還基于通知和助理。通知,意味著當你需要時,我們提供你需要的信息。例如,Google Now告訴你該去赴約了,或者你目前在一家雜貨店,之前你設定了提醒要買牛奶。助理意味著幫助你實施行動——如規劃行程、預定房間。你在互聯網上可以做的任何事情,Google都應該可以幫你實現。
對于信息檢索,80%以上的召回率和準確率是非常不錯的——不需要所有建議都完美,因為用戶可以忽略壞的建議。對于助理,門檻就高了許多,你不會使用20%甚至2%的情形下都預定錯房間的服務。所以助理必須更加精準,從而要求更智能、更了解情況。這就是我們所說的“AI-first”。
Peter Nervig在Google
問:你的職業生涯如何起步?
Peter Nervig:我很幸運地進入了一所既有計算機編程又有語言課程的高中(在馬薩諸塞州牛頓縣)。這激發了我將兩者結合起來學習的興趣。在高中階段無法實現這個想法,但是到了大學我主修應用數學專業,得以研究這方面(當時,我們學校并沒有真正的計算機專業。我開始是主修數學,但很快發現自己并不擅長數學證明,反而在編程方面如魚得水)。
大學畢業后,我當了兩年的程序員,不過仍舊一直在思考這些想法,最后還是申請了研究生回來繼續從事科研(我過了四年才厭倦大學生活,而兩年就厭倦了工作狀態,所以我覺得我對學校的熱愛是對工作的兩倍)。研究生階段為我學術生涯打下了基礎,而我卻迷上了今天所謂的“大數據”(當時還沒有這種叫法),我意識到在工業界更容易獲得所需要的資源,因此放棄了高校里的職位。我感到幸運的是每個階段都有優秀的合作伙伴和新的挑戰。
問:你在Google具體做什么?
Peter Norvig:在Google最棒的事情之一就是總有新鮮事;你不會陷入例行公事之中。在快節奏的世界中每周都是如此,當我角色改變之后,每年更是如此。我管理的人員從兩人變成了兩百人,這意味著我有時候能深入到所參與項目的技術細節中,有時候因為管理的團隊太大,只能提一些高層次的籠統看法,并且我相信我的團隊正在做的事情是正確的。在那些項目里,我扮演的角色更多的是溝通者和媒介——試圖解釋公司的發展方向,一個項目具體如何展開,將項目團隊介紹給合適的合作伙伴、制造商和消費者,讓團隊制定出如何實現目標的細節。我在Google不寫代碼,但是如果我有一個想法,我可以使用內部工具寫代碼進行實驗,看看這個想法是否值得嘗試。我同樣會進行代碼審查,這樣我就可以了解團隊生產的代碼,而且這也必須有人去做。
還有很多的會議、郵件、文檔要處理。與其他我工作過的公司相比,Google的官僚主義更少,但有時候是不可避免的。我也會花一些時間參加會議、去大學演講、與客戶交流,以及參與Quora問答。
問:在加入Google之前,你曾擔任美國宇航局(NASA)計算科學部門的主要負責人,在美國宇航局的工作與Google的工作有何不同?有哪些文化的差異?
Peter Norvig:美國宇航局與Google有很多共同之處:它們都有一群優秀敬業并且充滿激情的員工,這些人相信它們的工作使命。而且兩者都在推動各自技術的上限。因此,他們在特定項目中的文化往往是相似的。
同時也存在一些差異。美國宇航局的Gene Kranz曾說過一句名言:“失敗不是種選擇(Failure is not an option)。”美國宇航局經常會有幾億美元的使命任務,任何一個錯誤都有可能毀滅一切。因此,需要極其小心。Google的項目范圍往往更接近Adam Savage的想法(與Jeff Dean相互呼應)“失敗自古至今就是一種選擇(Failure is always an option)”。Google相信,單臺計算機可能會發生故障,而設計網絡系統可以從故障中恢復。在Google,有時我們可以在用戶看到錯誤之前進行恢復糾正,而有時當一個錯誤曝光后,我們可以在簡短的時間內糾正它,同時向受到影響的用戶致歉,而這在美國宇航局是很少見的。
一方面是因為失敗的預期成本存在差異,另一方面是由于空間硬件的成本巨大(參見我在那做的東西),再者就是政府與私人機構的差異,基于這一優勢,Google更容易啟動新項目,并在已有的項目中迅速推動新項目的進展。
問:你是如何權衡新功能的開發與舊功能的維護呢?
Peter Norvig:盡你所能將任務做得最好,并且不斷改進,這樣就會得到提高。
我曾一次次地發現:團隊的新員工說“我們為什么不使用X?”,一位老員工回答說:“我們三年前就試過了X,結果證明它并不管用”。此時的難題是:你是否接受那位老前輩的回答?或者說,現在的情況已經改變了,是時候重新審視X了?也許我們有新的數據,或者新的技術,又或者新員工將采取不同的方法,或者說世界改變了,X將會比以往工作得更好。我無法告訴你該問題的答案,你必須權衡所有證據,并與其他類似問題進行比較。
程序員提升之道
問:《人工智能:一種現代方法》還會有新的版本嗎?
Peter Norvig:是的,我正在為此努力。但至少還需要一年的時間。
問:我是一名研究生,我的人工智能課程使用《人工智能:一種現代方法》作為參考教材,我如何才能為人工智能編程項目做貢獻?
Peter Norvig:現在正是時候:我正在為《人工智能:一種現代方法》這本書的下一個版本的配套代碼工作,在https://github.com/aimacode上,你可以找到Java、Python和Java子項目,我們一直在尋找好的貢獻者。除了提供書中所有算法的代碼實現,我們還希望提供tutorial材料和練習。此外,GitHub上也還有其他好的人工智能項目,都希望有鐵桿貢獻者。
問:有沒有像可汗學院(Khan Academy)和Udacity一樣的在線資源,可以讓人們在不到“十年”就精通一門學科呢?
Peter Norvig:精通可能需要十年,或者是10000個小時,這種時間會因任務、個體以及訓練方法的不同而有所差異。但真正的精通并非易事。可汗學院和Udacity主要是提供了技術培訓,讓你不斷努力地學習直到你真正地掌握它。在傳統的學校教學當中,如果你在考試中獲得的成績是“C”,你就不會再去花更多的時間去學習并掌握它,你會繼而專注于下一個學科,因為班集里每個人都是這樣做的。在線資源不是萬能的,精通它需要加倍努力地學習,而學習需要動力,動力則可以通過人與人之間的聯系逐步提升,這在網上是很難學到的。因此,在一個領域,走上正軌,我們需要在社交、動機方面做更多的工作,我們需要對個人需求有針對性地做更多的定制培訓,同時我們還需要做更多使實踐審慎和有效的工作。我認為,在線資源主要的最終結果不是縮短精通的時長,而是增加更多學生實現精通的機會。
問:如果請你再次教授《計算機程序設計》(Udacity)這門課程,會做哪些改變呢?
Peter Norvig:我認為這門課程很好,反饋(不管是數量還是質量)大多都是好的。就個人而言,我希望有更多的實例程序和技術。我想修正之前我們犯下的一些錯誤(主要是因為課程進展太快,沒有太多的時間去測試所有的東西)。我希望系統能夠更加互動:讓學生獲得更多的反饋信息,不僅僅是“你的程序不正確”,同時可以讓學生看到下一件要做的事情,讓他們知道到目前為止已經做了什么。我認為對于學生而言,正則表達式和語言這部分進展速度過快了;另外,我還想添加更多的材料,讓學生加快學習速度,同時給他們更多的機會去實踐新想法。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%