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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

卷积神经网络(CNN)原理

發布時間:2023/11/28 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卷积神经网络(CNN)原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習目標

  • 目標
    • 了解卷積神經網絡的構成
    • 記憶卷積的原理以及計算過程
    • 了解池化的作用以及計算過程
  • 應用

3.2.1 卷積神經網絡的組成

  • 定義
    • 卷積神經網絡由一個或多個卷積層、池化層以及全連接層等組成。與其他深度學習結構相比,卷積神經網絡在圖像等方面能夠給出更好的結果。這一模型也可以使用反向傳播算法進行訓練。相比較其他淺層或深度神經網絡,卷積神經網絡需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構。

我們來看一下卷積網絡的整體結構什么樣子。

?

其中包含了幾個主要結構

  • 卷積層(Convolutions)
  • 池化層(Subsampling)
  • 全連接層(Full connection)
  • 激活函數

3.2.2 卷積層

  • 目的
    • 卷積運算的目的是提取輸入的不同特征,某些卷積層可能只能提取一些低級的特征如邊緣、線條和角等層級,更多層的網路能從低級特征中迭代提取更復雜的特征。
  • 參數:
    • size:卷積核/過濾器大小,選擇有1?1, 3?3, 5 * 5
    • padding:零填充,Valid 與Same
    • stride:步長,通常默認為1
  • 計算公式

?

3.2.2.1 卷積運算過程

對于之前介紹的卷積運算過程,我們用一張動圖來表示更好理解些。一下計算中,假設圖片長寬相等,設為N

  • 一個步長,3 X 3 卷積核運算

假設是一張5 X 5 的單通道圖片,通過使用3 X 3 大小的卷積核運算得到一個 3 X 3大小的運算結果(圖片像素數值僅供參考)

?

我們會發現進行卷積之后的圖片變小了,假設N為圖片大小,F為卷積核大小

相當于N - F + 1 = 5 - 3 + 1 = 3N?F+1=5?3+1=3

如果我們換一個卷積核大小或者加入很多層卷積之后,圖像可能最后就變成了1 X 1 大小,這不是我們希望看到的結果。并且對于原始圖片當中的邊緣像素來說,只計算了一遍,二對于中間的像素會有很多次過濾器與之計算,這樣導致對邊緣信息的丟失。

  • 缺點
    • 圖像變小
    • 邊緣信息丟失

3.2.3 padding-零填充

零填充:在圖片像素的最外層加上若干層0值,若一層,記做p =1。

  • 為什么增加的是0?

因為0在權重乘積和運算中對最終結果不造成影響,也就避免了圖片增加了額外的干擾信息。

?

這張圖中,還是移動一個像素,并且外面增加了一層0。那么最終計算結果我們可以這樣用公式來計算:

5 + 2 * p - 3 + 1 = 55+2?p?3+1=5

P為1,那么最終特征結果為5。實際上我們可以填充更多的像素,假設為2層,則

5 + 2 * 2 - 3 + 1 = 75+2?2?3+1=7,這樣得到的觀察特征大小比之前圖片大小還大。所以我們對于零填充會有一些選擇,該填充多少?

3.2.3.1 Valid and Same卷積

有兩種兩種形式,所以為了避免上述情況,大家選擇都是Same這種填充卷積計算方式

  • Valid :不填充,也就是最終大小為
    • (N - F + 1) * (N - F + 1)(N?F+1)?(N?F+1)
  • Same:輸出大小與原圖大小一致,那么?NN變成了N + 2PN+2P
    • (N + 2P - F + 1) * (N + 2P - F + 1)(N+2P?F+1)?(N+2P?F+1)

那也就意味著,之前大小與之后的大小一樣,得出下面的等式

(N + 2P - F + 1) = N(N+2P?F+1)=N

P = \frac{F -1}{2}P=?2??F?1??

所以當知道了卷積核的大小之后,就可以得出要填充多少層像素。

3.2.3.2 奇數維度的過濾器

通過上面的式子,如果F不是奇數而是偶數個,那么最終計算結果不是一個整數,造成0.5,1.5.....這種情況,這樣填充不均勻,所以也就是為什么卷積核默認都去使用奇數維度大小

  • 1?1,3?3, 5?5,7?7

  • 另一個解釋角度

    • 奇數維度的過濾器有中心,便于指出過濾器的位置

當然這個都是一些假設的原因,最終原因還是在F對于計算結果的影響。所以通常選擇奇數維度的過濾器,是大家約定成俗的結果,可能也是基于大量實驗奇數能得出更好的結果。

3.2.4 stride-步長

以上例子中我們看到的都是每次移動一個像素步長的結果,如果將這個步長修改為2,3,那結果如何?

?

這樣如果以原來的計算公式,那么結果

N + 2P - F + 1 = 6 + 0 -3 +1 = 4N+2P?F+1=6+0?3+1=4

但是移動2個像素才得出一個結果,所以公式變為

\frac{N + 2P - F}{2} + 1 = 1.5 + 1 = 2.5?2??N+2P?F??+1=1.5+1=2.5,如果相除不是整數的時候,向下取整,為2。這里并沒有加上零填充。

所以最終的公式就為:

對于輸入圖片大小為N,過濾器大小為F,步長為S,零填充為P,

(\frac{N + 2P - F}{S} + 1),(\frac{N + 2P - F}{S} + 1)(?S??N+2P?F??+1),(?S??N+2P?F??+1)

3.2.5 多通道卷積

當輸入有多個通道(channel)時(例如圖片可以有 RGB 三個通道),卷積核需要擁有相同的channel數,每個卷積核 channel 與輸入層的對應 channel 進行卷積,將每個 channel 的卷積結果按位相加得到最終的 Feature Map。

?

3.2.5.1 多卷積核

當有多個卷積核時,可以學習到多種不同的特征,對應產生包含多個 channel 的 Feature Map, 例如上圖有兩個 filter,所以 output 有兩個 channel。這里的多少個卷積核也可理解為多少個神經元。

?

相當于我們把多個功能的卷積核的計算結果放在一起,比如水平邊緣檢測和垂直邊緣檢測器。

3.2.6 卷積總結

我們來通過一個例子看一下結算結果,以及參數的計算

  • 假設我們有10 個Filter,每個Filter3 X 3 X 3(計算RGB圖片),并且只有一層卷積,那么參數有多少?

計算:每個Filter參數個數為:3?3?3 + 1 bias = 28個權重參數,總共28 * 10 = 280個參數,即使圖片任意大小,我們這層的參數也就這么多。

  • 假設一張200?200?3的圖片,進行剛才的FIlter,步長為1,最終為了保證最后輸出的大小為200 * 200,需要設置多大的零填充

(\frac{N + 2P - F}{s} + 1) = N(?s??N+2P?F??+1)=N

P = \frac{(N -1) * s + F - N}{2} = \frac{199 + 3 - 200}{2} = 1P=?2??(N?1)?s+F?N??=?2??199+3?200??=1

3.2.6.1 設計單個卷積Filter的計算公式

假設神經網絡某層ll的輸入:

  • inputs:?n_{h}^{[l -1]},n_{w}^{[l -1]},n_{c}^{[l -1]}n?h?[l?1]??,n?w?[l?1]??,n?c?[l?1]??
  • 卷積層參數設置:
    • f^{[l]}f?[l]??:filter的大小
    • p^{[l]}p?[l]??:padding的大小
    • s^{[l]}s?[l]??:stride大小
    • n_{c}^{[l]}n?c?[l]??:filter的總數量
  • outputs:n_{h}^{[l]},n_{w}^{[l]},n_{c}^{[l]}n?h?[l]??,n?w?[l]??,n?c?[l]??

所以通用的表示每一層:

  • 每個Filter:f^{[l]} * f^{[l]} * n_{c}^{[l -1]}f?[l]???f?[l]???n?c?[l?1]??
  • 權重Weights:f^{[l]} * f^{[l]} * n_{c}^{[l -1]} * n_{c}^{[l]}f?[l]???f?[l]???n?c?[l?1]???n?c?[l]??
  • 應用激活函數Activations:a^{[l]} = n_{h}^{[l]},n_{w}^{[l]},n_{c}^{[l]}a?[l]??=n?h?[l]??,n?w?[l]??,n?c?[l]??
  • 偏差bias:1 * 1 * 1 * n_{c}^{[l]}1?1?1?n?c?[l]??,通常會用4維度來表示

之前的式子我們就可以簡化成,假設多個樣本編程向量的形式

Z^{[l]} = W^{[l]} * X^{[l-1]} + b^{[l]}Z?[l]??=W?[l]???X?[l?1]??+b?[l]??

A^{[l]} = g(Z^{[l]})A?[l]??=g(Z?[l]??)

3.2.7 池化層(Pooling)

池化層主要對卷積層學習到的特征圖進行亞采樣(subsampling)處理,主要由兩種

  • 最大池化:Max Pooling,取窗口內的最大值作為輸出
  • 平均池化:Avg Pooling,取窗口內的所有值的均值作為輸出

意義在于:

  • 降低了后續網絡層的輸入維度,縮減模型大小,提高計算速度
  • 提高了Feature Map 的魯棒性,防止過擬合

?

對于一個輸入的圖片,我們使用一個區域大小為2?2,步長為2的參數進行求最大值操作。同樣池化也有一組參數,f, sf,s,得到2?2的大小。當然如果我們調整這個超參數,比如說3 * 3,那么結果就不一樣了,通常選擇默認都是f = 2 * 2, s = 2f=2?2,s=2

池化超參數特點:不需要進行學習,不像卷積通過梯度下降進行更新。

如果是平均池化則:

?

3.2.8 全連接層

卷積層+激活層+池化層可以看成是CNN的特征學習/特征提取層,而學習到的特征(Feature Map)最終應用于模型任務(分類、回歸):

  • 先對所有 Feature Map 進行扁平化(flatten, 即 reshape 成 1 x N 向量)
  • 再接一個或多個全連接層,進行模型學習

?

3.2.9 總結

  • 掌握卷積神經網路的組成
  • 掌握卷積的計算過程
    • 卷積過濾器個數
    • 卷積過濾器大小
    • 卷積過濾器步數
    • 卷積過濾器零填充
  • 掌握池化的計算過程原理

總結

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

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