深度學習是機器學習的一個子領域,它采用了一個特定的模型:一族通過某種方式連接起來的簡單函數。由于這類模型的結構是受到人類大腦結構的啟發而創造出來的,因此我們通常把它們稱為神經網絡(neural networks)。神經網絡中的函數鏈條能夠將復雜的概念分解為多個層次的更簡單的概念,這就是深度學習的核心思想。例如,深度學習模型的第一層,可以用來學習如何獲取原始數據,并用基本的方式來組織它(如將多個點組合成直線)。后面每一層都將前面一層組織成更高級、更抽象的概念。我們把學習這種抽象概念的過程稱作表征學習(representation learning)。
深度學習的神奇之處在于,我們并不需要事先了解中間層的概念具體是什么。如果選擇的模型層次足夠多(即深度足夠深),并提供足夠數量的訓練數據,它就能在訓練過程中逐步將原始數據組織為越來越高級的概念。那么訓練算法怎么知道應當使用哪些概念呢?它并不需要知道。它只需要找到能夠更好地匹配訓練樣本的數據組織方式就可以了。至于生成的表征是不是能夠符合人們對數據的印象,那就無法保證了。圖1-9展示了如何將表征學習融入深度學習的流程中。

圖1-9 深度學習和表征學習
深度學習的這種強大能力是有代價的:深度學習模型需要學習的權重數量非常巨大。回顧一下前面處理身高-體重數據集的簡單模型ax + b,這個模型只有兩個權重需要學習。而用于處理圖像標簽應用的深度學習模型,則可能有上百萬個權重。因此,深度學習需要更大的數據集、更強的計算能力以及更多的訓練實踐。深度學習與傳統機器學習各有其適用的情形。在下列幾種情形中,深度學習是一個不錯的選擇。
- 應用的數據格式是非結構化的。圖像、音頻和書面語言都是深度學習的理想處理對象。采用簡單模型來學習這些數據也不是不可能,但通常需要非常復雜的預處理過程。
- 有大量的可用數據,或者有辦法獲得更多數據。通常,模型越復雜,訓練所需的數據就越多。
- 有足夠強的計算能力或充足的時間。深度學習模型在訓練和評估過程中都需要更多的計算量。
而在以下的情形中,應當選擇參數較少的傳統模型。
- 應用的數據是結構化的。如果輸入看起來更像是數據庫記錄,那么通常可以直接應用簡單模型。
- 想要一個描述性的模型。使用簡單模型,能夠看到最終學習到的具體函數,因而可以直接檢查不同的輸入對輸出的影響。這樣做能讓開發者更方便地了解應用在真實世界中的工作情況。但是在深度學習模型中,特定輸入與最終輸出之間隔著綿長曲繞的神經連接,使得我們很難對模型做出描述或解釋。
由于深度學習指的是模型類型,因此前面講到的幾個不同的機器學習分支,都可以應用它。例如,在監督學習中,根據擁有的訓練數據的不同,我們可以在簡單模型或深度學習模型之間做出選擇。