入門(mén)級(jí)攻略:機(jī)器學(xué)習(xí) VS. 深度學(xué)習(xí)
楔子:
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)現(xiàn)在很火,你會(huì)發(fā)現(xiàn)突然間很多人都在談?wù)撍鼈儭H缦聢D所示,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的趨勢(shì)對(duì)比(來(lái)自Google trend,縱軸表示搜索熱度):
本文將會(huì)以簡(jiǎn)單易懂的語(yǔ)言及示例為大家詳細(xì)解釋深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的區(qū)別,并介紹相關(guān)用途。
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)簡(jiǎn)介
機(jī)器學(xué)習(xí)
Tom Mitchell 關(guān)于機(jī)器學(xué)習(xí)的定義被廣泛引用,如下所示:
對(duì)于某類任務(wù)T和性能度量P,如果一個(gè)計(jì)算機(jī)程序在T上以P衡量的性能隨著經(jīng)驗(yàn)E而不斷自我完善,那么我們稱這個(gè)計(jì)算機(jī)程序在從經(jīng)驗(yàn)E學(xué)習(xí)。
- “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E ”
上面的抽象定義可能使你感到困惑,相信下面幾個(gè)簡(jiǎn)單的示例會(huì)讓你恍然大悟。
【例1 根據(jù)身高預(yù)測(cè)體重】
假設(shè)你要?jiǎng)?chuàng)建一個(gè)根據(jù)人的身高預(yù)測(cè)體重的系統(tǒng)。第一步是收集數(shù)據(jù),收集完之后畫(huà)出數(shù)據(jù)分布圖如下所示。圖中的每個(gè)點(diǎn)都代表一條數(shù)據(jù),橫坐標(biāo)表示身高,縱坐標(biāo)表示體重。
我們可以畫(huà)一條簡(jiǎn)單的直線來(lái)根據(jù)身高預(yù)測(cè)體重,比如:
- Weight (in kg) = Height (in cm) – 100
如果這條直線預(yù)測(cè)身高很準(zhǔn)確,那怎樣來(lái)衡量它的性能呢?比如以預(yù)測(cè)值和真實(shí)值之間的差值來(lái)衡量預(yù)測(cè)模型的性能。當(dāng)然,源數(shù)據(jù)越多,模型效果就越好。如果效果不好,那么可以使用其他方法來(lái)提升模型性能,如增加變量(如性別)或者改變預(yù)測(cè)直線。
【例2 風(fēng)暴預(yù)測(cè)系統(tǒng)】
假定要構(gòu)建一個(gè)風(fēng)暴預(yù)測(cè)系統(tǒng),你手頭上有過(guò)去發(fā)生的風(fēng)暴數(shù)據(jù)以及這些風(fēng)暴發(fā)生前三個(gè)月的天氣數(shù)據(jù)。那么怎樣構(gòu)建一個(gè)風(fēng)暴預(yù)測(cè)系統(tǒng)呢?
首先要做的是清洗數(shù)據(jù)并找到數(shù)據(jù)中的隱藏模式,比如導(dǎo)致風(fēng)暴產(chǎn)生的條件。我們可以對(duì)一些條件建模,比如溫度是否大于40攝氏度,濕度是否介于80到100之間,然后將這些特征輸入模型。
你要做的就是充分利用歷史數(shù)據(jù),然后預(yù)測(cè)是否會(huì)產(chǎn)生風(fēng)暴。在這個(gè)例子中,評(píng)價(jià)的指標(biāo)是正確預(yù)測(cè)風(fēng)暴發(fā)生的次數(shù)。我們可以重復(fù)預(yù)測(cè)過(guò)程多次,然后將性能結(jié)果返回系統(tǒng)。
回到最初機(jī)器學(xué)習(xí)的定義,我們將風(fēng)暴預(yù)測(cè)系統(tǒng)定義如下:任務(wù)T是找到造成風(fēng)暴的大氣條件,性能P是在模型參數(shù)學(xué)習(xí)好之后,正確預(yù)測(cè)的次數(shù),經(jīng)驗(yàn)E是系統(tǒng)的迭代過(guò)程。
深度學(xué)習(xí)
深度學(xué)習(xí)其實(shí)很早之前就出現(xiàn)了,隨著近幾年的炒作,又逐漸火起來(lái)了。
深度學(xué)習(xí)是一種特殊的機(jī)器學(xué)習(xí),它將現(xiàn)實(shí)世界表示為嵌套的層次概念體系(由較簡(jiǎn)單概念間的聯(lián)系定義復(fù)雜概念,從一般抽象概括到高級(jí)抽象表示),從而獲得強(qiáng)大的性能與靈活性。
- Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.
【例1 圖形檢測(cè)】
假設(shè)我們要將矩形和其他圖形區(qū)別開(kāi)。人眼首先是檢測(cè)這個(gè)圖形是否有4條邊(簡(jiǎn)單概念)。如果有4條邊,在檢測(cè)它們是否相連,閉合且垂直,以及是否相等(嵌套層次概念)。事實(shí)上,我們將一個(gè)復(fù)雜的任務(wù)(矩形識(shí)別)分解成一些簡(jiǎn)單低抽象層次的任務(wù)。深度學(xué)習(xí)本質(zhì)上是在更大的范圍內(nèi)做這件事。
【例2 貓還是狗】
這個(gè)案例是構(gòu)建一個(gè)能夠識(shí)別圖片中動(dòng)物是貓或者狗的系統(tǒng)。
如果使用機(jī)器學(xué)習(xí)解決這個(gè)問(wèn)題,首先要定義一些特征,比如該動(dòng)物是否有胡須、耳朵;如果有耳朵,那么耳朵是否是尖的。簡(jiǎn)單地說(shuō),我們要定義面部特征,然后讓系統(tǒng)識(shí)別出在動(dòng)物分類中哪些是重要特征。而深度學(xué)習(xí)會(huì)一次性完成這些任務(wù),深度學(xué)習(xí)會(huì)自動(dòng)找到對(duì)分類任務(wù)重要的特征,而機(jī)器學(xué)習(xí)不得不人工指定。
深入學(xué)習(xí)工作流程如下:
1. 首先在圖片中找到和貓或者狗最相關(guān)的邊界;
2. 然后找到形狀和邊界的組合,如是否能找到胡須和耳朵;
3. 在復(fù)雜概念的連續(xù)分層識(shí)別后,就能夠確定哪些特征對(duì)識(shí)別貓狗起重要作用。
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的對(duì)比
數(shù)據(jù)依賴
深度學(xué)習(xí)和傳統(tǒng)機(jī)器學(xué)習(xí)最重要的區(qū)別是它的性能隨著數(shù)據(jù)量的增加而增強(qiáng)。如果數(shù)據(jù)很少,深度學(xué)習(xí)算法性能并不好,這是因?yàn)樯疃葘W(xué)習(xí)算法需要大量數(shù)據(jù)才能很好理解其中蘊(yùn)含的模式。這種情況下,使用人工指定規(guī)則的傳統(tǒng)機(jī)器學(xué)習(xí)占據(jù)上風(fēng)。如下圖所示:
硬件支持
深度學(xué)習(xí)算法嚴(yán)重依賴于高端機(jī),而傳統(tǒng)機(jī)器學(xué)習(xí)在低端機(jī)上就可以運(yùn)行。因?yàn)樯疃葘W(xué)習(xí)需要進(jìn)行大量矩陣乘法操作,而GPU可以有效優(yōu)化這些操作,所以GPU成為其中必不可少的一部分。
特征工程
特征工程將領(lǐng)域知識(shí)輸入特征提取器,降低數(shù)據(jù)復(fù)雜度,使數(shù)據(jù)中的模式對(duì)學(xué)習(xí)算法更加明顯,得到更優(yōu)秀的結(jié)果。從時(shí)間和專業(yè)性方面講,這個(gè)過(guò)程開(kāi)銷很高。機(jī)器學(xué)習(xí)中,大部分使用的特征都是由專家指定或根據(jù)先驗(yàn)知識(shí)確定每個(gè)數(shù)據(jù)域和數(shù)據(jù)類型。比如,特征可以是像素值,形狀,紋理,位置,方向。大多數(shù)機(jī)器學(xué)習(xí)方法的性能依賴于識(shí)別和抽取這些特征的準(zhǔn)確度。
深度學(xué)習(xí)算法試圖從數(shù)據(jù)中學(xué)習(xí)高層特征,這是深度學(xué)習(xí)與眾不同的一部分,同時(shí)也是超越傳統(tǒng)機(jī)器學(xué)習(xí)的重要一步。深度學(xué)習(xí)將每個(gè)問(wèn)題歸結(jié)為開(kāi)發(fā)新特征提取器,如卷積神經(jīng)網(wǎng)絡(luò)在底層學(xué)習(xí)如邊和直線種種低層特征,然后是面部部分特征,最后是人臉的高層特征。
問(wèn)題解決方案
當(dāng)使用傳統(tǒng)機(jī)器學(xué)習(xí)方法解決問(wèn)題時(shí),經(jīng)常采取化整為零,分別解決,再合并結(jié)果求解的策略。而深度學(xué)習(xí)主張end-to-end模型,輸入訓(xùn)練數(shù)據(jù),直接輸出最終結(jié)果,讓網(wǎng)絡(luò)自己學(xué)習(xí)如何提取關(guān)鍵特征。
比如說(shuō)你要進(jìn)行目標(biāo)檢測(cè),需要識(shí)別出目標(biāo)的類別并指出在圖中的位置。
典型機(jī)器學(xué)習(xí)方法將這個(gè)問(wèn)題分為兩步:目標(biāo)檢測(cè)與目標(biāo)識(shí)別。首先,使用邊框檢測(cè)技術(shù),如grabcut,掃描全圖找到所有可能的對(duì)象,對(duì)這些對(duì)象使用目標(biāo)識(shí)別算法,如HOG/SVM,識(shí)別出相關(guān)物體。
深度學(xué)習(xí)方法按照end-to-end方式處理這個(gè)問(wèn)題,比如YOLO net通過(guò)卷積神經(jīng)網(wǎng)絡(luò),就能夠?qū)崿F(xiàn)目標(biāo)的定位與識(shí)別。也就是原始圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)中,直接輸出圖像中目標(biāo)的位置和類別。
執(zhí)行時(shí)間
通常,深度學(xué)習(xí)需要很長(zhǎng)時(shí)間訓(xùn)練,因?yàn)樯疃葘W(xué)習(xí)中很多參數(shù)都需要遠(yuǎn)超正常水平的時(shí)間訓(xùn)練。ResNet大概需要兩周時(shí)間從零開(kāi)始完成訓(xùn)練,而機(jī)器學(xué)習(xí)只需要從幾秒到幾小時(shí)不等的訓(xùn)練時(shí)間。測(cè)試所需要的時(shí)間就完全相反,深度學(xué)習(xí)算法運(yùn)行需要很少的時(shí)間。然而,和KNN(K近鄰,一種機(jī)器學(xué)習(xí)算法)相比,測(cè)試時(shí)間會(huì)隨著測(cè)試數(shù)據(jù)量的增加而增加。不過(guò)并非所有的機(jī)器學(xué)習(xí)算法都需要很長(zhǎng)時(shí)間,某些也只需要很少的測(cè)試時(shí)間。
可解釋性
假定使用深度學(xué)習(xí)給文章自動(dòng)評(píng)分,你會(huì)發(fā)現(xiàn)性能會(huì)很不錯(cuò),并且接近人類評(píng)分水準(zhǔn)。但它不能解釋為什么給出這樣的分?jǐn)?shù)。在運(yùn)行過(guò)程中,你可以發(fā)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)的哪些節(jié)點(diǎn)被激活,但你不知道這些神經(jīng)元是對(duì)什么進(jìn)行建模以及這每層在干什么,所以無(wú)法解釋結(jié)果。
另一方面,機(jī)器學(xué)習(xí)算法如決策樹(shù)按照規(guī)則明確解釋每一步做出選擇的原因,因此像決策樹(shù)和線性/邏輯斯蒂回歸這類算法由于可解釋性良好,在工業(yè)界應(yīng)用很廣泛。
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用場(chǎng)景
Wiki上面介紹了一些機(jī)器學(xué)習(xí)的應(yīng)用領(lǐng)域:
1. 計(jì)算機(jī)視覺(jué):如車牌號(hào)識(shí)別,人臉識(shí)別;
2. 信息檢索:如搜索引擎,文本檢索,圖像檢索;
3. 營(yíng)銷:自動(dòng)郵件營(yíng)銷,目標(biāo)識(shí)別;
4. 醫(yī)療診斷:癌癥診斷,異常檢測(cè);
5. 自然語(yǔ)言處理:語(yǔ)義分析,照片標(biāo)記;
6. 在線廣告,等等。
下圖總結(jié)了機(jī)器學(xué)習(xí)的應(yīng)用領(lǐng)域,總的來(lái)說(shuō)應(yīng)用范圍十分廣泛。
谷歌是業(yè)內(nèi)有名的使用機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的公司,如下圖所示,谷歌將深度學(xué)習(xí)應(yīng)用到不同的產(chǎn)品。
即時(shí)測(cè)試
為了評(píng)估你是否真正理解了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別,這里將會(huì)有一個(gè)快速測(cè)試,可以在這里提交答案。你要做的就是分別使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)解決下面的問(wèn)題,并決定哪個(gè)方法更好。
【場(chǎng)景1】 假設(shè)你要開(kāi)發(fā)一個(gè)無(wú)人駕駛汽車系統(tǒng),該系統(tǒng)以相機(jī)拍攝的原始數(shù)據(jù)作為輸入,然后預(yù)測(cè)方向盤(pán)轉(zhuǎn)動(dòng)的方向及角度。
【場(chǎng)景2】給定一個(gè)人的信用憑證和背景信息,評(píng)估是否可以給他發(fā)放貸款。
【場(chǎng)景3】創(chuàng)建一個(gè)將俄語(yǔ)文本翻譯為印度語(yǔ)的系統(tǒng)。
未來(lái)趨勢(shì)
前面總結(jié)了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別,本節(jié)對(duì)二者未來(lái)趨勢(shì):
1. 鑒于工業(yè)界使用數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)呈增加的趨勢(shì),在業(yè)務(wù)中使用機(jī)器學(xué)習(xí)對(duì)那些想要生存下來(lái)的公司變得越發(fā)重要。同時(shí),了解更多的基礎(chǔ)知識(shí)也十分有必要。
2. 深度學(xué)習(xí)給人越來(lái)越多的驚喜,將來(lái)也會(huì)一直是這樣。深度學(xué)習(xí)被證明是已有技術(shù)中最先進(jìn)的最好的技術(shù)之一。
3. 深度學(xué)習(xí)和機(jī)器學(xué)習(xí)和研究還在繼續(xù),不像以前那樣在學(xué)術(shù)界發(fā)展受限。目前機(jī)器學(xué)習(xí)和深度學(xué)習(xí)在工業(yè)界和學(xué)術(shù)界呈爆炸式發(fā)展。并且受到比以前更多的基金支持,很有可能成為人類發(fā)展的關(guān)鍵點(diǎn)之一。
尾聲
本文將深度學(xué)習(xí)和機(jī)器學(xué)習(xí)進(jìn)行了詳細(xì)對(duì)比,希望能夠激勵(lì)大家去學(xué)到更多知識(shí)。請(qǐng)參考機(jī)器學(xué)習(xí)路線圖和深度學(xué)習(xí)路線圖。