在該文章的兩大創新點:一個是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 和 權值初始化的方法。 如果有什麼問題與錯誤,大家可以在評論區寫下來,我相互討論學習進步。