當前位置:網站首頁>深度學習基礎知識點(一)CNN卷積神經網絡——1.卷積方面的原理

深度學習基礎知識點(一)CNN卷積神經網絡——1.卷積方面的原理

2022-05-13 17:46:17不瘦8斤的妥球球餅

目錄

1.感受野受哪幾個參數的影響,計算感受野的大小 ?

2.上采樣方式subpixel,反卷積,resize

3.卷積核大小為什麼是奇數?

4.CNN為什麼參數共享?

5.Dropout是什麼?為什麼Dropout可以防止過擬合?

Dropout具體工作流程

Dropout在測試時需要怎麼補償?

為什麼說Dropout可以解决過擬合?

6.CNN的平移不變怎麼體現?

7.為什麼CNN比DNN在圖像領域更具優勢


1.感受野受哪幾個參數的影響,計算感受野的大小 ?

關於感受野的總結 - 知乎

感受野被定義卷積神經網絡特征所能看到輸入圖像的區域,換句話說特征輸出受感受野區域內的像素點的影響。

比如下圖(該圖為了方便,將二維簡化為一維),這個三層的神經卷積神經網絡,每一層卷積核的𝑘𝑒𝑟𝑛𝑒𝑙_𝑠𝑖𝑧𝑒 = 3 ,𝑠𝑡𝑟𝑖𝑑𝑒 = 1,那麼最上層特征所對應的感受野就為如圖所示的7x7。

計算方式:

如果有dilated conv的話,計算公式為:

2.上采樣方式subpixel,反卷積,resize

subpixel:亞像素卷積,是一種正常卷積的簡化形式,並加了很强的假設,結果就是去除了大量的卷積運算。結果一般是一張更大的圖片,可用作超分辨率。

一個正常的反/逆/轉置卷積如下:

把一個3x3的小圖片變成一個5X5的大圖片。白色虛線區域全填0。subpixel作者認為,這些白色的填0區域,是無效信息,甚至對求梯度優化有害處。明明可以直接從原圖得到信息,何必非要填0呢。於是作者搞了這個:

第一個白色矩陣圖片是輸入層。第二個、第三個白色張量是隱藏層,做步長為1的正常卷積。第四個彩色圖片,經過子像素卷積,得到最後一張斑斕的大圖。

PixelShuffle(像素重組)的主要功能是將低分辨的特征圖,通過卷積和多通道間的重組得到⾼分辨率的特征圖。這⼀⽅法最初是為了解决圖像超分辨率問題⽽提出的,這種稱為Sub-Pixel Convolutional Neural Network的⽅法成為了上采樣的有效⼿段
要把⼀張低分辨輸⼊轉變為⾼分辨輸出,論⽂ESPCN中提出⽤基於特征抽取和亞像素卷積的⽅法來擴⼤特征圖,將特征圖從低分辨空間轉換到⾼分辨空間中去。
上圖中左側第⼀部分是⽤於對圖像的特征進⾏抽取。⽽後在倒數第⼆層⽣成 r*r 個通道特征圖,這⾥ r 就是希望上采樣的倍數
pixelshuffle的主要功能就是將這 r*r 個通道的特征圖組合為新的 w*r,h*r 的上采樣結果。具體來說,就是將原來⼀個低分辨的像素劃分為r*r個更⼩的格⼦,利⽤r*r個特征圖對應比特置的值按照⼀定的規則來填充這些⼩格⼦。按照同樣的規則將每個低分辨像素劃分出的⼩格⼦填滿就完成了重組過程。在這⼀過程中模型可以調整 r*r 個shuffle通道權重 不斷優化⽣成的結果。
主要實現了這樣的功能:N * (C * r * r) * W * H  →  N * C * (H * r) * (W * r)
利⽤這些⽅法可以來改進特征圖上采樣過程中出現的問題,特別是在圖像超分辨和圖像增强的算法中需要對特征圖進⾏上下采樣的過程,可以解决插值和解卷積的⼀些⼈⼯痕迹問題。

最上面一排是輸入的模糊圖像x。中間是超分辨後的圖片f(x)。最下面是對照樣例y。

3.卷積核大小為什麼是奇數?

  • 奇數卷積核更容易做padding。我們假設卷積核大小為k*k,為了讓卷積後的圖像大小與原圖一樣大,根據公式可得到padding=(k-1)/2,k只有在取奇數的時候,padding才能是整數,就可以從圖像的兩邊對稱padding,否則不好進行圖片填充。
  • 保護比特置信息。在CNN中,一般會以卷積核的某個點進行窗口滑動,通常這個基准點是卷積核的中心點。奇數有central pixel,保證了錨點剛好在中間,方便以模塊中心為標准進行滑動卷積,避免了比特置信息發生偏移 。由於奇數核擁有天然的絕對中心點,因此也可以更好地獲取中心信息。

4.CNN為什麼參數共享?

權值共享 : 卷積核的參數實際上也可以叫做權重,它描述了局部連接中該比特置的輸入對於相應輸出的影響力(重要性)。

一個卷積層中可以有多個不同的卷積核,而每一個卷積核都對應著一個濾波後映射出的新圖像(Feature map),同一個新圖像的所有像素全部來自於同一個卷積核,這就是卷積核的參數共享。

卷積中不做參數共享,則每一個輸出對應一組參數值,參數量仍然龐大。

5.Dropout是什麼?為什麼Dropout可以防止過擬合?

深度學習中Dropout原理解析 - 知乎

Dropout:在每個訓練批次中,通過忽略一半的特征檢測器(讓一半的隱層節點值為0),可以明顯地减少過擬合現象。這種方式可以减少特征檢測器(隱層節點)間的相互作用,檢測器相互作用是指某些檢測器依賴其他檢測器才能發揮作用。

Dropout說的簡單一點就是:我們在前向傳播的時候,讓某個神經元的激活值以一定的概率p停止工作,這樣可以使模型泛化性更强,因為它不會太依賴某些局部的特征,如下圖所示。

Dropout具體工作流程

假設我們要訓練這樣一個神經網絡,如下圖所示。

輸入是x輸出是y,正常的流程是:我們首先把x通過網絡前向傳播,然後把誤差反向傳播以决定如何更新參數讓網絡進行學習。使用Dropout之後,過程變成如下:

(1)首先隨機(臨時)删掉網絡中一半的隱藏神經元,輸入輸出神經元保持不變(下圖中虛線為部分臨時被删除的神經元)

(2) 然後把輸入x通過修改後的網絡前向傳播,然後把得到的損失結果通過修改的網絡反向傳播。一小批訓練樣本執行完這個過程後,在沒有被删除的神經元上按照隨機梯度下降法更新對應的參數(w,b)。

(3)然後繼續重複這一過程:

  • 恢複被删掉的神經元(此時被删除的神經元保持原樣,而沒有被删除的神經元已經有所更新)
  • 從隱藏層神經元中隨機選擇一個一半大小的子集臨時删除掉(備份被删除神經元的參數)。
  • 對一小批訓練樣本,先前向傳播然後反向傳播損失並根據隨機梯度下降法更新參數(w,b) (沒有被删除的那一部分參數得到更新,删除的神經元參數保持被删除前的結果)。

不斷重複這一過程。

Dropout在測試時需要怎麼補償?

Dropout代碼層面的一些公式推導及代碼實現思路:

(1)在訓練模型階段

無可避免的,在訓練網絡的每個單元都要添加一道概率流程。

圖:標准網絡和帶有Dropout網絡的比較

對應的公式變化如下:

  • 沒有Dropout的網絡計算公式:

  • 采用Dropout的網絡計算公式:

上面公式中Bernoulli函數是為了生成概率r向量,也就是隨機生成一個0、1的向量。

代碼層面實現讓某個神經元以概率p停止工作,其實就是讓它的激活函數值以概率p變為0。比如我們某一層網絡神經元的個數為1000個,其激活函數輸出值為y1、y2、y3、......、y1000,我們dropout比率選擇0.4,那麼這一層神經元經過dropout後,1000個神經元中會有大約400個的值被置為0。

注意: 經過上面屏蔽掉某些神經元,使其激活值為0以後,我們還需要對向量y1……y1000進行縮放,也就是乘以1/(1-p)。如果你在訓練的時候,經過置0後,沒有對y1……y1000進行縮放(rescale),那麼在測試的時候,就需要對權重進行縮放,操作如下。

(2)在測試模型階段

預測模型的時候,每一個神經單元的權重參數要乘以概率p。

圖:預測模型時Dropout的操作

測試階段Dropout公式:

為什麼說Dropout可以解决過擬合?

(1)取平均的作用: 先回到標准的模型即沒有dropout,我們用相同的訓練數據去訓練5個不同的神經網絡,一般會得到5個不同的結果,此時我們可以采用 “5個結果取均值”或者“多數取勝的投票策略”去决定最終結果。例如3個網絡判斷結果為數字9,那麼很有可能真正的結果就是數字9,其它兩個網絡給出了錯誤結果。這種“綜合起來取平均”的策略通常可以有效防止過擬合問題。因為不同的網絡可能產生不同的過擬合,取平均則有可能讓一些“相反的”擬合互相抵消。dropout掉不同的隱藏神經元就類似在訓練不同的網絡,隨機删掉一半隱藏神經元導致網絡結構已經不同,整個dropout過程就相當於對很多個不同的神經網絡取平均。而不同的網絡產生不同的過擬合,一些互為“反向”的擬合相互抵消就可以達到整體上减少過擬合

(2)减少神經元之間複雜的共適應關系: 因為dropout程序導致兩個神經元不一定每次都在一個dropout網絡中出現。這樣權值的更新不再依賴於有固定關系的隱含節點的共同作用,阻止了某些特征僅僅在其它特定特征下才有效果的情况 。迫使網絡去學習更加魯棒的特征 ,這些特征在其它的神經元的隨機子集中也存在。換句話說假如我們的神經網絡是在做出某種預測,它不應該對一些特定的線索片段太過敏感,即使丟失特定的線索,它也應該可以從眾多其它線索中學習一些共同的特征。從這個角度看dropout就有點像L1,L2正則,减少權重使得網絡對丟失特定神經元連接的魯棒性提高。

(3)Dropout類似於性別在生物進化中的角色:物種為了生存往往會傾向於適應這種環境,環境突變則會導致物種難以做出及時反應,性別的出現可以繁衍出適應新環境的變種,有效的阻止過擬合,即避免環境改變時物種可能面臨的滅絕。

6.CNN的平移不變怎麼體現?

平移不變性/平移同變性

在歐幾裏得幾何中,平移是一種幾何變換,錶示把一幅圖像或一個空間中的每一個點在相同方向移動相同距離。比如對圖像分類任務來說,圖像中的目標不管被移動到圖片的哪個比特置,得到的結果(標簽)應該是相同的,這就是卷積神經網絡中的平移不變性。

平移不變性意味著系統產生完全相同的響應(輸出),不管它的輸入是如何平移的 。平移同變性(translation equivariance)意味著系統在不同比特置的工作原理相同,但它的響應隨著目標比特置的變化而變化 。比如,實例分割任務,就需要平移同變性,目標如果被平移了,那麼輸出的實例掩碼也應該相應地變化。一個像素在某一個實例中可能是前景,但是在相鄰的一個實例中可能就是背景了,也就是說,同一個像素在不同的相對比特置,具有不同的語義,對應著不同的響應,這說的也是平移同變性。

卷積神經網絡的平移不變性

平移不變,意思是一只猫頭不管在圖片的那個比特置,cnn都能捕捉到猫頭。

簡單地說,卷積+最大池化約等於平移不變性。

  • 卷積:簡單地說,圖像經過平移,相應的特征圖上的錶達也是平移的。下圖只是一個為了說明這個問題的例子。輸入圖像的左下角有一個人臉,經過卷積,人臉的特征(眼睛,鼻子)也比特於特征圖的左下角。假如人臉特征在圖像的左上角,那麼卷積後對應的特征也在特征圖的左上角。 (如下兩幅圖所示)

  • 池化:比如最大池化,它返回感受野中的最大值,如果最大值被移動了,但是仍然在這個感受野中,那麼池化層也仍然會輸出相同的最大值。再比如平均池化,對於mean來說除非整個感受野內的值都發生同向的劇烈變動,不然mean出啦的值也不會差別那麼大。

       所以這兩種操作共同提供了一些平移不變性,即使圖像被平移,卷積保證仍然能檢測到它的特征,池化則盡可能地保持一致的錶達。

       卷積的平移不變性就是通過卷積+池化以後不管某一特征移動了比特置,總可以檢測出來輸入到下一層中,又由於全連接是加權求和計算,被激活的特征又可以傳導到下一層中。

7.為什麼CNN比DNN在圖像領域更具優勢?

對於圖像分類任務,相對於全連接的DNN,CNN模型的主要優點有哪些?_Data+Science+Insight的博客-CSDN博客_cnn模型的優勢

【深度學習基礎知識 - 40】CNN為什麼比DNN在圖像領域更具優勢_雁宇up的博客-CSDN博客_cnn比dnn好在哪裏

DNN,CNN和RNN優缺點/區別_猫不吃老鼠的博客-CSDN博客_rnn缺點

DNN的輸入時向量形式,並未考慮到圖像的結構信息,沒有像素的排列方式的先驗知識。每一層都會做一個全局的特征提取,但是由於這個過程並非遞進的,因此最終的特征質量並不好,因此難以在圖像領域發揮出優勢。CNN模型輸入的一般都是圖像矩陣,然後通過卷積操作進行特征提取,每次卷積都會考慮特征的上下文信息,CNN的架構嵌入了此先驗知識。並且隨著模型的加深,從淺層提取的局部特征不斷地處理、整合得到深層的高維特征。較低的層通常在圖像的較小區域中標識特征,而較高的層將較低層的特征組合為較大的特征。在這個過程中,特征的整合是緩慢有序發生的。這對大多數自然圖像都能很好地工作,從而使CNN與DNN相比具有領先優勢。 

圖像通過卷積操作後仍然保留原先的比特置關系,當CNN學會了可以檢測到特定特征的內核後,便可以在圖像中的任何比特置檢測到該特征。相反,當DNN在一個比特置學習某個特征時,它只能在該特定比特置檢測到它。

因為連續的層僅部分連接並且由於其大量複用權重,所以CNN的參數比全連接的DNN少得多,這使其訓練速度快得多,降低了過擬合的風險,並且需要的訓練數據也少得多。

由於圖像通常具有非常重複的特征,因此對於CNN而言,使用較少的訓練實例,可以比DNN更好地泛化圖像處理任務(例如分類)。

版權聲明
本文為[不瘦8斤的妥球球餅]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/133/202205131735236564.html

隨機推薦