【深度學習】CNN 中 1x1 卷積核的作用


【深度學習】CNN 中 1x1 卷積核的作用

最近研究 GoogLeNet 和 VGG 神經網絡結構的時候,都看見了它們在某些層有采取 1x1 作為卷積核,起初的時候,對這個做法很是迷惑,這是因為之前接觸過的教材的例子中最小的卷積核是 3x3 ,那么,1x1 的卷積核有什么意義呢?

最初應用 1x1 卷積核的神經網絡是 Network In Network,然后 GoogLeNet 和 VGG 也不約而同的更正了。

他們在論文中解釋,大概有下面 2 個意義。

1、增加網絡的深度

這個就比較好理解了,1x1 的卷積核雖小,但也是卷積核,加 1 層卷積,網絡深度自然會增加。

其實問題往下挖掘,應該是增加網絡深度有什么好處?為什么非要用 1x1 來增加深度呢?其它的不可以嗎?

其實,這涉及到感受野的問題,我們知道卷積核越大,它生成的 featuremap 上單個節點的感受野就越大,隨着網絡深度的增加,越靠后的 featuremap 上的節點感受野也越大。因此特征也越來越抽象。

但有的時候,我們想在不增加感受野的情況下,讓網絡加深,為的就是引入更多的非線性。

而 1x1 卷積核,恰巧可以辦到。

我們知道,卷積后生成圖片的尺寸受卷積核的大小和跨度影響,但如果卷積核是 1x1 ,跨度也是 1,那么生成后的圖像大小就並沒有變化。

但通常一個卷積過程包括一個激活函數,比如 Sigmoid 和 Relu。

所以,在輸入不發生尺寸的變化下,卻引入了更多的非線性,這將增強神經網絡的表達能力。

2、升維或者是降維

大家可以看下面這張圖:
在這里插入圖片描述

我們可以直觀地感受到卷積過程中:卷積后的的 featuremap 通道數是與卷積核的個數相同的

所以,如果輸入圖片通道是 3,卷積核的數量是 6 ,那么生成的 feature map 通道就是 6,這就是升維,如果卷積核的數量是 1,那么生成的 feature map 只有 1 個通道,這就是降維度。

值得注意的是,所有尺寸的卷積核都可以達到這樣的目的。

那為什么要用 1x1 呢

原因就是數據量的大小,我們知道在訓練的時候,卷積核里面的值就是要訓練的權重,3x3 的尺寸是 1x1 所需要內存的 9 倍,其它的類似。所以,有時根據實際情況只想單純的去提升或者降低 feature map 的通道,1x1 無疑是一個值得考慮的選項。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM