訓練神經網路的問題之一是
特別是很深的神經網路時
是資料消失以及梯度爆炸
這個的意思是當您訓練
很深的網路您的導數 或者您的斜率有時候會變得
很大很大 或者很小很小
也許是指數般的小
而這會讓訓練變得很難
在這段影片您會看到
梯度爆炸跟消失 的問題真正的含義
同時您如何可以謹慎選擇
隨機權重初始可以 明顯地減低這個問題
假設您正在訓練一個 很深的神經網路像這樣
為了節省投影片的空間
我畫成您只有 兩個隱藏單元在每一層
但它可以更多
這個神經網路會有參數 w[1],
w[2], w[3] 等等到 w[L]
為了簡單起見
假設我們使用啟動函數 g of z 等於 z
也就是線性啟動函數
讓我們先忽略 b, 假設 b[l] 等於 0
這種情況下您可以證明輸出 y 會是
w[L] 乘 w[L-1] 乘 w[L-2]
...直到 w[3],
w[2], w[1] 乘 x
但如果您要檢查我的數學
w[1] 乘 x 會是 z1
因為 b 等於 0
所以 z[1] 等於
w[1] 乘 x 然後加 b 但為 0
但然後 a[1] 等於 g of z[1]
但因為我們使用線性啟動函數
這個就等於 z[1]
所以這第一個項目 w[1]x 等於 a[1]
然後用類似的方式我們可以發現 w[2] 乘 w[1] 乘 x 等於 a[2]
因為那將會是 g of z[2]
將會是 g of
w[2] 乘 a[1], 我們可以代入這裡
所以這個東西會等於 a[2]
然後這個東西將會是
a[3], 直到所有這些 矩陣的乘積會給您 y-hat, 不是 y
現在假設每個您個權重矩陣
w[L] 只有比 1 乘單元矩陣 大一點
所以像是 1.5, 1.5, 0, 0
技術上而言最後一個維度有所不同
也許這只是其餘這些權重矩陣
那 y-hat 會是
先忽略最後一個不同維度
這個 1.5, 0, 0, 1.5 矩陣的 L - 1 次方乘上 x
因為我們假設每一個 這些矩陣等於這個東西
這其實是 1.5 乘上單元矩陣， 那您最終會有這個計算
所以 y-hat 基本上會是 1.5 的 L 次方
L - 1 次方乘上 x
如果 L 很大, 是很深的神經網路
y-hat 會非常大
實際上, 這個是指數成長
它會長成 1.5 的層數次方
如果您有很深的神經網路
y 的值會爆炸
現在，相反地，如果我們取代這個為 0.5
是一種小於 1 的數字
那這個會變成 0.5 的 L 次方
這個矩陣會變成 0.5 的 L - 1 次方乘 x, 再次忽略 w[L]
所以每一個矩陣小於 1
假設 x1, x2 是 1, 1
那啟動值會是 一半
一半，四分之一
四分之ㄧ, 八分之ㄧ, 八分之一
直到這個變成 1/2 的 L 次方
啟動值會指數般減少 像一個網路深度的函數
也就是像函數對於 網路層的數目
所以在很深的網路時, 啟動值會指數般減少
這裡學到的直覺是從這個權重 w
如果他們只是比 1 大一點點
或者說把單元矩陣大一點點
那在很深的網路, 啟動值會爆炸
如果 w 比單元矩陣小一點點
那也許是 0.9, 0.9
在您用很深的網路時
啟動值會指數般下降
即使我歷經這個討論是
啟動值指數般增加或減少 是一個對於 L 的函數
類似的討論也可以用在證明
計算導數或者梯度在梯度下降
時也會指數般增加
或指數般減少 為一個對於層數的函數
一些現代的神經網路, L 等於 150
微軟最近用 152 層的神經網路 獲得很好的成果
但在這樣深的神經網路
如果您的啟動值或者梯度 指數般增加或減少為 L 的函數
那這些值可以很大或很小
而這會讓訓練更困難
特別是如果您的梯度是指數般小於 L
那梯度下降會用非常小的步伐
這樣會讓梯度下降 花很長的時間來學習
總結一下, 您看到深度網路如何承受
梯度消失或爆炸的問題
實際上, 長久以來這個問題是
訓練深度神經網路的很大障礙
實際上有部份解決方案 不能完全解決
這個問題但幫助很大 也就是
仔細選擇您的初始權重
讓我們在下一段影片 看這個方案