對於全連線層的理解 全連線層的推導
全連線層的推導
全連線層的每一個結點都與上一層的所有結點相連,用來把前邊提取到的特徵綜合起來。由於其全相連的特性,一般全連線層的引數也是最多的。
全連線層的前向計算
下圖中連線最密集的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的矩陣:
-----------------------------------------------------------------------------------------------------------------------------------
接下來再主要談談全連線層的意義連線層實際就是卷積核大小為上層特徵大小的卷積運算,卷積後的結果為一個節點,就對應全連線層的一個點。假設最後一個卷積層的輸出為7×7×512,連線此卷積層的全連線層為1×1×4096。1.共有4096組濾波器
2.每組濾波器含有512個卷積核
3.每個卷積核的大小為7×7
4.則輸出為1×1×4096
------------------------------------------
若後面再連線一個1×1×4096全連線層。則其對應的轉換後的卷積層的引數為:
1.共有4096組濾波器
2.每組濾波器含有4096個卷積核
3.每個卷積核的大小為1×1
4.輸出為1X1X4096
相當於就是將特徵組合起來進行4096個分類分數的計算,得分最高的就是劃到的正確的類別。
而全連線層的壞處就在於其會破壞影象的空間結構,
因此人們便開始用卷積層來“代替”全連線層,
通常採用1×1的卷積核,這種不包含全連線的CNN成為全卷積神經網路(FCN),
FCN最初是用於影象分割任務,
之後開始在計算機視覺領域的各種問題上得到應用,
事實上,Faster R-CNN中用來生成候選視窗的CNN就是一個FCN。
FCN的特點就在於輸入和輸出都是二維的影象,並且輸入和輸出具有相對應的空間結構,
在這種情況下,我們可以將FCN的輸出看作是一張熱度圖,用熱度來指示待檢測的目標的位置和覆蓋的區域。
在目標所處的區域內顯示較高的熱度,
而在背景區域顯示較低的熱度,
這也可以看成是對影象上的每一個畫素點都進行了分類,
這個點是否位於待檢測的目標上。