0
本文作者: 亞萌 | 2016-12-25 17:56 |
編者按:12月18日,KDD China技術(shù)峰會(huì)在深圳舉行,雷鋒網(wǎng)根據(jù)周志華教授當(dāng)天會(huì)上所做報(bào)告《關(guān)于機(jī)器學(xué)習(xí)研究的討論》,摘取其中亮點(diǎn)內(nèi)容整理成本文,由亞萌、亞峰、宗仁聯(lián)合編輯。此前,在今年10月21日CNCC 2016大會(huì)上,周志華教授也曾做了一次精彩演講,感興趣的讀者可以點(diǎn)擊鏈接《CNCC 2016 | 周志華 57 張 PPT 揭開機(jī)器學(xué)習(xí)本質(zhì)》。
周志華, 南京大學(xué)教授,校學(xué)術(shù)委員會(huì)委員,計(jì)算機(jī)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室常務(wù)副主任。AAAI Fellow, IEEE Fellow, IAPR Fellow,中國計(jì)算機(jī)學(xué)會(huì)會(huì)士,新晉ACM Fellow、AAAS Fellow。美國東部時(shí)間2016年12月8日, ACM 正式公布了今年Fellow 名單,南京大學(xué)周志華教授當(dāng)選,成為全部53名新Fellow中唯一的中國本土學(xué)者。周志華教授是長(zhǎng)江學(xué)者特聘教授、國家杰出青年科學(xué)基金獲得者。主要從事人工智能、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等領(lǐng)域的研究。著有《Ensemble Methods: Foundations and Algorithms》、《機(jī)器學(xué)習(xí)》。在本領(lǐng)域頂級(jí)期刊會(huì)議發(fā)表論文百余篇,被引用2萬余次。獲發(fā)明專利14項(xiàng),多種技術(shù)在企業(yè)應(yīng)用中取得成效。任《Frontiers in Computer Science》執(zhí)行主編及多種國內(nèi)外學(xué)術(shù)期刊副主編、編委;亞洲機(jī)器學(xué)習(xí)大會(huì)創(chuàng)始人,國際人工智能聯(lián)合大會(huì)(IJCAI)顧問委員會(huì)成員,IEEE 數(shù)據(jù)挖掘大會(huì)(ICDM)等數(shù)十次國內(nèi)外學(xué)術(shù)會(huì)議主席;IEEE 計(jì)算智能學(xué)會(huì)數(shù)據(jù)挖掘技術(shù)委員會(huì)主席等。曾獲國家自然科學(xué)二等獎(jiǎng)、兩次教育部自然科學(xué)一等獎(jiǎng)、亞太數(shù)據(jù)挖掘卓越貢獻(xiàn)獎(jiǎng)等。
如今,機(jī)器學(xué)習(xí)已經(jīng)無處不在。我們現(xiàn)實(shí)生活中碰到的分類、預(yù)測(cè)、預(yù)報(bào)等各種各樣的問題,如果是利用計(jì)算機(jī)以數(shù)據(jù)驅(qū)動(dòng)的方式去解決,那這個(gè)背后其實(shí)是在做機(jī)器學(xué)習(xí)。
但是我們要注意,機(jī)器學(xué)習(xí)雖然能力很強(qiáng),但它并不是一個(gè)萬能的東西。至少有兩件事,我們經(jīng)常都要提醒自己,機(jī)器學(xué)習(xí)可能是做不了的。
第一種情況,如果我們的拿到的數(shù)據(jù)特征信息不夠充分,那么機(jī)器學(xué)習(xí)可能就幫不上忙。這件事大家可能都很容易理解,當(dāng)我們解決一個(gè)問題,你需要三個(gè)變量,但實(shí)際上你手上只有一個(gè),還有兩個(gè)信息根本沒收集到,那這肯定是做不了的。
第二種情況,就是這個(gè)數(shù)據(jù)樣本的信息非常不充分,那么這種情況也基本上解決不了問題。比如大家經(jīng)常在說,我們現(xiàn)在地震預(yù)報(bào)為什么做得不好。其實(shí)地震預(yù)報(bào)抽象出來看,也可以通過機(jī)器學(xué)習(xí)來解決,只不過我們的數(shù)據(jù)實(shí)在太少了。因?yàn)樵谀闶孪茸隽说刭|(zhì)勘探,最后這個(gè)地方又發(fā)生了地震,這樣的情況是非常非常罕見的。所以沒有數(shù)據(jù),機(jī)器學(xué)習(xí)也就幫不上太多忙。
在工業(yè)界,有很多的工程師經(jīng)常會(huì)提這樣的一個(gè)問題,就是我們現(xiàn)在機(jī)器學(xué)習(xí)里面有很多算法,但是哪一類方法最好呢?如果你對(duì)機(jī)器學(xué)習(xí)有比較多的了解,那么就會(huì)知道一個(gè)很重要的定理,叫做“沒有免費(fèi)的午餐”。
這個(gè)定理告訴我們,如果算法A在某個(gè)問題上比算法B更好一些,那么一定在另外某個(gè)問題上,兩個(gè)算法的優(yōu)劣是反過來的,即算法B更好。這樣的理論對(duì)任何一個(gè)算法甚至包括隨機(jī)猜測(cè),都是成立的。就是說我們拿任何一個(gè)算法和隨機(jī)猜測(cè)比的話,你都一定能找到在某個(gè)問題上,這個(gè)算法還不如隨機(jī)猜測(cè)。所以我們?cè)卺槍?duì)一個(gè)具體的任務(wù)時(shí),要使用什么算法或技術(shù),一定要具體問題具體分析。
而機(jī)器學(xué)習(xí)里面我們說到的“問題”呢,可能跟大家一般理解的“問題”的意義不太一樣。大家一般認(rèn)為,比如說“推薦”可能就是一個(gè)“問題”,但是在機(jī)器學(xué)習(xí)里面,其實(shí)我們不是這樣看的。一個(gè)“問題”,一定是說輸入描述的屬性確定了,這個(gè)數(shù)據(jù)的分布是怎么樣,這時(shí)候才定義出來一個(gè)“問題”。所以哪怕都是推薦,文本推薦、電影推薦甚至不同公司用自己手上數(shù)據(jù)做的電影推薦,這其實(shí)從機(jī)器學(xué)習(xí)的角度來看可能都是不一樣的“問題”。
這時(shí)候就有另外一件事,有時(shí)候就會(huì)有公司的工程師說,你看我現(xiàn)在掌握了機(jī)器學(xué)習(xí)十大算法、二十大算法,我把它們都用得很熟,那么來一個(gè)問題之后,我把這些算法全部試一遍,然后找到最好的算法就行了。如果發(fā)現(xiàn)試一遍,這些都不Work,那就認(rèn)為機(jī)器學(xué)習(xí)是騙人的。
但是如果大家有了剛才那樣的理解之后,其實(shí)就知道,這樣看待機(jī)器學(xué)習(xí)是不行的。因?yàn)槲覀冊(cè)诂F(xiàn)實(shí)生活中碰到的問題,可能是無限多的情況,而如果你只是套用這些有限多種的方法,那一定有些東西是解決不了的。我們用機(jī)器學(xué)習(xí)解決問題更多的時(shí)候像一個(gè)裁縫,一定要量體裁衣,針對(duì)某個(gè)問題專門設(shè)計(jì)有效的方法,這樣才能得到一個(gè)更好的結(jié)果。所以,按需設(shè)計(jì)、度身定制,是在做機(jī)器學(xué)習(xí)應(yīng)用的時(shí)候特別重要的一點(diǎn)。有這樣能力的人不多,這可能也是很多大企業(yè)要把機(jī)器學(xué)習(xí)專家挖過去的一個(gè)原因。
機(jī)器學(xué)習(xí)本身,是一個(gè)有著深厚理論基礎(chǔ)的學(xué)科。最主要的是計(jì)算學(xué)習(xí)理論,其中最基本的理論模型,叫做“概率近似正確模型”。雖然這個(gè)模型很簡(jiǎn)單,但非常重要。
機(jī)器學(xué)習(xí)做的是什么事情呢?
我們拿到一些數(shù)據(jù)x,然后建立一個(gè)模型f,就是f(x)。
我們希望這個(gè)模型f特別準(zhǔn)確,也就是f(x)和真實(shí)結(jié)果y非常接近,那么怎么算接近呢?我們希望f(x)和y的區(qū)別很小,小于一個(gè)很小的值epsilon。
我們不能保證每次預(yù)測(cè)都完美,只能希望以大概率得到好結(jié)果,所謂大概率就是比1-\delta更大的概率,這里\delta是個(gè)很小的值。
所以可以看出,機(jī)器學(xué)習(xí)做的事情,是你給我數(shù)據(jù)之后,希望能夠以很高的概率給出一個(gè)好模型。在這個(gè)意義上我們做的很多事情是可以有理論保證的。比如說我們可以估算,需要多大規(guī)模的數(shù)據(jù)樣本,才能對(duì)某個(gè)問題做到什么樣的程度。如果你對(duì)這個(gè)問題的要求非常高,但是要達(dá)到這個(gè)效果所需要的樣本規(guī)模大到無法滿足,那這個(gè)問題就是不可學(xué)習(xí)的。所以在“概率近似正確”的意義下,要做出一個(gè)什么樣的模型,把問題能解決得多好,我們是可以從理論上去探討它的,并且是可以有理論的保證。但這件事情,在今天可能會(huì)發(fā)生一些變化,我待會(huì)在后面談一談。
那么深度學(xué)習(xí),如果從技術(shù)上來看是一個(gè)什么東西呢?其實(shí)它就是一個(gè)神經(jīng)網(wǎng)絡(luò)。以往我們有很多神經(jīng)網(wǎng)絡(luò)的研究,那么我這邊畫了非常簡(jiǎn)單的一個(gè)3層網(wǎng)絡(luò),這個(gè)里面的一個(gè)圓圈就是我們所謂的一個(gè)神經(jīng)元。如果從生物機(jī)理來說的話,一個(gè)神經(jīng)元收到很多其它神經(jīng)元發(fā)來的電位信號(hào),信號(hào)經(jīng)過放大到達(dá)它這里,如果這個(gè)累積信號(hào)比它自己的電位高了,那這個(gè)神經(jīng)元就被激活了。這個(gè)現(xiàn)象其實(shí)在1943年的時(shí)候,就有芝加哥大學(xué)的兩位學(xué)者創(chuàng)立了M-P 模型,把它形式化出來。你看,一個(gè)神經(jīng)元接受到很多x,經(jīng)過w加權(quán)輸入到它,如果這個(gè)加權(quán)的和大于θ,它就激活產(chǎn)生y,其實(shí)這個(gè)寫出來是很簡(jiǎn)單的一條公式。
我們可以看到其實(shí)神經(jīng)網(wǎng)絡(luò)本質(zhì)上,是一個(gè)簡(jiǎn)單函數(shù)通過多層嵌套疊加形成的一個(gè)數(shù)學(xué)模型,背后其實(shí)是數(shù)學(xué)和工程在做支撐。而神經(jīng)生理學(xué)起的作用,可以說是給了一點(diǎn)點(diǎn)啟發(fā),但是遠(yuǎn)遠(yuǎn)不像現(xiàn)在很多人說的神經(jīng)網(wǎng)絡(luò)研究受到神經(jīng)生理學(xué)的“指導(dǎo)”,或者是“模擬腦”。再比如說我們?cè)谏疃葘W(xué)習(xí)里面仍然用的非常多的一個(gè)算法,BP(反向傳播)算法,這個(gè)是1986年被重新發(fā)明出來的,這個(gè)算法完全是從數(shù)學(xué)上推導(dǎo)出來的,它和神經(jīng)生理學(xué)基本沒有聯(lián)系。
今天我們?cè)倏词褂米疃嗟纳疃葘W(xué)習(xí)模型之一:卷積神經(jīng)網(wǎng)絡(luò),它也是這樣很多層。只不過在這個(gè)里邊,除了原來的這些基本操作之后,還引入了一些操作,比如說這個(gè)信號(hào)處理里面的卷積,卷積其實(shí)是起到了一定的時(shí)間、空間的平移不變性。還有這個(gè)采樣,把一個(gè)區(qū)域的值用一個(gè)值代替,這是數(shù)據(jù)挖掘里對(duì)噪聲進(jìn)行平滑的基本技術(shù),也是縮減計(jì)算量的基本技術(shù)。所以這些都是常見的操作,融合進(jìn)去了。
但是特別要注意的是,其實(shí)CNN這個(gè)東西新不新呢?并不新。它第一次被完整地發(fā)表出來,是在1995年,然后這個(gè)東西成功地被用于手寫體字符識(shí)別,是在1998年。那為什么今天才會(huì)熱起來呢?這有一些原因,我們下面要繼續(xù)探討它。在探討它之前,我要說一點(diǎn),就是現(xiàn)在有很多媒體,常說深度學(xué)習(xí)是“模擬人腦”,其實(shí)這個(gè)說法不太對(duì)。我們可以說最早的神經(jīng)網(wǎng)絡(luò)受到一點(diǎn)點(diǎn)啟發(fā),但完全不能說是“模擬人腦”之類的。那么深度學(xué)習(xí)的層數(shù)很深了,是不是就模擬了呢?我在此引用一下Yann LeCun的說法,大家都知道LeCun是國際上深度學(xué)習(xí)領(lǐng)域非常著名的3位學(xué)者之一,他對(duì)“深度學(xué)習(xí)造成人工智能威脅”的說法不贊成。他尤其這樣說:
對(duì)深度神經(jīng)網(wǎng)絡(luò),“我最不喜歡的描述是‘它像大腦一樣工作’。我不喜歡人們這樣說的原因是,雖然深度學(xué)習(xí)從生命的生物機(jī)理中獲得靈感,但它與大腦的實(shí)際工作原理差別非常非常巨大。將它與大腦進(jìn)行類比給它賦予了一些神奇的光環(huán),這種描述是很危險(xiǎn)的,這將導(dǎo)致天花亂墜的宣傳,大家在要求一些不切實(shí)際的事情?!?/p>
其實(shí)確實(shí)是這樣,如果我們把深度學(xué)習(xí)就當(dāng)做一個(gè)數(shù)學(xué)模型去理解,可能還可以相對(duì)多明白一些,因?yàn)樯窠?jīng)機(jī)理本身就說不清楚。
那么深度學(xué)習(xí)技術(shù)發(fā)展發(fā)表的那么早,為什么今天才特別熱呢?有幾個(gè)問題很重要。
第一個(gè)問題,我們今天用到的深度學(xué)習(xí)模型到底有多深?
比如2015年,微軟亞洲研究院參加ImageNet比賽,獲得冠軍的網(wǎng)絡(luò)用到152層,到今天的話有很多網(wǎng)絡(luò)已經(jīng)上千層了。這個(gè)上千層的網(wǎng)絡(luò)里涉及到的參數(shù)的數(shù)目是幾十億甚至上百億個(gè),是非常大型的一個(gè)模型。
第二個(gè)問題,為什么要做到這么深呢?
其實(shí)在機(jī)器學(xué)習(xí)理論里面,我們很早就知道,如果你能夠提升一個(gè)模型的復(fù)雜度,那么可以提升其學(xué)習(xí)能力。比如說對(duì)神經(jīng)網(wǎng)絡(luò)這樣的模型,我們?cè)趺礃犹嵘膹?fù)雜度呢?很明顯的就有兩個(gè)辦法,一個(gè)辦法,是把網(wǎng)絡(luò)加寬,另外一個(gè)辦法,是把它加深。但是如果從提升復(fù)雜度的角度來說,加深會(huì)更有用。因?yàn)槟慵訉挼脑捚鋵?shí)是增加了基函數(shù)的個(gè)數(shù),加深的話,不光增加了函數(shù)個(gè)數(shù),還增加了函數(shù)嵌套的層數(shù)。所以從泛函表達(dá)上,它的能力是會(huì)更好。所以“加深”對(duì)增強(qiáng)模型的復(fù)雜度和學(xué)習(xí)能力更有用。
第三個(gè)問題,那既然你們?cè)缇椭馈凹由睢蹦軌蛟鰪?qiáng)學(xué)習(xí)能力,為什么早一點(diǎn)不去做?
這個(gè)很重要的一點(diǎn)就是,機(jī)器的學(xué)習(xí)能力增強(qiáng)并不見得一定是好事。因?yàn)榇蠹抑溃瑱C(jī)器學(xué)習(xí)所做的,是你給我一些數(shù)據(jù),我從這些數(shù)據(jù)里面希望把一般的規(guī)律學(xué)出來,用來處理今后的新數(shù)據(jù)。但是有時(shí)候,我可能會(huì)把所給數(shù)據(jù)的自身特性學(xué)出來,錯(cuò)誤地當(dāng)成一般規(guī)律,這時(shí)候就會(huì)犯錯(cuò)。那這種情況在機(jī)器學(xué)習(xí)里面叫做“過擬合”,所以我們一直是在和“過擬合”作斗爭(zhēng)。那過擬合是怎么發(fā)生的呢?以往理論告訴你,主要因?yàn)槟愕哪P瓦^于復(fù)雜。這就好比說我們?cè)诮鉀Q一個(gè)問題的時(shí)候,你把這個(gè)問題想得過度復(fù)雜化了,你反倒會(huì)犯錯(cuò)誤,這就是“過擬合”。
所以以往大家都不希望用太復(fù)雜的模型,機(jī)器學(xué)習(xí)界設(shè)計(jì)了很多技術(shù)來緩解過擬合,例如決策樹剪枝、神經(jīng)網(wǎng)絡(luò)提早停止,SVM正則化等等,但實(shí)際上最簡(jiǎn)單有效的是什么?就是使用更多的數(shù)據(jù)。因?yàn)槟阆?,你給我1000個(gè)數(shù)據(jù),我可能學(xué)出來的是特性,不是一般規(guī)律,但是從1000萬個(gè)數(shù)據(jù)里面學(xué)出來的,很可能就是一般規(guī)律了。
所以,為什么這么復(fù)雜的模型在今天特別有用呢?
第一個(gè)原因,是我們有了大量的訓(xùn)練數(shù)據(jù)。沒有大數(shù)據(jù)的話,這個(gè)東西是不會(huì)有那么多用處的。
第二個(gè)原因,這么大的模型,我們一定要有很強(qiáng)的計(jì)算設(shè)備才能算出來,今天我們恰恰也有了。
不管是GPU,還是CPU集群,還包括今天有這么多人去研究機(jī)器學(xué)習(xí)的平臺(tái),做機(jī)器學(xué)習(xí)技術(shù)的底層支撐。如果我們只做簡(jiǎn)單模型的話,可能這些計(jì)算設(shè)備和技巧上的努力就不是那么重要。
第三個(gè)原因,就是這里面要使用大量的“竅門”(Trick)。
大家如果用過深度學(xué)習(xí)網(wǎng)絡(luò)的,你就會(huì)知道,第一個(gè)人說我在某模型上加了一層性能更好,可能第二個(gè)人會(huì)告訴你,在我的任務(wù)上把這層網(wǎng)絡(luò)減掉才更好。很多都是這樣。更關(guān)鍵的是,什么時(shí)候有效、什么地方無效,不知道。所以正統(tǒng)機(jī)器學(xué)習(xí)界來看這些東西不能稱為“方法”,因?yàn)榈览聿磺宄?,只能稱為“竅門”。
深度學(xué)習(xí)里面有大量的Trick,所以今天來看就有點(diǎn)像老中醫(yī)在治病一樣,雖然能治病,但是什么東西是有用的,什么是沒有用的,什么是起副作用的,都不太清楚,籠統(tǒng)地混到一起,有些渾水摸魚的味道。這里面理論研究遠(yuǎn)遠(yuǎn)沒有跟上,因?yàn)閼?yīng)用嘗試比較容易?,F(xiàn)在有很多深度學(xué)習(xí)架構(gòu),讓大家很方便,新手學(xué)習(xí)個(gè)十天半個(gè)月就可以上手調(diào)試不同的模型做應(yīng)用了,性能有提高就很快發(fā)表文章。但是理論研究的門檻很高,先要訓(xùn)練四五年可能才能開始做事情。這就造成很多應(yīng)用方面的嘗試,報(bào)道說這樣好、那樣好,但是能做理論的人很少,來不及去研究,而且因?yàn)楹苌儆泄残缘臇|西。不同的人哪怕用的都是CNN,其實(shí)模型完全不同,做理論的也不知道從哪里去下手才不是浪費(fèi)時(shí)間。這些問題要解決,需要有更多的人沉下心來研究基礎(chǔ)問題,基礎(chǔ)問題弄明白了,反過來可以更大地促進(jìn)應(yīng)用。
PS:長(zhǎng)按二維碼加入KDD China 會(huì)員
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。