【模型解讀】network in network中的1*1卷積,你懂了嗎
文章首發於微信公眾號《與有三學AI》
02 這是深度學習模型解讀第二篇,本篇我們將介紹Network InNetwork。
Network In Network 是發表於2014年ICLR的一篇paper。這篇文章採用較少引數就取得了Alexnet的效果,Alexnet引數大小為230M,而Network In Network僅為29M,這篇paper主要兩大亮點:
01 提出MLP卷積層
下圖是傳統卷積結構:
使用relu的一個非線性變換操作為:
i,j表示畫素下標,xi,j表示畫素值,wk表示卷積引數,k就是下標的索引。
MLP卷積層結構如下圖:
mlpconv層的計算公式為:
i,j表示畫素下標,xi,j表示畫素值,wk,n表示第n層卷積卷積引數。
從以上可以看出,MLP卷積層通過疊加"micro network"網路,提高非線性表達,而其中的"micro network"基本組成單元是1*1卷積網路,說到這,就要解釋一下1*1卷積了,該篇論文是首次提出1*1卷積,具有劃時代的意義,之後的Googlenet借鑑了1*1卷積,還專門致謝過這篇論文。
1*1卷積的意義:
1. 實現了不同通道同一位置的資訊融合
如上圖,C2融合了C1不同通道同一位置的資訊。
2. 可以實現通道數的降維或升維
1*1*n,如果n小於之前通道數,則實現了降維,如果n大於之前通道數,則實現了升維。
02 用全域性均值池化代替全連線層
首先讓我們看下Network In Network的網路結構,如下圖。
上圖看出,該網路結構有三個MLP卷積層組成,每個MLP卷積層分別是一個普通卷積,加兩個1*1卷積。以1000分類為例,最後一個1*1卷積輸出的featuremap大小為6*6*1000。之後每個featuremap採用全域性均值池化,輸出1000個分類。由於沒有全連線的大量引數,使用全域性均值池化不需要引數,極大的降低了引數量。
如下圖是在CIFAR-10 資料集中 Global average pooling 和 fully connected測試對比圖, 從下圖可以看出無引數的Global average pooling層 相比較於有引數的全連線層錯誤率更低。
03 總結
Network In Network通過創新的建立MLP卷積層,提高了網路的非線性表達同時降低了引數量,用全域性均值池化代替全連線層,極大的降低了引數量。
參考文獻
Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2014
同時,在我的知乎專欄也會開始同步更新這個模組,歡迎來交流
注:部分圖片來自網路
—END—
打一個小廣告,我在gitchat開設了一些課程和chat,歡迎交流。