神經網絡-誤差反向傳播算法 BP算法

BP算法學習筆記

1 學習基礎–神經網絡的基本原理和前向過程

​ 如下圖所示,這時一個簡單的神經網絡模型,通過這樣一個模型我們就可以完成一些工作。例如我們輸入三個數據,a1表示一個公司的銀行存款,a2表示所擁有的固定資產估值,a3表示這個人最近一個月的利潤,out1表示這是狀態良好,out2表示它狀態不好。現在我們要通過這個網絡來判斷,我們是否給這個公司發放貸款。

在這裏插入圖片描述
​ 現在我們先明確一下圖中參數的意義:w表示權重,b表示偏置,下面是基本計算步驟。
z 1 1 = a 1 w 1 , 1 1 + a 2 w 2 , 1 1 + a 3 w 3 , 1 1 + b 1 1 z 2 1 = a 1 w 1 , 2 1 + a 2 w 2 , 2 1 + a 3 w 3 , 2 1 + b 2 1 h 1 1 = g ( z 1 1 ) h 2 1 = g ( z 2 1 ) z 1 2 = h 1 1 w 1 , 1 2 + h 2 1 w 1 , 2 2 + b 1 2 z 2 2 = h 1 1 w 2 , 1 2 + h 2 1 w 2 , 2 2 + b 2 2 o u t 1 = g ( z 1 2 ) o u t 1 = g ( z 2 2 ) z^1_1=a_1*w^1_{1,1}+a_2*w^1_{2,1}+a3*w^1_{3,1} +b^1_1 \\ z^1_2=a_1*w^1_{1,2}+a_2*w^1_{2,2}+a3*w^1_{3,2} +b^1_2 \\ h^1_1 = g(z^1_1) \\ h^1_2 = g(z^1_2) \\ z^2_1=h^1_1*w^2_{1,1}+h^1_2*w^2_{1,2}+b^2_1 \\ z^2_2=h^1_1*w^2_{2,1}+h^1_2*w^2_{2,2}+b^2_2 \\ out_1 = g(z^2_1) \\ out_1 = g(z^2_2)
​ 其中 g ( x ) g(x) 是激活函數,激活函數有多種可以選擇,其數學意義是使我們的網絡從線性網絡到非線性網絡,因爲多數問題都是非線性的,至於詳細原因分析見:未完成,在MINST數據集判斷在我們使用ReLU函數作爲激活函數。
f ( x ) = { x i f x > 0 0 i f x 0 f(x) = \begin{cases} x & if & x >0 \\ 0 & if & x \leqslant 0 \end{cases}
​ 現在通過這個網絡設置一組合理的偏置和權重就能使用這個網絡幫我們做出決定。最長用到的比如我們有一組手寫數組的照片,我們可以設定一組合適的值來判斷這個數字是多少。這個就是新手入門必學的MINST手寫數據集判斷了。在下一篇中會用Python和這個數據集來實現。

​ 那我們的問題就是找到這樣一組合適的數據。這個方法就是BP算法了(Error Back Propagation 誤差反向傳播算法)

2反向傳播的基本原理

​ 反向傳播中主要用到兩個原理,鏈式求導法則和偏導數。

2.1概述

​ 反向傳播算法的全稱是誤差反向傳播算法,其本質通過總的誤差函數對每一個權重和偏置求偏導數,再通過偏導數更新權值和偏置,多次重複此步驟以找到最佳的偏置和權重值。(其原理是偏導數反應了某個函數值對整體的影響程度,同時兩個偏導數剛好構成我們誤差函數的梯度,而沿梯度方向函數最容易找到最小值,誤差函數的最小值可不就是誤差最小了嗎,誤差最小不就是我們找到最佳的一組權值和偏置了嗎)

2.2誤差函數

​ 誤差函數也是有多種可以選擇的,至於詳細分析見:未完成 。在MINST數據集判斷在我們使用均方誤差函數作爲誤差函數。其形式如下:
L = 1 2 i ( o u t i t a r g e t i ) 2 L=\frac 1 2 \sum_i (out_i - target_i)^2
​ target 表示已知的真確結果。

2.3偏導數和梯度

​ 現在我們再看誤差函數 L ,此時我們將此函數的w(權值)和 b (偏置)作爲變量(其他值都是係數)。則我們有構成函數:
L = f ( W , B ) L=f(W,B)
​ 依照上圖給出的示例,此時有一個由10個權值和4個偏置作爲變量構成的函數。現在來明確一下梯度的概念:對於二位函數 f ( x , y ) f(x,y) 他的梯度表示爲 = ( f x , f y ) \nabla = (\frac {∂f}{∂x}, \frac {∂f}{∂y}) ,而我們都知道,沿着梯度方向函數值下降速度最快。關於導數,偏導數,梯度的具體分析見未完成。那麼對於誤差函數,我們自然是希望它的函數值爲0最好了,所以我們就要求誤差函數的梯度,然後沿着梯度方向更新變量取值(即選擇權值和偏置的值)。則誤差函數的梯度爲:
= ( L w 1 , 1 1 , L w 2 , 1 1 , L w 3 , 1 1 , L w 1 , 2 1 , L w 2 , 2 1 , L w 3 , 2 1 , L w 1 , 1 2 , L w 2 , 1 2 , L w 1 , 2 2 , L w 2 , 2 2 , L b 1 1 , L b 2 1 , L b 1 2 , L b 2 2 ) \nabla=(\frac {∂L}{∂w^1_{1,1}},\frac {∂L}{∂w^1_{2,1}},\frac {∂L}{∂w^1_{3,1}},\frac {∂L}{∂w^1_{1,2}},\frac {∂L}{∂w^1_{2,2}},\frac {∂L}{∂w^1_{3,2}},\frac {∂L}{∂w^2_{1,1}},\frac {∂L}{∂w^2_{2,1}},\frac {∂L}{∂w^2_{1,2}},\frac {∂L}{∂w^2_{2,2}},\frac {∂L}{∂b^1_{1}},\frac {∂L}{∂b^1_{2}},\frac {∂L}{∂b^2_{1}},\frac {∂L}{∂b^2_{2}})

2.4 BP算法

​ 現在我們學習BP算法的前置知識都具備了,我們開始推到整個過程。

2.4.1 輸出層推導

​ 輸出層需要計算的偏導 L w 1 , 1 2 , L w 2 , 1 2 , L w 1 , 2 2 , L w 2 , 2 2 , L b 1 2 , L b 2 2 \frac {∂L}{∂w^2_{1,1}},\frac {∂L}{∂w^2_{2,1}},\frac {∂L}{∂w^2_{1,2}},\frac {∂L}{∂w^2_{2,2}},\frac {∂L}{∂b^2_{1}},\frac {∂L}{∂b^2_{2}} ,我們依次計算這些值。
L w 1 , 1 2 = L o u t 1 × o u t 1 z 1 2 × z 1 2 w 1 , 1 2 L w 1 , 2 2 = L o u t 2 × o u t 2 z 2 2 × z 2 2 w 1 , 2 2 L w 2 , 1 2 = L o u t 1 × o u t 1 z 1 2 × z 1 2 w 2 , 1 2 L w 2 , 2 2 = L o u t 2 × o u t 2 z 2 2 × z 2 2 w 2 , 2 2 L b 1 2 = L o u t 2 × o u t 2 z 1 2 × z 1 2 b 1 2 L b 2 2 = L o u t 2 × o u t 2 z 2 2 × z 2 2 b 2 2 \frac {∂L}{∂w^2_{1,1}}=\frac {∂L}{∂out_1} \times \frac {∂out_1}{∂z^2_1}\times \frac {∂z^2_1}{∂w^2_{1,1}}\\\frac {∂L}{∂w^2_{1,2}}=\frac {∂L}{∂out_2} \times \frac {∂out_2}{∂z^2_2}\times \frac {∂z^2_2}{∂w^2_{1,2}}\\\frac {∂L}{∂w^2_{2,1}}=\frac {∂L}{∂out_1} \times \frac {∂out_1}{∂z^2_1}\times \frac {∂z^2_1}{∂w^2_{2,1}}\\\frac {∂L}{∂w^2_{2,2}}=\frac {∂L}{∂out_2} \times \frac {∂out_2}{∂z^2_2}\times \frac {∂z^2_2}{∂w^2_{2,2}}\\\frac {∂L}{∂b^2_{1}}=\frac {∂L}{∂out_2} \times \frac {∂out_2}{∂z^2_1}\times \frac {∂z^2_1}{∂b^2_{1}}\\\frac {∂L}{∂b^2_{2}}=\frac {∂L}{∂out_2} \times \frac {∂out_2}{∂z^2_2}\times \frac {∂z^2_2}{∂b^2_{2}}
​ 將這些公式總結到一起表示如下
L w m , n L = L o u t n × o u t n z n L × z n L w m , n L = L o u t n × o u t n z n L × h m L L b n L = L o u t n × o u t n z n L × z n L b n L = L o u t n × o u t n z n L \frac {∂L}{∂w^L_{m,n}}= \frac {∂L}{∂out_n} \times \frac {∂out_n}{∂z^L_n} \times \frac {∂z^L_n}{∂w^L_{m,n}} =\colorbox{aqua}{$ \frac {∂L}{∂out_n} \times \frac {∂out_n}{∂z^L_n} $} \times h^L_m \\ \frac {∂L}{∂b^L_{n}}= \frac {∂L}{∂out_n} \times \frac {∂out_n}{∂z^L_n} \times \frac {∂z^L_n}{∂b^L_{n}} \quad=\quad \colorbox{aqua}{$ \frac {∂L}{∂out_n} \times \frac {∂out_n}{∂z^L_n} $} \qquad
​ 令 δ n L = L o u t n × o u t n z n L \delta^L_n = \frac {∂L}{∂out_n} \times \frac {∂out_n}{∂z^L_n} 則上式化簡爲:
L w m , n L = δ n L × h m L (式1-1) \tag{式1-1} \frac {∂L}{∂w^L_{m,n}}=\delta^L_n \times h^L_m

L b n L = δ n L (式1-2) \tag{式1-2}\frac {∂L}{∂b^L_{n}}=\delta^L_n \qquad\qquad

2.4.2 隱藏層推導

​ 隱藏層需要計算 L w 1 , 1 1 , L w 2 , 1 1 , L w 3 , 1 1 , L w 1 , 2 1 , L w 2 , 2 1 , L w 3 , 2 1 , L b 1 1 , L b 2 1 \frac {∂L}{∂w^1_{1,1}},\frac {∂L}{∂w^1_{2,1}},\frac {∂L}{∂w^1_{3,1}},\frac {∂L}{∂w^1_{1,2}},\frac {∂L}{∂w^1_{2,2}},\frac {∂L}{∂w^1_{3,2}},\frac {∂L}{∂b^1_{1}},\frac {∂L}{∂b^1_{2}} ,依次計算如下:
L w 1 , 1 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 1 , 1 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 1 , 1 1 L w 2 , 1 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 2 , 1 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 2 , 1 1 L w 3 , 1 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 3 , 1 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 3 , 1 1 L w 1 , 2 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 1 , 2 1 + L o u t <∂ w 3 , 1 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 1 1 × h 1 1 z 1 1 × z 1 1 w 3 , 1 1 L w 1 , 2 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 1 , 2 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 1 , 2 1 L w 2 , 2 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 2 , 2 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 2 , 2 1 L w 3 , 2 1 = L o u t 1 × o u t 1 z 1 2 × z 1 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 3 , 2 1 + L o u t 2 × o u t 2 z 2 2 × z 2 2 h 2 1 × h 2 1 z 2 1 × z 2 1 w 3 , 2 1 L b 1 1 = L

相關文章
相關標籤/搜索