隨著神經網路每層的學習速度其實是不一樣的,並且隨著層數增加這個問題就越來越明顯。一般來說,接近輸出層學習速率快,前面的層數學習慢,並隨著層數增加學習越來越慢。這種情況我們稱為梯度消失(vanishing gradient problem)。下面我們就來分析一下為什麼會出現這種情況,並給出解決方案。
若有乙個神經網路如下:
神經網路有6層,其中每層都有乙個神經元。要想知道為什麼層數增加訓練的越來越慢自然而然的想到考察一下梯度與變數間的變化關係,因此首先來考察一下b與梯度的變化關係。
下面就是理論上的推導了:
假設:∂c∂
b1≈δ
cδb1
那麼: δa
1δb1
≈∂σ(
w1a0
+b)∂
b1 δ
a1≈∂
σ(w1
a0+b
)∂b1
δb1
δa1≈
∂σ(z
)∂(z
)∗∂z
∂b1∗
δb1
δa1≈
∇σ(z
)∗1∗
δb1
注:∇σ(
z)表示對z求導。
此時我們得出了b1
的變化對z1
的影響,而a1
的變化又會對z2
產生影響因為z2
=w2∗
a1+b
2 那麼此時: δz
2≈∂z
2∂a1
δa1=
w2δa
1 綜合上面的分析把a1
的變化代入z2
的變化得到: δz
2≈w2
∗∇σ(
z)∗δ
b1依次類推的到:δc
≈w2∗
∇σ(z
1)∗∇
σ(z2
)...
.∇σ(
z4)∗
∂c∂a
4δb1
注:有人可能要問怎麼簡單的就出來了c了呢?其實這個問題要看一下最初始神經網路的推導: ∂c
∂b=∂
c∂a∗
∂a∂z
∗∂z∂
b 前面推導出了∂a
∂z∗∂
z∂b 現在我只需要把推導出的代入後面兩部分,加上變換就可以了。
等式兩邊同時除以δb
1 得到:δc
δb1≈
w2∗∇
σ(z1
)∗∇σ
(z2)
....
∇σ(z
4)∗∂
c∂a4
到現在終於推導完成了,長舒一口氣。。。。
下面分析一下這個變化中的值,首先我們在初始w時,我們一般初始化為絕對值小於1的數。再來看導數部分:
觀察導數影象發現,最大值為0.25。於是對於這個連乘公式,裡面的數都小於1.隨著層數增加,最終的變化率將越來越小。以至於趨近於零。
經過上文理論推導,我們發現這個問題中核心是啟用函式。sigmod的導數最大值1/4成為連乘越來越小的關鍵。自然我們也想另外選取啟用函式來解決這個問題。下面祭出核心大殺器:
rectified linear unit(relu)
線性整流函式f(x) = max(0,x),我們對比一下幾個函式的影象:
觀察relu發現在x>0時函式的導數是個常數,而sigmod隨著延伸越來越平緩最終導數為0.所以不會出現vd問題了。
我們選擇啟用函式的時候選擇這個函式就可以咯。
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...
神經網路 卷積神經網路
1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...
神經網路簡介 多層神經網路
如上圖所示,該神經網路有三層。我們標記第一層 也就是輸入層 為a 1 第一層與第二層連線權重為w 1 然後第一層輸入與第一層權重的線性和為z 1 第一層神經元個數為n 1 並依次標記剩餘網路層。可以看出,存在 z l j i 1 n l a l i w l i,j a l w l j a l 1 f...