如何評價周志華在微博對 AlphaGo 和機器學習技術的評論?
最近有個說法,認為人工智慧技術的進步,例如AlphaGo系列的成功,主要是由計算能力帶來的。這個說法絕對是錯誤的!最重要的進步是由機器學習技術的進展帶來的,計算能力起到了促進作用而不是根本作用。舉個例子: 深藍下國際象棋略超過卡斯帕羅夫,其技術是以專家規則為主機器學習為輔,每秒需評估6億個位置,所以必須使用IBM的專用設備;今天以機器學習為主的國際象棋程序,例如Pocket Fritz 4 實力超過卡斯帕羅夫曾達到的最高等級分,僅需每秒評估2萬個位置,所以在手機上就能運行。即便AlphaGo面對的是複雜得多的圍棋,也僅需每秒評估6萬個位置。從6億減少到2萬,這是機器學習演算法帶來的提高,更不用說計算過程的目標方向已經有了根本的改變
周志華教授的評論基本上沒毛病。我們來分別看一下深度學習爆發(2012)和之後幾年的情況。
2015年,Geoffrey Hinton在劍橋大學的一次講座里總結Back Propagation演算法之前(2012年之前近30年)沒取得成功的原因是4條:
- Our labeled datasets were thousands of times too small.
- Our computers were millions of times too slow.
- We initialized the weights in a stupid way.
- We used the wrong type of non-linearity.
(1)標定數據集不夠大、(2)計算能力不夠當然是重要原因,但是(3)權重初始化問題和(4)用了錯誤的非線性單元在我看來是更致命的。因為(3)(4)問題的存在,哪怕你有無窮的計算資源和數據集,深層網路模型也是訓練不出來的。如果(3)(4)這兩個演算法問題早點解決,神經網路至少在MNIST、CIFAR這些數據集上可以提好幾年翻身。那時像點樣的學校都是有MPI集群的,GPGPU也出現了。當時的情況絕對不是演算法齊備只待算力和數據。
當然,計算能力的跨越增長(和普及)對於試錯是很重要的。更多的研究人員可以參與進來,試驗迭代也加快了,意味著更多的idea能被提出來並被嘗試。
而至於2012年後深度學習的大發展,也就是周志華教授評論的語境(AlphaGo等),硬體的發展明顯更不是決定性因素。
====
上文提到的Geoffrey Hinton劍橋講座可以在https://sms.cam.ac.uk/media/2017973觀看。列出的4點在28:35處。
我想周老師已經把問題說的很清楚了,在AI發展的過程中,要看到演算法帶來的力量,而不能僅僅強調硬體的堆砌。
竊以為,這句話主要是講給媒體人說的。因為做AI方向的研究者,大多不會把這幾年取得的成功完全歸咎於硬體的發展 (當然沒有否定硬體發展帶來的因素 只是不能片面強調)。
我想,大家從接觸計算機專業開始,就開始學演算法了。演算法人對一個演算法的複雜度和效率的苛求是近乎變態的 o(n^2)太高,那就o(nlogn),還太高就尋找o(n)演算法。
作個簡單的例子,快速排序和冒泡排序,兩種不同複雜度的排序演算法,在問題規模n無窮大時的巨大差別還真不是你多幾個cpu就可以彌補。而特定問題下,又有一些排序演算法比快排在效率上更優。。
所以,快不快,是演算法的效率問題。
再舉一個簡單的例子。做計算機視覺都知道的卷積神經網路cnn 也不過是這五年來才但得以流行和應用的演算法。在此之前,計算機視覺還停留在人工提取特徵+svm這類演算法。這樣的演算法,不僅需要大量人工工作,而且準確度上已經被如今主流的densenet秒了幾條街。在2017年的今天,別說svm這種老古董,就連VGG都快失去做baseline的資格了。假如你帶著今天的gpu和cpu穿越回2011年甚至更早,你也肯定沒辦法通過用計算量的堆砌去做到現如今的cv演算法能做的事情。
所以,能不能,是演算法的本質問題。
^
在ai領域的例子,周老師講的很好,deepmind在更複雜的問題找到了一個更簡潔的解,這樣的演算法可以使整體效率帶來很多個數量級的增長。然而,純靠硬體堆砌是絕對做不到的這點的。而且你今天可以堆硬體,明天呢,後天呢?總有一天你的錢不夠用的。你是馬雲的話請當我沒說..
斷章取義不可取啊,周老師也沒否定硬體發展帶來的進步嘛,沒有GPU哪來的深度學習呢?硬體的進步是演算法的基礎,過去三十年確實是硬體的時代,只是這三五年來,摩爾定律也接近極限,硬體上確實沒有什麼飛躍式的發展,開始擠牙膏了,可預見的未來能期待一下的也就只有神經網路處理器和量子計算機。新聞媒體呀,不能總搞大新聞,還是要學習一個。
再說了,你覺得硬體貢獻大或者演算法貢獻大,並不能改變什麼事情嘛。該幹嘛還得幹嘛,做硬體的也加油,做演算法的也要努力呀。
所以說,不僅要看到今天谷歌訓練Alphazero用5000個TPU跑了八小時,興許十年後真的只需要一塊GPU訓練半小時,甚至可以在手機上運行呢?你看周老師提到的app,就可以戰勝二十年前國際象棋的世界冠軍了。人啊,總是要考慮歷史的進程嘛..
今天深度學習這麼火,然而它所基於的神經網路、反向傳播、梯度下降法的理論基礎都是在上世紀80年代就完備了的,至於CNN、RNN、以及它們構造的各種網路結構,只是在這個基礎上的優化,其餘的就是把這些網路應用於具體問題時的系統方法設計了。
從理論基礎的提出到AlexNet第一次展現出DNN的潛力,直到今天深度學習這麼火,中間有近30年的gap,僅僅是大家突然都開竅了嗎?
畢竟深度神經網路的計算需求太大,在10年前這樣的計算量都不敢想,直到近幾年隨著GPU的通用計算能力被發掘,突然發現訓練深度神經網路變成可行的了,而在很多問題上效果又出奇的好——在AlexNet拿下2012 ImageNet圖像分類的冠軍後,深度學習方面的研究就發生了爆炸式的增長。
所以說,深度學習這幾年的發展,是硬體計算能力的提升-&>具體問題性能效果的提升-&>網路結構的提升-&>更廣泛的應用-&>演算法的改進,等各方面相輔相成的,在基礎理論完備的情況下,計算能力就成為了關鍵的門檻,一旦邁過了才有了今天的各種進步。
而硬體的問題,不能說是全部,但對於某些特定問題,那的確是硬門檻。
有很多工作,尤其是偏向理論以及具體細分場景的應用的,的確不需要很高的硬體,有一塊1080Ti往往就足夠了。
但在一些更大、更傳統的問題上,在大家都在做的問題上,那十之八九就是硬體的比拼。
同一個演算法,Google跑一遍要1天,我跑一遍要10年。需要100次迭代嘗試才能找到結果,那麼我需要1000年。
有人說,硬體是爆炸式增長的,等到5年後10年後也許誰都能1天完成。沒錯,如果用現在的硬體跑上10年才能出結果的問題,那麼我還不如先等到10年後的硬體,用一天就能完成。
然而,別人10年前就做出來的結果,你到10年後去復現一遍,這又能說明什麼呢?過了十年各種技術的發展也跟硬體一樣快,那時候早就改用更新的方法了(計算力需求也更大)。
話說回來,也正因為深度學習的基礎理論大都還是30年前的東西,使之成為了現階段深度學習存在的瓶頸之一,也是Hinton老爺子最近反覆強調的,讓大家不要過度依賴反向傳播。
基於梯度求導的反向傳播適用於神經網路這樣處處連續的模型,並且要求整個網路擁有良好的梯度性質,才能成功地優化——這也是為什麼ReLU激活函數、模型參數的初始化、batch normalization、residual connection、dense connection等trick在今天的深度學習里扮演了那麼重要的角色。
之前,我嘗試用VAE的思想,做了個encoder網路和decoder網路,encoder網路對輸入進行編碼,decoder網路對編碼後的數據進行解碼還原。但不同於VAE做的降維,我的encoder嘗試在維度不變的情況下,通過將數據編碼成離散的整數數據並最小化熵實現壓縮,然後用decoder還原。
於是問題就來了,將數據編碼成離散的這個操作的映射,是階梯跳躍式的,梯度為0,這會導致梯度的反向傳播失效,而使encoder網路無法被訓練。
在傳統分類問題中使用的sigmoid、softmax等「軟性」閾值操作在這裡是行不通的。因為一旦你的編碼數據使用soft閾值激活以使梯度能流通,就會導致學習得到的網路把大部分信息都編碼進這些soft的部分,導致最終test時使用硬閾值得到的離散數據無法實現還原。
而且這個任務和Binarized NN這類利用離散weight、activation加速的情況也不大相同。因為BNN僅僅是把量化作為一個引入的誤差雜訊來看待,所以可以在訓練時用連續的映射來近似,以使梯度流通。而在這個問題中,量化是對數據編碼的硬性限制,當網路試圖去最小化rate和distortion的時候,就會自然地學會把大量的信息存放在僅有的連續的部分中,從而得到一個和理想的目標截然不同的最小化loss的結果。
總之在嘗試了諸多方法後我都沒辦法讓連續的神經網路去「理解」離散量化的數據,而離散量化的數據在傳統的計算機科學裡卻是再常見不過的東西了……
我不太清楚有沒有人做過這方面的工作,如果有的話希望能學習一下。
今天的神經網路處理的數據,往往限制於特定的採樣維度(例如圖像分類經常使用的224x224),數據的維度在模型中的變換形式又過於單一(例如stride/pooling按整數倍降維、deconv按整數倍升維),但是這些數據的量化、映射又被限制為連續的。
就如同看到AlphaZero等等各種大公司的論文以後感嘆貧窮限制了我的想像力,這些限制的客觀存在同樣極大地限制了我的想像力。
看到有人在質疑我的這篇回答,那我就繼續補充一些吧。
首先,其實我並沒有真正在回答這個提問的問題,只是看到了這個問題,結合最近所體會到的(包括各種DL方面的新聞以及自己做東西時遇到的問題),發表了一點自己的看法而已。
至於到底是計算能力重要還是演算法重要這種問題,本來就是個陷阱,不論偏向哪一方面總是有無數的反例可以來反駁,試圖在這個問題上爭個高下只是一種愚蠢的行為,一定要回答那隻能用中庸的說法——都很重要。所以我在我的回答中說到了計算能力的問題,也說到了理論、演算法的問題,並沒有說誰更重要,反而它們是相輔相成的。
從歷史的進程來看,今天深度學習的進步的確不是一蹴而就的,是許許多多的小的改進一步步積累之後,最終量變形成質變達成突破。
30年前反向傳播的優化辦法被提出,使得訓練深層神經網路成為了可能。而後LeNet利用CNN實現了手寫字元的識別,RBM的提出,ReLU的引入以及參數初始化方面的研究,這些無疑都成為了構築今天深度學習大廈的基礎。
Hinton、Lecun、Bengio等人在那個神經網路不受待見的年代,堅持在這方面一步步累積起一磚一瓦,他們的毅力和堅持無疑令人敬佩。
而同一時間,計算機快速的發展,GPU從專為遊戲圖形設計到開始支持通用計算編程,也悄然埋下了種子。
演算法設計上的積累,加上對GPU計算能力的應用,最終成為了敲門磚。AlexNet在ImageNet比賽上的大獲成功,一下子讓這30年來的積累都得到了回報,並開啟了新時代的大門。
而這之後的故事大家也都知道了,這五年來機器學習的發展速度可以說遠超以前任何時候,對人工智慧方面的話題,社會、媒體與資本的關注也達到了空前的高度。
所以,與其說是因為理論的提出、演算法的改進、硬體算力的提升,倒不如說,社會的關注度才是最重要的——先是研究者群體這個小社會開始大量湧入這個領域,接著是IT公司,硬體廠商們也開始集中注意力往這方面發展,等到搞出了大新聞,結果就是媒體、全社會、各大資本甚至政府都湧進來,並吹出了所謂的泡沫……
AlexNet的成功得益於演算法技術的積累,得益於對GPU計算力的應用,但他最大的成功在於用一個足夠大、足夠好看的結果,吸引了足夠多的眼球,讓眾人都看到了其中的潛力,讓眾人都開始參與其中的研究,從而大大加速了深度學習的發展——雖然這樣的說法可能很多人看著都不舒服,包括我自己,但這卻是現實——畢竟,在技術發展這個全人類級別的優化問題上,更多的人、更多的資本就等於更高的計算力。
所以說,當一個腦子只能輸出0和1的時候,這人也基本上廢了。
你怎麼著也得給我輸出一個onehot向量吧。把人的頭砍掉,人不能走路,是否說明人走路全靠頭?
把人的腿砍掉,人不能走路,是否說明人走路全靠腿?我覺得這個問題下面一多半的答案都沒搞懂這兩個問題。你只看到每秒評估幾萬個位置,沒看到每評估一步棋三百多個位置就需要跑一次CNN的forward么... CNN參數上百萬,一次forward 的flop數量都是上億級的,評估幾萬個位置不得百億級的flops?
相比之下,deep blue雖然評估上億個path,但是每個評估都是用heuristics 所以單步計算量要小得多。還真不太能這麼直接比較兩者誰運行時的計算量更大。
更不要說訓練AlphaGo Zero時花掉的計算量了。一百多個GPU 訓練72小時每小時3600秒每秒每個GPU幾個Tera(10^12)flops,粗估花了10^20(可以念做1萬億億?)flops把AlphaGo Zero訓練出來,你們還真相信算力不是最主要因素?
評論名人的評論,一定要避免脫離語境,避免斷章取義,一定要了解他在什麼場景下,為什麼說這句話。所以我的評價就是,周老師說的沒毛病。
贊同計算能力決定了人工智慧進步的tx們,難道你們真的以為DeepMind這些年在RL方面的研究基本不值得一提么?Google有那麼多計算力,還收購啥Deepmind?Nvidia難道是人工智慧技術最牛逼的公司?
創新不就是利用已有的技術和基礎設施去解決過去未能解決的問題么?我覺得周老師的邏輯已經說的很清楚了,計算能力是基礎那是一定的,但那只是必要條件而已。片面的強調計算力,而低估最近10幾年裡機器學習領域的進展絕對的錯誤的!
反對現在的最高贊回答! 引用這個回答里的關鍵言論:「從理論基礎的提出到AlexNet第一次展現出DNN的潛力,直到今天深度學習這麼火,中間有近30年的gap,僅僅是大家突然都開竅了嗎?」
沒錯,是突然開竅了! 隨便去查查文獻,2006年Hinton的工作之前,有誰成功訓練出了深層神經網路?? BP、CNN、LSTM早都有,但是沒有Hinton在2006年的臨門一腳,就沒弄出來深層神經網路過。不會有人以為以前的淺層神經網路和今天的深層神經網路是一回事吧?!除非真的是外行。Hinton老爺子對深度學習的奠基性作用,最重要的就是他2006年那臨門一腳!
周志華老師、李飛飛老師他們都在不同的報告裡面,說了計算能力提高是深度學習發展的重要原因之一,這是做 AI 的人謙虛,把 credit 分給別人。結果別人可不謙虛,還真就把自己當神了,以為30年前的神經網路跟現在是一回事,那麼多搞 AI 演算法的都是吃乾飯的,就是靠計算能力提高一下子把 30 年前的神經網路弄成深度學習了。這種認識的人,知道梯度消失是怎麼回事嗎?直接用30年前的神經網路,計算力再強也訓練不出來深層網路, 3層以上梯度早就消失了。
------------------------
補充幾句:周老師在2016年中國計算機大會的報告裡面都明確強調了計算能力對這一波深度學習熱潮的巨大作用,他那個報告網上都能找到視頻。所以周老師絕對不會是認為計算能力不重要的人。看看周老師微博說的:
「機器學習的進步使我們從「不能」到「能」,計算能力的進步使我們從「能」到「更好」。試圖抹殺前者作用,認為一切都是計算能力提高帶來的,是錯誤且危險的」
周老師否定的是「認為一切都是計算能力提高帶來的」
「計算能力決定論」的人,可以回答幾個問題:
- 深度學習這一波的熱潮,是從哪裡開始?都說Hinton是深度學習之父,為什麼不說黃教主是深度學習之父?
- 計算能力一直在上升,如果是計算能力決定的,那麼神經網路/深度學習的發展為什麼一波三折?
- 要看深度學習人工智慧的進展,是到 NIPS/ICML/IJCAI/AAAI,還是到其他什麼會議?
- 如果計算能力決定,演算法不重要,為什麼各大公司都在拚命挖人工智慧演算法的人?今年的NIPS會議註冊爆掉了,提前兩個月停止註冊,公司想贊助NIPS的聯繫晚了人家連贊助都不接受,公司是在用真金白銀站隊吧?
這麼說吧,Alex Krizhevsky當年不僅提出了AlexNet,還寫了cuda-convnet,可以看出,真正厲害的人物根本不會把時間浪費在這種雞與蛋的屁股位置問題里。
一個觀點是不是正確跟他是周志華說的還是Hinton 說的還是張三李四說的沒關係。
說的很對啊。計算能力促進演算法進化,但計算能力不是演算法。
我是不同意這個說法的。機器學習,尤其是深度學習,進步的基礎是算力。巧婦難為無米之炊,有了算力才能談別的。
就拿象棋的例子來說,深藍的算力是11 gflops,而現在的一個cpu就有幾百gflops,一個顯卡有幾千gflops。表面看深藍每秒算6億個位置,比現在每秒兩萬個多,但實際上評價每個位置花費的算力大大提升了。
谷歌訓練alphago用了5000個比gpu更猛的tpu。就算你帶著alphago的全套代碼穿越回20年前,也打敗不了人類。
每一次演算法突破就像浮在海面上的冰山,海面下是幾十年一點一滴的算力積累。大家在為英雄歡呼的時候,也不要忘了廣大挖沙子,煉晶圓,刻晶元,水paper的人的貢獻。畢竟,歷史是由人民群眾書寫的。alphago是只用分析2萬個局面,
傳統方法分析一個局面需要幾百次運算,alphago需要上億次。
這就是為什麼他只分析2萬個局面的原因。
當然,給你一億次計算量,讓你把一個局面分析好,這也是很有用的一件事。原來計算資源少,計算資源用在多分析局面上,但現在計算資源多了,分析質量的意義就上來了。
換言之「對每個局面用一萬倍資源分析,分析萬分之一的局面」這件事,在以前的條件下不合算,但現在條件下非常有意義。
放個圖
槽點難道不是周老師的各種雙標么
位置評估量減少是因為估值函數精確度提升剪枝效率更高
但是估值函數之前靠手寫現在靠DL刷
和基礎演算法效率提升有什麼關係?
贊同。
計算能力進步再快,複雜度足夠高的問題依然是無法解決的(比如NP困難問題)。
演算法的進步則有可能解決很多之前無法解決的問題。
比如圍棋,是一個無窮範圍的搜索(想像一個類似於三劫循環的局面,搜索深度顯然是正無窮的),如果試圖暴力搜索所有的分支,理論上無論硬體如何提高,也是不可能做到的。
但是AlphaGo已經給了我們一個還算不錯的結果,是不是?
不說了,聽周志華老師的吧。
終於找到了這張圖:
iphone8有600gops,評論的同學不要糾結具體數值,看量級即可~ 12年hinton訓練alexnet用了四塊titan,每塊卡3-4Tflops性能。超算剛發布一般都是供給軍方和能源部門,一般的研究機構很難獨享整個超算,所以九十年代根本不可能出現現在深度學習的研究熱度。~~~~~~~~~我是簡陋的分割線~~~~~~~
看一下90年代的超級計算機是什麼性能,就知道為啥到了最近十年深度學習才爆發出來吧… 那會排前幾的超算也就比今天一部高端手機快點有限… 你拿手機給我train一把大模型試試?看了很多回答,真的感覺到不懂又自大的人好多。計算力是肯定需要的,但是如果沒有演算法上的改變和創新,確定能有AlphaGo?確定能在圍棋上打敗人類?誰給你們的自信?請你們做出能打敗人類頂尖選手的星際AI謝謝!
周志華的吃相太難看了。自己是搞理論的,就走到哪裡都不忘了強調理論的重要性,生怕別人忘了深度學習有他這一號。上面都說了,無論是神經網路還是反向求導,都不是這幾年才出現的新技術。2000年的時候怎麼沒見你周志華搞一個正確率百分之九十幾的識別演算法出來呀。沒有GPU,你拿什麼訓練啊。沒有ImageNet的大數據,你拿什麼訓練啊?看人家英偉達和做硬體的初創公司發達了,掙錢出名了,坐不住了吧?你做學者就這麼點兒胸襟氣量,就這麼耐不住不站在鎂光燈下面呀,你算啥科學家呀?
對於周老師這個評價,只能呵呵了。
表面看,周老師的說法沒問題,但是對於科學來說,則不同。
因為對於科學家來說,他面臨的是無數問題無數解決方案。一個問題會否有答案,
一個方案會否有解決方案,知道這兩個結果,比求結果更加艱難。
邏輯上,混亂猴子打字機可以完成世界所有的名著,你會採用這種辦法寫小說嗎?
谷歌TPU硬體的意義就在於你10倍100倍地加快了iteration的速度。這在科學上意義遠大於工程
或者技術上的意義。
現在人工智慧的核心基本上在於硬體+數據+演算法。
谷歌團隊deepmind 的AlphaZero 的效果特別好,一個原因是把數據轉換為拼硬體。
谷歌才有5000TPU,所以它產生數據的速度是一般中等公司的100倍,它的硬體是100倍。
這表明它可以在同樣時間內比他人測試多1萬倍的參數組合。
最近看圍棋遊戲leela 的全球眾籌模式的仿alphaZero,全球幾百個終端幫助它。(這類似一個中等公司的大小了)。但是,谷歌1小時的進步大約等於leela 20天。
也就是說,在谷歌已經指明了道路的情形下,重現A0,至少需要1年多。
谷歌完成現在這個A0,我們可以肯定說,至少是百次的循環吧。也就是說一般公司要有100年才能實現的突破,三個月實現了,這就是硬體的功勞。(真實中,這家公司根本不會花100年去試)
正確的說法就是:
1,人工智慧的飛躍是硬體的升級帶來的結果。
2,但是,這個飛躍的體現是演算法的飛躍。
3,這個原因,是因為有了硬體飛躍,我們才能大幅度地調參,才能有演算法的飛躍。
當然,某一天,我們的DL變成了白盒子,我們不再是黑暗中摸索,而是像牛頓力學下公式求解,
我們會覺得之前的摸索是瞎摸索嗎?
(所以,牛頓力學是更高精度望遠鏡帶來的飛躍。)
ps:今天看到一個微博,太恰當地描述了科學的發展。
證明費馬大定理的數學家懷爾斯,對做數學的感受有段精闢的論述。這段論述的意義也許遠超數學之外,如果你精通某種技能、學問等等,也許能感受到一點共鳴。
進入一間黑暗的大宅。你走進第一間房,一片漆黑,伸手不見五指。你蹣跚地摸索著,時常會撞到傢具。你也漸漸熟悉了每件傢具的位置。終於,也許在六個月或更長時間後,你找到了房燈的開關,把它打開。剎那間,光芒四溢,一切清晰可見了,你精確地知道自己的位置。於是你進入下一間暗室...
所以,發明一種100倍速度摸索的辦法,比打開一個房間的燈意義大多了。
推薦閱讀:
※如果給 AlphaGo 植入五子棋程序,李世石有機會贏嗎?
※高曉松說 AlphaGo 下得沒有美感,不會打劫,事實如此嗎?
※Master來了!人類棋手還有機會嗎?
※為何大家對AlphaGo比人類棋手強大的可能性這麼恐懼?
※如果將alpha go加入到棋魂的劇情中會怎麼樣?
TAG:人工智慧 | 機器學習 | 計算機科學 | 深度學習DeepLearning | AlphaGo |