一個是不能有對稱性,好比全爲0.這樣的反向傳播對每個單元學習到的結果都同樣。沒有區分度學習不到東西。網絡
另外一個要求是避免落入激活函數飽和區,致使梯度學習太慢。dom
第三點對於深度網絡中的每一層,它們的輸出方差應該儘可能相同,知足學習到的目標分佈和原始分佈一致(那咱們將其都轉換到均值0方差1)。函數
知足第一點,用隨機化,使用高斯分佈,均勻分佈都行。學習
知足第二點,讓它的均值0方差1便可,不會跳躍到飽和區(sigmoid最明顯,所以後來用ReLU了)。spa
知足第三點,採用Xavier初始化方法,輸出輸入方差一致。.net
詳細說一下blog
咱們假設輸入輸出的單元,均值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]}})\)