系統(tǒng)學(xué)習(xí)深度學(xué)習(xí)(十二)--池化x
發(fā)布時(shí)間:2020-09-13 來(lái)源: 民主生活會(huì) 點(diǎn)擊:
系統(tǒng)學(xué)習(xí)深度學(xué)習(xí)(十二)-- 池化 轉(zhuǎn)自:http://blog.csdn.net/danieljianfeng/article/details/42433475
在卷積神經(jīng)網(wǎng)絡(luò)中,我們經(jīng)常會(huì)碰到池化操作,而池化層往往在卷積層后面,通過(guò)池化來(lái)降低卷積層輸出的特征向量,同時(shí)改善結(jié)果(不易出現(xiàn)過(guò)擬合)。
為什么可以通過(guò)降低維度呢? 因?yàn)閳D像具有一種“靜態(tài)性”的屬性,這也就意味著在一個(gè)圖像區(qū)域有用的特征極有可能在另一個(gè)區(qū)域同樣適用。因此,為了描述大的圖像,一個(gè)很自然的想法就是對(duì)不同位置的特征進(jìn)行聚合統(tǒng)計(jì),例如,人們可以計(jì)算圖像一個(gè)區(qū)域上的某個(gè)特定特征的平均值 (或最大值)來(lái)代表這個(gè)區(qū)域的特征。[1]
1.
一般池化(General Pooling )
池化作用于圖像中不重合的區(qū)域(這與卷積操作不同),過(guò)程如下圖。
我們定義池化窗口的大小為 sizeX,即下圖中紅色正方形的邊長(zhǎng),定義兩個(gè)相鄰池化窗口的水平位移/豎直位移為 stride。一般池化由于每一池化窗口都是不重復(fù)的,所以 sizeX=stride。
最常見(jiàn)的池化操作為平均池化 mean pooling 和最大池化 max pooling:
平均池化:計(jì)算圖像區(qū)域的平均值作為該區(qū)域池化后的值。
最大池化:選圖像區(qū)域的最大值作為該區(qū)域池化后的值。
隨機(jī)池化:只需對(duì) feature map 中的元素按照其概率值大小隨機(jī)選擇,即元素值大的被選中的概率也大 隨機(jī)池化理解,轉(zhuǎn)自:http://blog.csdn.net/maxiemei/article/details/17355047
補(bǔ)充(轉(zhuǎn)自:http://blog.yinfupai.com/2400.html)
在提取信息的時(shí)候,在池化的時(shí)候,如果取區(qū)域均值(mean-pooling),往往能保留整體數(shù)據(jù)的特征,能凸出背景的信息,而如果取區(qū)域最大值(max-pooling),則能更好保留紋理上的特征,但這些應(yīng)該都不如小波變換那樣,可以保留更多的細(xì)節(jié)特征,整體上也應(yīng)該更加細(xì)微。
在 ICLR2013 上,Zeiler 提出了 stochastic pooling,元素值大的被選中的概率也大,但不是像 max-pooling 那樣總是取最大值,這種方法的優(yōu)勢(shì)是,一方面最大化保證了 Max 值的取值,一方面又部分確保不會(huì)所有元素都被 max 值給忽悠住,造成過(guò)度失真。
這種方式想來(lái)還是有缺陷的,因?yàn)檫@種隨機(jī)行挑選盡管有概率傾向,但它是人為疊加上的,無(wú)法總是保證一定隨機(jī)的概率選擇中能夠選擇到更好的結(jié)果,所以也會(huì)出現(xiàn)更糟糕的結(jié)果的時(shí)候,不過(guò)加入概率算法好處是,它為產(chǎn)生更好的結(jié)果產(chǎn)生了可能,所以總的來(lái)說(shuō),還是有可能得到更好的結(jié)果的。
假設(shè)目標(biāo)總是容易被命中的,而有那么個(gè)正態(tài)分布與目標(biāo)的分布是近似重合的,如何保證這種分布比較能吻合目標(biāo)?平均值與最大值都會(huì)產(chǎn)生偏移,因?yàn)楫吘固┝α,而概率算法加入無(wú)疑是比較理想的,能減少這種偏移的可能,如果運(yùn)氣足夠好,收斂會(huì)非常好,那么還有可能得到更加貼近的結(jié)果,于是這個(gè)又扯到了運(yùn)氣上來(lái)了。
只是,術(shù)數(shù)里的收斂為何能那么準(zhǔn)確,這個(gè)從數(shù)學(xué)角度實(shí)在是難解,究竟是什么沒(méi)有考慮到?目前有一種隱隱地思路,需要探索以術(shù)數(shù)的模型套上去,只是還是沒(méi)有找到橋梁在哪里,第一是要找出,信息是如何演算并折疊在卦中的,第二是要找出如何還能夠把信息進(jìn)行還原。
在嘗試計(jì)算了近十萬(wàn)個(gè)圖形與隨機(jī)起卦之間的聯(lián)系后,發(fā)現(xiàn)要建立這個(gè)聯(lián)系,是極難完成的任務(wù),制作自動(dòng)編碼器運(yùn)算到一定程度收斂越來(lái)越慢,隨便估計(jì)也是要花上個(gè)幾個(gè)月的(還不一定最后算得出來(lái)),想來(lái)還是思路有問(wèn)題。
2. 重疊池化(OverlappingPooling )[2] 重疊池化正如其名字所說(shuō)的,相鄰池化窗口之間會(huì)有重疊區(qū)域,此時(shí) sizeX>stride。
論文中[2]中,作者使用了重疊池化,其他的設(shè)置都不變的情況下, top-1 和 top-5 的錯(cuò)誤率分別減少了 0.4% 和 0.3%。
3. 空金字塔池化(Spatial Pyramid Pooling )[3]
空間金字塔池化可以把任何尺度的圖像的卷積特征轉(zhuǎn)化成相同維度,這不僅可以讓CNN 處理任意尺度的圖像,還能避免 cropping 和 warping 操作,導(dǎo)致一些信息的丟失,具有非常重要的意義。
一般的 CNN 都需要輸入圖像的大小是固定的,這是因?yàn)槿B接層的輸入需要固定輸入維度,但在卷積操作是沒(méi)有對(duì)圖像尺度有限制,所有作者提出了空間金字塔池化,先讓圖像進(jìn)行卷積操作,然后轉(zhuǎn)化成維度相同的特征輸入到全連接層,這個(gè)可以把 CNN 擴(kuò)展到任意大小的圖像。
空間金字塔池化的思想來(lái)自于 Spatial Pyramid Model,它一個(gè) pooling 變成了多個(gè)scale 的 pooling。用不同大小池化窗口作用于卷積特征,我們可以得到1X1,2X2,4X4 的池化結(jié)果,由于 conv5 中共有 256 個(gè)過(guò)濾器,所以得到 1 個(gè) 256維的特征,4 個(gè) 256 個(gè)特征,以及 16 個(gè) 256 維的特征,然后把這 21 個(gè) 256 維特征鏈接起來(lái)輸入全連接層,通過(guò)這種方式把不同大小的圖像轉(zhuǎn)化成相同維度的特征。
對(duì)于不同的圖像要得到相同大小的 pooling 結(jié)果,就需要根據(jù)圖像的大小動(dòng)態(tài)的計(jì)算池化窗口的大小和步長(zhǎng)。假設(shè) conv5 輸出的大小為 a*a,需要得到 n*n 大小的池化結(jié)果,可以讓窗口大小 sizeX 為 ,步長(zhǎng)為
。下圖以
conv5 輸出的大小為 13*13 為例。
疑問(wèn):如果 conv5 輸出的大小為 14*14,[pool1*1]的 sizeX=stride=14,[pool2*2]的 sizeX=stride=7,這些都沒(méi)有問(wèn)題,但是,[pool4*4]的 sizeX=5,stride=4,最后一列和最后一行特征沒(méi)有被池化操作計(jì)算在內(nèi)。
SPP 其實(shí)就是一種多個(gè) scale 的 的 pooling ,可以獲取圖像中的多尺度信息;在 CNN入 中加入 SPP 后,可以讓 CNN 處理任意大小的輸入,這讓模型變得更加的 flexible。
。
4.
Reference [1]
UFLDL_Tutorial
[2]
Krizhevsky, I. Sutskever, andG. Hinton, “Imagenet classification with deep convolutional neural networks,”in NIPS,2012. [3]
Kaiming
He, Xiangyu Zhang, Shaoqing Ren, Jian Su,Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,LSVRC-2014 contest
相關(guān)熱詞搜索:學(xué)習(xí) 深度 系統(tǒng)
熱點(diǎn)文章閱讀