為什麼神經網路參數不能全部初始化為全0?

最近試了一個小實驗,發現當神經網路參數全部初始化為全0的時候(這樣最省力嘛),效果並不好,後來和請教了ybb並且網上查閱了一些資料,記錄一下自己的筆記和總結,歡迎大家指錯交流~

還是原來的寫作風格,通過一個具體例子,在講例子的過程中,通俗解釋要講的知識點。見下!

假設我們現在需要初始化的神經網路如下所示:

我們初始化權值為

其中W1代表輸入層到隱藏層的權值矩陣,W2代表隱藏層到輸出層的權值矩陣。

假設網路的輸入為[x1,x2,x3],然後通過網路的正向傳播,可以得出:

由於

我們可以知道:

從上面可以知道,此時隱藏層的值是相同的,然後經過激活函數f後,得到的a4,a5仍然是相同的,如下:

最終網路的輸出為:

此時,假設我們的真實輸出為y,則均方誤差損失函數可以表示為

到了這裡,此時又應該到我們偉大的BP反向傳播演算法出場了!我們需要反向更新權值,它使得預測的輸出值與真實值越來越靠近。

這裡假設我們的讀者已經知道了BP反向傳播的過程,可以參看通俗理解神經網路BP傳播演算法 - 知乎專欄。

可以知道,通過反向傳播後,結點4,5的梯度改變是一樣的,假設都是	riangle w,那麼此時結點4與結點6之間的參數,與結點5與結點6之間的參數變為了,如下:

w_{64}=0+Delta w= Delta w

w_{65}=0+Delta w= Delta w

由上式可以看出,新的參數相同了!!!!

同理可以得出輸入層與隱藏層之間的參數更新都是一樣的,得出更新之後的參數

都是相同的!然後不管進行多少輪正向傳播以及反向傳播,每倆層之間的參數都是一樣的。

換句話說,本來我們希望不同的結點學習到不同的參數,但是由於參數相同以及輸出值都一樣,不同的結點根本無法學到不同的特徵!這樣就失去了網路學習特徵的意義了。

隱藏層與其它層多個結點,其實僅僅相當於一個結點!!如下圖表示:

這樣總結來看:w初始化全為0,很可能直接導致模型失效,無法收斂。

因此可以對w初始化為隨機值解決(在cnn中,w的隨機化,也是為了使得同一層的多個filter,初始w不同,可以學到不同的特徵,如果都是0或某個值,由於計算方式相同,可能達不到學習不同特徵的目的)


推薦閱讀:

PaperWeekly 第53期 | 更別緻的詞向量模型:Simpler GloVe - Part 2
線下沙龍 x 北京 | NLP專題技術分享會,佔座全憑手速!
論文推薦:機器閱讀理解,問答系統,對話生成 | 本周值得讀 #36
SEO詞庫清洗詞和歸類相關問題?

TAG:机器学习 | 深度学习DeepLearning | 自然语言处理 |