CNN中權(quán)值共享理解
轉(zhuǎn)自:http://blog.csdn.net/lien0906/article/details/51249947
第一步,針對一個神經(jīng)元,一幅640*360圖像,一個神經(jīng)元要對應(yīng)640*360個像素點,即一個神經(jīng)元對應(yīng)全局圖像,全連接的話一個神經(jīng)元就有640*360個參數(shù);
第二步,然而,圖像的空間聯(lián)系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經(jīng)元都不需要對全局圖像做感受,每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,將這些不同局部的神經(jīng)元綜合起來就可以得到全局信息。假如每個局部感受野10*10,每個局部感受野只需要和10*10的局部圖像連接,這樣一個神經(jīng)元就只需要10*10個參數(shù);
第三步,全局圖像是640*360,但局部圖像只有10*10大小,10*10個參數(shù)只針對局部圖像,如果全局圖像中各個局部圖像之間權(quán)值共享的話,即10*10個參數(shù)在不同局部圖像上參數(shù)應(yīng)用相同的話,則在全局圖像上通過全局共享則只需要10*10個參數(shù);
第四步,10*10個參數(shù)只針對一個神經(jīng)元,要是有100萬個神經(jīng)元,則需要100萬*10*10個參數(shù),神經(jīng)元多后,參數(shù)還是太大,如果每個神經(jīng)元的這10*10個參數(shù)相同呢,這樣就還是只需要10*10參數(shù),因而經(jīng)過局部感受野到權(quán)值共享再到每個神經(jīng)元的10*10個參數(shù)相同,不管圖像多大,不管每層神經(jīng)元個數(shù)多少,而兩層間連接還是只需要求解10*10個參數(shù);
第五步,由于只有一個濾波器,只提取了一種特征,特征也太少了。一種濾波器也就是一種卷積核就是提取圖像一種特征,例如某個方向的邊緣。那么我們需要提取不同特征怎么辦,多加幾個濾波器不就行了。假設(shè)我們加到100種濾波器,每種濾波器的參數(shù)不一樣,表示提取輸入圖像不同特征,例如不同邊緣。這樣不同濾波器去卷積圖像就得到不同特征的放映,我們稱之為Feature Map,所以100中卷積核就有100個Feature Map,這100個Feature Map就組成了一層神經(jīng)元。我們這一層有多少個參數(shù)到這時候就明了吧,100種卷積核 * 每種卷積核100個參數(shù) = 100 * 100 = 10000個參數(shù)。
最后,剛才說每一個隱藏層的參數(shù)個數(shù)和隱藏層的神經(jīng)元個數(shù)無關(guān),只和濾波器大小和濾波器種類數(shù)有關(guān),那么隱藏層的神經(jīng)元個數(shù)怎么確定呢?它和原圖像,也就是輸入的大?。ㄉ窠?jīng)元個數(shù))、濾波器的大小和濾波器在圖像中的滑動步長都有關(guān)!假如我的圖像是1000*1000像素的,而濾波器大小是10*10,假設(shè)步長為10,即濾波器沒有重疊,這樣隱藏層的神經(jīng)元個數(shù)就是 1000 * 1000 / (10*10) = 100*100個神經(jīng)元(如果步長為8,卷積核會重疊2個像素)。這只是一種濾波器,也就是一個Feature Map的神經(jīng)元個數(shù)哦,如果100個Feature Map就是100倍了,
需要注意一點,上面的討論都沒有考慮每個神經(jīng)元的偏置部分,所以權(quán)值個數(shù)需要加1,這也是同一種濾波器共享。如濾波器10*10,卷積核個數(shù)6,則參數(shù)個數(shù)為:
(10*10 +1) * 6 = 606.