1. 程式人生 > >二分類神經網路公式推導過程

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

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

歡迎探討,如有錯誤敬請指正

1. 資料表示說明

定義一個名為n的列表

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

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

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

b[i]的維度為(n[i], 1) i從1開始

clip_image002

clip_image004

2. 正向傳播

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

clip_image002[6]

clip_image004[5]

clip_image006

clip_image008

clip_image010表示第i層的啟用函式

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. 參考內容