Traditional與Maxout與NIN方法

鏈接:
http://www.itdecent.cn/p/96791a306ea5
http://blog.csdn.net/hjimce/article/details/50414467


CNN其實有一個假設(shè)就是潛在的概念是線性可分的。然而,相同概念的數(shù)據(jù)一般是存在于一個非線性的流形中,因此,捕捉真實數(shù)據(jù)的表示一般使用非線性模型。

所以我們通常使用一個MLP代替卷積層的線性卷積操作


圖片.png
有以下幾個特點:
  • 線性卷積層與mlpconv層都與感受域相連接以用輸出特征向量
  • mlpconv使用一個mlp連接input與output
  • mlp被共享于所有的局部感受野。
  • 特征映射被包含通過滑動mlp以cnn相同處理方式(掃描)

原先的CNN一般由卷積層與空間池化層以棧的形式交替組成,卷積層通過使用非線性激活函數(shù)(如:rectifier,sigmoid,tanh)的線性組合產(chǎn)生特征圖。

圖片.png

i,j是像素索引,xij代表輸入補丁集中在位置(i,j),k用于索引的通道特性圖。

當(dāng)潛在概念的實例是線性可分時,線性卷積用于抽取是足夠的,然而,好的抽象表示一般是高度非線性函數(shù)。在傳統(tǒng)cnn,這一點可以用超完備過濾的方式。即:增加過濾器,但增加過濾器會增加下層的計算負(fù)擔(dān)。

在此之前做個鋪墊:


引入maxout函數(shù):

引入之前:

z=W*X+b
out=f(z)
圖片.png

如果我們設(shè)置maxout的參數(shù)k=5,maxout層就如下所示:
(參數(shù)個數(shù)會成k倍增加)

z1=w1*x+b1
z2=w2*x+b2
z3=w3*x+b3
z4=w4*x+b4
z5=w5*x+b5
out=max(z1,z2,z3,z4,z5)
圖片.png

傳統(tǒng)的函數(shù):
圖片.png

MaxOut:(非線性函數(shù))

用多個線性函數(shù)中的最大值逼近真實函數(shù)

圖片.png

maxout的擬合能力是非常強的,它可以擬合任意的的凸函數(shù)。最直觀的解釋就是任意的凸函數(shù)都可以由分段線性函數(shù)以任意精度擬合(學(xué)過高等數(shù)學(xué)應(yīng)該能明白),而maxout又是取k個隱隱含層節(jié)點的最大值,這些”隱隱含層"節(jié)點也是線性的,所以在不同的取值范圍下,最大值也可以看做是分段線性的(分段的個數(shù)與k值有關(guān))

只需2個maxout節(jié)點就可以擬合任意的凸函數(shù)了(相減),前提是”隱隱含層”節(jié)點的個數(shù)可以任意多:

圖片.png

RELU非線性函數(shù)是什么?:
圖片.png

Network In Network:
圖片.png

在兩個mlpconv層中間加入了RELU函數(shù),最后用一個global average pooling層
(全局平均池化層理論上講應(yīng)該是對全圖所有值取均值)

圖片.png


總結(jié):
  • 對于常規(guī)卷積層,直接x和w求卷積,然后relu一下就好了。
  • maxout,有k個的3x3的w(這里的k是自由設(shè)定的),分別卷積得到k個1x1的輸出,然后對這k個輸入求最大值
  • NIN,有k個3x3的w(這里的k也是自由設(shè)定的),分別卷積得到k個1x1的輸出,然后對它們都進(jìn)行relu,然后再次對它們進(jìn)行卷積,結(jié)果再relu。(這個過程,等效于一個小型的全連接網(wǎng)絡(luò))

maxout和NIN都是對傳統(tǒng)conv+relu的改進(jìn)。
maxout想表明它能夠擬合任何凸函數(shù),也就能夠擬合任何的激活函數(shù)(默認(rèn)了激活函數(shù)都是凸的)
NIN想表明它不僅能夠擬合任何凸函數(shù),而且能夠擬合任何函數(shù),因為它本質(zhì)上可以說是一個小型的全連接神經(jīng)網(wǎng)絡(luò)


常規(guī)卷積層,MaxOut,Networ In Network:
圖片.png

鏈接: https://www.zhihu.com/question/56024942

1×1卷積的作用:
  • 對單通道的feature map和單個卷積核之間的卷積來說:1X1卷積核就是對輸入的一個比例縮放

  • 但是CNN里的卷積大都是多通道的feature map和多通道的卷積核之間的操作,如果使用1x1的卷積核,這個操作實現(xiàn)的就是多個feature map的線性組合,可以實現(xiàn)feature map在通道個數(shù)上的變化。

  • 加入1×1卷積后可以降低輸入的 通道數(shù),卷積核參數(shù)、運算復(fù)雜度 也就跟著降下來了

多通道的情況下1*1卷積的主要作用有以下幾點:

1、降維( dimension reductionality )。比如,一張500 * 500且厚度depth為100 的圖片在20個filter上做1*1的卷積,那么結(jié)果的大小為500*500*20。


圖片.png

2、加入非線性,卷積層之后經(jīng)過激勵層,1*1的卷積在前一層的學(xué)習(xí)表示上添加了非線性激勵( non-linear activation ),提升網(wǎng)絡(luò)的表達(dá)能力;

圖片.png

結(jié)合計算方法一節(jié)閱讀能比較好的理解:

當(dāng)輸入和輸出的通道數(shù)很大時,乘起來也會使得卷積核參數(shù)變的很大,而加入1×1卷積后可以降低輸入的通道數(shù),卷積核參數(shù)、運算復(fù)雜度也就跟著降下來了。以GoogLeNet的3a模塊為例,輸入的feature map是28×28×192,3a模塊中1×1卷積通道為64,3×3卷積通道為128,5×5卷積通道為32,如果是左圖結(jié)構(gòu),那么卷積核參數(shù)為1×1×192×64+3×3×192×128+5×5×192×32,而右圖對3×3和5×5卷積層前分別加入了通道數(shù)為96和16的1×1卷積層,這樣卷積核參數(shù)就變成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),參數(shù)大約減少到原來的三分之一。同時在并行pooling層后面加入1×1卷積層后也可以降低輸出的feature map數(shù)量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容