有人說機器學習近些年的發展只是依賴於「大數據」和「高計算」,在演算法上並沒有突破,這是在影射深度學習么?
從一個大的角度上, 大數據對機器學習的影響其實是非常有意思的。
首先我們來看看機器學習 (machine learning ) 到底學了個什麼東西。我們拿機器學習中非常典型的分類器問題為例吧。
假設我們拿到了一堆貓狗樣本,然後我們按照某種方法,比如毛髮的顏色, 頭部的形狀, 尾巴的長度, 把觀測到的樣本的特徵映射到一個平面上( 這個步驟叫做特徵提取), 紅色的是貓, 藍色的是狗。
只要我們特徵提取方法合適,那麼一定存在一條分界線(圖中的綠線)可以把貓和狗分開。
於是突然我們發現,如果我們能有一種方法,讓機器通過學習樣本找出來這條綠線, 我們是不是就做出來一個可以識別貓和狗的分類器了啊。於是新的測試樣例, 圖中黑點,是不是也可以被這個分類器識別出來了啊!!!
同樣的方法,我們也可以用來識別人臉,識別各種物體,是不是眼看就能去 ImageNet 拿個冠軍,出任 CEO 迎娶白富美,走向人生的巔峰。。
等一下。。
怎麼讓機器學習到這條綠線呢?
在不知道綠線的形狀的情況下, 你可以簡單粗暴的假設綠線是一條直線, 於是去找一條可以盡量把貓和狗樣本分開的直線就好了。 結果就是下圖中的黃線。
你可以看到,樣本都被很準確的分開了,但是新的測試數據黑點 (比如左邊第一個,和第二個),卻會被錯誤的分類。
歸根到底,還是因為黃線和綠線並不重合。
既然直線不行, 要不假設綠線是一個拋物線 ?
這個貌似好一點了, 不過還是不是完全符合真實的綠線。有些黑點分類還是錯誤的。
等一下,我們停下來,看看我們做的事情: 因為不管是選擇直線或者是拋物線, 我們實際上做的事情都是在不知道目標模型(綠線)的情況下, 選一個模型 (直線或者拋物線),然後調節這個模型的參數,去逼近這個目標模型。
而本質上, 拋物線比直線好的原因其實是拋物線可以調節的參數比直線多, 於是拋物線是一個自由度更高的模型, 在目標模型是非線性模型的情況下,可以更好的逼近。
那如果這樣講, 那我去選一個參數很多, 自由度特別高的模型,比如神經網路一類理論上可以擬合任何形狀的函數的模型,不就可以精確的擬合出綠線了嘛。
少年,你太天真了, 看看高自由度模型的表現:
參數多的模型會帶來過擬合 ( overfitting) 的問題。比如上圖,因為,這個模型,實在是太靈活了,隨便擰來擰去的都可以做出一個對樣本完全正確分類,同時又和綠線相差到天上去的曲線。。
於是,選擇一個合適的複雜度(參數的多少)就非常重要,對於一個複雜的目標模型, 用簡單的模型是永遠擬合不了的(比如直線永遠沒法擬合拋物線), 而對於一個簡單目標模型來說,複雜的模型會 overfit, 效果反而不好。
所以在很長一段時間, 選擇一個合適的複雜度,基本是機器學習老司機們的核心競爭力之一。
這個都是在大數據出現以前。 而大數據出現以後呢(大數據的採集, 存儲, 計算的問題解決以後),只要數據足夠多, 用大數據+複雜模型會出現一種非常奇妙的效果, 見下圖:
看這個黃線, 雖然複雜模型還是在過擬合,但是由於黃線必須能正確的分離樣本,過擬合的現象被控制起來, 整體上開始非常接近綠線。。基本上訓練數據越多, 過擬合的現象就被控制的越好。
這馬上意味著,在大數據情況下,媽媽再也不用擔心我選不對模型了!!
於是傳說中的 CNN 網路, DNN 網路這種超級複雜模型的真實的實力一下子就展現出來了
所謂大力出奇蹟。就是這個樣子的。。
其他的問題, 比如回歸問題, 也是同樣的道理。
當然,如果你認為僅僅是大數據起的作用,那麼你有沒有想過,有限時間拿大量的數據去訓練幾百萬到幾百億參數的CNN, 真的是一件很簡單的事情嘛。。。"Our system is able to train 1 billion parameter networks on just 3 machines in a couple of days, and we show that it can scale to networks with over 11 billion parameters using just 16 machines," the researchers write. "As this infrastructure is much more easily marshaled by others, the approach enables much wider-spread research with extremely large neural networks."
Google Brain king slashes cost of AI gear a€¢ The Register
========================================================================
最後介紹一個大神
Nando de Freitas
Oxford 教授和 Google Deepmind 的參與人。
文中很多說法可以參考他在 Oxford 的 Deep learning 課程中。
https://youtu.be/VR0W_PNwLGw?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu
我見過最好的 Deep learning 課程, 不過需要翻牆。。
========================================================================
這個現象的理論基礎是 VC dimension, 有興趣的同學可以看看這個。
VC dimension
簡而言之就是這樣:
where h is the VC dimension of the classification model, and N is the size of the training set (restriction: this formula is valid when h &<&< N).
感謝 @vifree @IAMABIGBITCH 提醒,
========================================================================
如果非要正面回答問題,答案是一定程度上是的,大數據的出現(實際上是大數據採集,存儲, 計算問題的解決), 讓訓練好 CNN/DNN 這種複雜模型成為可能,於是可以更好處理更複雜的分類問題, 比如圖像識別, 聲音識別。
這個跟
中國近年的發展只是依賴人多
一樣。有依賴沒錯,但不是「只是」。
機器學習中的任務除了prediction(一般是supervised),更大的一類是知識獲取(或者稱為mining, 一般是unsupervised)。Neural network這類model在某些prediction問題上比較有效,但一般很難進行unsupervised知識獲取。機器學習在演算法上還是有挺多突破的,比如spectral method學習graphical model參數,並行MCMC。只是這些突破比較專業,不會引起媒體和大眾的普遍興趣。
深度學習又一次躺槍了,讓局外人覺得做深度學習沒技術含量,僅僅依靠大數據和高性能計算。
======================
既然說,就多說一點吧。題主提到的關鍵詞有三個:大數據、高計算和演算法突破。
大數據:毋庸置疑,我們需要大數據。但是更重要的工程問題是面對這麼多信息,如何將最有用的信息提取出來,如何對大數據進行壓縮,如何與具體的task相結合,這不僅是大數據的問題,也是做深度學習切實會遇到的問題,以上提到的任何一點都足以讓一個人做一生的了。
高計算:我沒聽過高計算這個詞,但是高性能計算是很重要的。我不是做這個方向的,沒有發言權。
演算法突破:我只舉卷積神經網路的例子,我們現在所看到的深度學習的成果,都是近年來數以萬計的paper,以及無數人不斷努力的結果。搞卷積神經網路的人都應該知道sigmoid、relu、prelu、dropout、deconvolution、fcn這些概念吧。我認為任何一個方面都是演算法上的大的突破。深度學習不同於淺層學習,對樣本的依賴性很強,如何對訓練樣本進行選擇,如何訓練、優化、迭代和壓縮,任何細節都很重要,也關乎效果的好壞。
題主所謂的大的突破,可能指的是顛覆性的成果吧,那麼我舉幾個例子:(1) 現在你用的google以及baidu搜索引擎,包括圖片搜索,翻譯,都是基於deep learning。(2) Great Firewall of China也在用,近一兩年收到了絕好的效果。以上兩點都足以算作大的突破了吧。
============================最後我想說,革命尚未成功,我輩仍需努力。
認為『機器學習近些年的發展』只是依賴於「大數據」和「高計算」,這個說法本身就存在很大的偏見。
首先如果『高計算』是指高性能計算的話,那麼想必是包括了優化演算法研究的,實際上做機器學習的人不僅僅是使用優化演算法,也研究和設計優化演算法(ICML和NIPS上每年都有不少優化演算法方面的paper),因此所謂的『高計算』本身也是機器學習研究方向之一(機器學習本來就是交叉學科,混合了優化領域的內容不奇怪),機器學習依賴於自身的研究方向,這當然無可厚非。
其次『大數據』這個詞語有些概念化,而且被媒體莫名其妙得吹得太大。我對它的理解僅僅是:數據量大。。。。。。
然而,這兩個點,其實都不能涵蓋『機器學習』領域這兩年的發展,之所以給一些人造成『只是依賴於「大數據」和「高計算」』這樣的認識,估計因為這些人身在ML領域外,對ML領域的了解全來自於新聞媒體,導致孤陋寡聞吧。
這十年來機器學習從理論到應用都有很大的發展,深度學習作為傳統Neural Network的重新崛起,只是眾多發展之一。
搞機器學習的很少張口閉口提「大數據」這種詞。
深度學習比原來那些方法更有效地壓縮了大樣本的信息,這就解決了很多問題。
外行人總是要麼迷信要麼懷疑。
倡導:合理地理解和使用科學技術,腳踏實地發展科學技術
作為菜鳥來回答一發,深度學習一直在做各種變形以及進化。深度學習一直在開挖新的坑,誰先把深度學習應用於一個新的領域,並且取得state-of-the-art的performance,就可以發paper。深度學習比一般模型更難訓練,一般需要數據預處理,用來訓練model的數據也要做到balance,不然很多情況下會導致model的acciracy不高,這裡面就有很多數據處理方面的問題,像我這種學沫們大部分功夫也是花在這裡,好的train data可以提升model的學習能力。深度學習的訓練過程也有很多trick,以及一些提升的地方,比如dropout,prelu還有權重以及connections的自己學習過程。這裡都有很多學術大牛作出自己的貢獻,不能因為媒體的片面,而誤以為深度學習很水。
個人的拙見。
機器學習近年的發展只依賴於高性能計算,和一大批才華橫溢的人工智慧研究者/應用者,以及滿口「大數據時代」的「演講家」。
作為多領域交叉學科,機器學習的突破需要建立在其他學科突破的基礎之上。我們尚無法明確自然生命體的「學習」行為,那麼對於機器智能我們永遠是在探索。
越來越多的聰明而目光遠大的年輕人在加入這個領域的工作。請給他們一點時間。不知道什麼才算是演算法的突破。新的核函數?還是奧創?
說深度學習沒技術含量沒進步的,要麼就是不懂深度學習,就只是知道是疊加了神經網路,要麼就是真大牛,看透了世間萬物。
不說別的,從玻爾茲曼機到rbm到dbn到dbm,到各種rbm的拓展,你告訴我這都是沒進步的?還是覺得too easy to learn?
恰恰相反,深度學習在演算法上還是有突破的,其他真沒有。搞來搞去模型不外乎LR,SVM以及各類決策樹,大部分真正有效的改進都是在優化策略上,比如如何在數據規模很大的情況下進行多機最優化計算。
張口閉口大數據的都是在吹牛,他們理解的大數據估計還停留在計算均值和excel畫圖上純屬外行臆測, 例如dropout等regularization演算法解決的問題, 即是在樣本量很小的狀況下減少過擬合的機會, 同時也大規模減少參數量, 使得一次迭代所需的計算量急遽減少
convolution也使得參數量非常大程度地減少
這些進步何以見得依賴大數據或大計算? 分明是小數據加小計算, 若是沒這些演算法上的進步, 怕是超級計算機也擺不平
明顯不對,說這話的人應該還處於調包階段,並不了解深度學習的理論。
深度學習理論參照 Learning Deep Architectures for AI 這篇論文。
實際上深度學習在原來的演算法上有很大的突破,而現在沒有一個合理的數學解釋我認為是因為現有數學理論還不夠,可能還需要新的理論體系。有人說機器學習近些年的發展只是依賴於「大數據」和「高計算」,在演算法上並沒有突破,這是在影射深度學習么?
----- 這句話有兩個瑕疵,
1、「高計算」 似乎不是一個專業辭彙,題主大概指的是「分散式」計算? 畢竟現在DL計算更多的是基於集群而不是靠超級電腦。
2、大數據和機器學習是兩個體系的東西,機器學習在大數據時代大有作為,但是機器學習的突破並不依賴於大數據技術。
不考慮以上兩點,這句話字面上是對的,現在深度學習是機器學習的最主流,而且是統治性的主流,深度學習演算法 從2006 Hinton的論文 A Fast Learning Algorithm for DeepBelief Nets開始。 距現在也已經11年了。所以並不算「近些年」的演算法突破,而且深度學習的突破也確實依賴與分散式計算技術的突破,讓人類的計算能力再次服從摩爾定律,計算能力是本錢,深度學習只算是一個花錢、變現的方法罷了。
但是如果這句話本身的意思是錯的,因為近年深度學習的突破-------按特朗普的慣用說法------是「非常、非常、非常」巨大的。
突破主要有三點:
1、人們對深度學習的性能和效果有了較為深入的認識。深度學習的效果大大超過人類預期,以至於人類已經無法準確預判演算法能力,揭開了人工智慧的序幕。
2、演算法反過來大大推動了相適應的分散式計算的發展,現在集群(相比超算)非常便宜,且出現了專門針對深度學習的硬體(寒武紀晶元),大大推動了人類的「算力」的進步。
3、推動了「問題描述」這一領域的研究,以往研究人員注意力在演算法本身,現在深度學習演算法能力如此之強,以至於「如何使用這一演算法」成為了研究核心,結果是另一頭的「用巧妙正確的形式描述待解決的問題」這一能力大大增強。 機器能解決問題的範圍也大大拓展了。
明顯不是啊,不優化改進演算法怎麼才能得到更好的結果……難道每年那麼多論文發出來全是application嗎?
大學在實驗室打醬油,對機器學習的理解上,就是套模型,上數據,剩下的就是跑吧!其實不是,實際問題中,模型並不是簡單的套用,需要深入理解,根據問題去優化,去改,目前正在學習,還停留在外行看熱鬧的層次
大數據和高計算還不厲害?那計算機幾十年還不都是基於門電路表示的0,1代數運算演算法。
不是。以深度學習為例,現在的方法和幾十年前的相比,除了網路的規模變大之外,還引入了很多的演算法,比如dropout,lrn,relu,batch norm等。而這些新的演算法才是dl成功的關鍵
個人認為:單單「大數據」和「高計算」,也是很了不起的。
很多我們熟知的演算法,在數據規模每天劇增的今天,面臨一些瓶頸,主要體現在 對於處理海量數據的速度和可行性。 而使得一些經典的演算法能夠高速有效的處理當今的大規模數據,本身就是很有意義的工作。說的一點都沒錯
感覺弄來弄去也就是幾十年前的演算法,最多搞個優化什麼的。。。不過deep learning算是新的吧。
推薦閱讀:
※CNN(卷積神經網路)是什麼?有入門簡介或文章嗎?
※Yoshua Bengio為什麼能跟Hinton、LeCun相提並論??
※寒武紀神經網路處理器效能如何 ?
※word2vec算出的詞向量怎麼衡量好壞?
※梯度下降法是萬能的模型訓練演算法嗎?