理解深度神經網絡——DNN(Deep Neural Networks)

 

深度神經網絡——DNN 是深度學習的基礎。

要理解DNN最好先搞清楚它的模型。本篇博文主要對DNN的模型與前向傳播算法做一個易於理解的總結。

1.從感知機到神經網絡的理解。

感知機是這麼一種模型:一個有若干輸入一個輸出的模型。看下圖:

 

輸出輸入之間學習到一個線性關係,得到中間輸出結果:

接着是一個神經元激活函數

從而得到想要的結果1或者-1.

這個模型只能用於二元分類,且無法學習比較複雜的非線性模型,因此在工業界無法使用。

而神經網絡則在感知機的模型上做了擴展,總結下主要有三點:

1. 加入了隱藏層,隱藏層可以有多層,增強模型的表達能力,如下圖實例,當然增加了這麼多隱藏層模型的複雜度也增加了好多。

2. 輸出層的神經元也可以不止一個輸出,可以有多個輸出,這樣模型可以靈活的應用於分類迴歸,以及其他的機器學習領域比如降維和聚類等。多個神經元輸出的輸出層對應的一個實例如下圖,輸出層現在有4個神經元了。

2. 對激活函數做擴展,感知機的激活函數是sign(z)雖然簡單但是處理能力有限,因此神經網絡中一般使用的其他的激活函數,比如我們在邏輯迴歸裏面使用過的Sigmoid函數,即:

還有後來出現的tanx, softmax,和ReLU等。通過使用不同的激活函數,神經網絡的表達能力進一步增強。以後會有專門的激活函數專欄。

2.DNN的基本結構

神經網絡是基於感知機的擴展,而DNN可以理解爲有很多隱藏層的神經網絡。多層神經網絡和深度神經網絡DNN其實也是指的一個東西,DNN有時也叫做多層感知機(Multi-Layer perceptron,MLP)。

從DNN按不同層的位置劃分,DNN內部的神經網絡層可以分爲三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸入層,最後一層是輸出層,而中間的層數都是隱藏層。

層與層之間是全連接的,也就是說,第i層的任意一個神經元一定與第i+1層的任意一個神經元相連。雖然DNN看起來很複雜,但是從小的局部模型來說,還是和感知機一樣,即一個線性關係:

由於DNN層數多,則我們的線性關係係數w和偏倚b的數量也就是很多了。具體的參數在DNN是如何定義的呢?

3 DNN前向傳播算法數學原理

4 DNN前向傳播算法

所謂的DNN前向傳播算法就是利用若干個權重係數矩陣W,偏倚向量b來和輸入值向量x進行一系列線性運算和激活運算,從輸入層開始,一層層的向後計算,一直到運算到輸出層,得到輸出結果爲值。

輸入: 總層數L,所有隱藏層和輸出層對應的矩陣W,偏倚向量b,輸入值向量x

輸出:輸出層的輸出。

5 DNN反向傳播算法要解決的問題

6 DNN反向傳播算法的基本思路

在進行DNN反向傳播算法前,我們需要選擇一個損失函數,來度量訓練樣本計算出的輸出和真實的訓練樣本輸出之間的損失。

DNN可選擇的損失函數有不少,爲了專注算法,這裏使用最常見的均方差來度量損失。

即對於每個樣本,我們期望最小化下式:

損失函數有了,用梯度下降法迭代求解每一層的w,b。

 

7 DNN反向傳播算法過程

由於梯度下降法有批量(Batch),小批量(mini-Batch),隨機三個變種,爲了簡化描述,這裏我們以最基本的批量梯度下降法爲例來描述反向傳播算法。實際上在業界使用最多的是mini-Batch的梯度下降法。區別僅僅在於迭代時訓練樣本的選擇。

8 均方差損失函數+Sigmoid激活函數的問題

在講反向傳播算法時,我們用均方差損失函數和Sigmoid激活函數做了實例,首先我們就來看看均方差+Sigmoid的組合有什麼問題。

首先我們回顧下Sigmoid激活函數的表達式爲:

 

9 交叉熵損失函數+Sigmoid激活函數改進DNN算法收斂速度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章