入門級攻略:機器學習 VS. 深度學習

更多深度文章,請關注云計算頻道:https://yq.aliyun.com/cloud

楔子:

機器學習和深度學習現在很火,你會發現突然間很多人都在談論它們。如下圖所示,機器學習和深度學習的趨勢對比(來自Googletrend,縱軸表示搜索熱度):

本文將會以簡單易懂的語言及示例為大家詳細解釋深度學習和機器學習的區別,並介紹相關用途。

機器學習和深度學習簡介

機器學習

Tom Mitchell 關於機器學習的定義被廣泛引用,如下所示:

對於某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而不斷自我完善,那麼我們稱這個計算機程序在從經驗E學習。

「A computer program is said to learn from experience E withrespect to some class of tasks T and performance measure P if itsperformance at tasks in T, as measured by P, improves withexperience E 」

Advertisements

上面的抽象定義可能使你感到困惑,相信下面幾個簡單的示例會讓你恍然大悟。

【例1 根據身高預測體重】

假設你要創建一個根據人的身高預測體重的系統。第一步是收集數據,收集完之後畫出數據分布圖如下所示。圖中的每個點都代表一條數據,橫坐標表示身高,縱坐標表示體重。

我們可以畫一條簡單的直線來根據身高預測體重,比如:

Weight (in kg) = Height (in cm) - 100

如果這條直線預測身高很準確,那怎樣來衡量它的性能呢?比如以預測值和真實值之間的差值來衡量預測模型的性能。當然,源數據越多,模型效果就越好。如果效果不好,那麼可以使用其他方法來提升模型性能,如增加變數(如性別)或者改變預測直線。

Advertisements

【例2 風暴預測系統】

假定要構建一個風暴預測系統,你手頭上有過去發生的風暴數據以及這些風暴發生前三個月的天氣數據。那麼怎樣構建一個風暴預測系統呢?

首先要做的是清洗數據並找到數據中的隱藏模式,比如導致風暴產生的條件。我們可以對一些條件建模,比如溫度是否大於40攝氏度,濕度是否介於80到100之間,然後將這些特徵輸入模型。

你要做的就是充分利用歷史數據,然後預測是否會產生風暴。在這個例子中,評價的指標是正確預測風暴發生的次數。我們可以重複預測過程多次,然後將性能結果返回系統。

回到最初機器學習的定義,我們將風暴預測系統定義如下:任務T是找到造成風暴的大氣條件,性能P是在模型參數學習好之後,正確預測的次數,經驗E是系統的迭代過程。

深度學習

深度學習其實很早之前就出現了,隨著近幾年的炒作,又逐漸火起來了。

深度學習是一種特殊的機器學習,它將現實世界表示為嵌套的層次概念體系(由較簡單概念間的聯繫定義複雜概念,從一般抽象概括到高級抽象表示),從而獲得強大的性能與靈活性。

Deep learning is a particular kind of machine learning thatachieves great power and flexibility by learning to represent theworld as nested hierarchy of concepts, with each concept defined inrelation to simpler concepts, and more abstract representationscomputed in terms of less abstract ones.

【例1 圖形檢測】

假設我們要將矩形和其他圖形區別開。人眼首先是檢測這個圖形是否有4條邊(簡單概念)。如果有4條邊,在檢測它們是否相連,閉合且垂直,以及是否相等(嵌套層次概念)。事實上,我們將一個複雜的任務(矩形識別)分解成一些簡單低抽象層次的任務。深度學習本質上是在更大的範圍內做這件事。

【例2 貓還是狗】

這個案例是構建一個能夠識別圖片中動物是貓或者狗的系統。

如果使用機器學習解決這個問題,首先要定義一些特徵,比如該動物是否有鬍鬚、耳朵;如果有耳朵,那麼耳朵是否是尖的。簡單地說,我們要定義面部特徵,然後讓系統識別出在動物分類中哪些是重要特徵。而深度學習會一次性完成這些任務,深度學習會自動找到對分類任務重要的特徵,而機器學習不得不人工指定。

深入學習工作流程如下:

1. 首先在圖片中找到和貓或者狗最相關的邊界;

2. 然後找到形狀和邊界的組合,如是否能找到鬍鬚和耳朵;

3. 在複雜概念的連續分層識別後,就能夠確定哪些特徵對識別貓狗起重要作用。

機器學習和深度學習的對比

數據依賴

深度學習和傳統機器學習最重要的區別是它的性能隨著數據量的增加而增強。如果數據很少,深度學習演算法性能並不好,這是因為深度學習演算法需要大量數據才能很好理解其中蘊含的模式。這種情況下,使用人工指定規則的傳統機器學習佔據上風。如下圖所示:

硬體支持

深度學習演算法嚴重依賴於高端機,而傳統機器學習在低端機上就可以運行。因為深度學習需要進行大量矩陣乘法操作,而GPU可以有效優化這些操作,所以GPU成為其中必不可少的一部分。

特徵工程

特徵工程將領域知識輸入特徵提取器,降低數據複雜度,使數據中的模式對學習演算法更加明顯,得到更優秀的結果。從時間和專業性方面講,這個過程開銷很高。機器學習中,大部分使用的特徵都是由專家指定或根據先驗知識確定每個數據域和數據類型。比如,特徵可以是像素值,形狀,紋理,位置,方向。大多數機器學習方法的性能依賴於識別和抽取這些特徵的準確度。

深度學習演算法試圖從數據中學習高層特徵,這是深度學習與眾不同的一部分,同時也是超越傳統機器學習的重要一步。深度學習將每個問題歸結為開發新特徵提取器,如卷積神經網路在底層學習如邊和直線種種低層特徵,然後是面部部分特徵,最後是人臉的高層特徵。

問題解決方案

當使用傳統機器學習方法解決問題時,經常採取化整為零,分別解決,再合併結果求解的策略。而深度學習主張end-to-end模型,輸入訓練數據,直接輸出最終結果,讓網路自己學習如何提取關鍵特徵。

比如說你要進行目標檢測,需要識別出目標的類別並指出在圖中的位置。

典型機器學習方法將這個問題分為兩步:目標檢測與目標識別。首先,使用邊框檢測技術,如grabcut,掃描全圖找到所有可能的對象,對這些對象使用目標識別演算法,如HOG/SVM,識別出相關物體。

深度學習方法按照end-to-end方式處理這個問題,比如YOLOnet通過卷積神經網路,就能夠實現目標的定位與識別。也就是原始圖像輸入到卷積神經網路中,直接輸出圖像中目標的位置和類別。

執行時間

通常,深度學習需要很長時間訓練,因為深度學習中很多參數都需要遠超正常水平的時間訓練。ResNet大概需要兩周時間從零開始完成訓練,而機器學習只需要從幾秒到幾小時不等的訓練時間。測試所需要的時間就完全相反,深度學習演算法運行需要很少的時間。然而,和KNN(K近鄰,一種機器學習演算法)相比,測試時間會隨著測試數據量的增加而增加。不過並非所有的機器學習演算法都需要很長時間,某些也只需要很少的測試時間。

可解釋性

假定使用深度學習給文章自動評分,你會發現性能會很不錯,並且接近人類評分水準。但它不能解釋為什麼給出這樣的分數。在運行過程中,你可以發現深度神經網路的哪些節點被激活,但你不知道這些神經元是對什麼進行建模以及這每層在幹什麼,所以無法解釋結果。

另一方面,機器學習演算法如決策樹按照規則明確解釋每一步做出選擇的原因,因此像決策樹和線性/邏輯斯蒂回歸這類演算法由於可解釋性良好,在工業界應用很廣泛。

機器學習和深度學習應用場景

Wiki上面介紹了一些機器學習的應用領域:

1. 計算機視覺:如車牌號識別,人臉識別;

2. 信息檢索:如搜索引擎,文本檢索,圖像檢索;

3. 營銷:自動郵件營銷,目標識別;

4. 醫療診斷:癌症診斷,異常檢測;

5. 自然語言處理:語義分析,照片標記;

6. 在線廣告,等等。

下圖總結了機器學習的應用領域,總的來說應用範圍十分廣泛。

谷歌是業內有名的使用機器學習/深度學習的公司,如下圖所示,谷歌將深度學習應用到不同的產品。

即時測試

為了評估你是否真正理解了機器學習和深度學習的區別,這裡將會有一個快速測試,可以在這裡提交答案。你要做的就是分別使用機器學習和深度學習解決下面的問題,並決定哪個方法更好。

【場景1】 假設你要開發一個無人駕駛汽車系統,該系統以相機拍攝的原始數據作為輸入,然後預測方向盤轉動的方向及角度。

【場景2】給定一個人的信用憑證和背景信息,評估是否可以給他發放貸款。

【場景3】創建一個將俄語文本翻譯為印度語的系統。

未來趨勢

前面總結了機器學習和深度學習的區別,本節對二者未來趨勢:

1.鑒於工業界使用數據科學和機器學習呈增加的趨勢,在業務中使用機器學習對那些想要生存下來的公司變得越發重要。同時,了解更多的基礎知識也十分有必要。

2. 深度學習給人越來越多的驚喜,將來也會一直是這樣。深度學習被證明是已有技術中最先進的最好的技術之一。

3.深度學習和機器學習和研究還在繼續,不像以前那樣在學術界發展受限。目前機器學習和深度學習在工業界和學術界呈爆炸式發展。並且受到比以前更多的基金支持,很有可能成為人類發展的關鍵點之一。

尾聲

本文將深度學習和機器學習進行了詳細對比,希望能夠激勵大家去學到更多知識。請參考機器學習路線圖和深度學習路線圖。

【作者簡介】

Faizan Shaikh, 數據科學愛好者,深度學習,醉心於人工智慧。

以上為譯文

本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區組織翻譯。

文章原標題《Deep Learning vs. Machine Learning – the essentialdifferences you need to know!》,作者:Faizan Shaikh,譯者:李烽,審校:段志成-海棠

文章為簡譯,更為詳細的內容,請查看原文

Advertisements

你可能會喜歡