日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

卷积神经网络CNN中1×1卷积作用理解

發布時間:2023/12/8 卷积神经网络 101 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卷积神经网络CNN中1×1卷积作用理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.引言

研究 GoogLeNet 和 VGG 神經網絡結構的時候,都看見了它們在某些層有采取 1x1 作為卷積核,在最開始看到的AlexNet中都是出現了卷積核是 3x3和5×5的。那么,1x1 的卷積核有什么意義呢?

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

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

1、增加網絡的深度,添加非線性

其一:

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

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

其實,這涉及到感受野的問題,我們知道卷積核越大,它生成的 featuremap 上單個節點的感受野就越大,隨著網絡深度的增加,越靠后的 featuremap 上的節點感受野也越大。因此特征也越來越形象,也就是更能看清這個特征是個什么東西。層數越淺,就越不知道這個提取的特征到底是個什么東西。

解釋:

好比以上這個圖,當層數越淺時,我們只能看到low level parts 也就是一些細節的紋理,并不知道這個紋理是來自于車輪,車身,還是其他哪里。但是隨著網絡層數的加深,感受野增大,到了mid level parts時,就可以看到車的一部分零件了,比如看到了車輪,車窗,但是看不完。到了層數很深后,就是high level parts了,可以看到這個物品是個完整的車子,或者是其他一個什么東西。

其二:

但有的時候,我們想在不增加感受野的情況下,讓網絡加深,為的就是引入更多的非線性。而 1x1 卷積核,恰巧可以辦到。

我們知道,卷積后生成圖片的尺寸受卷積核的大小和卷積核個數影響,但如果卷積核是 1x1 ,個數也是 1,那么生成后的圖像長寬不變,厚度為1。

但通常一個卷積層是包含激活和池化的。也就是多了激活函數,比如 Sigmoid 和 Relu。

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

2、升維或者降維

大家可以看下面這張圖:

在這里插入圖片描述

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

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

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

3、減少網絡參數,是成倍數減少

那為什么要用 1x1 呢?

原因就是數據量的大小,我們知道在訓練的時候,卷積核里面的值就是要訓練的權重。下面舉1個例子:

在RestNet中:

?

看右圖,輸入是一個3×3×256的特征,第一個步驟用64個1x1的卷積把256維channel降到64維,然后在最后通過1x1卷積恢復到256個channel,整體上用的參數數目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用1×1卷積的話參考左圖,輸入假設是3x3x256(圖中是3x3x64我們為了對比右圖參數個數所以改變一下),第一步經過256個卷積核3×3×256,第二部再經過256個卷積核3×3×256。所以參數數目: 3x3x256x256x2 = 1179648,參數個數差了16.94倍。

減少參數的例子還出現在哪里呢?我們看VGG

Q1: 為什么3個3x3的卷積可以代替7x7的卷積?

  • 3個3x3的卷積,在卷積層之后添加使用了3個非線性激活函數,增加了非線性表達能力,使得分割平面更具有可分性。同時使得網絡層次加深了。
  • 減少參數個數。對于C個通道的單個卷積核,7x7含有參數7x7×C, 3個3x3的參數個數為3x3x3×C,49/27≈1.81 參數大大減少。
  • 2個3×3卷積核疊加可以當做1個5×5卷積核,3個3×3卷積核疊加可以當做1個7×7卷積核。但是大的卷積核拆成3×3疊加之后可以進一步減少參數個數,但是實際的感受野不會發生改變。

    下圖中 最底下是5×5的,用3×3的去卷積得到3×3的圖(也就是第二層),再用3×3的去卷積,就會得到一個數,也就是下圖最頂層。

    既然,感受野的大小是一樣的,那么用 3x3 有什么好處呢?

    答案有 2,一是參數更少,二是層數加深了。

    現在解釋參數變少的問題。(為什么是C^2還是感覺有問題,我理解就是C)

    假設現在有 3 層 3x3 卷積核堆疊的卷積層,卷積核的通道是 C 個,那么它的參數總數是 3x(3Cx3C) = 27C^2。同樣和它感受野大小一樣的一個卷積層,卷積核是 7x7 的尺寸,通道也是 C 個,那么它的參數總數就是 49C^2。通過計算很容易得出結論,3x3 卷積方案的參數數量比 7x7 方案少了 81% 多,并且它的層級還加深了。

    4.再換一種理解方式

    當1*1卷積出現時,在大多數情況下它作用是升/降特征的維度,這里的維度指的是通道數(厚度),而不改變圖片的寬和高。

    舉個例子,比如某次卷積之后的結果是W*H*6的特征,現在需要用1*1的卷積核將其降維成W*H*5,即6個通道變成5個通道:

    如下圖就是一個W*H*6的特征,而1*1的卷積核在圖上標出,卷積核自身的厚度也是6(圖畫的好難看!!)

    這里寫圖片描述

    通過一次卷積操作,W*H*6將變為W*H*1,這樣的話,使用5個1*1的卷積核,顯然可以卷積出5個W*H*1,再做通道的串接操作,就實現了W*H*5。

    在這里先計算一下參數數量,5個卷積核,每個卷積核的尺寸是1*1*6,也就是一種有30個參數。

    我們還可以用另一種角度去理解1*1卷積,可以把它看成是一種全連接,如下圖:

    這里寫圖片描述

    第一層有6個神經元,分別是a1—a6,通過全連接之后變成5個,分別是b1—b5,第一層的六個神經元要和后面五個實現全連接,本圖中只畫了a1—a6連接到b1的示意,可以看到,在全連接層b1其實是前面6個神經元的加權和,權對應的就是w1—w6,到這里就很清晰了:

    第一層的6個神經元其實就相當于輸入特征里面那個通道數:6,而第二層的5個神經元相當于1*1卷積之后的新的特征通道數:5。

    w1—w6是一個卷積核的權系數,如何要計算b2—b5,顯然還需要4個同樣尺寸的核。

    最后一個問題,圖像的一層相比于神經元還是有區別的,這在于是一個2D矩陣還是一個數字,但是即便是一個2D矩陣的話也還是只需要一個參數(1*1的核),這就是因為參數的權值共享。就是說一個卷積核的參數可以對整張圖片進行卷積一遍。

    參考文獻:

    https://blog.csdn.net/briblue/article/details/83151475

    https://blog.csdn.net/chaipp0607/article/details/60868689

    ?

    總結

    以上是生活随笔為你收集整理的卷积神经网络CNN中1×1卷积作用理解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。