一文讀懂深度學習與機器學習的差異

中興開發者社群發表於2017-11-16

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文640?wx_fmt=png&wxfrom=5&wx_lazy=1

來源:微信公眾號工業智慧化(ID:robotinfo)


如果你經常想讓自己弄清楚機器學習和深度學習的區別,閱讀該文章,我將用通俗易懂的語言為你介紹他們之間的差別。


機器學習和深度學習變得越來越火。突然之間,不管是瞭解的還是不瞭解的,所有人都在談論機器學習和深度學習。無論你是否主動關注過資料科學,你應該已經聽說過這兩個名詞了。


為了展示他們的火熱程度,我在 Google trend 上搜尋了這些關鍵字:


640?wx_fmt=png&wxfrom=5&wx_lazy=1


如果你想讓自己弄清楚機器學習和深度學習的區別,請閱讀本篇文章,我將用通俗易懂的語言為你介紹他們之間的差別。下文詳細解釋了機器學習和深度學習中的術語。並且,我比較了他們兩者的不同,別說明瞭他們各自的使用場景。


什麼是機器學習和深度學習?


讓我們從基礎知識開始:什麼是機器學習?和什麼是深度學習?如果你對此已有所瞭解,隨時可以跳過本部分。


什麼是機器學習?


一言以蔽之,由 Tom Mitchell 給出的被廣泛引用的機器學習的定義給出了最佳解釋。下面是其中的內容:


“計算機程式可以在給定某種類別的任務 T 和效能度量 P 下學習經驗 E ,如果其在任務 T 中的效能恰好可以用 P 度量,則隨著經驗 E 而提高。”


是不是讀起來很繞口呢?讓我們用簡單的例子來分解下這個描述。


示例 1:機器學習和根據人的身高估算體重


假設你想建立一個能夠根據人的身高估算體重的系統(也許你出自某些理由對這件事情感興趣)。那麼你可以使用機器學習去找出任何可能的錯誤和資料捕獲中的錯誤,首先你需要收集一些資料,讓我們來看看你的資料是什麼樣子的:


640?wx_fmt=png


圖中的每一個點對應一個資料,我們可以畫出一條簡單的斜線來預測基於身高的體重。


例如這條斜線:


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


...這些斜線能幫助我們作出預測,儘管這些斜線表現得很棒,但是我們需要理解它是怎麼表現的,我們希望去減少預測和實際之間的誤差,這也是衡量其效能的方法。


深遠一點地說,我們收集更多的資料 (experience),模型就會變得更好。我們也可以通過新增更多變數(例如性別)和新增不同的預測斜線來完善我們的模型。


示例2:颶風預測系統


我們找一個複雜一點的例子。假如你要構建一個颶風預測系統。假設你手裡有所有以前發生過的颶風的資料和這次颶風產生前三個月的天氣資訊。


如果要手動構建一個颶風預測系統,我們應該怎麼做?


640?wx_fmt=png


首先我們的任務是清洗所有的資料找到資料裡面的模式進而查詢產生颶風的條件。


我們既可以將模型條件資料(例如氣溫高於40度,溼度在80-100等)輸入到我們的系統裡面生成輸出;也可以讓我們的系統自己通過這些條件資料產生合適的輸出。


我們可以把所有以前的資料輸入到系統裡面來預測未來是否會有颶風。基於我們系統條件的取值,評估系統的效能(系統正確預測颶風的次數)。我們可以將系統預測結果作為反饋繼續多次迭代以上步驟。


讓我們根據前邊的解釋來定義我們的預測系統:我們的任務是確定可能產生颶風的氣象條件。效能P是在系統所有給定的條件下有多少次正確預測颶風。經驗E是我們的系統的迭代次數。


什麼是深度學習?


深度學習的概念並不新穎。它已經存在好幾年了。但伴隨著現有的所有的炒作,深度的學習越來越受到重視。正如我們在機器學習中所做的那樣,先來看看深度學習的官方定義,然後用一個例子來解釋。


“深度學習是一種特殊的機器學習,通過學習將世界使用巢狀的概念層次來表示並實現巨大的功能和靈活性,其中每個概念都定義為與簡單概念相關聯,而更為抽象的表示則以較不抽象的方式來計算。”


這也有點讓人混亂。下面使用一個簡單示例來分解下此概念。


示例1: 形狀檢測


先從一個簡單的例子開始,從概念層面上解釋究竟發生了什麼的事情。我們來試試看如何從其他形狀中識別的正方形。


640?wx_fmt=png


我們眼中的第一件事是檢查圖中是否有四條的線(簡單的概念)。如果我們找到這樣的四條線,我們進一步檢查它們是相連的、閉合的和相互垂直的,並且它們是否是相等的(巢狀的概念層次結構)。


所以,我們完成了一個複雜的任務(識別一個正方形),並以簡單、不太抽象的任務來完成它。深度學習本質上在大規模執行類似邏輯。


示例2: 貓 vs. 狗


我們舉一個動物辨識的例子,其中我們的系統必須識別給定的影象中的動物是貓還是狗。閱讀下此文,以瞭解深度學習在解決此類問題上如何比機器學習領先一步。



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

現在的你應該已經對機器學習和深度學習有所瞭解,接下來我們將會學習其中一些重點,並比較兩種技術。請加微信公眾號:工業智慧化(robotinfo) 馬雲都在關注


資料依賴性


深度學習與傳統的機器學習最主要的區別在於隨著資料規模的增加其效能也不斷增長。當資料很少時,深度學習演算法的效能並不好。這是因為深度學習演算法需要大量的資料來完美地理解它。另一方面,在這種情況下,傳統的機器學習演算法使用制定的規則,效能會比較好。下圖總結了這一事實。


640?wx_fmt=png


硬體依賴

深度學習演算法需要進行大量的矩陣運算,GPU 主要用來高效優化矩陣運算,所以 GPU 是深度學習正常工作的必須硬體。與傳統機器學習演算法相比,深度學習更依賴安裝 GPU 的高階機器。


特徵處理

特徵處理是將領域知識放入特徵提取器裡面來減少資料的複雜度並生成使學習演算法工作的更好的模式的過程。特徵處理過程很耗時而且需要專業知識。


在機器學習中,大多數應用的特徵都需要專家確定然後編碼為一種資料型別。


特徵可以使畫素值、形狀、紋理、位置和方向。大多數機器學習演算法的效能依賴於所提取的特徵的準確度。


深度學習嘗試從資料中直接獲取高等級的特徵,這是深度學習與傳統機器學習演算法的主要的不同。基於此,深度學習削減了對每一個問題設計特徵提取器的工作。例如,卷積神經網路嘗試在前邊的層學習低等級的特徵(邊界,線條),然後學習部分人臉,然後是高階的人臉的描述。更多資訊可以閱讀神經網路機器在深度學習裡面的有趣應用。


640?wx_fmt=png


問題解決方式


當應用傳統機器學習演算法解決問題的時候,傳統機器學習通常會將問題分解為多個子問題並逐個子問題解決最後結合所有子問題的結果獲得最終結果。相反,深度學習提倡直接的端到端的解決問題。


舉例說明:


假設有一個多物體檢測的任務需要影象中的物體的型別和各物體在影象中的位置。


640?wx_fmt=png

傳統機器學會將問題分解為兩步:物體檢測和物體識別。首先,使用一個邊界框檢測演算法掃描整張圖片找到可能的是物體的區域;然後使用物體識別演算法(例如 SVM 結合 HOG )對上一步檢測出來的物體進行識別。


相反,深度學習會直接將輸入資料進行運算得到輸出結果。例如可以直接將圖片傳給 YOLO 網路(一種深度學習演算法),YOLO 網路會給出圖片中的物體和名稱。


執行時間


通常情況下,訓練一個深度學習演算法需要很長的時間。這是因為深度學習演算法中引數很多,因此訓練演算法需要消耗更長的時間。最先進的深度學習演算法 ResNet完整地訓練一次需要消耗兩週的時間,而機器學習的訓練會消耗的時間相對較少,只需要幾秒鐘到幾小時的時間。


但兩者測試的時間上是完全相反。深度學習演算法在測試時只需要很少的時間去執行。如果跟 k-nearest neighbors(一種機器學習演算法)相比較,測試時間會隨著資料量的提升而增加。不過這不適用於所有的機器學習演算法,因為有些機器學習演算法的測試時間也很短。


可解釋性


至關重要的一點,我們把可解釋性作為比較機器學習和深度學習的一個因素。


我們看個例子。假設我們適用深度學習去自動為文章評分。深度學習可以達到接近人的標準,這是相當驚人的效能表現。但是這仍然有個問題。深度學習演算法不會告訴你為什麼它會給出這個分數。當然,在數學的角度上,你可以找出來哪一個深度神經網路節點被啟用了。但是我們不知道神經元應該是什麼模型,我們也不知道這些神經單元層要共同做什麼。所以無法解釋結果是如何產生的。


另一方面,為了解釋為什麼演算法這樣選擇,像決策樹(decision trees)這樣機器學習演算法給出了明確的規則,所以解釋決策背後的推理是很容易的。因此,決策樹和線性/邏輯迴歸這樣的演算法主要用於工業上的可解釋性。


機器學習和深度學習用於哪些領域?


維基百科上關於機器學習的文章概述了所有使用機器學習的領域。這些包括:


  • 計算機視覺 用於車牌識別和麵部識別等的應用。


  • 資訊檢索 用於諸如搜尋引擎的應用 - 包括文字搜尋和影象搜尋。


  • 市場營銷 針對自動電子郵件營銷和目標群體識別等的應用。


  • 醫療診斷 諸如癌症識別和異常檢測等的應用。


  • 自然語言處理,如情緒分析和照片標記等的應用。


640?wx_fmt=png


上圖恰當地總結了機器學習的應用領域,涵蓋了整個機器智慧的更廣泛的話題。


使用機器學習/深度學習的公司的一個主要例子是Google。


640?wx_fmt=png


在上圖中,你可以看到 Google 正在將機器學習應用於其各種產品。機器學習/深度學習的應用是無盡的 - 你僅需尋找正確的時機!


突擊測試

為了評估你是否真的瞭解這個區別,我們將進行一次測驗。 你可以在這個帖子中釋出你的答案。


請務必涉及以下步驟,以保證是完整的對各個場景進行回答。


  • 你將如何使用機器學習解決以下問題?

  • 你如何使用深度學習解決以下問題?

  • 結論:哪種方法是更好的?


場景1


你必須建立一個用於自動駕駛車輛的軟體元件。你構建的系統應該從相機中獲取原始畫素資料,並預測你應該引導車輪的角度是多少。


場景2


給定一個人的信用和背景資訊,你的系統應該評估出此人是否應該有資格獲得貸款。


場景3


你必須建立一個可以將俄語訊息翻譯成印地語訊息的系統,以便俄語代表能夠與當地的群眾通訊。


在此找到針對上述問題的各種資料科學家的討論記錄和觀點。


未來發展趨勢

本文概述了機器學習和深度學習及其差異。在本節中,我將分享我對機器學習和深度學習未來發展的觀點。


  • 首先,隨著業內對資料科學和機器學習使用的日益增長的趨勢,對於每個想要生存下來的公司來說,重視機器學習將變得非常重要。蘋果正在 iPhone X 中使用機器學習,這標誌著這項技術的發展方向。


  • 深入學習讓我們每天都感到驚訝,並將在不久的將來繼續如此。這是因為深度學習是被證明為最先進的效能最好的技術之一。


  • 針對機器學習和深度學習的研究將是持續的。但與前幾年的研究僅限於學術界不同的是,機器學習和深度學習方面的研究將在業界和學術界都有爆發式的發展。而且擁有比以往更多的資助,更有可能成為人類整體發展的主旋律。

    640?wx_fmt=jpeg

相關文章