在該文章的兩大創新點:一個是PReLU,一個是權值初始化的方法。下面我們分別一一來看。
PReLU(paramter ReLU)
所謂的PRelu,即在 ReLU激活函數的基礎上加入了一個參數,看一個圖就明白了:
右邊的圖上多了一個參數吧,在負半軸上不再為0,而是一個可以學習的斜率。 很容易明白。實驗結果顯示該方法可以提高識別率。
權值初始化的方法:
對於文中的權值初始化問題:主要思想是跟隨了“Xavier”的初始化的思想,研究了第一層layer的響應的 variance。下面的推導過程是基於ReLU激活函數的。 分為一下兩種情況來分析:
forward propagation:
在推導前,先說一些符號的代表意義:yL表示第L層上的一個feature map上的一個神經單元的response(這里的response指的是上一層的所有連接單元的加權和,是不經過激活函數哈,這里把激活函數作另外的一個行為吧);yL 經過激活函數看得到的值我們記作XL; bL表示偏置;L層的feature map的個數用 dL表示; 卷積核的大小表示為k*K(可能不同的layer的卷積核不一樣哦,這里就不區分了); 激活函數表示為f();
以下為正向傳播的卷積過程(只畫出了一個feature map的情況) :
其中一個輸出值用公式表示 如下(接收域的feature map 的個數為 dL-1) :
接下來呢,我們會這么做:
1. 初始化時,我們把權值WL里的各元素 初始化為獨立同分布的變量,且令 WL 的均值為 0 ;
2. 我們假設元素 XL 的變量也是獨立同分布的變量;
3. WL 與 XL 是相互獨立的;
往下的推導會用於以下概率論中的知識:
對於隨機變量X,它的期望可以表示為EX,下面看看它的方差怎么表示:
DX = E(X-EX)2 = E(X2-2XEX +(EX)2) = EX2 - (EX)2
所以當 EX=0時,DX = EX2
當隨機變量X與隨機變量Y相互獨立時,我們有這樣的結論:
EXY = EX * EY
DXY = EX2EY2 –(EX)2(EY)2
D(X+Y) = DX + DY
在上面的條件下我們繼續推導,推導的核心為求 response 的 方差(variance):
所以就得到了:
然后呢,我們讓W L-1 的對稱分布在0值的左右,這樣同時也就可以讓 W 的均值為0 (或期望為0)了,然后,這樣的話, y L-1 的分布也是對稱分布在0值左右了。y L-1 的期望也為0 了。所以就有了下面的結果:
代入到上面公式中得到:
把L層的layer 聯合起來,我們可以得:
為了使 y1 的方差與 yL 的方差相等,我們就需要另:
對於第一層的輸入,我們有這樣的公式:
所以第一層對應的條件為:
為了各層之間 統一起來, 第一層差個1/2也沒事,所以呢,對於前向傳導,權值應該滿足這樣的條件:
其中:
結論: 權值滿足 mean 為0, 方差為 2/ nl 的條件.
Backward Propagation :
對於反向傳播時,利用BP算法,當我們在推導公式中,總要求出目標函數對每一層的輸入值的 偏導數。下面的公式如果你沒有推導過這個BP過程的話,可能有點看不懂哦:
上面的公式可能和論文里的有點不一樣,因為吧,論文里一次性把多個feature map上的對應元素求出來了,我覺得對於下面的推導,求一個就夠 了。對於上面公式的過程,我自己畫了一個圖表示一下 :
對上圖的說明:1,我只畫出了一個 feature map的情況;2,還有注意卷積核,與正向傳播時的卷積核有差別(旋轉了180度);3,卷積的對象以及輸出的對象都是偏導數;4,可以與正向傳播時作個對比;
下面為推導過程,也是圍繞着 方差來的:
然后,就得到了:
當我們把L層合在一起時,變為了:
當然,對於X0(它表示網絡的輸入)沒有必要去求偏導數,但是為了推出第一層網絡權值滿足的條件,我們也可以寫出來:
對於前向傳導時,在第一層會有一個1/2的差別,但是在這反向傳播中沒有。其實反射傳播也存在一層的差別,只不過是在L+1層,因為在第L層往后可能沒有激活函數了。
所以呢,在反向傳播過程中,為了使偏對數的方差相同的話,那么需要滿足的條件為:
注意了正向與反向的差別了吧,為了均衡正向與反向傳播,我們可以取其平均值哦。
文章后面的話,就是一些實驗的安排了。。其實對於VLIRC 任務來說,實驗部分其實都基本上吧方法類似的。
文章一方面說,他的初始化方法可以做到對於深層的網絡訓練時起來收斂的作用, 一方面又說了,很多時候一味地增加網絡的深度並不一定可以使網絡的性能提高(這個也在很多其它的文獻中有說的了)。所以呢,網絡的設計吧,還是一個難題啊。
另外,從文中看到一個新的pooling 方法: spatial pyramid pooling. 它來自文獻: Spatial pyramid pooling in deep convolutional networks for visual recognition。
總之呢,文章最大亮點大於:Prelu 和 權值初始化的方法。 如果有什么問題與錯誤,大家可以在評論區寫下來,我相互討論學習進步。