天天看點

神經網絡-反向傳播算法

反向傳播算法(Backpropagation Algorithm,簡稱BP算法)是深度學習的重要思想基礎,對于初學者來說也是必須要掌握的基礎知識!本文希望以一個清晰的脈絡和詳細的說明,來讓讀者徹底明白BP算法的原理和計算過程。

本文主要介紹BP算法的原理(即公式的推導),介紹完原理之後,我們會将一些具體的資料帶入一個簡單的三層神經網絡中,去完整的體驗一遍BP算法的計算過程。

1.BP算法的推導

神經網絡-反向傳播算法

                                                                                圖1 一個簡單的三層神經網絡

圖1所示是一個簡單的三層(兩個隐藏層,一個輸出層)神經網絡結構,假設我們使用這個神經網絡來解決二分類問題,我們給這個網絡一個輸入樣本 ,通過前向運算得到輸出 。輸出值的值域為(0,1),例如輸出的值越接近0,代表該樣本是“0”類的可能性越大,反之是“1”類的可能性大。

1.1前向傳播的計算

為了便于了解後續的内容,我們需要先搞清楚前向傳播的計算過程,以圖1所示的内容為例:

輸入的樣本為:

神經網絡-反向傳播算法

第一層網絡的參數為:

神經網絡-反向傳播算法

第二層網絡的參數為:

神經網絡-反向傳播算法

第三層網絡的參數為:

神經網絡-反向傳播算法

1.1.1第一層隐藏層的計算

神經網絡-反向傳播算法

                                         圖2 計算第一層隐藏層

神經網絡-反向傳播算法
神經網絡-反向傳播算法

1.1.2第二層隐藏層的計算

神經網絡-反向傳播算法

                                                                圖3 計算第二層隐藏層

第二層隐藏層有兩個神經元:

神經網絡-反向傳播算法

神經網絡-反向傳播算法

。該層的輸入為:

神經網絡-反向傳播算法

即第二層的輸入是第一層的輸出乘以第二層的權重,再加上第二層的偏置。是以得到

神經網絡-反向傳播算法

神經網絡-反向傳播算法

的輸入分别為:

神經網絡-反向傳播算法
神經網絡-反向傳播算法

該層的輸出分别為:

神經網絡-反向傳播算法

神經網絡-反向傳播算法

.

1.1.3輸出層的計算

神經網絡-反向傳播算法

                                                                       圖4 計算輸出層

輸出層隻有一個神經元:

神經網絡-反向傳播算法

,該層的輸入為:

神經網絡-反向傳播算法
神經網絡-反向傳播算法

是以:

神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法

單純的公式推導看起來有些枯燥,下面我們将實際的資料帶入圖1所示的神經網絡中,完整的計算一遍。

2.圖解BP算法

神經網絡-反向傳播算法

                                                                    圖5 圖解BP算法

我們依然使用如圖5所示的簡單的神經網絡,其中所有參數的初始值如下:

輸入的樣本為(假設其真實類标為“1”):

神經網絡-反向傳播算法

第一層網絡的參數為:

神經網絡-反向傳播算法

第二層網絡的參數為:

神經網絡-反向傳播算法

第三層網絡的參數為:

神經網絡-反向傳播算法
神經網絡-反向傳播算法

其實,對該損失函數求導就會得到殘差,這個殘差就正好是前面所說的誤差項 。

2.1前向傳播

我們首先初始化神經網絡的參數,計算第一層神經元:

神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法

=1*0.997510281884102 + 3*0.999874045072167 + 2

= 5.9971324171006

神經網絡-反向傳播算法

2.2誤差反向傳播

神經網絡-反向傳播算法
神經網絡-反向傳播算法
神經網絡-反向傳播算法

接着計算第二層隐藏層的誤差項,根據誤差項的計算公式有:

神經網絡-反向傳播算法

最後是計算第一層隐藏層的誤差項:

神經網絡-反向傳播算法

2.3更新參數

上一小節中我們已經計算出了每一層的誤差項,現在我們要利用每一層的誤差項和梯度來更新每一層的參數,權重W和偏置b的更新公式如下:

神經網絡-反向傳播算法

通常權重W的更新會加上一個正則化項來避免過拟合,這裡為了簡化計算,我們省去了正則化項。上式中的 是學習率,我們設其值為0.1。參數更新的計算相對簡單,每一層的計算方式都相同,是以本文僅示範第一層隐藏層的參數更新:

神經網絡-反向傳播算法

3.小結

至此,我們已經完整介紹了BP算法的原理,并使用具體的數值做了計算

繼續閱讀