[AI開發]一個例子說明機器學習和深度學習的關系


深度學習現在這么火熱,大部分人都會有‘那么它與機器學習有什么關系?’這樣的疑問,網上比較它們的文章也比較多,如果有機器學習相關經驗,或者做過類似數據分析、挖掘之類的人看完那些文章可能很容易理解,無非就是一個強調‘端到端’全自動處理,一個在特征工程上需要耗費大量時間和精力(半自動處理);一個算法更復雜、需要更多的數據和算力,能解決更復雜的問題,一個算法可解釋性強,在少量數據集上就可以到達一定的效果。但是如果對於一個之前並沒有多少機器學習相關背景、半路出道直接殺入深度學習領域的初學者來講,可能那些文章太過理論。本篇文章嘗試使用傳統機器學習和深度學習兩種不同的方法去解決同一個問題,告訴你它們之間有哪些聯系。

首先需要指出的是,主流定義上機器學習包含深度學習,后者是前者的一個分支。機器學習中有不同的算法,比如線性回歸、邏輯回歸、SVM、決策樹、神經網絡等等。由於使用神經網絡算法的機器學習比較特殊,所以單獨命名這類機器學習為‘深度學習’(為什么叫深度,后面詳細說)。因此,比較兩者聯系更准確的表述應該是:傳統機器學習和深度學習的關系(這里的傳統機器學習不包含使用神經網絡算法這一類)。另外需要明確的是,在處理監督學習問題中,機器學習不管采用什么算法,解決問題最終方式都是一致的:即找出X->Y的映射關系。比如你的模型用線性回歸或者神經網絡算法,最后都是要從訓練素材中找輸入和輸出之間的映射關系。

現在就以一個圖片二分類的任務為例,分別使用基於神經網絡的深度學習和基於邏輯回歸算法的傳統機器學習兩種方式解決,讓我們看看它們在解決問題上的區別和聯系。這個例子並沒有源代碼,我希望用圖片來說明問題。

 

如上圖,有一堆風景照片,我們需要訓練一個模型來判斷給定圖片是否屬於綠植風景照,這是一個二分類問題,綠植風景照屬於第一類,其他屬於第二類。輸入一張圖片,模型輸出圖片類型。現在我們分別用深度學習和傳統機器學習的方法嘗試去解決該問題。這里需要明確的是,對於圖片分類而言(或其他大部分跟CV有關的應用),不管是用深度學習還是傳統機器學習,都是需要先得到每張圖片的特征表示(特征向量),特征向量是一張圖片的信息壓縮表示,如果不太了解何為圖像特征,可以參考這篇博客:https://www.cnblogs.com/xiaozhi_5638/p/11512260.html,里面介紹了圖像特征的作用和傳統圖像特征提取方式。

 

深度學習

對於深度學習而言,這個圖片二分類問題太簡單了,網上深度學習入門教程一大堆,比如貓狗識別跟這個差不多。在神經網絡開始,我們使用幾個(卷積層-池化層)的block塊,提取圖片的高維特征,然后再使用幾個連續的(卷積層)塊提取低維特征。在神經網絡末尾,我們再加一個MLP全連接網絡做為特征分類器,分類器最后包含一個輸出節點(使用Sigmoid激活函數),代表預測為綠植風景照的概率,概率越接近1代表它為綠植風景照的可信度越高。這個網絡結構可以參考2012年將深度學習帶入大眾視野的AlexNet網絡。

如上圖,圖片直接輸入到模型,神經網絡負責特征提取,並且對特征進行分類,最后輸出概率值。我們可以看到,對於深度學習方式而言,我們在預測一張圖的分類時,只需要將圖片傳給神經網絡(可能需要事先調整一下圖片尺寸),然后在神經網絡的輸出端就可以直接得到它所屬分類的概率值。這種全自動、無需人工干預的工作方式我們稱之為“端到端”(End-To-End)的方式。我們可以將上述網絡結構(like-alexnet)使用python代碼構建出來,然后圖像化顯示:

如上圖所示,神經網絡在處理該圖片分類任務時,從開始到結束一條龍服務。神經網絡接收一張214*214大小的3通道彩圖,矩陣形狀為(214,214,3)。然后經過特征提取,得到一個256維的特征向量。最后進行特征分類,直接輸出它的概率。注意上圖為了簡化結構,神經網絡僅僅包含必要的卷積層、池化層以及全連接層,實際情況可能還需要歸一化、Dropout等結構。(忽略上圖Input和Output中的?號,它表示batch-size,即穿過神經網絡的圖片數量)需要說明的是,隨着問題的復雜性加大(比如圖片特征不明顯,分類數量增多,數據復雜等等),我們還可以靈活調整上圖中神經網絡的結構,圖中是最簡單的直線型網絡結構(Sequential結構),我們可以設計出來分支結構、循環結構、殘差結構,這些都是可以用來提取更復雜的特征、解決更復雜的問題,當然這樣的話訓練需要的數據、算力、時間相應就會增加。關於神經網絡的輸入輸出可以參考這篇博客:https://www.cnblogs.com/xiaozhi_5638/p/12591612.html

 

傳統機器學習

看完深度學習解決該問題的流程,我們再來看一下如何使用傳統機器學習來解決該問題。傳統機器學習做不到‘端到端’的全自動處理,對於一個具體的任務需要拆分成幾步去解決,第一步就是特征工程,(以圖片分類任務為例)需要人為確定使用哪種特征以及特征提取方式,第二步才是對已有特征進行訓練,得到一個特征分類模型。這里有兩個問題,一是人為確定使用哪種特征,需要專業人士判斷;而是知道要使用什么特征后,如何去提取?相比深度學習而言,傳統機器學習可以總結為‘半自動’模式:

如上圖所示,傳統機器學習在解決當前具體問題時,需要人工確認使用什么特征,以及提取該特征的方法,最后才能用得到的特征去訓練機器學習模型去做分類。那么這里有個比較重要:選擇什么特征更有利於問題的解決呢?既要考慮特征對原數據的代表性,又要考慮特征提取的可行性。具體到當前圖片二分類任務時,我們可以看到數據集中,綠植風景照大部分都是綠色,和其他圖片在像素分布上有很大差異,因此我們可以選取‘顏色分布’來做為解決本次任務的圖像特征,具體采用‘顏色直方圖’的方式去生成每張圖片的特征向量。

顏色直方圖簡單理解就是統計圖片中每種顏色所占比例,RGB圖片每個通道顏色值在0-255之間,如果我們將這個區間分成10等份(子區間)然后計算每個子區間顏色占比(和為1),那么就可以得到3個10維向量,將這3個向量合並組成一個30維的向量,那么這個30維向量就是基於顏色分布的圖像特征。由於這種方式提取到的特征沒有考慮顏色在圖片中的位置分布,因此通常做法是,先將一張圖切成若干等份,然后分別計算單個圖片區域的特征向量,最后將所有圖片區域的特征向量拼接起來得到最終的圖像特征。如果將圖片切成5份,那么最終得到的特征向量維度為:5*3*10=150,這個特征向量從一定程度上代表了顏色位置分布。

如上圖所示,利用顏色直方圖可以為每張圖片提取到一個150維的特征向量,后面我們再用這些特征向量訓練機器學習模型,由於是一個二分類問題,我們直接選用‘邏輯回歸’算法即可。需要明確的是,一些常見的圖像特征點提取方法比如SIFT、SURF等等在這里是無效的,因為這些方式提取得到的特征向量更側重描述原圖像中像素之間的局部聯系,很顯然對於我們這個圖片二分類任務而言,根據顏色分布提取到的特征更適合解決本問題。這也同時說明,在傳統機器學習中的特征提取環節非常重要,特征工程也是制約傳統機器學習發展的一大瓶頸。

 

看完上面的舉例,現在總結一下:

深度學習在解決問題的時候采用‘端到端’的全自動模式,中間無需人為干預,能夠自動從原有數據中提取到有利於解決問題的特征,該部分原理相對來講‘可解釋性弱’。同時,神經網絡的結構多變,可以根據問題的復雜程度靈活調整網絡結構,更復雜的網絡結構需要更多更豐富的訓練數據去擬合參數,相對應對算力的要求也高一些。而對於傳統機器學習來講,一個很重要的工作就是特征工程,我們必須人工篩選(挑選)什么特征有利於問題的解決,比如本篇文章中的例子,像素分布就是一個很好的特征,同時我們還需要人工去提取這些特征,這部分原理相對來講‘可解釋性更強’。對於特征工程這塊工作而言,它對人工專業性要求較高,因為對於稍微復雜的問題,很難識別出數據集的哪些特征有利於解決問題,尤其像圖片、語音、文本等等非結構化數據,這個也是制約傳統機器學習發展的瓶頸之一。不管怎樣,其實深度學習和傳統機器學習解決問題的思路基本是一致的,我們可以看到本文中兩種解決問題的過程中都會生成一個特征向量,一個256維,一個150維,最后根據特征向量分類。有問題的朋友歡迎留言討論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM