今天簡單介紹Xaier Initialization這個方法
這個方法的目的是在初始化神經網路參數的時候穩定梯度
避免梯度爆炸或是梯度消失
可以看到下方算式代表的是一層神經網路參數W乘以輸入x得到輸出y
W是矩陣 x是向量
n_in n_out代表輸入的維度跟輸出的維度
我們的目標就是讓輸出的變異數等於輸入的變異數(見第二個算式)
藉此來穩定我們signal 傳遞
我們假設W跟x是獨立變數 所以變異數就可以拆開變成相乘
接下來W代表初始化根據正態分布 均值0 變異數sigma平方
x則是輸入 輸入通常都會正則化 代表均值0 變異數1
接著帶入rearange得出sigma平方=1/_in
接著可以看到下面第一行我們要將損失函數做一個反向傳播的動作
那這邊我們關注的就會是損失函數梯度變異數是否跟輸入的變異數一樣
我們用chain rule來反向到xi 輸入層
第二行就是對xi 偏微分其他變成0 剩下Wji
接下來對損失函數梯度指定它為小delta
套上變異數 跟昨天一樣 輸入跟神經網路參數獨立
所以可以變成相乘
接下來解開sigma
得到結果
你會發現說正向傳播跟反向傳播怎麼一個分母是輸入維度
一個是輸出維度 那無法同時滿足兩個要求
所以就有學者提出第二張最終的公式
參數wji 就會從正態分布均值0標準差為根號變異數當中提取數字