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


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

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

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


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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM