1. 程式人生 > >權值初始化方法之Xavier與MSRA

權值初始化方法之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的高斯分佈: 
MSRA初始化方法 
推導證明

推導過程與Xavier類似。

首先,用下式表示第L層卷積: 
卷積表示 
則其方差為:(假設x和w獨立,且各自的每一個元素都同分布,即下式中的n_l表示輸入元素個數,x_l和w_l都表示單個元素) 
方差 
當權重W滿足0均值時,上述方差可以進一步寫為: 
方差整理——————————————————(1) 
對於ReLU啟用函式,我們有:(其中f是啟用函式) 
ReLU啟用方差—————————————————————(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