深度拾遺(08) - 權重初始化

初始化有三點個要求,

一個是不能有對稱性,好比全爲0.這樣的反向傳播對每個單元學習到的結果都同樣。沒有區分度學習不到東西。網絡

另外一個要求是避免落入激活函數飽和區,致使梯度學習太慢。dom

第三點對於深度網絡中的每一層,它們的輸出方差應該儘可能相同,知足學習到的目標分佈和原始分佈一致(那咱們將其都轉換到均值0方差1)。函數

知足第一點,用隨機化,使用高斯分佈,均勻分佈都行。學習

知足第二點,讓它的均值0方差1便可,不會跳躍到飽和區(sigmoid最明顯,所以後來用ReLU了)。spa

知足第三點,採用Xavier初始化方法,輸出輸入方差一致。.net

詳細說一下blog

Xavier

咱們假設輸入輸出的單元,均值0方差1。get

對於一個線性激活函數來講,n個輸入單元一個偏置b
class

它的方差計算方法

由於咱們假設均值爲0,有

同時w的產生和輸入的x天然是沒什麼關係,獨立分佈。

前向傳播,反向傳播的方差計算相似,所以知足下面便可。

具體來講,對於sigmoid , \(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}})\)

ReLU, \(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}})\)


1
2
3

相關文章
相關標籤/搜索