[CNN]一些個人認爲需要理清的細節

鼎鼎大名的cnn,權值共享、局部感知就不說了。總結一下一些具體細節的問題。

  • padding
  • stride
  • 多通道卷積(depth方向)
  • 平移、旋轉不變性
  • pooling
  • fc
  • 1x1卷積
  • 三維卷積

padding

填充。在輸入圖片邊界進行填充(一般都是zero_padding,【挖個坑】why zero?)。控制輸出featuremap的size,並且避免圖片邊緣信息被捨棄。

參考:https://zhuanlan.zhihu.com/p/27642620

通常大家都想要在卷積時保持圖片的原始尺寸。 選擇3x3的filter和1的zero padding,或5x5的filter和2的zero padding可以保持圖片的原始尺寸。 這也是爲什麼大家多選擇3x3和5x5的filter的原因。 另一個原因是3x3的filter考慮到了像素與其距離爲1以內的所有其他像素的關係,而5x5則是考慮像素與其距離爲2以內的所有其他像素的關係。

stride

步幅。移動幾個像素。

多通道卷積

在2D卷積中,filter在張量的width維, height維上是局部連接,在depth維上是貫串全部channels的。
類比:想象在切蛋糕的時候,不管這個蛋糕有多少層,通常大家都會一刀切到底,但是在長和寬這兩個維上是局部切割。

每個通道的權值不共享。
有幾個kernel,就有幾個feature map。
每個通道對應位置的卷積結果相加(再套一個激活函數)得到feature map。

平移、旋轉不變性

  • 平移
    • 卷積的時候,特徵圖會隨着圖像平移而跟着平移。
    • 池化的時候,比如max-pooling,保留局部的最大值,那麼圖片移動之後那個局部的最大值也很可能是被保留的。
  • 旋轉
    • maxpooling的時候是有一定的旋轉不變性的。

pooling

CNN中採用MaxPooling操作有幾個好處:

  • 首先,這個操作可以保證特徵的位置與旋轉不變性,因爲不論這個強特徵在哪個位置出現,都會不考慮其出現位置而能把它提出來。對於圖像處理來說這種位置與旋轉不變性是很好的特性,但是對於NLP來說,這個特性其實並不一定是好事,因爲在很多NLP的應用場合,特徵的出現位置信息是很重要的,比如主語出現位置一般在句子頭,賓語一般出現在句子尾等等,這些位置信息其實有時候對於分類任務來說還是很重要的,但是Max Pooling 基本把這些信息拋掉了。
  • 其次,MaxPooling能減少模型參數數量,有利於減少模型過擬合問題。因爲經過Pooling操作後,往往把2D或者1D的數組轉換爲單一數值,這樣對於後續的Convolution層或者全聯接隱層來說無疑單個Filter的參數或者隱層神經元個數就減少了。
  • 再者,對於NLP任務來說,MaxPooling有個額外的好處;在此處,可以把變長的輸入X整理成固定長度的輸入。因爲CNN最後往往會接全聯接層,而其神經元個數是需要事先定好的,如果輸入是不定長的那麼很難設計網絡結構。前文說過,CNN模型的輸入X長度是不確定的,而通過Pooling操作,每個Filter固定取1個值,那麼有多少個Filter,Pooling層就有多少個神經元,這樣就可以把全聯接層神經元個數固定住(如圖2所示),這個優點也是非常重要的。

缺點:

  • 特徵的位置信息在這一步驟完全丟失。在卷積層其實是保留了特徵的位置信息的,但是通過取唯一的最大值,現在在Pooling層只知道這個最大值是多少,但是其出現位置信息並沒有保留;
  • 另外一個明顯的缺點是:有時候有些強特徵會出現多次,比如我們常見的TF.IDF公式,TF就是指某個特徵出現的次數,出現次數越多說明這個特徵越強,但是因爲MaxPooling只保留一個最大值,所以即使某個特徵出現多次,現在也只能看到一次,就是說同一特徵的強度信息丟失了。

各種pooling的優勢是什麼,原理。

  • maxpooling看上面。
  • mean-pooling,即對鄰域內特徵點只求平均:假設pooling的窗大小是2x2,在forward的時候,就是在前面卷積完的輸出上依次不重合的取2x2的窗平均,得到一個值就是當前meanpooling之後的值。backward的時候,把一個值分成四等分放到前面2x2的格子裏面就好了。
  • Stochastic-pooling則介於兩者之間,通過對像素點按照數值大小賦予概率,再按照概率進行亞採樣,在平均意義上,與mean-pooling近似,在局部意義上,則服從max-pooling的準則。stochasticpooling方法非常簡單,只需對featuremap中的元素按照其概率值大小隨機選擇,即元素值大的被選中的概率也大。而不像max-pooling那樣,永遠只取那個最大值元素。有關於stochastic pooling理解的例子與代碼自己搜 。

full-connected layer

https://www.zhihu.com/question/41037974
全連接層(fully connected layers,FC)在整個卷積神經網絡中起到“分類器”的作用。如果說卷積層、池化層和激活函數層等操作是將原始數據映射到隱層特徵空間的話,全連接層則起到將學到的“分佈式特徵表示”映射到樣本標記空間的作用。
在實際使用中,全連接層可由卷積操作實現:對前層是全連接的全連接層可以轉化爲卷積核爲1x1的卷積;而前層是卷積層的全連接層可以轉化爲卷積核爲h×w 的全局卷積,h和w分別爲前層卷積結果的高和寬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章