天天看點

随機初始化模型參數

一、前言

1、在神經網絡中,我們通常需要随機初始化模型的參數。我們可以這樣了解

2、假設在一個多層感覺機中,輸出層隻有一個元素(簡化處理)。如果将每個隐藏單元的參數都初始化為相同的值,那麼在正向傳播時每個隐藏單元将根據相同的輸入計算出相同的值,并傳遞至輸出層。在反向傳遞中,每個隐藏單元的參數梯度值相等。是以,這些參數在使用梯度優化算法後梯度值依然相等。之後的疊代也是如此。在這種情況下,無論隐藏層=單元有多少,隐藏層的本質隻有一個隐藏單元在發揮作用。是以,我們通常對神經網絡的模型參數,特别是權重參數進行随機初始化

3、随機初始化是保證在進行優化前打破對稱性的關鍵

二、初始化方法

1、預設随機初始化:我們使用正态分布來初始化權重值。如果我們不指定初始化方法,架構将使用預設的随機初始化方法,對于中等規模的問題,這種方法通常很有效。

2、Xavier初始化:假設某全連接配接層的輸入個數為a(????in),輸出個數為b(????out),Xavier随機初始化将使該層中權重參數的每個元素都随機采樣與均勻分布(均勻分布由兩個參數a和b定義,它們是數軸上的最小值和最大值,通常縮寫為U(a,b))。它的設計考慮到,模型參數初始化後,每層輸出的方差不該受到該層輸入個數影響,且每層梯度的方差也不該受該層輸出個數影響。

随機初始化模型參數
三、讨論

為了使得網絡中資訊更好的流動,每一層輸出的方差應該盡量相等

了解:

1、我認為網絡學習的是訓練資料的空間分布,即訓練收斂時,整個輸出空間應該是輸入空間分布的某種穩定投影。從層的角度來看,假如2層網絡:A->B,B希望獲得穩定輸出,但由于每次學習更新導緻A也在變化,是以B想穩定就比較難。怎麼辦,保證A和B的分布一樣,這樣學習就簡單一點,即可以了解成資訊流通更流暢

2、 解釋得挺有道理,謝謝回答! 昨天也問了一個部落客,他的回答也挺有道理的。copy來給你看看 “本文的思想在考慮線性激活函數的情況下, 在初始化的時候使各層神經元的方差保持不變, 即使各層有着相同的分布. 如果每層都用N(0, 0.01)随機初始化的話, 各層的資料分布不一緻, 随着層度的增加, 神經元将集中在很大的值或很小的值, 不利于傳遞資訊. 很多初始化政策都是為了保持每層的分布不變, 而BN是通過增加歸一化層使得每層資料分布保持在N(0, 1)”

繼續閱讀