深度学习(十三)——花式池化, Batch Normalization
https://antkillerfarm.github.io/
花式池化
池化和卷積一樣,都是信號(hào)采樣的一種方式。
普通池化
池化的一般步驟是:選擇區(qū)域P,令Y=f(P)。這里的f為池化函數(shù)。
上圖是Max Pooling的示意圖。除了max之外,常用的池化函數(shù)還有mean、min等。
ICLR2013上,Zeiler提出了另一種pooling手段stochastic pooling。只需對(duì)Pooling區(qū)域中的元素按照其概率值大小隨機(jī)選擇,即元素值大的被選中的概率也大。而不像max-pooling那樣,永遠(yuǎn)只取那個(gè)最大值元素。
根據(jù)相關(guān)理論,特征提取的誤差主要來(lái)自兩個(gè)方面:
(1)鄰域大小受限造成的估計(jì)值方差增大;
(2)卷積層參數(shù)誤差造成估計(jì)均值的偏移。
一般來(lái)說(shuō),mean-pooling能減小第一種誤差,更多的保留圖像的背景信息,max-pooling能減小第二種誤差,更多的保留紋理信息。
Stochastic-pooling則介于兩者之間,通過(guò)對(duì)像素點(diǎn)按照數(shù)值大小賦予概率,再按照概率進(jìn)行亞采樣,在平均意義上,與mean-pooling近似,在局部意義上,則服從max-pooling的準(zhǔn)則。
池化的反向傳播
池化的反向傳播比較簡(jiǎn)單。以上圖的Max Pooling為例,由于取的是最大值7,因此,誤差只要傳遞給7所在的神經(jīng)元即可。
這里再次強(qiáng)調(diào)一下,池化只是對(duì)信號(hào)的下采樣。對(duì)于圖像來(lái)說(shuō),這種下采樣保留了圖像的某些特征,因而是有意義的。但對(duì)于另外的任務(wù)則未必如此。
比如,AlphaGo采用CNN識(shí)別棋局,但對(duì)棋局來(lái)說(shuō),下采樣顯然是沒(méi)有什么物理意義的,因此,AlphaGo的CNN是沒(méi)有Pooling的。
全局平均池化
Global Average Pooling是另一類池化操作,一般用于替換FullConnection層。
上圖是FC和GAP在CNN中的使用方法圖。從中可以看出Conv轉(zhuǎn)換成FC,實(shí)際上進(jìn)行了如下操作:
1.對(duì)每個(gè)通道的feature map進(jìn)行flatten操作得到一維的tensor。
2.將不同通道的tensor連接成一個(gè)大的一維tensor。
上圖展示了FC與Conv、Softmax等層聯(lián)動(dòng)時(shí)的運(yùn)算操作。
上圖是GAP與Conv、Softmax等層聯(lián)動(dòng)時(shí)的運(yùn)算操作。可以看出,GAP的實(shí)際操作如下:
1.計(jì)算每個(gè)通道的feature map的均值。
2.將不同通道的均值連接成一個(gè)一維tensor。
UnPooling
UnPooling是一種常見的上采樣操作。其過(guò)程如下圖所示:
1.在Pooling(一般是Max Pooling)時(shí),保存最大值的位置(Max Location)。
2.中間經(jīng)歷若干網(wǎng)絡(luò)層的運(yùn)算。
3.上采樣階段,利用第1步保存的Max Location,重建下一層的feature map。
從上面的描述可以看出,UnPooling不完全是Pooling的逆運(yùn)算:
1.Pooling之后的feature map,要經(jīng)過(guò)若干運(yùn)算,才會(huì)進(jìn)行UnPooling操作。
2.對(duì)于非Max Location的地方以零填充。然而這樣并不能完全還原信息。
參考:
http://blog.csdn.net/u012938704/article/details/52831532
caffe反卷積
K-max Pooling
參考
http://www.cnblogs.com/tornadomeet/p/3432093.html
Stochastic Pooling簡(jiǎn)單理解
http://mp.weixin.qq.com/s/XzOri12hwyOCdI1TgGQV3w
新型池化層sort_pool2d實(shí)現(xiàn)更快更好的收斂:表現(xiàn)優(yōu)于最大池化層
http://blog.csdn.net/liuchonge/article/details/67638232
CNN與句子分類之動(dòng)態(tài)池化方法DCNN–模型介紹篇
Batch Normalization
在《深度學(xué)習(xí)(二)》中,我們已經(jīng)簡(jiǎn)單的介紹了Batch Normalization的基本概念。這里主要講述一下它的實(shí)現(xiàn)細(xì)節(jié)。
我們知道在神經(jīng)網(wǎng)絡(luò)訓(xùn)練開始前,都要對(duì)輸入數(shù)據(jù)做一個(gè)歸一化處理,那么具體為什么需要?dú)w一化呢?歸一化后有什么好處呢?
原因在于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過(guò)程本質(zhì)就是為了學(xué)習(xí)數(shù)據(jù)分布,一旦訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)的分布不同,那么網(wǎng)絡(luò)的泛化能力也大大降低;另外一方面,一旦每批訓(xùn)練數(shù)據(jù)的分布各不相同(batch梯度下降),那么網(wǎng)絡(luò)就要在每次迭代都去學(xué)習(xí)適應(yīng)不同的分布,這樣將會(huì)大大降低網(wǎng)絡(luò)的訓(xùn)練速度,這也正是為什么我們需要對(duì)數(shù)據(jù)都要做一個(gè)歸一化預(yù)處理的原因。
對(duì)輸入數(shù)據(jù)歸一化,早就是一種基本操作了。然而這樣只對(duì)神經(jīng)網(wǎng)絡(luò)的輸入層有效。更好的辦法是對(duì)每一層都進(jìn)行歸一化。
然而簡(jiǎn)單的歸一化,會(huì)破壞神經(jīng)網(wǎng)絡(luò)的特征。(歸一化是線性操作,但神經(jīng)網(wǎng)絡(luò)本身是非線性的,不具備線性不變性。)因此,如何歸一化,實(shí)際上是個(gè)很有技巧的事情。
首先,我們回顧一下歸一化的一般做法:
x^(k)=x(k)?E[x(k)]Var[x(k)]???????√
其中,x=(x(0),x(1),…x(d))表示d維的輸入向量。
接著,定義歸一化變換函數(shù):
y(k)=γ(k)x^(k)+β(k)
這里的γ(k),β(k)是待學(xué)習(xí)的參數(shù)。
BN的主要思想是用同一batch的樣本分布來(lái)近似整體的樣本分布。顯然,batch size越大,這種近似也就越準(zhǔn)確。
用B={x1,…,m}表示batch,則BN的計(jì)算過(guò)程如下:
Step 1.計(jì)算mini-batch mean。
μB←1m∑i=1mxi
Step 2.計(jì)算mini-batch variance。
σ2B←1m∑i=1m(xi?μB)2
Step 3.normalize。
x^i←xi?μBσ2B+??????√
這里的?是為了數(shù)值的穩(wěn)定性而添加的常數(shù)。
Step 4.scale and shift。
yi=γx^i+β≡BNγ,β(xi)
在實(shí)際使用中,BN計(jì)算和卷積計(jì)算一樣,都被當(dāng)作神經(jīng)網(wǎng)絡(luò)的其中一層。即:
z=g(Wu+b)→z=g(BN(Wu+b))=g(BN(Wu))
從另一個(gè)角度來(lái)看,BN的均值、方差操作,相當(dāng)于去除一階和二階信息,而只保留網(wǎng)絡(luò)的高階信息,即非線性部分。因此,上式最后一步中b被忽略,也就不難理解了。
BN的誤差反向算法相對(duì)復(fù)雜,這里不再贅述。
在inference階段,BN網(wǎng)絡(luò)忽略Step 1和Step 2,只計(jì)算后兩步。其中,β,γ由之前的訓(xùn)練得到。μ,σ原則上要求使用全體樣本的均值和方差,但樣本量過(guò)大的情況下,也可使用訓(xùn)練時(shí)的若干個(gè)mini batch的均值和方差的FIR濾波值。
Instance Normalization
Instance Normalization主要用于CV領(lǐng)域。
論文:
《Instance Normalization: The Missing Ingredient for Fast Stylization》
首先我們列出對(duì)圖片Batch Normalization的公式:
ytijk=xtijk?μiσ2i+??????√,μi=1HWT∑t=1T∑l=1W∑m=1Hxtilm,σ2i=1HWT∑t=1T∑l=1W∑m=1H(xtilm?mμi)2
其中,T為圖片數(shù)量,i為通道,j、k為圖片的寬、高。
Instance Normalization的公式:
ytijk=xtijk?μtiσ2ti+??????√,μti=1HW∑l=1W∑m=1Hxtilm,σ2ti=1HW∑l=1W∑m=1H(xtilm?mμti)2
從中可以看出Instance Normalization實(shí)際上就是對(duì)一張圖片的一個(gè)通道內(nèi)的值進(jìn)行歸一化,因此又叫做對(duì)比度歸一化(contrast normalization)。
參考:
http://www.jianshu.com/p/d77b6273b990
論文中文版
總結(jié)
以上是生活随笔為你收集整理的深度学习(十三)——花式池化, Batch Normalization的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习(二十三)——Beam Sear
- 下一篇: 深度学习(十五)——SPPNet, Fa