什么是深度學(xué)習(xí)
深度學(xué)習(xí)有如下一些眾所周知且被廣泛接受的定義。
(1)深度學(xué)習(xí)是機器學(xué)習(xí)的子集。
(2)深度學(xué)習(xí)使用級聯(lián)的多層(非線性)處理單元,稱為人工神經(jīng)網(wǎng)絡(luò)(ANN),以及受大腦結(jié)構(gòu)和功能(神經(jīng)元)啟發(fā)的算法。每個連續(xù)層使用前一層的輸出作為輸入。
(3)深度學(xué)習(xí)使用ANN進行特征提取和轉(zhuǎn)換,處理數(shù)據(jù),查找模式和開發(fā)抽象。
(4)深度學(xué)習(xí)可以是監(jiān)督的(如分類),也可以是無監(jiān)督的(如模式分析)。
(5)深度學(xué)習(xí)使用梯度下降算法來學(xué)習(xí)與不同抽象級別相對應(yīng)的多個級別的表示,由此構(gòu)成概念的層次結(jié)構(gòu)。
(6)深度學(xué)習(xí)通過學(xué)習(xí)將世界表示為概念的嵌套層次來實現(xiàn)強大的功能和靈活性,每個概念都是根據(jù)更簡單的概念定義的,更抽象的表示是根據(jù)較不抽象的概念計算來的。
例如,對于圖像分類問題,深度學(xué)習(xí)模型使用其隱藏層架構(gòu)以增量方式學(xué)習(xí)圖像類。
首先,它自動提取低層級的特征,例如識別亮區(qū)或暗區(qū);之后,提取高層級特征(如邊緣);其次,它會提取最高層級的特征(如形狀),以便對它們進行分類。
每個節(jié)點或神經(jīng)元代表整個圖像的某一細微方面。如果將它們放在一起,就描繪了整幅圖像。而且它們能夠?qū)D像完全表現(xiàn)出來。此外,網(wǎng)絡(luò)中的每個節(jié)點和每個神經(jīng)元都被賦予權(quán)重。這些權(quán)重表示神經(jīng)元的實際權(quán)重,它與輸出的關(guān)聯(lián)強度相關(guān)。這些權(quán)重可以在模型開發(fā)過程中進行調(diào)整。
經(jīng)典學(xué)習(xí)與深度學(xué)習(xí)
(1)手工特征提取與自動特征提取。為了用傳統(tǒng)ML技術(shù)解決圖像處理問題,最重要的預(yù)處理步驟是手工特征(如HOG和SIFT)提取,以降低圖像的復(fù)雜性并使模式對學(xué)習(xí)算法更加可見,從而使其更好地工作。深度學(xué)習(xí)算法最大的優(yōu)點是它們嘗試以增量方式訓(xùn)練圖像,從而學(xué)習(xí)低級和高級特征。這消除了在提取或工程中對手工制作的特征的需要。
(2)部分與端到端解決方案。傳統(tǒng)的ML技術(shù)通過分解問題,首先解決不同的部分,然后將結(jié)果聚合在一起提供輸出來解決問題,而深度學(xué)習(xí)技術(shù)則使用端到端方法來解決問題。例如,在目標(biāo)檢測問題中,諸如SVM的經(jīng)典ML算法需要一個邊界框目標(biāo)檢測算法,該算法將識別所有可能的目標(biāo),將HOG作為ML算法的輸入,以便識別正確的目標(biāo)。但深度學(xué)習(xí)方法(如YOLO網(wǎng)絡(luò))將圖像作為輸入,并提供對象的位置和名稱作為輸出。
(3)訓(xùn)練時間和高級硬件。與傳統(tǒng)的ML算法不同,深度學(xué)習(xí)算法由于有大量的參數(shù)且數(shù)據(jù)集相對龐大,需要很長時間來訓(xùn)練,因此應(yīng)該始終在GPU等高端硬件上訓(xùn)練深度學(xué)習(xí)模型,并記住訓(xùn)練一個合理的時間,因為時間是有效訓(xùn)練模型的一個非常重要的方面。
(4)適應(yīng)性和可轉(zhuǎn)移性。經(jīng)典的ML技術(shù)有很大的局限性,而深度學(xué)習(xí)技術(shù)則應(yīng)用廣泛,且適用于不同的領(lǐng)域。其中很大一部分用于轉(zhuǎn)移學(xué)習(xí),這使得人們能夠?qū)㈩A(yù)先訓(xùn)練的深層網(wǎng)絡(luò)用于同一領(lǐng)域內(nèi)的不同應(yīng)用。例如,在圖像處理中,通常使用預(yù)先訓(xùn)練的圖像分類網(wǎng)絡(luò)作為特征提取的前端來檢測目標(biāo)和分割網(wǎng)絡(luò)。
現(xiàn)在來看看ML和深度學(xué)習(xí)模型在圖像分類(如貓和狗的圖像)方面的區(qū)別。傳統(tǒng)的ML有特征提取和分類器,可以用來解決任何問題,如圖10-1所示。
圖10-1 傳統(tǒng)的和經(jīng)典的ML
圖10-2所示的是深度學(xué)習(xí)網(wǎng)絡(luò),通過深度學(xué)習(xí),可以看到前面討論過的隱藏層以及實際決策過程。
圖10-2 深度學(xué)習(xí)網(wǎng)絡(luò)
10.1.3 為何需要深度學(xué)習(xí)
如前所述,如果有更多的數(shù)據(jù),那么最好的選擇就是使用性能更好的深度網(wǎng)絡(luò)來處理。很多時候,使用的數(shù)據(jù)越多,結(jié)果就越準(zhǔn)確。經(jīng)典的ML方法需要一組復(fù)雜的ML算法,而更多的數(shù)據(jù)只會影響其精度,需要使用復(fù)雜的方法來彌補較低準(zhǔn)確性的缺陷。此外,學(xué)習(xí)也受到影響——當(dāng)添加更多的訓(xùn)練數(shù)據(jù)來訓(xùn)練模型時,學(xué)習(xí)幾乎在某個時間點停止。圖10-3所示的圖形描述了深度學(xué)習(xí)算法與傳統(tǒng)的機器學(xué)習(xí)算法的性能差異。
圖10-3 深度學(xué)習(xí)算法與經(jīng)典的機器學(xué)習(xí)算法的性能比較
本文摘自《Python圖像處理實戰(zhàn)》