卷積神經(jīng)網(wǎng)絡(luò)
在前面的神經(jīng)網(wǎng)絡(luò),才用的是典型的full-connected:網(wǎng)絡(luò)中的神經(jīng)元與相鄰的層上的每個(gè)神經(jīng)元均連接
使用全連接層的網(wǎng)絡(luò)來(lái)分類圖像是很奇怪的漆改。原因是這樣的一個(gè)網(wǎng)絡(luò)架構(gòu)不考慮圖像的空間結(jié)構(gòu)
它在完全相同的基礎(chǔ)上去對(duì)待相距很遠(yuǎn)和彼此接近的輸入像素磷瘤。這樣的空間結(jié)構(gòu)的概念必須從訓(xùn)練數(shù)據(jù)中推斷媒鼓。但是如果我們使用一個(gè)設(shè)法利用空間結(jié)構(gòu)的架構(gòu)胖缤,而不是從一個(gè)白板狀態(tài)的網(wǎng)絡(luò)架構(gòu)開始育苟,會(huì)怎樣?
這次我們來(lái)看看用卷積神經(jīng)網(wǎng)絡(luò)效果如何.
卷積神經(jīng)網(wǎng)絡(luò)采用了三種基本概念:
- 局部感受野(local receptive fields)京郑,
- 共享權(quán)重(shared weights)
- 混合(pooling)
局部感受野
這次不把每個(gè)輸入像素連接到每個(gè)隱藏神經(jīng)元。相反葫掉,我們只是把輸入圖像進(jìn)行小的些举,局部區(qū)域的連接.
對(duì)于每個(gè)局部感受野,在第一個(gè)隱藏層中有一個(gè)不同的隱藏神經(jīng)元俭厚。相當(dāng)于做了一個(gè)局部的卷積.
之前一直把卷積層和隱藏層搞混淆了,最后總算明白了他倆之間的關(guān)系.
神經(jīng)網(wǎng)絡(luò)的通用架構(gòu)就是 input layer -> hidden layer -> output layer
卷積層只是用來(lái)描述層與層之間的映射關(guān)系,層與層之間的關(guān)系在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)里是full-connect的映射.
上層輸入的數(shù)據(jù)經(jīng)過卷積之后,可以看成是特征的匹配,有另外一種說法,就是把卷積看成了過濾器(filter),剝離出他關(guān)注的東西.
上層的數(shù)據(jù)可能包含多個(gè)通道數(shù)據(jù),經(jīng)過卷積之后,形成對(duì)應(yīng)的數(shù)據(jù).
下圖這種畫法,對(duì)于新手,在可視化層面上更像是一個(gè)二維數(shù)據(jù)的輸入(只有一個(gè)通道的數(shù)據(jù)),然后做了一次卷積.
但是當(dāng)你了解了足夠多的cnn資料之后,你會(huì)發(fā)現(xiàn)左邊的輸入層數(shù)據(jù)是一個(gè)三維數(shù)據(jù)(多通道的數(shù)據(jù)),做了一次卷積之后,形成了一個(gè)二維數(shù)據(jù).
也就是如果我們的輸入數(shù)據(jù)是一個(gè)多通道的數(shù)據(jù),這些多通道數(shù)據(jù)會(huì)和卷積核進(jìn)行運(yùn)算,每運(yùn)算一次,就會(huì)形成對(duì)應(yīng)的通道數(shù)據(jù).
有多少個(gè)卷積核,就會(huì)產(chǎn)生多個(gè)通道的數(shù)據(jù).這個(gè)時(shí)候隱藏層的神經(jīng)元就是一個(gè)二維形態(tài),而不僅僅只有只有一列了.
另一方面,我們看到上圖的跨距是1,也就是每次都是移動(dòng)1的距離來(lái)匹配特征,其實(shí)在實(shí)現(xiàn)過程中跨距不一定是1, 也可以是2等等.
共享權(quán)重和偏置
隱藏神經(jīng)元中的同一個(gè)channel中的每一個(gè)使用相同的權(quán)重和偏置.
這意味著隱藏層中同一個(gè)channel的所有神經(jīng)元檢測(cè)完全相同的特征.
卷積網(wǎng)絡(luò)能很好地適應(yīng)圖像的平移不變性.
因?yàn)檫@個(gè)原因户魏,我們有時(shí)候把從輸入層到隱藏層的映射稱為一個(gè)特征映射。我們把定義特征映射的權(quán)重稱為共享權(quán)重挪挤。我們把以這種方式定義特征映射的偏置稱為共享偏置叼丑。共享權(quán)重和偏置經(jīng)常被稱為一個(gè)卷積核或者濾波器。
目前上面?zhèn)z張圖描述的網(wǎng)絡(luò)結(jié)構(gòu)只能檢測(cè)一種局部特征的類型扛门。為了完成圖像識(shí)別我們需要超過一個(gè)的特征映射鸠信。所以一個(gè)完整的卷積層由幾個(gè)不同的特征映射組成.
共享權(quán)重和偏置的一個(gè)很大的優(yōu)點(diǎn)是,它大大減少了參與的卷積網(wǎng)絡(luò)的參數(shù)论寨。直觀地看,這有利于我們更快完成訓(xùn)練建立模型.
混合層
除了剛剛描述的卷積層星立,卷積神經(jīng)網(wǎng)絡(luò)也包含混合層(pooling layers)爽茴。混合層通常緊接著在卷積層之后使用绰垂。
它要做的是簡(jiǎn)化從卷積層輸出的信息,把信息簡(jiǎn)化.
常用的有max-pooling以及L2 pooling.
卷積神經(jīng)網(wǎng)絡(luò)的輸入層就是圖像的原始像素室奏,而輸出層中的每一個(gè)節(jié)點(diǎn)代表了不同類別的可信度。
好了,分析一下Alex的CNN結(jié)構(gòu)圖,看看你能不能看懂
輸入:224×224大小的圖片劲装,3通道
針對(duì)input_layer的輸入數(shù)據(jù),我們采用了一個(gè)1111的卷積核,跨距設(shè)置為4.但是你會(huì)發(fā)現(xiàn)初始位置以步長(zhǎng)4為單位是無(wú)法剛好滑倒末尾位置.
這個(gè)時(shí)候我們需要對(duì)它做四周一下zero padding(填充),使得滑動(dòng)窗口可以恰好停留到末尾.計(jì)算了一下需要增加3行,3列的zero padding.
增加了之后,經(jīng)過卷積形成5555單通道的數(shù)據(jù)
第一層卷積:5×5大小的卷積核96個(gè)胧沫,每個(gè)GPU上48個(gè)。
第一層max-pooling:2×2的核占业。經(jīng)過卷積和池化以后,我們輸出的數(shù)據(jù)是一個(gè)2727的單通道數(shù)據(jù)
第二層卷積:3×3卷積核256個(gè)绒怨,每個(gè)GPU上128個(gè)。
第二層max-pooling:2×2的核谦疾。
第三層卷積:與上一層是全連接南蹂,33的卷積核384個(gè)。分到兩個(gè)GPU上個(gè)192個(gè)餐蔬。
第四層卷積:3×3的卷積核384個(gè)碎紊,兩個(gè)GPU各192個(gè)。該層與上一層連接沒有經(jīng)過pooling層樊诺。
第五層卷積:3×3的卷積核256個(gè)仗考,兩個(gè)GPU上個(gè)128個(gè)。
第五層max-pooling:2×2的核词爬。
第一層全連接:4096維秃嗜,將第五層max-pooling的輸出連接成為一個(gè)一維向量,作為該層的輸入顿膨。
第二層全連接:4096維
Softmax層:輸出為1000锅锨,輸出的每一維都是圖片屬于該類別的概率。
Refer
TensorFlow學(xué)習(xí)筆記2:構(gòu)建CNN模型
Neural Networks and Deep Learning 英文版
Deep Learning (Adaptive Computation and Machine Learning series)
卷積神經(jīng)
技術(shù)向:一文讀懂卷積神經(jīng)網(wǎng)絡(luò)CNN
深度 | 從入門到精通:卷積神經(jīng)網(wǎng)絡(luò)初學(xué)者指南(附論文)
CNN筆記:通俗理解卷積神經(jīng)網(wǎng)絡(luò)
[透析] 卷積神經(jīng)網(wǎng)絡(luò)CNN究竟是怎樣一步一步工作的恋沃?
Conv Nets: A Modular Perspective
Understanding Convolutions