深度神經網絡 DNN

深度神經網絡(Deep Neural Networks, 如下簡稱DNN)是深度學習的基礎,而要理解DNN,首先咱們要理解DNN模型,下面咱們就對DNN的模型與前向傳播算法作一個總結。 算法

https://zhuanlan.zhihu.com/p/29815081 網絡

   

1 從感知機到神經網絡 機器學習

   

感知機的模型,它是一個有若干輸入和一個輸出的模型,以下圖: 函數

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

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

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

   

這個模型只能用於二元分類,且沒法學習比較複雜的非線性模型,所以在工業界沒法使用。而神經網絡則在感知機的模型上作了擴展,總結下主要有三點: 3d

   

(1)加入了隱藏層,隱藏層能夠有多層,加強模型的表達能力,以下圖實例,固然增長了這麼多隱藏層模型的複雜度也增長了好多。 blog

   

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

   

還有後來出現的tanh, softmax,和ReLU等。經過使用不一樣的激活函數,神經網絡的表達能力進一步加強。

   

   

   

2 DNN的基本結構

   

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

   

從DNN按不一樣層的位置劃分,DNN內部的神經網絡層能夠分爲三類,輸入層隱藏層輸出層,以下圖示例,通常來講第一層是輸入層,最後一層是輸出層,而中間的層數都是隱藏層

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

   

   

   

   

   

   

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

   

   

   

   

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

   

   

   

   

   

5 DNN的反向傳播算法

   

5.1要解決的問題:

   

   

能夠用一個合適的損失函數來度量訓練樣本的輸出損失,接着對這個損失函數進行優化求最小化的極值,對應的一系列線性係數矩陣W,偏置向量b即爲咱們的最終結果。在DNN中,損失函數優化極值求解的過程最多見的通常是經過梯度降低法來一步步迭代完成的,也能夠是其餘的迭代方法好比牛頓法與擬牛頓法。

   

5.2反向傳播算法的基本思路:

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

   

DNN可選擇的損失函數有很多,爲了專一算法,這裏使用最多見的均方差來度量損失。即對於每一個樣本,咱們指望最小化下式:

   

對於輸出層的參數,損失函數變爲:

求解W,b的梯度:

   

   

   

5.3DNN反向傳播算法過程:

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

   

   

   

   

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

   

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

   

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

   

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

相關文章
相關標籤/搜索