人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知器MLP、CNN、RNN、LSTM等。不管是哪種網絡結構,其根本還是從傳統的神經網絡、多層感知機發展而來的,介紹如下:
MLP-Multilayer Perceptron 多層感知器
也叫人工神經網絡(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱層,最簡單的MLP只含一個隱層,即三層的結構,如下圖:
多層感知機層與層之間是全連接的。多層感知機最底層是輸入層,中間是隱藏層,最後是輸出層。
輸入層:你輸入什麼就是什麼,比如輸入是一個n維向量,就有n個神經元。
隱藏層:其神經元與輸入層是全連接的,假設輸入層用向量X表示,則隱藏層的輸出就是 f (W1X+b1),W1是權重(也叫連接係數),b1是偏置,函數f 可以是常用的sigmoid函數或者tanh函數(如下圖)。
輸出層:隱藏層到輸出層可以看成是一個多類別的邏輯回歸,也即softmax回歸,所以輸出層的輸出就是softmax(W2X1+b2),X1表示隱藏層的輸出f(W1X+b1)。
函數是sigmoid函數的一種變體,它的取值範圍為
,而不是sigmoid函數的
DNN-可以理解為有很多隱藏層的神經網絡,有時也叫做多層感知機(Multi-Layer perceptron,MLP)
CNN-Convolutional Neural Networks 卷積神經網絡
由具有可學習的權重和偏置常量(biases)的神經元組成。每個神經元都接收一些輸入,並做一些點積計算,輸出是每個分類的分數
卷積神經網絡默認輸入是圖像,可以讓我們把特定的性質編碼入網絡結構,使是我們的前饋函數更加有效率,並減少了大量參數。
卷積神經網絡利用輸入圖片的特點,把神經元設計成三個維度 :width, height, depth(注意這個depth不是神經網絡的深度,而是用來描述神經元的) 。比如輸入的圖片大小是 32 × 32 × 3 (rgb),那麼輸入神經元就也具有 32×32×3 的維度。下面是圖解:
一個卷積神經網絡由很多層組成,它們的輸入是三維的,輸出也是三維的,有的層有參數,有的層不需要參數。
卷積神經網絡通常包含以下幾種層:
卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成,每個卷積單元的參數都是通過反向傳播算法優化得到的。卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網絡能從低級特徵中迭代提取更複雜的特徵。卷積層的神經元也是三維的,所以也具有深度。卷積層的參數包含一系列過濾器(filter),每個過濾器訓練一個深度,有幾個過濾器輸出單元就具有多少深度。具體如下圖所示,樣例輸入單元大小是32×32×3, 輸出單元的深度是5, 對於輸出單元不同深度的同一位置,與輸入圖片連接的區域是相同的,但是參數(過濾器)不同。
雖然每個輸出單元只是連接輸入的一部分,但是值的計算方法是沒有變的,都是權重和輸入的點積,然後加上偏置,這點與普通神經網絡是一樣的,如下圖所示:
線性整流層(Rectified Linear Units layer, ReLU layer),這一層神經的活性化函數(Activation function)使用線性整流(Rectified Linear Units, ReLU)。池化層(Pooling layer),通常在卷積層之後會得到維度很大的特徵,將特徵切成幾個區域,取其最大值或平均值,得到新的、維度較小的特徵。最常見的池化層是規模為2*2, 步幅為2,對輸入的每個深度切片進行下採樣。每個MAX操作對四個數進行,如下圖所示:
池化操作將保存深度大小不變。如果池化層的輸入單元大小不是二的整數倍,一般採取邊緣補零(zero-padding)的方式補成2的倍數,然後再池化。
全連接層( Fully-Connected layer), 把所有局部特徵結合變成全局特徵,用來計算最後每一類的得分。一個卷積神經網絡各層應用實例:
RNN-Recurrent Neural Networks, 循環神經網絡
人對一個問題的思考不會完全從頭開始。比如你想對電影中的每個片段去做事件分類,傳統的神經網絡是很難通過利用前面的事件信息來對後面事件進行分類。循環神經網絡(下面簡稱RNNs)可以通過不停的將信息循環操作,保證信息持續存在,從而解決上述問題。RNNs如下圖所示
將RNNs的自循環結構展開,像是將同一個網絡複製並連成一條線的結構,將自身提取的信息傳遞給下一個繼承者,如下圖所示。
LSTM-Long Short Term Memory networks
LSTM特殊的RNNs網絡結構, 該網絡設計出來是為了解決長依賴問題。
在標準的RNN中,重複模塊將具有非常簡單的結構,例如單個tanh層。標準的RNN網絡如下圖所示:
LSTMs也具有這種鏈式結構,但是它的重複單元內部有四個網絡層。LSTMs的結構如下圖所示。
各個符號的含義:黃色類似於激活函數操作,粉色圓圈表示點操作,單箭頭表示數據流向,箭頭合併表示向量的合併(concat)操作,箭頭分叉表示向量的拷貝操作。
LSTMs的核心是細胞狀態,用貫穿細胞的水平線表示。
細胞狀態像傳送帶一樣。它貫穿整個細胞卻只有很少的分支,這樣能保證信息不變的流過整個RNNs。細胞狀態如下圖所示:
LSTM網絡能通過一種被稱為門的結構對細胞狀態進行刪除或者添加信息。
門能夠有選擇性的決定讓哪些信息通過。其實門的結構很簡單,就是一個sigmoid層和一個點乘操作的組合。如下圖所示
因為sigmoid層的輸出是0-1的值,這代表有多少信息能夠流過sigmoid層。0表示都不能通過,1表示都能通過。
一個LSTM裡面包含三個門來控制細胞狀態,這三個門分別稱為忘記門、輸入門和輸出門。
忘記門
:LSTM的第一步就是決定細胞狀態需要丟棄哪些信息。這部分操作是通過一個稱為忘記門的sigmoid單元來處理的。它通過查看
和
信息來輸出一個0-1之間的向量,該向量裡面的0-1值表示細胞狀態
中的哪些信息保留或丟棄多少。0表示不保留,1表示都保留。忘記門如下圖所示。
輸入門:
下一步是決定給細胞狀態添加哪些新的信息。這一步又分為兩個步驟,首先,利用
和
通過一個稱為輸入門的操作來決定更新哪些信息。然後利用
和
通過一個tanh層得到新的候選細胞信息
,這些信息可能會被更新到細胞信息中。這兩步描述如下圖所示。
下面將更新舊的細胞信息
,變為新的細胞信息
。更新的規則就是通過忘記門選擇忘記舊細胞信息的一部分,通過輸入門選擇添加候選細胞信息
的一部分得到新的細胞信息
。更新操作如下圖所示
:
輸出門:
更新完細胞狀態後需要根據輸入的
和
來判斷輸出細胞的哪些狀態特徵,這裡需要將輸入經過一個稱為
輸出門的sigmoid層
得到判斷條件,然後將細胞狀態經過tanh層得到一個-1~1之間值的向量,該向量與輸出門得到的判斷條件相乘就得到了最終該RNN單元的輸出。該步驟如下圖所示
拿語言模型來舉例說明,在預測動詞形式的時候,我們需要通過輸入的主語是單數還是複數來推斷輸出門輸出的預測動詞是單數形式還是複數形式。
神經網絡的基礎在於神經元。神經元是以生物神經系統的神經細胞為基礎的生物模型。把神經元數學化,從而產生了神經元數學模型。大量的形式相同的神經元連結在—起就組成了神經網絡。神經網絡是一個高度非線性動力學系統。