【人工智慧】想要入坑機器學習?這是MIT在讀博士的AI心得
作者:Tom Silver 機器之心編譯
隨著人工智慧技術的火熱,越來越多的年輕學者正準備投身其中,開啟自己的研究之路。和所有其他學科一樣,人工智慧領域的新人總會遇到各種各樣的難題,其中不僅有研究上的,也有生活方面的。MIT EECS 在讀博士、前 Vicarious AI 員工 Tom Silver 近日的一篇文章或許對你有所幫助。
我的一個朋友最近正要開始人工智慧的研究,他問及我在 AI 領域近兩年的研究中有哪些經驗教訓。本文就將介紹這兩年來我所學到的經驗。其內容涵蓋日常生活到 AI 領域中的一些小技巧,希望這可以給你帶來一些啟發。
開始
找到一個你感覺合適的人詢問「傻問題」
最初,我非常害怕自己的同事,羞於向人提問,因為這可能會使我看起來非常缺乏基礎知識。我花了好幾個月才適應了環境,開始向同事提問,但一開始我的問題仍然非常謹慎。不過現在,我已有三四個關係較好的人了,我真希望當時能早點找到他們!我曾經淹沒在谷歌搜尋的條目中。現在,當我遇到一個問題後會直接詢問他人,而不是自己想辦法,最終陷入困惑。
在不同的地方尋找研究靈感
決定做哪些工作是研究過程中最困難的一部分。對此,研究人員已經存在一些一般性的策略:
-
與不同領域的研究者交談。問問他們對於哪些問題感興趣,並試圖用計算機專業的語言重述這些問題。詢問他們是否有想要進行分析的資料集,哪些現有技術是解決問題的瓶頸。機器學習中很多最具影響力的工作都是電腦科學與生物/化學/物理學、社會科學或者純數學之間的碰撞。例如 Matthew Johnson 等人在 NIPS 2016 的論文《Composing graphical models with neural networks for structured representations and fast inference》是受到一個小鼠行為資料集啟發的結果;Justin Gilmer 等人在 ICML 2017 上的論文《Neural Message Passing for Quantum Chemistry》應用於量子化學。
-
編寫一個簡單的基線來獲得對問題的感受。例如,嘗試編寫一個有關控制倒立擺的詳細校準程式碼(https://gym.openai.com/envs/Pendulum-v0/),或者試著看看能不能在自然語言資料集上推送一個詞袋模型。我在編寫基線時經常會遇到無法預料的情況——我的想法或程式碼裡都有可能出現錯誤。在基線執行時,我通常會對問題有更深的理解,併產生出很多新的想法。
-
擴充套件你喜歡的論文的實驗部分。仔細閱讀方法與結果,嘗試找到問題的關鍵。首先嚐試最簡單的擴充套件,問問自己:論文中的方法是否適用,思考一下文中沒有討論的基線方法,以及它們可能會失敗的原因。
投資視覺化工具和技能
在編寫研究程式碼時我採用的策略是從建立視覺化指令碼入手。在編寫完其餘程式碼後,我會執行視覺化指令碼,以快速驗證程式碼是否與我的心智模型匹配。更重要的是,良好的視覺化經常會使我想法或程式碼中的 bug 更加明顯、明瞭。這裡還有一些自我激勵的話要說:當我完成這個程式碼時,我會做一份漂亮的資料或視訊給大家看!
為手頭的問題尋找合適的視覺化方法可能非常棘手。如果要迭代優化模型(例如深度學習),從繪製損失函式曲線著手會比較好。此外還有許多用於視覺化和解釋神經網路(特別是卷積神經網路)學得權重的技術,例如導向反向傳播。在強化學習和規劃中,智慧體在其環境中的行為是顯而易見的,無論是雅達利遊戲、機器人任務還是簡單的 grid world(如 OpenAI Gym 中的環境)。根據設定,還可以視覺化價值函式及其在訓練過程中的變化(如下所示),或者視覺化探索狀態樹。在處理圖形模型過程中,當一維或二維變數在推斷過程中發生變化時,對其分佈進行視覺化可以獲得豐富的資訊(如下所示)。估計每次視覺化分析時必須在頭腦中儲存的資訊量可以幫助檢測視覺化技術的有效性。如果視覺化技術非常糟糕,你需要詳盡地呼叫你編寫的程式碼來生成它;反之,一個良好的視覺化技術可以帶來一個明顯的結論。
Tensorboard 是視覺化 TensorFlow 深度學習模型的常用 GUI。
隨著資料的積累繪製分佈圖可以大大降低 debug 圖形模型的難度(來自 Wikimedia)。
用 Q-learning 學習的價值函式可以在它所表示的 grid world 上視覺化(作者:Andy Zeng)。
確定研究人員和論文的基本動機
在相同的會議上發表文章、使用相同的技術術語、自稱研究領域是人工智慧的研究人員可能有截然相反的研究動機。一些人甚至建議為這個領域取不同的名字,以澄清問題(就像 Michael Jordan 在最近一篇優秀的部落格文章中提到的那樣)。他們的動機至少可分為三類:「數學」、「工程」和「認知」。
-
「數學」動機:智慧系統有何基本屬性和侷限性?
-
「工程」動機:如何開發能夠更好地解決實際問題的智慧系統?
-
「認知」動機:怎樣才能模仿人類和其他動物的自然智慧?
這些動機可以和諧共存,許多人工智慧領域的有趣論文都是從多個角度出發。此外,單個研究人員的研究動機往往並不單一,這有助於實現人工智慧領域的聚合。
然而,動機也可能並不一致。我有一些朋友和同事,他們有明顯的「工程」傾向,還有一些主要對「生物學」感興趣。一篇論文表明,現有技術的巧妙結合足以在基準上超越現有技術水平,這將激起工程師們的興趣,但認知科學家可能對此不感興趣,甚至嗤之以鼻。但如果一篇論文闡釋了生物可解釋性(biological plausibility)或認知聯絡,這篇論文收到的反響可能截然相反,即使其結論只是理論性的或結果非常不起眼。
優秀的論文和研究人員在一開始就會說明他們的動機,但根本動機往往藏地很深。我發現在動機不明顯的情況下,對論文進行各個擊破將會很有幫助。
從科研社群中汲取營養
找論文
AI 領域的論文可以在 arXiv 上找到和釋出。現在的論文數量非常令人振奮。社群中的許多人降低了從噪聲中分辨出訊號的難度。Andrej Karpathy 開發了 arXiv sanity preserver,幫助分類、搜尋和過濾特徵。Miles Brundage 每晚都在推特上釋出自己整理的 arXiv 論文列表。很多推特使用者常常分享有趣的參考文章,我推薦大家在推特上關注自己喜歡的研究者。如果你喜歡用 Reddit,那麼 r/MachineLearning(https://www.reddit.com/r/MachineLearning/)非常棒,不過文章更適合機器學習從業者而不是學界研究者。Jack Clark 釋出每週社群 newsletter「Import AI (https://jack-clark.net/)」,Denny Britz 釋出「The Wild Week in AI (https://www.getrevue.co/profile/wildml)」。
檢視會議論文集也很值得。三大會議是 NIPS、ICML、ICLR。其他會議還包括 AAAI、IJCAI、UAI。每個分支學科也有自己的會議。計算機視覺方面有 CVPR、ECCV、ICCV;自然語言方面,有 ACL、EMNLP、NAACL;機器人方面,有 CoRL(學習)、ICAPS(規劃,包括但不限於機器人)、ICRA、IROS、RSS;對於更理論性的研究,有 AISTATS、COLT、KDD。會議是目前論文發表的主要渠道,但是也有一些期刊。JAIR 和 JMLR 是該領域最厲害的兩種期刊。偶爾一些論文也會出現在科學期刊上,如 Nature 和 Science。
尋找舊的論文同樣重要,不過通常更難。那些「經典」論文通常出現在參考文獻中,或者研究生課程的閱讀書單。發現舊論文的另一種方式是從該領域的資深教授開始,尋找他們的早期作品,即他們的研究路徑。同樣也可以向這些教授傳送郵件詢問額外的參考(即使他們太忙沒有回覆也不要介意)。尋找不那麼有名或被忽視的舊論文的一種持續方式是在 Google scholar 中搜索關鍵詞。
應該花費多長時間閱讀論文?
關於閱讀論文應該用的時間我聽到過兩種常見建議。一,剛開始的時候,閱讀所有論文!人們通常說研究生的第一學期或第一年應該只閱讀論文。第二,在最初的上升期之後,不要花費太多時間閱讀論文!原因在於如果研究者不被之前的方法左右,更有可能創造性地提出和解決問題。
我個人同意第一條建議,不同意第二條。我認為一個人應該儘可能多地閱讀論文。「如果我不熟悉別人嘗試過的方法,那我就能更好地想出新穎的更好方法。」——這種想法似乎不太可能,且傲慢。是的,新視角可能是一把鑰匙,業餘者解決長期挑戰是因為他們超出常規的想法。但是職業研究者不能完全依賴運氣來探索未被考慮過的解決方案。我們的大部分時間都用來緩慢且有方法地逐步解決問題。閱讀相關論文是找出我們所處位置和下一步嘗試方向的更高效方式。
關於儘可能多地閱讀論文,有一個重要的注意事項:消化論文內容和閱讀論文一樣重要。用一天時間學習幾篇論文、認真做筆記、認真思考每一篇的內容和思路,比不斷閱讀論文要好一些。儘可能多地閱讀論文。
對話 >> 視訊 > 論文 > 會議演講
論文絕對是瞭解陌生研究思路的最易獲取的資源。但是最高效的路徑是什麼呢?不同人的答案或許也不同。我認為,對話(和已經理解該思路的人對話)是目前最快、最有效的路徑。如果這種方法不可行,那麼相關視訊也會提供很好的見解,比如論文作者受邀進行演講。當演講者面對的是現場觀眾時,他們可能更偏重清晰性而不是準確度。而在論文寫作中,這種偏重是相反的,字數統計是關鍵,背景解釋可能被當作作者不熟悉該領域的證據。最後,簡短的會議演講通常更正式,而不是合適的教育機會。當然,演講結束後與演講者進行對話交流是非常有價值的。
小心炒作
成功的人工智慧研究總會引起公眾的關注,讓更多的人進入這一領域,從而引出更多成功的 AI 研究。這一正迴圈在大部分情況下都是適用的,但其也有一個副作用就是炒作效應。新聞編輯總是希望獲得更多點選率,科技公司則希望獲得投資者的青睞,並多多招募新人,而研究者們往往會追求高引用量和更高質量的發表。在看到一篇文章或論文的標題時,請務必注意這些問題。
在 NIPS 2017 的一個論文討論活動中,數百名聽眾目睹了一位有名望的教授拿著麥克風(「我謹代表炒作警察」)勸告作者不要把單詞「imagination」用在論文標題中。我對於這種公眾對抗總是有著複雜的感受,而且我還恰好喜歡這篇論文。但這並不意味著我無法理解這位教授的挫敗感。人工智慧研究中最常見,最令人厭惡的宣傳表現之一,就是用新術語重新命名舊概念。所以,小心那些流行語——主要根據實驗及其結果來判斷一篇論文。
開始科研馬拉松
樹立可衡量的進展目標
之前搜尋研究專案時,我花費了大量時間進行頭腦風暴。那時對我來說,頭腦風暴就是把腦袋擱在桌子上,希望一些模糊的直覺可以變成具體的見解。結束了一天的「頭腦風暴」,我常常感覺疲憊、灰心喪氣。這是科研嗎?我很疑惑。
當然,沒有導向科研進展的良方,在黑暗中瞎撞是(大部分)進展的一部分。但是,現在我發現樹立一個可衡量的目標,然後計劃工作,更加容易且易於實現。如果我不知道接下來要做什麼,那麼目標可以是:寫下一個模糊的想法,但要儘可能詳細;如果在寫的過程中,覺得這個想法不好,那就寫出排除該想法的理由(而不是完全廢除這個想法,這樣就失去了對進展的衡量)。在沒有任何想法的時候,我們可以用讀論文或與同事交流的方式取得進展。一天結束時,我的工作有了一些實實在在的東西。即使這些想法永遠不會用到,但是我的鬥志得到提升,也不再擔心以後會在相同的想法上浪費時間。
學會判斷死衚衕,並退回來
強大的研究者花費更多時間在好的想法上,因為他們在糟糕想法上所用的時間較少。能夠識別好想法和壞想法似乎很大程度上是經驗問題。然而,任何水平的研究者都會經常遇到下面的決策問題。我的研究思路有缺陷或無法產生結論,我應該嘗試 A)繼續挽救或支援這個思路,還是 B)完全拋棄這個思路呢?我個人非常後悔在本應該做 B)時卻把時間浪費在 A)上。尤其是之前,我曾多次陷在死衚衕中,而且時間很長。我之所以不願意離開很大程度上是由於沉沒成本誤區:如果我退出這個「死衚衕」,那我已經花費的時間不就白白浪費了嗎?
現在當我離開研究死衚衕時還是會感到一些失望。不過我現在嘗試使自己意識到後退也是一種進步。成本花費得值,不算沉沒。如果我今天沒有探索死衚衕,那我可能明天還會遇到。死衚衕並不是終點,它們是科研生活的一部分。希望我能堅持這種想法,如果不能,還有費曼的名言呢:我們嘗試儘快證明自己是錯誤的,只有這樣我們才能進步。(We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.)
寫!
我曾經偶然諮詢過一位傑出的 AI 研究者早期職業生涯忠告。他的建議非常簡單:寫!寫部落格和論文,以及更重要的,寫下一天當中自己的想法。我開始注意到積極地寫下想法與只是想想帶來的明顯差別。
身心健康是科研的先決條件
有一種錯誤的觀點認為科研工作者都是廢寢忘食,一心追尋科學發現。我之前以此為基準,常常為無法做到而感到內疚。現在我知道鍛鍊和精神放鬆是投資,而不是干擾。如果我每天睡 8 小時,工作 4 小時,我的效率比睡 4 小時、工作 8 小時要高得多,也就是說沒有造成不好的影響。
在解決一個困難的問題時中途停止是非常困難的。我仍然會一直研究一個問題,即使已經非常累了,即使沒有進展也不休息。當停下來深呼吸時,我會非常高興。我希望在科研生涯的下一個階段能夠繼續內化這件事。
原文連結:http://web.mit.edu/tslvr/www/lessons_two_years.html
洗白“黑科技”深度學習
[摘要]
最近幾年,深度學習備受關注。在2016年的每一項人工智慧成就背後,幾乎都能看到深度學習的影子。資料的獲取、儲存、計算能力的增強,以及演算法的進步等因素合力推動了深度學習技術的崛起。深度學習目前的成果大多來自學術研究,然而,在不遠的將來,以深度學習驅動的人工智慧技術,將推動企業軟體開發產生巨大的變革。
洗白“黑科技”深度學習
2016年3月,由DeepMind研發的AlphaGo以4:1的戰績完勝世界圍棋冠軍李世乭,拉開人工智慧瘋狂席捲IT圈的序幕。5月,Tesla在開啟Autopilot輔助駕駛模式後出現首例致死事故,將人工智慧推上了風口浪尖。霍金、比爾蓋茨、埃隆馬斯克等科技大咖相繼發言,討論人工智慧是否會對人類未來發展不利,OpenAI應運而生。10月,HBO電視劇《西部世界》的上映,再一次引爆大眾對於人工智慧的關注。由於媒體的誇張宣傳,人們甚至覺得《終結者》中的世界就要到來。
伴隨著這一波人工智慧浪潮崛起的,是一種被稱為“深度學習”的技術。不論是AlphaGo、自動駕駛,抑或是其他近期的人工智慧突破,我們都能在其背後看到深度學習的影子。深度學習就像是人類開啟的潘多拉盒子,放出了黑科技,席捲整個科技行業。
從Gartner2016年新技術發展曲線報告中可以看出,和人工智慧相關的技術,要麼處於泡沫期的頂峰,要麼處於正在走向泡沫期的路上。為什麼人工智慧會突然爆發?它會不會只是媒體吹出來的一個泡沫?作為人工智慧再次興起的核心技術突破,深度學習到底是什麼“黑科技”?
從資訊時代到智慧時代
近20年間,網際網路經歷了一場“大躍進”。根據IDC做的統計:在2006年,全世界創造的資料量約為161EB,預計每18個月這個數字會翻一番,在2010年達到988EB(1024GB為1TB,1024TB為1PB,1024PB為1EB,1024EB為1ZB)。而事實上,根據IDC後來的報告,2010年達到的數字是1227EB。最近的一次IDC網際網路報告是在2014年,其中提到2013年全世界產生的資料是4.4ZB,到2020年,這一數字將達到44ZB。
物聯網的發展正在加速這一過程。2013年,全世界接入網際網路的裝置將近200億,到2020年,這一數字將達到300億。而全世界所有的“物體”總數,大概是2000億。這些裝置通過其內嵌的感測器監控並收集資料,並上報到雲端計算中心。
雲端計算、大資料和物聯網的窘境
我們正處於“數字化一切”的時代。人們的所有行為,都將以某種數字化手段轉換成資料並儲存下來。每到新年,各大網站、App就會給使用者推送上一年的回顧報告,比如支付寶會告訴使用者在過去一年裡花了多少錢、在淘寶上買了多少東西、去什麼地方吃過飯、花費金額超過了百分之多少的小夥伴;航旅縱橫會告訴使用者去年做了多少次飛機、總飛行里程是多少、去的最多的城市是哪裡;同樣的,最後讓使用者知道他的行程超過了多少小夥伴。這些報告看起來非常酷炫,又冠以“大資料”之名,讓使用者以為是多麼了不起的技術。然而,我們實際上在只是做一件事:數(shǔ)數(shù)。
實際上,企業對於資料的使用和分析,並不比我們每年收到的年度報告更復雜。已經有30多年曆史的商業智慧(Business Intelligence),看起來非常酷炫,其本質依然是數數,並把數出來的結果畫成圖給管理者看。只是在不同的行業、場景下,同樣的數字和圖表會有不同的名字。即使是最近幾年炙手可熱的大資料處理技術,也不過是可以數更多的數,並且數的更快一些而已。
比如我們每天都在使用的搜尋引擎。在自然語言處理領域,有一種非常流行的演算法模型,叫做詞袋模型(Bag of Words Model),即把一段文字看成一袋水果,這個模型就是要算出這袋水果裡,有幾個蘋果、幾個香蕉和幾個梨。搜尋引擎會把這些數字記下來,如果你想要蘋果,它就會把有蘋果的這些袋子給你。
當我們在網上買東西或是看電影時,網站會推薦一些可能符合我們偏好的商品或是電影,這個推薦有時候還挺準。事實上,這背後的演算法,是在數你喜歡的電影和其他人喜歡的電影有多少個是一樣的,如果你們同時喜歡的電影超過一定個數,就把其他人喜歡、但你還沒看過的電影推薦給你。
搜尋引擎和推薦系統在實際生產環境中還要做很多額外的工作,但是從本質上來說,它們都是在數數。那麼,數數有什麼問題麼? 有。
數字的發明,讓我們的祖先可以用簡便的記法記錄下物體的個數。比如有一個放牛娃,家裡最初只有3頭牛,他可以記住每一頭牛的樣子,每天回到家,掃一眼牛棚,就知道家裡的牛丟沒丟。後來,因為家裡經營的好,放牛娃的牛有100頭之多,隨之而來的是無法記清每頭牛的煩惱。如果沒有發明數字,他可能要把每一隻牛照著模樣刻在石壁上,每天拉著一頭頭的牛到石壁邊去對照,看有沒有丟牛。當有了數字,放牛娃只需要記下“100”這個數字,再畫一頭牛就夠了,以後每天數一下牛群裡面牛的數量,再看看石壁上的數字是否一樣。
數數,讓放牛娃的工作變得簡單,他不用把每一頭牛的樣子都刻在石壁上,減輕了工作量。可是這種辦法並非萬無一失,有一天,附近一個遊手好閒的小混混從別處找來一頭病牛,混到了放牛娃的牛群之中,同時又牽走了一頭壯牛。放牛娃在一天結束、清點自己的牛群時,發現還是100頭牛,不多不少,就心滿意足的回家睡覺了。然而他卻不知道,他的一頭壯牛被小混混用病牛換走了。
對於主要以數數方式來使用資料的企業,同樣面臨著無法關注資料細節的問題。當資料量比較小的時候,可以通過人工查閱資料。而到了大資料時代,幾百TB甚至上PB的資料在分析師或者老闆的報告中,就只是幾個數字結論而已。在數數的過程中,資料中存在的資訊也隨之被丟棄,留下的那幾個數字所能代表的資訊價值,不抵其真實價值之萬一。過去十年,許多公司花了大價錢,用上了物聯網和雲端計算,收集了大量的資料,但是到頭來卻發現得到的收益並沒有想象中那麼多。
深度學習的困境
我們所知的深度學習,本質上應該叫做“基於深度神經網路的機器學習”。為什麼用了”深度學習”這個名字,而不是深度神經網路呢?其中一個原因是,“神經網路”這個詞是一個禁忌。
神經網路演算法的提出可以追溯到20世紀40年代。這一演算法起源於生物學中對於動物大腦神經元的研究,因此早期也被稱為人工神經網路(Artificial Neural Network)。最初的神經網路是邏輯電路搭建,到了60年代,由於計算能力不足,無法構建大規模神經網路,而小規模神經網路的表現又差強人意。隨著其他機器學習方法的提出,很多科研人員開始轉向其他方向,人工神經網路的研究陷入了停滯。
典型神經元的結構
20世紀80年代,隨著通用計算機的出現,人工神經網路的研究經歷了一波復甦。在這個階段,反向傳播(Back Propagation)演算法逐漸成熟。直到今天,反向傳播演算法都是訓練神經網路的最主要方法。然而,依然受限於當時的硬體條件,神經網路的規模依然不大。同時,以支援向量機為代表的基於核方法的機器學習技術,表現出了不俗的能力,因此,大量科研人員再一次放棄了神經網路。
然而並不是所有的科學家都放棄了神經網路。在那些留守的科學家中,有一位剛剛拿到人工智慧學位不久的年輕人,他曾在劍橋大學國王學院拿到實驗物理學的學士學位,因為對認知科學抱有濃厚的興趣,因此選擇專攻人工智慧。他堅信“既然大腦能夠工作,神經網路演算法也一定能工作。大腦不可能是被程式設計出來的。”當他的研究成果並不如預期時,他總是對質疑他的人迴應:“再給我6個月,到時候我會證明它是可以工作的。”當幾個6個月過去,神經網路的效果依然不好,他會說:“再給我5年,一定能行。”又是好幾個5年過去,神經網路真的成了。這個人就是Geoffrey Hinton,深度學習之父。
神經網路在最初的幾十年內都沒有表現出過人的效能,主要面臨著兩個困難。首先是計算效能不足。實際上,在90年代,Hinton以及他的學生就已經在試驗和後來深度神經網路類似的結構,其中就有大名鼎鼎的Yann LeCunn,他所提出的神經網路結構就是現在的“LeNet”。但是,增加神經網路的深度,就會讓神經網路的訓練速度變慢。在那個記憶體不過幾十MB,GPU還沒有出現的年代,要訓練一個小規模的深度神經網路模型,需要花上數週甚至數月。
其次是訓練資料不夠多。在機器學習領域流傳著一個傳說,叫做“維度詛咒(Curse of Dimensionality)”,隨著特徵維度的增加,演算法的搜尋空間急劇變大,要在這樣的特徵空間中尋找適合的模型,需要大量的訓練資料。神經網路要解決的問題,通常具有成千上萬維的特徵,我們假設有1000維特徵,每一維特徵有100個候選值,那麼這個特徵空間就是100的1000次方,可以想象,要在如此大的特徵中尋找一個模型,需要多少資料,而這個特徵空間規模不過是深度學習問題中比較小的。幸好我們所在的這個世界,可以通過一個非常有用的先驗假設進行簡化:我們這個世界的事物都是通過更小的事物組合而成的。我們知道,所有的物體都是由分子構成,分子由原子構成,原子由質子、中子和電子構成,等等。不僅實際的物體滿足這一先驗假設,抽象的概念也一樣如此。因此深度神經網路利用了這一假設,通過將網路層數加深,每一層神經元都是前面一層神經元輸出的組合,通過這樣的假設,將整個搜尋空間大大減小。然而,訓練深度神經網路依然需要大量的資料,才能得到一個比較好的結果。
深度神經網路構建層級化特徵
取深度學習之長,補傳統軟體之短
來到21世紀,正如我們前面所說,在21世紀的十幾年間,我們的資料量和計算能力都增長了不少,這為神經網路證明其能力提供了條件。事實上,在Hinton的帶領下,神經網路在2000年之後逐漸開始在一些比較小眾的領域獲得成功。而真正對學術界產生震動的,是2012年,Hinton實驗室的學生Alex Krizhevsky用基於深度神經網路的方法,在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)影象識別挑戰賽中一戰成名,其網路結構也被人們稱為AlexNet。在那之前,影象識別領域已經被基於支援向量機的演算法霸佔多年,而AlexNet不僅打敗支援向量機,而且將錯誤率降低了將近一半。自此之後,影象識別演算法的冠軍就一直是深度學習演算法。
基於深度學習的演算法讓影象識別精度在過去幾年大幅度提升
除了在影象識別領域獲得巨大成功,在短短的幾年之內,在各種場景下,基於深度神經網路的演算法都橫掃其他機器學習演算法。包括語音識別、自然語言處理、搜尋引擎、甚至自動控制系統。DeepMind的Alex Graves團隊在2014年的一篇論文中提出的神經圖靈機(Neural Turing Machine)結構,以及後來在2016年提出的DNC(Deep Neural Computer)結構,甚至可以成功學習簡單的演算法,這不禁讓我開始遐想有一天,計算機可以自己給自己程式設計。
深度學習給企業帶來的影響
深度學習的端到端架構,降低了企業引入深度學習的成本
相比其他經典的機器學習演算法來說,深度學習需要人工干預的比例小很多。比如,在經典機器學習中,特徵工程佔用了科學家們開發演算法的大部分精力,對於某些問題,比如影象識別、語音識別,科學家們花了幾十年時間來尋找效能更好的特徵。深度學習改變了這一情況。深度學習接收原始資料,在神經網路的訓練過程中,尋找最適合的特徵。事實證明,機器自己找到的特徵,比人類科學家用幾十年找到的特徵效能更好。正是由於深度學習的這一特點,深度學習的一個明顯趨勢,是端到端的解決問題。
比如下圖所示的語音識別。經典語音識別需要對原始資料提取特徵(比如梅爾倒譜系數),將提取到的特徵建立時間序列模型(比如隱式馬爾科夫模型),得到聲學模型,然後根據發聲詞典,將輸入訊號對映為一些音節,最後,根據預先定義好的語言模型,將音節轉換為有意義的文字。這其中,特徵提取、時間序列建模、發聲詞典等都需要人工預先定義好,對於不同的語種,比如中文和英文,還要使用不同的模型。
端到端的深度學習越來越流行
在深度學習流行起來的初期,語音識別流程中的特徵提取以及時間序列建模等,都用深度神經網來替代了。到了最近幾年,科學家發現,對於語音識別這樣的問題,甚至流水線都是多餘的,直接將原始資料接入到神經網路中,就能輸出我們期望的文字,這樣的結構要比人工設計流程得到的結果更好。
這種端到端的深度學習,在其他領域也被驗證是可行的。比如自動駕駛技術,在MIT的自動駕駛專案中,就是用端到端的深度強化學習技術,輸入是路況的所有資訊,輸出就是對汽車的指令,比如加速、剎車、方向盤角度等等。
深度學習的端到端架構,降低了企業引入深度學習的成本。過去,企業要引入機器學習,需要招聘一個科學家團隊,同時還需要一個開發團隊,將科學家所設計的演算法模型翻譯成生產環境程式碼。這樣的開發模式不僅成本高,響應速度也非常慢。而深度學習的端到端架構,對於科學家的要求降低了很多,而且,由於不需要通過特徵工程來尋找特徵,開發週期也大大縮短。對於很多規模不大、但希望朝智慧化演進的企業來說,先嚐試引入深度學習是個不錯的選擇。
智慧時代的產品研發將由演算法驅動
在傳統的軟體開發中,使用者的互動方式是確定的,業務流程也是確定的;當我們嘗試將人工智慧技術融入到產品中,需要面對大量的不確定性。
首先是和使用者的互動方式將發生巨大變化。過去,我們通過按鈕、表單等控制元件來確保使用者是按照產品設計師的思路來使用軟體的。隨著深度學習在影象識別、語音識別、文字識別等方面的快速發展,未來,我們的軟體在使用者的互動過程中,將更多的使用自然語言、語音、手勢、甚至是意識。具備觸屏功能的智慧手機的出現,掀起了一波使用者體驗升級的浪潮,所有應用開發者都在尋找在觸屏應用中更自然的互動方式。而這一次,使用者互動方式的升級將比觸屏帶來的影響更加深遠。Amazon在這方面做出了開創性的嘗試,其智慧音箱Echo在設計之初就特意去掉了螢幕,讓語音變成唯一的互動渠道。Facebook Messenger在釋出了聊天機器人的平臺之後,同樣也給出了設計指導,開發者將以一種全新的方式去思考,軟體應該如何與使用者更好的溝通。
其次是企業的業務決策會越來越多的依賴人工智慧。過去,企業要基於資料進行決策,需要搭建資料倉庫,開發ETL程式,製作報表,等待分析師從各種各樣的報表中找到有價值的資訊,最後做出業務改進的決策。現在,我們有了深度學習這把強大的錘子,可以讓我們對資料有更加深刻的洞察力;同時,實時流式大資料架構讓我們可以更快速地做出反饋。企業如果可以利用好這兩大利器,將釋放出更大的潛力。
演算法驅動的產品架構
IT軟體的運維也將迎來新的革命。軟體系統越來越複雜、規模越來越大,對於運維人員的挑戰就越來越高。在IT行業的早期,運維更多是修復性工作,即發現壞了,立即進行修復。後來,為了減少系統修復帶來的損失,運維工作開始強調預防性,即根據歷史維護記錄,找到系統故障的規律,提前進行修復。然而,據統計,有規律的故障只佔所有故障中的18%。因此,我們需要更好的識別並預測故障的能力,即預測性運維。深度學習在自動學習特徵方面的優勢,註定其在預測性運維領域也會發揮很大的作用。
深度學習不是終結者
深度學習在這幾年越來越流行,尤其是在AlphaGo擊敗人類棋手之後,一些媒體甚至開始營造人工智慧可能會取代人類的緊張氛圍。然而,就目前的研究成果來看,想要發展出科幻電影中具備獨立思考能力、甚至可以和人類談戀愛的人工智慧,還有很長一段距離。且不說情感、人格這類形而上的概念,尚未有嚴格的科學定義,更不用提人工智慧能否具備這些屬性。單從目前人類的工作是否會被人工智慧所替代來看,至少當前的深度學習還有很多侷限性,要想打破侷限,讓深度學習具有更大的作用,還有很多挑戰等待解決。
挑戰1:多功能神經網路
儘管深度學習已經讓神經網路具備了很大的靈活性,然而深度學習目前還只能做到一個神經網路解決一個問題。比如訓練一個神經網路要麼只能識別圖片,要麼只能識別語音,不能同時識別。比如,我們可以給一個神經網路看一張圖片,神經網路可以識別到圖片中是貓還是狗;我們也可以給另一個神經網路聽一段聲音,這個神經網路可以識別出是聲音中是貓還是狗的叫聲;但是,現在還沒有一個神經網路,既能通過視覺識別物體,還能通過聽覺識別物體。儘管藉助多工學習(Multi-task learning)技術,神經網路可以在識別圖片類別的同時,識別輪廓、姿態、陰影、文字等等相關的內容,相比我們人類多才多藝的大腦,現在的深度神經網路可以說是非常低能。
目前如果需要一個應用支援不同的能力,必須組合使用多個神經網路,這不僅對於計算資源是巨大的消耗,不同神經網路之間也難以形成有效的互動,比如圖片中的狗、聲音中的狗和一段文字中出現的狗,在各自的神經網路中都有不同的表示方式。而對於人類來說,這些其實都是同一個概念。
如何讓神經網路能夠同時實現多個目標,目前科學家們也都還沒有答案,不過從人類大腦得到的啟示是,通過某種方式,將負責不同功能的神經網路連線起來,組成更大的神經網路,也許可以解決這個問題。Google在ICLR 2017上的一篇論文,通過一個係數門矩陣將多個子網路連線起來,是在這個方向上的一個有趣嘗試。
挑戰2:終極演算法
Pedro Domingos教授在《The Master Algorithm》一書中回顧了機器學習的5大流派:符號主義、連線主義、進化主義、貝葉斯主義、分析主義。這5類機器學習演算法並沒有絕對的優劣,不同的演算法適用於不同的場景和問題。比如以神經網路為主的連線主義演算法,對於視覺、聽覺這類感知問題,具有更好的效果,但是卻不擅長邏輯推理。而邏輯推理剛好是符號主義演算法所擅長的。書中提出了一種終極演算法,能夠結合這五種主流機器學習,可以適用於更大範圍的問題域。
深度學習正是連線主義發展而來,不過深度學習提供了可擴充套件性非常強的框架,以深度學習為基礎,很有希望將其他幾類機器學習演算法融入進來。OpenAI在進行深度強化學習的實驗過程中發現,使用進化主義的遺傳演算法替代經典的反向傳播(BP)演算法,模型可以更快的收斂,效能也更好;Google基於TensorFlow框架開發的概率程式設計工具庫Edward,證明了概率圖和神經網路可以無縫的結合在一起。
從目前的趨勢看來,終極演算法非常有希望。不過,事情不會總是這麼順利。當年物理學家們希望尋找大統一理論來結合自然界四種基本力,電磁力、強核力、弱核力很快就結合到一個模型中,然而最後引力卻怎麼都找不到結合的辦法。當我們找到終極演算法的時候,通用人工智慧(Artificial General Intelligence)就離我們不遠了。
挑戰3:更少的人工干預
深度學習讓機器學習不再依賴於科學家尋找特徵,但除錯深度神經網路依然需要很多人工的工作,其中最主要的就是調參。這裡所說的調參,不是調節神經網路的每個神經元的引數,而是指除錯超引數。超引數是用來控制神經網路的描述性引數,比如,神經網路的層數、每一層的神經元個數、學習率(Learning Rate)的大小、訓練時間的長短等等。這些引數的微小差異,會給最終模型帶來巨大的效能差異,而這部分工作大多需要靠經驗完成,很難總結出有效的最佳實踐。
然而這一狀況在未來將會有所改善。既然神經網路可以用於學習引數,就應該可以學習超引數。DeepMind提出的Learning to Learn演算法,使用神經網路來學習和調整學習率,可以讓神經網路更快的收斂到理想的精度。正所謂,授人以魚不如授人以漁。
結語
深度學習的火爆,吸引了越來越多的電腦科學家投身到這一領域。如果以目前學術成果的發展速度來預測,也許不超過10年,上述深度學習的挑戰就會被解決。與其杞人憂天的擔心人工智慧會毀滅人類,不如提前佈局,做好準備,迎接智慧時代的到來。智慧時代的IT系統,將是“具備自主性的IT系統,能夠根據人類制定的目標,針對複雜業務變化,做出認為的最優選擇。”如果深度學習的幾大挑戰能夠在幾年之內被解決,將大大加快未來IT系統實現的腳步。
人工智慧的過去、現在和未來
作者: 騰訊 AI Lab 主任張潼
在回答人工智慧達到了什麼程度這個問題之前,需先了解人工智慧的概念是什麼?
人工智慧(Artificial Intelligence,AI)是指計算機像人一樣擁有智慧能力,是一個融合電腦科學、統計學、腦神經學和社會科學的前沿綜合學科,可以代替人類實現識別、認知,分析和決策等多種功能。如當你說一句話時,機器能夠識別成文字,並理解你話的意思,進行分析和對話等。
另外,瞭解一下AI的發展歷史,有哪些關鍵里程碑?
AI 在五六十年代時正式提出,90 年代,國際象棋冠軍卡斯帕羅夫與"深藍" 計算機決戰,"深藍"獲勝,這是人工智慧發展的一個重要里程碑。而 2016 年,Google 的 AlphaGo 贏了韓國棋手李世石,再度引發 AI 熱潮。今年,騰訊推出圍棋軟體"絕藝"大放異彩,這些都代表了特定時期 AI 發展的技術水平。
AI 不斷爆發熱潮,是與基礎設施的進步和科技的更新分不開的,從 70 年代 personal 計算機的興起到 2010 年 GPU、異構計算等硬體設施的發展,都為人工智慧復興奠定了基礎。
同時,網際網路及移動網際網路的發展也帶來了一系列資料能力,使人工智慧能力得以提高。而且,運算能力也從傳統的以 CPU 為主導到以 GPU 為主導,這對 AI 有很大變革。演算法技術的更新助力於人工智慧的興起,最早期的演算法一般是傳統的統計演算法,如 80 年代的神經網路,90 年代的淺層,2000 年左右的 SBM、Boosting、convex 的 methods 等等。隨著資料量增大,計算能力變強,深度學習的影響也越來越大。2011 年之後,深度學習的興起,帶動了現今人工智慧發展的高潮。
其次,AI 有哪些研究領域和分支?
人工智慧研究的領域主要有五層,最底層是基礎設施建設,包含資料和計算能力兩部分,資料越大,人工智慧的能力越強。往上一層為演算法,如卷積神經網路、LSTM 序列學習、Q-Learning、深度學習等演算法,都是機器學習的演算法。第三層為重要的技術方向和問題,如計算機視覺,語音工程,自然語言處理等。還有另外的一些類似決策系統,像 reinforcement learning(編輯注:增強學習),或像一些大資料分析的統計系統,這些都能在機器學習演算法上產生。第四層為具體的技術,如影象識別、語音識別、機器翻譯等等。最頂端為行業的解決方案,如人工智慧在金融、醫療、網際網路、交通和遊戲等上的應用,這是我們所關心它能帶來的價值。
值得一提的是機器學習同深度學習之間還是有所區別的,機器學習是指計算機的演算法能夠像人一樣,從資料中找到資訊,從而學習一些規律。雖然深度學習是機器學習的一種,但深度學習是利用深度的神經網路,將模型處理得更為複雜,從而使模型對資料的理解更加深入。
機器學習有三類,第一類是無監督學習,指的是從資訊出發自動尋找規律,並將其分成各種類別,有時也稱"聚類問題"。第二類是監督學習,監督學習指的是給歷史一個標籤,運用模型預測結果。如有一個水果,我們根據水果的形狀和顏色去判斷到底是香蕉還是蘋果,這就是一個監督學習的例子。最後一類為強化學習,是指可以用來支援人們去做決策和規劃的一個學習方式,它是對人的一些動作、行為產生獎勵的回饋機制,通過這個回饋機制促進學習,這與人類的學習相似,所以強化學習是目前研究的重要方向之一。
再則,AI 有哪些應用場景?
人工智慧的應用場景主要有以下幾個方面:
在計算機視覺上,2000 年左右,人們開始用機器學習,用人工特徵來做比較好的計算機視覺系統。如車牌識別、安防、人臉等技術。而深度學習則逐漸運用機器代替人工來學習特徵,擴大了其應用場景,如無人車、電商等領域。
在語音技術上,2010 年後,深度學習的廣泛應用使語音識別的準確率大幅提升,像 Siri、Voice Search 和 Echo 等,可以實現不同語言間的交流,從語音中說一段話,隨之將其翻譯為另一種文字;再如智慧助手,你可以對手機說一段話,它能幫助你完成一些任務。與影象相比,自然語言更難、更復雜,不僅需要認知,還需要理解。
在自然語言處理上,目前一個比較重大的突破是機器翻譯,這大大提高了原來的機器翻譯水平,舉個例子,Google 的 Translation 系統,是人工智慧的一個標杆性的事件。2010 年左右, IBM 的"Watson"系統在一檔綜藝節目上,和人類冠軍進行自然語言的問答並獲勝,代表了計算機能力的顯著提高。
在決策系統上,決策系統的發展是隨著棋類問題的解決而不斷提升,從 80 年代西洋跳棋開始,到 90 年代的國際象棋對弈,機器的勝利都標誌了科技的進步,決策系統可以在自動化、量化投資等系統上廣泛應用。
在大資料應用上,可以通過你之前看到的文章,理解你所喜歡的內容而進行更精準的推薦;分析各個股票的行情,進行量化交易;分析所有的像客戶的一些喜好而進行精準的營銷等。機器通過一系列的資料進行判別,找出最適合的一些策略而反饋給我們。
最後,說一下AI 的未來是怎麼樣?也就是人工智慧達到什麼程度?
在計算機視覺上,未來的人工智慧應更加注重效果的優化,加強計算機視覺在不同場景、問題上的應用。
在語音場景下,當前的語音識別雖然在特定的場景(安靜的環境)下,已經能夠得到和人類相似的水平。但在噪音情景下仍有挑戰,如原場識別、口語、方言等長尾內容。未來需增強計算能力、提高資料量和提升演算法等來解決這個問題。
在自然語言處理中,機器的優勢在於擁有更多的記憶能力,但卻欠缺語意理解能力,包括對口語不規範的用語識別和認知等。人說話時,是與物理事件學相聯絡的,比如一個人說電腦,人知道這個電腦意味著什麼,或者它是能夠幹些什麼,而在自然語言裡,它僅僅將"電腦"作為一個孤立的詞,不會去產生類似的聯想,自然語言的聯想只是通過在文字上和其他所共現的一些詞的聯想, 並不是物理事件裡的聯想。所以如果要真的解決自然語言的問題,將來需要去建立從文字到物理事件的一個對映,但目前仍沒有很好的解決方法。因此,這是未來著重考慮的一個研究方向。
當下的決策規劃系統存在兩個問題,第一是不通用,即學習知識的不可遷移性,如用一個方法學了下圍棋,不能直接將該方法轉移到下象棋中,第二是大量模擬資料。所以它有兩個目標,一個是演算法的提升,如何解決資料稀少或怎麼自動能夠產生模擬資料的問題,另一個是自適應能力,當資料產生變化的時候,它能夠去適應變化,而不是能力有所下降。所有一系列這些問題,都是下一個五或十年我們希望很快解決的。
未來,我們需要去探討:
(1)創造力,對於創造力目前有一定的方法慢慢研究,從而使機器開始具有人的一些創造力。但它的通用性受限,特別是對物理事件的理解,只有把這些問題解決了,才有可能造出像人一樣的機器人,成為人的意義上的智慧。
(2)學科交叉融合,未來需要探索更多的演算法和交叉科學上等等的一些融合。所以人工智慧在下一個階段既有非常廣闊的應用前景,也有很多挑戰。