二分類神經網絡公式推導過程

簡介:本文主要介紹了簡單二分神經網絡的公式推導過程。html

歡迎探討,若有錯誤敬請指正 算法

如需轉載,請註明出處 http://www.cnblogs.com/nullzx/網絡


1. 數據表示說明

定義一個名爲n的列表函數

n[i]表示第i層的節點數 i從0開始學習

L = len(n)-1表示神經網絡的層數,網絡的層數從第0層開始spa

W[i]的維度爲(n[i], n[i-1]) i從1開始.net

b[i]的維度爲(n[i], 1) i從1開始3d

clip_image002

clip_image004

 

2. 正向傳播

X表示訓練樣本矩陣,每一個訓練樣本有d個特徵,有m個訓練樣本,因此X的維度是(d, m) 即n[0] = d htm

clip_image002[6]

clip_image004[5]

clip_image006

clip_image008

clip_image010表示第i層的激活函數blog

clip_image012 維度 (n[i], m)一個樣本對應一列

clip_image014 維度 (n[i], m)一個樣本對應一列

 

3. 交叉熵損失函數的推導過程

clip_image002[8]

「*」表示對應元素相乘,clip_image004[7]表示第i個樣本的真實值,clip_image006[5]表示第i個樣本的預測值,也就是神經網絡最後一層的輸出。

對於二分類的神經網絡來講,最後一層的激活函數通常都是sigmoid函數

sigmoid函數由下列公式定義

clip_image007

clip_image008[5]

從圖中可知,最後一層的輸出爲0~1之間,能夠看作機率。咱們能夠把二分神經網絡當作一個機率模型,輸入爲一些特徵,輸出爲機率,並且知足二項分佈

clip_image010[5] 表示真實值爲1時,神經網絡預測準確的機率

clip_image012[5] 表示真實值爲0時,神經網絡預測準確的機率,咱們能夠將上面的分段函數寫成一個表達式

clip_image014[5]

因此上式表示了神經網絡預測準確的機率。

當前有m個樣本,那麼like表示了這m個樣本同時預測準確的機率

clip_image016

      clip_image002[14]

咱們的目的就是讓like取最大值,因爲對數函數ln(x)是一個單調函數,因此當like函數取最大值時,ln(like)必定取得最大值

clip_image020

ln(like)取得最大值等價於下面的值取得最小。

clip_image022

而這個就是損失函數,初始化時w和b隨機,咱們經過隨機梯度降低法,獲得w和b使得損失函數最小。

另外一方面,咱們還能夠經過信息論的角度推導交叉熵

clip_image024

 

4. 反向傳播(隨機梯度降低法)

L表示最後一層,從最後一層開始,由損失函數逐步向後求導

clip_image002[10]

clip_image004[9]

通常狀況下

clip_image006[7]

sigmoid的導數能夠用自身表示:

clip_image007[5]

因此clip_image009

clip_image011

clip_image013 必定是維度 (1, m)一個樣本對應一列(也就是一個數值),

假設已經知道了clip_image015 ,它的維度是(n[i], m),則能夠推出三點:

1)clip_image017 ,它的維度是(n[i], m) 乘以(n[i-1], m)T

2)clip_image019,它的維度是(n[i], 1)

3)clip_image021

它的維度是(n[i+1], n[i]).T乘以(n[i+1], m)

同理還能夠繼續推出

clip_image023

*表示對應元素相乘,而clip_image025就是激活函數的求導,這樣就能夠繼續向下求導了

 

5. 參數更新

clip_image002[12]

clip_image004[11]

k表示學習速度

clip_image006[9]維度 (n[i], m) 一個樣本對應一列

clip_image008[7]維度 (n[i], 1) 一個樣本對應一行

clip_image010[7] 維度 (n[i], n[i-1])

clip_image008[8] 維度 (n[i], m)

 

6. 經過具體的例子解釋反向傳播的公式

clip_image002[16]

對於上圖神經網絡的而言的一個訓練樣本而言,在求導的過程當中咱們應該把clip_image004[13]當作一個有關clip_image006[11]的超多元函數

clip_image008[11]的維度(1,1)

clip_image010[9]的維度(1,1)

clip_image012[7]就是一個數


咱們從最後一層開始反向傳播

clip_image014[7] 維度(1,1)

clip_image016[6]

clip_image018[6]

clip_image020[7]

clip_image022[6]
clip_image024

clip_image026

clip_image028

注意最後推導出來的結果是兩個矩陣的乘法

clip_image030 維度(1,3)

clip_image032 維度(1,1)


繼續向前一層進行反向傳播

clip_image034

clip_image036
clip_image038

因此clip_image040維度(3,1),還由於 clip_image042,因此

clip_image044

clip_image046

clip_image048

clip_image050

維度(3,1)


由於

clip_image052

展開可得

clip_image002[18]

如今將成本函數clip_image058當作由clip_image060這12個自變量的函數(爲啥是12個,由於每個clip_image062都是一個1行4列的向量)

成本函數clip_image058[1]對着12個參數求導就造成了一個矩陣

clip_image064

這矩陣正好能夠表示成

clip_image066

維度(3,1)乘 維度(4,1)T 造成一個(3,4)的矩陣


如今將成本函數clip_image058[2]當作由clip_image068這4個自變量的函數(爲啥是4個,由於clip_image068[1]是一個4行1列的向量)

成本函數clip_image058[3]對着4個參數求導就造成了一個四行一列的向量

clip_image070

這個矩陣剛好能夠表示成

clip_image072

通用形式:

clip_image074

同理有了clip_image076就能夠推出clip_image078 進而能夠推出clip_image080clip_image082


對於m個樣本而言,咱們求得的某個參數的導數是m樣本分別對這個參數求導的平均值。至此反向傳播過程推導推導完畢。

 

7. 參考內容

[1]. 淺談神經網絡算法

相關文章
相關標籤/搜索