這個人總結的太好了 , 忍不住想學習一下,放到這里。
為了尊重原創作者,說明一下是轉載於:http://blog.csdn.net/MyArrow/article/details/51322433
學習總結
1. 簡介
神經網絡和深度學習是由Michael Nielsen所寫,其特色是:兼顧理論和實戰,是一本供初學者深入理解Deep Learning的好書。
2. 感知器與sigmoid神經元
2.1 感知器(Perceptrons)
感知器工作原理:接收一系列二進制輸入,經過特定的規則計算之后,輸出一個簡單的二進制。

計算規則:通過引入權重(weights)表示每個輸入對於輸出的重要性,則有

記w⋅x=∑jwjxj,b=-threshold,則有

其w是權重,b是偏差。
2.2 Sigmoid神經元(Sigmoid Neurons)
為了使學習變得可能,需要具備的【學習特征】:權重或偏差有較小的變化,導致輸出也有較小的變化。如下圖所示:

感知器網絡存在的缺陷是:某個感知器較小的權重或偏差變化,可能導致輸出在0與1之間進行翻轉。所以包含感知器的網絡不具備【學習特征】。
幸運的是:Sigmoid神經元具有此【學習特征】,即其較小的權重或偏差變化,導致其輸出變化較小。
Sigmoid函數:

Sigmoid神經元輸出:
感知器與sigmoid神經元的差別:
1) 感知器只輸出0或1
2)sigmoid神經元不只輸出0或1,而可輸出[0,1]之間的任意值
3. 神經網絡架構

3.1 手寫數字識別

訓練圖像大小為28x28,每個訓練圖像有一個手寫數字。
在輸出層,如果第一個神經元被激活(即其輸出接近1),則此網絡認為此手寫數字為0;
如果第二個神經元被激活(即其輸出接近1),則此網絡認為此手寫數字為1;
其它以此類推。
3.2 算法描述
設x表示訓練圖像,則x是一個28x28=784維列向量。
表示輸入圖片x是數字6 。
需要尋找一個算法來發現w和b,使其輸出接近標簽值,為了量化接近程序,定義如下成本函數:

w:所有權重的集合
b:所有偏差的集合
n:訓練樣本數
a: 輸出向量(其值依賴x,w,b)
x:一幅訓練圖像
||v||:表示向量的范數,即向量的長度
C:二次成本函數(mean squared error or MSE)
如果
接近於0,表示y(x)接近輸出a,即學習效果很好。
此成本函數中,w和b為變量。
注:hidden layers和output layer中的每個神經元對應一個組w、b。
3.2.1 學習目標
如何找到滿足要求的w和b:答案是梯度下降法(Gradient Descent)
1)最小化二次成本函數
2)檢測分類的准確性
學習目標:在訓練神經網絡中,找到使二次成本最小的w和b的集合。
3.2.2 梯度下降更新規則

:表示學習速度(Learning Rate)
此規則用於在神經網絡中學習參數w和b。
3.2.3 算法推導(梯度下降法: gradient descent)
要求極小值,先討論具有2個變量的簡單情況,然后再推廣:

令
,
為梯度向量,則有:

現在的問題是如何選擇
,使
負數,則有:

則v的更新規則為:

按此規則,一步一步跌代,C值不斷減少,直到全局最小值。
總之,梯度下降法是:重復計算梯度
,然后向相反的方向移動(即下坡最快最陡的方向),如下圖所示:

上面討論了只有兩個變量的情況,現在推廣到m個變量的情況,對應公式如下:

3.2.4 隨機梯度下降法(Stochastic Gradient Descent)
為不減少計算量,把n個學習樣本分成很多組,每組有m個學習樣本,每次只計算一個組,則有如下推導:

則w和b的更新規則為:

注:如果m=1,則為在線學習(online)。
3.2.5 w和b的數量
對於hidden layers和輸出層的神經元,每個神經元對應一個w向量和一個b,w向量的維數是其輸入神經元的數量。第一層神經元沒有w和b,其值直接輸出。
第一層就表示原始圖像數據,這些數據不經任何處理,直接作為Xj參與第二層的運算,第二層首先基於每個Xj,計算其z(z=wx+b),然后計算出sigmoid(z),以此類推。直到最后一層,利用BP算法,先計算最后一層w和b的梯度,然后以此向前,直到計算出第二層的梯度為止。
4. BP算法(反向傳播算法)
BP(Backpropagation Algorithm) :是一個計算成本函數梯度的算法。
需要基於每個訓練樣本計算每一層的w和b的梯度,從而更新每一層的w和b。
BP的真正目標:是計算每個樣本的偏導數:
和
。
4.1 定義標記符號

則有激活值的如下公式:

函數向量化有如下形式:

即函數對向量的每個元素分別計算,然后生成對應的向量。
則上面的函數向量表示為:

記
,則有
4.2 公式推導過程
4.2.1 計算激活值

4.2.2 最后一層(L層)的二次成本函數

4.2.3 單個訓練樣本(x)的二次成本函數

4.2.4 定義誤差

4.2.5 定義輸出層誤差

4.2.6 求最后一層(L層)激活值的偏導數

4.2.7 根據最后一層的誤差計算前一層的誤差

4.2.8 計算目標值

4.2.9 BP的四個基本方程式
4.3 證明四個基本議程式
4.3.1 證明BP1
4.3.2 證明BP2
4.4 BP計算過程
5. SGD(隨機梯度下降)計算過程
6. 改進神經網絡學習方法
和
)決定,所以學習速度慢的根本原因是:偏導數太小。
6.1 交叉熵成本函數
導致的學習速度慢問題。
6.2 推廣交叉成本函數
的計算方法,其它計算方法完全相同。
6.3 交叉熵的含義
6.4 Softmax(柔性最大值)
6.4.1 Softmax如何解決學習速度慢的問題?
7. 過擬合和規范化
7.1 過擬合(Overfitting)
7.2 規范化(Regularization)-減少過擬合
規范化( Regularization)也是減少過擬合的方法之一。有時候被稱為權重衰減( weight decay)或者L2 規范化。L2 規范化的思想是增加一個額外的項到成本函數中,這個項叫做規范化項。規范化的交叉熵如下:
>0是規范化參數(
regularization parameter)
較小,我們期望最小化原始成本函數;如果
較大,我們期望最小化權重。
7.3 為什么規范化可以減少過擬合
8. 權重初始化
(方差為501)的高斯分布。它是一個非常寬的高斯分布,根本不是非常尖的形狀:
兩個都服從正太分布的變量,例如X服從N(a,b),Y服從N(c,d),且X和Y相互獨立,則有:
就會接近1或者0,即隱層神經元進入飽和狀態了。即隱層神經元的輸出
將非常接近於0或1。在這種情況下,權重的修改對隱層神經元的輸出激活值影響很小,從而對下一層的隱層神經元、直到對輸出層的神經元的輸出都很小,從而導致學習速度慢的問題。
)分布,偏差服從N(0,1)。其中
表示此層神經元輸入權重個數(即此隱層神經元的輸入神經元個數,如上例中
=1000)。權重之后為:
,其服從N(0,3/2)。
9. 神經網絡可以計算任何函數
總而言之:包含一個隱層的神經網絡可以被用來按照任意給定的精度近似任何連續函數。
10. 為什么訓練深度神經網絡比較困難?
10.1 消失的梯度問題的根本原因?
11. 卷積神經網絡(CNN)
11.1 基本概念
11.1.1 局部感受野
每個連接學習一個權重,且隱層神經元也學習一個總的偏差。即此隱層神經元正在對輸入圖像的此區域進行學習、了解。一個隱層神經元與一個局部感受野一一對應,即每個隱層神經元有:5x5個權重和1個偏差。
11.1.2 共享權重和偏差
11.1.3 混合層
11.1.4 完整的卷積神經網絡
