訓練神經網絡時,隨機初始化權重非常重要。對於Logistic迴歸,可以將權重初始化爲零,但如果將神經網絡的各參數全部初始化爲0,再使用梯度下降法,這樣將會完全無效。
如圖所示,這是一個簡單的兩層神經網絡(輸入層是第0層),如果將所有的w矩陣和b向量都初始爲全0
則矩陣 是 是 是
將偏置項b初始化爲0實際上是可行的,但把W初始化成全零就成問題了,它的問題在於給神經網絡輸入任何的樣本,隱藏層的兩個單元都是相同的值,由於每個激活單元的計算公式如下,([i]表示第i層,w表示權重矩陣,x表示訓練樣本,b表示偏置項向量,a表示激活後的值)
由於w[1]是全0矩陣(維度是2x2),所以
然後在相同的激活函數作用後,得
所以這兩個隱藏單元其實在進行相同的計算,它們在做一樣的事情。
又因爲w[2]也是全0的矩陣(維度是1x2),所以
現在的Loss function(損失函數)爲
那麼對a求導
爲了便於說明問題,這裏假設輸出層的激活函數是sigmoid函數,即
g(z)代表激活函數作用在z之後的值,所以g(z)=a,所以
那麼由鏈式求導法則知
所以
由於,所以,根據前面的推導,可知dw[2]的兩個分量也是相同的,那麼梯度下降更新一次 ,所以
又因爲,那麼da的兩個分量也是相同的,
所以dz[1]的兩個分量是相同的
再向前計算一次導數
u,v只是變量記號,結果表明每個單元的節點的權重是一樣的,即權重矩陣的每一行是相同的。
一直這樣迭代下去,神經網絡的每一次正向和反向傳播,隱藏層的每個激活單元其實都在計算同樣的東西,其實也就是一個"對稱網絡",這種網絡無法學習到什麼有趣的東西,因爲每個隱藏層的激活單元都在計算同樣的東西,那麼隱藏層其實相當於只有一個單元,所以這個神經網絡其實可以簡化爲logistic迴歸,因此神經網絡的W參數矩陣不能隨機初始化爲0。