一、爲什麼隨機初始化
在之前有關梯度下降法的blo中我們討論了一個係數是如何在一個神經網絡中進行迭代的,而一個迭代過程,不知道知道迭代是如何進行的,還要知道,迭代的初值是什麼,這節課討論的就是這個問題。
那既然初始化是必要的,爲什麼一定要隨機呢?
考慮這樣一個問題,在一個隱藏層中存在兩個神經元,他倆的激活函數相同,那麼如果給這倆神經元相同的初值,我們就會發現這來這個神經元是可以輪換的,也就是說不管後面進行了什麼操作,只要是針對神經網絡的,這兩個神經元的變化必然是一樣的。若果不一樣顯然矛盾,這裏不加證明。那麼也就是說我們的這兩個神經元在神經網絡計算的任意時刻始終是相等的。
從這個結論出發,我們發現如果一個神經網絡中有兩個神經元是一模一樣的,那麼這兩個神經元完全可以合併成同一個神經元,因此,我們不應該讓一個神經網絡中有相同的神經元,也就是說我們不能給兩個神經元相同的初始化的值
二、如何隨機初始化
我們在給初值的時候,用一個隨機數然後乘上0.01作爲w的初始值,這也被成爲破壞對稱性問題。
爲什麼是隨機數,主要是這樣可以使得我們最後得到的初值是一定不一樣的,從上面的分析中我們不難得到一個推論——不同的初值所對應的神經元跑出來的結果是不相同的,因此這樣可以保證我們的每個神經元是獨立的。
而乘上0.01的原因主要是是的最終的值可以集中在0的附近,這樣我們在做比如sigmiod函數的時候,一開始就能有一個很好的斜率,這可以使得我們開始時的學習效率更優。