Caffe 全連線層
深度學習筆記(6)全連線層的實現:全連線層的每一個結點都與上一層的所有結點相連,用來把前邊提取到的特徵綜合起來。由於其全相連的特性,一般全連線層的引數也是最多的。
全連線層的前向計算
下圖中連線最密集的2個地方就是全連線層,這很明顯的可以看出全連線層的引數的確很多。在前向計算過程,也就是一個線性的加權求和的過程,全連線層的每一個輸出都可以看成前一層的每一個結點乘以一個權重係數W,最後加上一個偏置值b得到,即 。如下圖中第一個全連線層,輸入有50*4*4個神經元結點,輸出有500個結點,則一共需要50*4*4*500=400000個權值引數W和500個偏置引數b。
下面用一個簡單的網路具體介紹一下推導過程
其中,x1、x2、x3為全連線層的輸入,a1、a2、a3為輸出,根據我前邊在筆記1中的推導,有
可以寫成如下矩陣形式:
全連線層的反向傳播
以我們的第一個全連線層為例,該層有50*4*4=800個輸入結點和500個輸出結點。
由於需要對W和b進行更新,還要向前傳遞梯度,所以我們需要計算如下三個偏導數。
1、對上一層的輸出(即當前層的輸入)求導
若我們已知轉遞到該層的梯度,則我們可以通過鏈式法則求得loss對x的偏導數。
首先需要求得該層的輸出ai對輸入xj的偏導數
再通過鏈式法則求得loss對x的偏導數:
上邊求導的結果也印證了我前邊那句話:在反向傳播過程中,若第x層的a節點通過權值W對x+1層的b節點有貢獻,則在反向傳播過程中,梯度通過權值W從b節點傳播回a節點。
若我們的一次訓練16張圖片,即batch_size=16,則我們可以把計算轉化為如下矩陣形式。
2、對權重係數W求導
我們前向計算的公式如下圖,
由圖可知,所以:。
當batch_size=16時,寫成矩陣形式:
3、對偏置係數b求導
由上面前向推導公式可知,
即loss對偏置係數的偏導數等於對上一層輸出的偏導數。
當batch_size=16時,將不同batch對應的相同b的偏導相加即可,寫成矩陣形式即為乘以一個全1的矩陣: