1.初始化權重矩陣為0
對於每個隱含層節點,輸出的結果都是一樣的。另外,進行梯度下降時,由於偏導一樣,因此不斷迭代,不斷一樣,不斷迭代,不斷一樣..多層神經網絡表現的跟線性模型一樣,不可取!
2.隨機初始化權重矩陣
(1)標准正態分布
np.random.rand(size_l,size_l-1)
可能導致梯度下降或者梯度爆炸的問題
(2)啟發式來根據非線性激活函數初始化權重
---梯度下降
對於深度網絡來說,對於任何激活函數,梯度將隨着反向傳播期間每層向后移動變得越來越小。梯度變小,權重更新緩慢,網絡收斂速度變慢。甚至可能阻止網絡進一步訓練!
---梯度爆炸
與梯度下降相反,對於任何激活函數,梯度變化越來越大,可能導致網絡跳過最優值或者在附近波動,而永遠無法收斂。
解決方法:啟發式方法
對於激活函數ReLu:
W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(2/size_l-1)
對於激活函數tanh(又稱為Xavier初始化):
W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(1/size_l-1)
其他形式的啟發式方法:
W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(1/(size_l-1+size_l))