簡單來說,深度學習是大型且多層的人工神經網路。我們可以想像神經網路("Neural Nnetwork, NN")是一種有向無環圖,此圖可拆分成三個部分來看: 1. 輸入層接收信號向量;2. 一個或多個隱藏層處理前一層的輸出; 3. 輸出層統合之前所有隱藏層的處理結果。神經網路的初始概念可以追溯到半個多世紀前,但是因為以前的電腦性能的侷限還有數據資料處理規模的侷限,所以神經網路無法在之前發揮效果。
一個大型且深層的神經網路擁有更多層級和每層則具備更多的節點,這導致了大型且深層的神經網路需要處理指數級增長的網路參數。沒有足夠的數據,我們無法有效地讓神經網路學習參數。沒有強大的電腦,學習過程將會過於緩慢。這裡有一個有趣的圖表,展示了數據規模與模型性能之間的關係,由Andrew Ng在他的 "How Scale is Enabling Deep Learning" 演講中提出。在小型數據集上,傳統機器學習演算法(回歸、隨機森林、支持向量機等)或統計學習演算法表現出色,但一旦數據規模大幅增加,大型神經網路的表現就會超越其他方法。部分原因是相比傳統的機器學習模型,神經網路模型擁有更多的參數,並且有能力學習複雜的非線性特徵模型。因此,我們期望模型能夠自行選擇最有用的特徵,而不需要太多專家參與的人工特徵調整。
不同的深度學習模型使用不同的神經網路架構,以下介紹三種最常見的架構。
卷積神經網路(Convolutional Neural Network),簡稱「CNN」,是一種前饋人工神經網路,其神經元之間的連接模式受到視覺皮層系統組織的啟發。初級視覺皮層(V1)從視網膜接收的原始視覺輸入中進行邊緣檢測。次級視覺皮層(V2),也稱為紋狀皮層前區,接收來自V1的邊緣特徵,並提取簡單的視覺屬性,如方向、空間頻率和顏色。視覺區V4處理更複雜的物體屬性。所有處理過的視覺特徵最終流入最後的邏輯單元——下顳回(IT),用於物體識別。V1和V4之間的捷徑啟發了一種特殊類型的CNN,即具有非相鄰層之間連接的殘差網路(Residual Net)([1] He等人,2016年),其中包含「殘差塊」,支持將某一層的部分輸入傳遞到兩層之後的網路。
序列模型通常被設計用來將輸入序列轉換為存在於不同領域的輸出序列。循環神經網路(Recurrent Neural Network),簡稱「RNN」,即是採用序列模型,並在手寫識別、語音識別和機器翻譯等問題上展現出巨大的進步。
循環神經網路模型天生具有處理長序列數據的能力,並能處理隨時間擴展的上下文任務。該模型在每個時間步驟處理序列中的一個元素。計算後,新更新的單元狀態會傳遞到下一個時間步驟,以促進下一個元素的計算。想像一下,當一個RNN模型逐字閱讀所有維基百科文章時,它能夠根據上下文預測接下來的詞。
自動編碼器來自於無監督學習。它被設計用來學習高維數據集的低維表示,類似於主成分分析(PCA)所做的。自動編碼器模型試圖學習一個近似函數。f(x)≈xf(x)≈x 來重現輸入數據。然而,它受到中間一個節點數量非常少的瓶頸層的限制。在容量有限的情況下,模型被迫形成一個非常高效的數據編碼,這就是自動編碼器學到的低維代碼。