權值初始化方法之Xavier與MSRA
首先介紹一下Xavier等初始化方法比直接用高斯分佈進行初始化W的優勢所在:
一般的神經網路在前向傳播時神經元輸出值的方差會不斷增大,而使用Xavier等方法理論上可以保證每層神經元輸入輸出方差一致。
這裡先介紹一個方差相乘的公式,以便理解Xavier:
Xavier
現在我們先來分析一層卷積:
其中ni表示輸入個數。
根據概率統計知識我們有下面的方差公式:
特別的,當我們假設輸入和權重都是0均值時(目前有了BN之後,這一點也較容易滿足),上式可以簡化為:
進一步假設輸入x和權重w獨立同分布,則有:
於是,為了保證輸入與輸出方差一致,則應該有:
為什麼要保證輸入和輸出的方差一致:如果不一致,則會造成方差越來越大(vary(y)>var(x)),或是越來越小(var(y)
為了保證前向傳播和反向傳播時每一層的方差一致,應
但是,實際當中輸入與輸出的個數往往不相等,於是為了均衡考量,最終我們的權重方差應滿足:
———————————————————————————————————————
———————————————————————————————————————
學過概率統計的都知道 [a,b] 間的均勻分佈的方差為:
因此,Xavier初始化的實現就是下面的均勻分佈
——————————————————————————————————————————
MSRA
方法來自於何凱明paper 《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》
主要想要解決的問題是由於經過relu後,方差會發生變化,因此我們初始化權值的方法也應該變化
只考慮輸入個數時,MSRA初始化是一個均值為0方差為2/n的高斯分佈:
推導證明
推導過程與Xavier類似。
首先,用下式表示第L層卷積:
則其方差為:(假設x和w獨立,且各自的每一個元素都同分布,即下式中的n_l表示輸入元素個數,x_l和w_l都表示單個元素)
當權重W滿足0均值時,上述方差可以進一步寫為:
——————————————————(1)
對於ReLU啟用函式,我們有:(其中f是啟用函式)
—————————————————————(2)
帶入之前的方差公式則有:
由上式易知,為了使每一層資料的方差保持一致,則權重應滿足:
的不同,就是它是隻考慮前向傳播或者只考慮反向傳播的,然後使用高斯分佈,而沒有綜合考慮
補充說明
(1) 對於第一層資料,由於其之前沒有經過ReLU,因此理論上這一層的初始化方差應為1/n。但是,因為只有一層,係數差一點影響不大,因此為了簡化操作整體都採用2/n的方差;
(2) 反向傳播需要考慮的情況完全類似於“Xavier”。對於反向傳播,可以同樣進行上面的推導,最後的結論依然是方差應為2/n,只不過因為是反向,這裡的n不再是輸入個數,而是輸出個數。文章中說,這兩種方法都可以幫助模型收斂。
Xavier與MSRA比較
目前在各種深度學習領域的論文中,使用Xavier初始化方法的比MSRA要多。
雖然MSRA試圖去適應relu這一出發點感覺更好,但是博主個人認為其推導過程是存在弊端的:
一、公式一計算var(x)=E(x2)−E(x)2var(x)=E(x2)−E(x)2時預設把第二項視為零,但是從公式二中我們知道x是前一層輸出經過啟用函式得到的值,而relu將x中原本的負項都置零了,因此實際上並不能認為公式一成立。
二、MSRA方法只考慮一個方向,無法使得正向反向傳播時方差變化都很小。
可能是因為以上原因,通常深度學習實踐中都是使用Xavier。
以上介紹MSRA部分轉載自 blog.csdn.net/shuzfan/article/details/51347572