神經網絡(二)——深入理解反向傳播的四個基本方程

由於神經網絡覆蓋的內容比較多,一時提筆不知從何開始說起,剛好看到這一章以公式爲主,因此先入手這一章。本章參考書籍《神經網絡與深度學習》以及三藍一棕的B站視頻。

1.預備知識

我們先來看一張圖,瞭解一下我們的符號定義:

這裏寫圖片描述

我們首先給出網絡中權重的定義:wjkl 表示從第l1 層的的k 個神經元到l 層的第j 個神經元的連接的權重,可能大家會覺得這裏權重的下標jk 應該調換,但是在之後的表達中,這樣寫會有一些好處。

我們繼續來看一張圖:

這裏寫圖片描述

我們對網絡的偏置和激活值也使用類似的表達。我們使用bjl 表示在第l 層第j 個神經元的偏置,使用ajl 表示第l 層第j 個神經元的激活值。
有了這些符號表示,第l 層第j 個神經元的激活值ajl 就和第l1 層的激活值關聯起來了:
這裏寫圖片描述

我相信你能看懂這個公式,舉個例子,就是第二層的第一個神經元的激活值(值在0-1之間),是由第一層所有神經元的激活值乘上對應的權重矩陣(即每個激活值的重要程度)求和,然後加上第二層第一個神經元的偏置,最後通過整體利用sigmoid函數壓縮到0-1的範圍內。
但是一直看這個公式相信大家也會覺得很麻煩,畢竟太多的上標和下標要去思考含義,那我們就簡化一下:
這裏寫圖片描述

這樣就簡潔多了,爲了在後面介紹四個方程時方便,我們引入一箇中間量zl=wlal1+bl ,我們稱zl 稱爲l 層的帶權輸入。則上面的式子有時也可以寫成al=σ(zl) 。同樣要指出的是zl 的每個元素是:
這裏寫圖片描述

2. 反向傳播的四個基本方程

我們要始終明確反向傳播的目的是什麼:反向傳播算法是單個訓練樣本修改權重與偏置,影響代價函數的過程。最終極的含義就是計算偏導數:CωjklCbjl ,也就是告訴我們在改變權重和偏置時,代價函數變化的快慢,我們希望沿着速度最快的方向改變代價函數。注意,爲了方便計算,我們還是引入一箇中間量δjl ,這個我們稱爲在第l 層第j 個神經元上的誤差。
這個誤差是什麼,如何來理解呢?我們先來看一下它的定義:δjlCzjl ,其實我們可以發現它其實是一個誤差的度量,是一個變化率。假設在第l 層第j 個神經元上有一個微小的變化zjl ,使得神經元輸出由σ(zjl) 變成了σ(zjl+zjl) 。這個變換會向網絡後面的層進行傳播,最終導致整個代價產生CzjlΔzjl 。如果我們能找到使代價函數減小的Δzjl ,並且使它與Czjl 變化率的符號相反,那麼最終會使代價函數更小。
可能大家會疑惑爲什麼這裏要用zl ,如果用激活值ajl 表示度量誤差的方法可能會更好理解。大家不要過於糾結這裏,用前一種方法來表示會在後面公式推導的過程中更加方便,同樣對這裏誤差的含義也不用太過糾結,我們就把它看成中間量。

2.1 四個方程的定義

1. 輸出層誤差的方程,δl ,每個元素定義如下:

(BP1)δjL=CajLσ(zjL).
右式第一項C/ajL 表示代價隨着第j個輸出激活值的變化而變化的速度。假設C不太依賴一個特定的輸出神經元j,即變化率很小,那麼δjL 就會很小,這也是我們想要的效果。右式第二項σ(zjL) 爲在zjl 處激活函數σ 變化的速度。
以上是按每個元素分量定義的公式,如果以矩陣形式來表示,則爲:
(BP1a)δL=aCσ(zL).
這裏aC 被定義成一個向量,其元素是偏導數C/ajL 。你可以將aC 看成是代價函數C關於輸出激活值的改變速度。中間的那個符號表示爲Hadamard乘積,其含義如下:

(1)[12][34]=[1324]=[38].

(BP1)和(BP1a)是等價的。

2. 使用下一層的誤差δl+1 來表示當前層的誤差δl

(BP2)δl=((wl+1)Tδl+1)σ(zl)
這個公式乍一看比較複雜,我們先不管它是如何推導出來的。先直觀感受一下,我們一旦知道了當前層的誤差,就可以求前一層的誤差!這就引出了反向傳播的感覺。通過組合(BP1)和(BP2),我們可以通過(BP1)計算當前層誤差δl ,通過(BP2)計算δl1 ,再用(BP2)計算δl2 ,一步步反向傳播整個網絡。
3. 代價函數關於網絡中任意偏置的變化率:

(BP3)Cbjl=δjl.

神奇的發現誤差δjl 和偏導Cbjl 結果完全一樣,這裏可以發現,我們定義誤差爲z的好處了。

4. 代價函數關於任何一個權重的變化率:

(BP4)Cwjkl=akl1δjl.
直觀來看一下,可以發現右式第一項是輸入給權重w的神經元的激活值,右式第二項是輸出自權重w的神經元的誤差。當輸入的激活值很小的時候,偏導數的值也會很小,我們可以得到一個結果,即來自低激活值神經元的權重學習會非常緩慢,基本已經飽和了。
回憶一下sigmoid函數的形狀,結合(BP1)中的項σ(zkl) ,當σ(zkl) 近似爲0或者1的時候,σ 函數非常平緩,則σ(zkl) 近似爲0。所以如果輸出神經元處於低激活值或者高激活值狀態時,最終層的權重學習緩慢,這樣我們稱神經元已經飽和了。
總結一下4個公式:
這裏寫圖片描述

2.2 四個方程的證明

爲了給大家更直觀的證明,我們先進行單個參數的公式證明,假設一些內容:

C=12(aly)2zl=wlal1+blal=σ(zl)

所有的證明都是基於多元微積分的鏈式法則:首先是BP1
(2)δl=Czl(3)=Calalzl(4)=(aly)σ(zl)

這就是鏈式法則,來,我們繼續BP2:
(5)δl=Czl(6)=Czl+1zl+1zl(7)=δjl+1(wl+1al+b)zl(8)=δjl+1(wl+1σ(zl)+b)zl(9)=δjl+1wl+1σ(zl)

繼續,相信你也差不多知道BP3和BP4怎麼證明了:BP3
(10)Cbl=Calalzlzlbl(11)=(aly)σ(zl)1(12)=δl

最後一個BP4:
(13)Cwl=Calalzlzlwl(14)=(aly)σ(zl)al1(15)=al1δl
以上就是針對單個參數的證明過程,同理對於多參數的情況,同樣是利用鏈式法則來計算,這就大家自己去證明,主要就是加了一個求和的過程。

3.總結

上述雖然是說的4個方程,但是還是提醒大家注意反向傳播的目的究竟是什麼,最後要得到的還是代價函數對偏置和權重的求偏導(即是讓單個訓練樣本代價函數能夠改變的最快),因此(BP3)和(BP4)是我們最終要求的,(BP1)和(BP2)是幫助我們理解反向傳播和計算方便的中間量。

鍵盤不靈了,打字賊痛苦。之後會出神經網絡1的講解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章