為什麼CNN裡有maxpooling,沒有minpooling

時間 2021-05-07 03:46:54

1樓:路人甲

relu把0以下的值都截斷了,minpooling沒有意義啊,相當於把所有內容置零. 把relu倒一下,minpooling就有效了。

2樓:

做個實驗不就好了~

min 0.828560 0.829820 sum 0.831580 0.832620 max 0.834060 0.835380

來自我的某行log

結構是普通的wide resnet 16-4,資料是CIFAR100,將類別數從100改成200,進行deep mutual learning。

訓練時候將label隨機分成兩個類中的乙個(deep mutual learning的兩個網路裡,label恰好不同)

之後通過取兩個label的softmax的min, sum, max來計算acc

發現,模型acc幾乎永遠滿足min應該是relu的鍋

但目前min不如max的確是事實。

3樓:楊個毛

有 relu 的話,maxpooling 是那個「正常」一點兒的操作,minpooling 的語義比較迷。但是如果你能從稀疏性裡獲益的話,為什麼不試試呢。

沒 relu 的話,大部分情況下 maxpooling 和 minpooling 的確就是等價的。

當然,從歷史上說,CNN 裡其實是先有 maxpooling,後有 relu 的。所以應該說是 relu 反過來適配了 maxpooling。如果當初選擇了 minpooling,那麼後面發明出來的 relu 應該也會是反的。

某些情況介於兩者之間,比如 sigmoid-maxpooling 和 sigmoid-minpooling,相當於是以 0.5 為對稱軸翻轉了一下。這個翻轉考慮到 kaiming initialization 或者 batch normalization 之後,就不能說嚴格等價了,只能說直觀上大概沒啥本質區別。

如果你很費心地設計乙個 kaiming initialization 在翻轉後的等價形式,當然也是可以等價化的。

再之後,很多神經網路框架不提供 minpooling 只是因為它的需求比 maxpooling 少。這是乙個正迴圈:第乙個人選擇 maxpooling 而不是 minpooling 可能只是拍腦袋隨便選了一下,但是這就導致框架對 maxpooling 的支援比 minpooling 好,而其他運算元的設計也照顧 maxpooling 而不是 minpooling,而這又進一步導致框架對 maxpooling 的支援比 minpooling 好……

這種大概就是日常生活裡的對稱性破缺。因為本來選項是對稱的,其實真沒啥講究,就是隨便選乙個;但是一旦你隨便選了乙個,對稱性從此就被打破了,前人的沒啥講究的選擇就成為了後人的講究。

4樓:武辰

題主有沒有想過卷積層後的數值代表著什麼?

模型的輸入是影象,影象的數值一般代表灰度。比如灰度圖的數值取值在[0,255]區間中,數值越高,代表顏色越白。

卷積層後的特徵圖的數值又代表什麼?卷積本質上是提取特徵的工具。比如下面的卷積核用來識別乙個畫素是否具有「左邊周圍的灰度值與右邊周圍的灰度值有較大差異」的模式特徵。

同理,下面的卷積核用來識別乙個畫素是否具有「上面周圍的灰度值與下面周圍的灰度值有較大差異」的模式特徵。

卷積後的數值越高,說明此模式越明顯,即卷積成功提取到了特徵,或者說找到了規律。如果使用minpooling,卷積好不容易提取出來的特徵就被捨棄了。

5樓:RandomWalk

max pooling 這個事情最早是juyang weng的creceptron提出來的,他想表達乙個OR的邏輯,比如OR(0,1)=1,所以自然就是max pool了

6樓:inf.turing

不考慮relu的情況下minpooling 如果管用,對應的權重不就是maxpooling 全部取反了麼

Max(WX) = min(-WX)

7樓:趙俊博 Jake

如果你把ReLU給倒過來,minpooling訓練出來的CNN應該差不多的。

有意思的問題是,如果maxpooling取成絕對值的最大會怎麼樣。這個蠻有意思。

8樓:

有意思的問題,以下圖為例:

CNN的卷積核對影象進行計算後,maxpooling保留最大啟用的特徵(Edges)

ReLU + minpooling的話,輸出的特徵圖就是空的

9樓:幽浮

maxpooling:這裡有一張臉,我把眼睛鼻子嘴巴眉毛顴骨blablabla抓出來做特徵識別乙個人,完美~

minpooling:這裡有一張臉,我把毛孔皮屑眼屎blablabla抓出來做特徵識別乙個人,完美~

10樓:

你真想做,在處理資料的時候給資料取個相反數就好了,還能避免被回答裡提到的relu之類值域不對稱的啟用函式干擾,當然了,結果很可能是與不做這個處理大相徑庭的_(:_」∠)_

11樓:大治

我曾經也有這個問題,因為卷積核相當於進行多個向量積,越像卷積核的條紋的區域卷積之後得到的值越大,進行maxpolling相當於提取出了最像卷積核條紋的特徵

12樓:慈眉善目 和藹可親

修改下答案,之前表述的有點兒歧義。

你可以實現個minpooling層嵌入到任意網路中,看看效果怎麼樣不就知道了。電腦科學是建立在實踐的基礎上。

為啥沒有minpooling。假設minpooling層是用來替換maxpooling層,一般maxpooling 層之前都是啟用層,比如ReLU層,它會使卷積特徵的值大於等於0,如果你再使用minpooling,那麼出來的啟用圖就是0或者接近0的鄰域內最小值。當你多經過幾次minpooling,就會發現所有的啟用值都是0,那麼你的網路也沒法訓練了,因為任何有用的資訊都沒了。

maxpooling現在常用的地方在卷積網路的第乙個卷積層和卷積塊之後,用來對特徵降維並保留低層級特徵如邊緣,紋理的最大響應。

13樓:zhao

如果activation function是正負對稱區間的函式比如hypertangent,那麼maxpooing等價於minpooling,無非是正反而已

但現代CNN用Relu,最小值都是0了,minpooling只能得到一大堆0

PS:LSTM裡面有個activation 就是Hypertangent,如果需要把多個wordembedding 做一下pooling,你試試maxpool和minpool,train出來的val accuracy是一樣的

14樓:秦機智

個人拙見~

CNN本質是卷積操作,把它看成類似於濾波的功能,在用卷積核對影象進行操作後會得到很多的數值,我們想要與這個卷積核響應最大的值(也就是最接近特徵的值)其他的值就要略去,所以才用maxpooling

15樓:咆哮的阿傑

啟用函式基本使用relu或者變體,其基本思想就是關閉值太低的單元,也不參與求導。值越大說明強度越大,max pool就是選擇最強的特徵

請問CNN 中的 maxpool 到底是什麼原理,為什麼要取最大值,取最大值的原理是什麼?謝謝。

阿力阿哩哩 之前寫過一篇文章,正好回答一波。阿力阿哩哩 一文掌握CNN卷積神經網路一般來說,卷積層後面都會加乙個池化層,這時候大家又可以往上看看圖 4.9的CNN網路結構了,並且可以將它理解為對卷積層進一步特徵抽樣,池化層主要分為兩種,這時候筆者認為前面說了這麼多,現在給大家上一張圖,大家應該就明白...

為什麼現在的CNN模型都是在GoogleNet VGGNet或者AlexNet上調整的?

唐永毅 因為會被review說人家用vgg做出來的結果你為什麼用resnet,是不是藏著什麼不可告人的秘密。然後乙個reject甩你一臉 你我他 牛人領進門,調參靠個人。現在牛人把研究方向轉向其他更重要的方向了吧,刷imagenet就靠我們自己了,貌似1000類的task都刷暴了。 羅若天是真的菜 ...

為什麼CNN中的卷積核一般都是奇數 奇數,沒有偶數 偶數的?

rucinier 設輸入特徵圖尺寸為 輸出尺寸為,卷積核大小K,步長S,padding為p,那麼輸入和輸出之間滿足 在一般情形下,S 1,O i,那麼上式可以化為 可以直觀地看出K是奇數。 使用奇數尺寸的濾波器的原因 數字影象處理 第三版 阮秋琦翻譯 p89 也可以使用偶數尺寸的濾波器,或使用混合有...