卷積神經(jīng)網(wǎng)絡(luò)(CNN)

姓名:張志文 學(xué)號(hào):19021210649
【嵌牛導(dǎo)讀】
卷積神經(jīng)網(wǎng)絡(luò)(CNN)的在圖像處理方面的應(yīng)用十分廣泛
【嵌牛鼻子】
CNN炊豪;卷積神經(jīng)網(wǎng)絡(luò)
【嵌牛提問】
什么是卷積神經(jīng)網(wǎng)絡(luò)凌箕?
【嵌牛正文】

一、引子————邊界檢測

我們來看一個(gè)最簡單的例子:“邊界檢測(edge detection)”词渤,假設(shè)我們有這樣的一張圖片,大小8×8:

image

圖片中的數(shù)字代表該位置的像素值,我們知道构资,像素值越大功茴,顏色越亮,所以為了示意高氮,我們把右邊小像素的地方畫成深色慧妄。圖的中間兩個(gè)顏色的分界線就是我們要檢測的邊界。

怎么檢測這個(gè)邊界呢剪芍?我們可以設(shè)計(jì)這樣的一個(gè) 濾波器(filter塞淹,也稱為kernel),大小3×3:

image

然后罪裹,我們用這個(gè)filter饱普,往我們的圖片上“蓋”运挫,覆蓋一塊跟filter一樣大的區(qū)域之后,對(duì)應(yīng)元素相乘费彼,然后求和滑臊。計(jì)算一個(gè)區(qū)域之后,就向其他區(qū)域挪動(dòng)箍铲,接著計(jì)算雇卷,直到把原圖片的每一個(gè)角落都覆蓋到了為止。這個(gè)過程就是 “卷積”颠猴。
(我們不用管卷積在數(shù)學(xué)上到底是指什么運(yùn)算关划,我們只用知道在CNN中是怎么計(jì)算的。)
這里的“挪動(dòng)”翘瓮,就涉及到一個(gè)步長了贮折,假如我們的步長是1,那么覆蓋了一個(gè)地方之后资盅,就挪一格调榄,容易知道,總共可以覆蓋6×6個(gè)不同的區(qū)域呵扛。

那么每庆,我們將這6×6個(gè)區(qū)域的卷積結(jié)果,拼成一個(gè)矩陣:

image

誒今穿?缤灵!發(fā)現(xiàn)了什么?
這個(gè)圖片蓝晒,中間顏色淺腮出,兩邊顏色深,這說明咱們的原圖片中間的邊界芝薇,在這里被反映出來了!

從上面這個(gè)例子中胚嘲,我們發(fā)現(xiàn),我們可以通過設(shè)計(jì)特定的filter洛二,讓它去跟圖片做卷積慢逾,就可以識(shí)別出圖片中的某些特征,比如邊界灭红。
上面的例子是檢測豎直邊界侣滩,我們也可以設(shè)計(jì)出檢測水平邊界的,只用把剛剛的filter旋轉(zhuǎn)90°即可变擒。對(duì)于其他的特征君珠,理論上只要我們經(jīng)過精細(xì)的設(shè)計(jì),總是可以設(shè)計(jì)出合適的filter的娇斑。

我們的CNN(convolutional neural network)策添,主要就是通過一個(gè)個(gè)的filter材部,不斷地提取特征,從局部的特征到總體的特征唯竹,從而進(jìn)行圖像識(shí)別等等功能乐导。

那么問題來了,我們?cè)趺纯赡苋ピO(shè)計(jì)這么多各種各樣的filter呀浸颓?首先物臂,我們都不一定清楚對(duì)于一大推圖片,我們需要識(shí)別哪些特征产上,其次棵磷,就算知道了有哪些特征,想真的去設(shè)計(jì)出對(duì)應(yīng)的filter晋涣,恐怕也并非易事仪媒,要知道,特征的數(shù)量可能是成千上萬的谢鹊。

其實(shí)學(xué)過神經(jīng)網(wǎng)絡(luò)之后算吩,我們就知道,這些filter佃扼,根本就不用我們?nèi)ピO(shè)計(jì)偎巢,每個(gè)filter中的各個(gè)數(shù)字,不就是參數(shù)嗎松嘶,我們可以通過大量的數(shù)據(jù),來 讓機(jī)器自己去“學(xué)習(xí)”這些參數(shù)嘛挎扰。這翠订,就是CNN的原理。

二遵倦、CNN的基本概念

1.padding 填白
從上面的引子中尽超,我們可以知道,原圖像在經(jīng)過filter卷積之后梧躺,變小了似谁,從(8,8)變成了(6,6)。假設(shè)我們?cè)倬硪淮温痈纾谴笮【妥兂闪?4,4)了巩踏。

這樣有啥問題呢?
主要有兩個(gè)問題:

  • 每次卷積续搀,圖像都縮小塞琼,這樣卷不了幾次就沒了;
  • 相比于圖片中間的點(diǎn)禁舷,圖片邊緣的點(diǎn)在卷積中被計(jì)算的次數(shù)很少彪杉。這樣的話毅往,邊緣的信息就易于丟失。

為了解決這個(gè)問題派近,我們可以采用padding的方法攀唯。我們每次卷積前,先給圖片周圍都補(bǔ)一圈空白渴丸,讓卷積之后圖片跟原來一樣大侯嘀,同時(shí),原來的邊緣也被計(jì)算了更多次曙强。

image

比如残拐,我們把(8,8)的圖片給補(bǔ)成(10,10),那么經(jīng)過(3,3)的filter之后碟嘴,就是(8,8)溪食,沒有變。

我們把上面這種“讓卷積之后的大小不變”的padding方式娜扇,稱為 “Same”方式错沃,
把不經(jīng)過任何填白的,稱為 “Valid”方式雀瓢。這個(gè)是我們?cè)谑褂靡恍┛蚣艿臅r(shí)候枢析,需要設(shè)置的超參數(shù)。

2.stride 步長
前面我們所介紹的卷積刃麸,都是默認(rèn)步長是1醒叁,但實(shí)際上,我們可以設(shè)置步長為其他的值泊业。
比如把沼,對(duì)于(8,8)的輸入,我們用(3,3)的filter吁伺,
如果stride=1饮睬,則輸出為(6,6);
如果stride=2,則輸出為(3,3);(這里例子舉得不大好篮奄,除不斷就向下取整)

3.pooling 池化
這個(gè)pooling捆愁,是為了提取一定區(qū)域的主要特征,并減少參數(shù)數(shù)量窟却,防止模型過擬合昼丑。
比如下面的MaxPooling,采用了一個(gè)2×2的窗口夸赫,并取stride=2:

image

除了MaxPooling,還有AveragePooling矾克,顧名思義就是取那個(gè)區(qū)域的平均值。

4.對(duì)多通道(channels)圖片的卷積
這個(gè)需要單獨(dú)提一下。彩色圖像胁附,一般都是RGB三個(gè)通道(channel)的酒繁,因此輸入數(shù)據(jù)的維度一般有三個(gè):(長,寬控妻,通道)州袒。
比如一個(gè)28×28的RGB圖片,維度就是(28,28,3)弓候。

前面的引子中郎哭,輸入圖片是2維的(8,8),filter是(3,3)菇存,輸出也是2維的(6,6)夸研。

如果輸入圖片是三維的呢(即增多了一個(gè)channels),比如是(8,8,3)依鸥,這個(gè)時(shí)候亥至,我們的filter的維度就要變成(3,3,3)了,它的 最后一維要跟輸入的channel維度一致贱迟。
這個(gè)時(shí)候的卷積姐扮,是三個(gè)channel的所有元素對(duì)應(yīng)相乘后求和,也就是之前是9個(gè)乘積的和衣吠,現(xiàn)在是27個(gè)乘積的和茶敏。因此,輸出的維度并不會(huì)變化缚俏。還是(6,6)惊搏。

但是,一般情況下忧换,我們會(huì) 使用多了filters同時(shí)卷積恬惯,比如,如果我們同時(shí)使用4個(gè)filter的話包雀,那么 輸出的維度則會(huì)變?yōu)?6,6,4)宿崭。

我特地畫了下面這個(gè)圖亲铡,來展示上面的過程:

image

圖中的輸入圖像是(8,8,3)才写,filter有4個(gè),大小均為(3,3,3)奖蔓,得到的輸出為(6,6,4)赞草。
我覺得這個(gè)圖已經(jīng)畫的很清晰了,而且給出了3和4這個(gè)兩個(gè)關(guān)鍵數(shù)字是怎么來的吆鹤,所以我就不啰嗦了(這個(gè)圖畫了我起碼40分鐘)厨疙。

其實(shí),如果套用我們前面學(xué)過的神經(jīng)網(wǎng)絡(luò)的符號(hào)來看待CNN的話疑务,

  • 我們的輸入圖片就是X沾凄,shape=(8,8,3);
  • 4個(gè)filters其實(shí)就是第一層神金網(wǎng)絡(luò)的參數(shù)W1,梗醇,shape=(3,3,3,4),這個(gè)4是指有4個(gè)filters;
  • 我們的輸出,就是Z1撒蟀,shape=(6,6,4);
  • 后面其實(shí)還應(yīng)該有一個(gè)激活函數(shù)叙谨,比如relu,經(jīng)過激活后保屯,Z1變?yōu)锳1手负,shape=(6,6,4);

所以,在前面的圖中姑尺,我加一個(gè)激活函數(shù)竟终,給對(duì)應(yīng)的部分標(biāo)上符號(hào),就是這樣的:

image

三切蟋、CNN的結(jié)構(gòu)組成

上面我們已經(jīng)知道了卷積(convolution)统捶、池化(pooling)以及填白(padding)是怎么進(jìn)行的,接下來我們就來看看CNN的整體結(jié)構(gòu)敦姻,它包含了3種層(layer):

1. Convolutional layer(卷積層--CONV)
由濾波器filters和激活函數(shù)構(gòu)成瘾境。
一般要設(shè)置的超參數(shù)包括filters的數(shù)量、大小镰惦、步長迷守,以及padding是“valid”還是“same”。當(dāng)然旺入,還包括選擇什么激活函數(shù)兑凿。

2. Pooling layer (池化層--POOL)
這里里面沒有參數(shù)需要我們學(xué)習(xí),因?yàn)檫@里里面的參數(shù)都是我們?cè)O(shè)置好了茵瘾,要么是Maxpooling礼华,要么是Averagepooling。
需要指定的超參數(shù)拗秘,包括是Max還是average圣絮,窗口大小以及步長。
通常雕旨,我們使用的比較多的是Maxpooling,而且一般取大小為(2,2)步長為2的filter扮匠,這樣,經(jīng)過pooling之后凡涩,輸入的長寬都會(huì)縮小2倍棒搜,channels不變。

3. Fully Connected layer(全連接層--FC)
這個(gè)前面沒有講活箕,是因?yàn)檫@個(gè)就是我們最熟悉的家伙力麸,就是我們之前學(xué)的神經(jīng)網(wǎng)絡(luò)中的那種最普通的層,就是一排神經(jīng)元。因?yàn)檫@一層是每一個(gè)單元都和前一層的每一個(gè)單元相連接克蚂,所以稱之為“全連接”闺鲸。
這里要指定的超參數(shù),無非就是神經(jīng)元的數(shù)量埃叭,以及激活函數(shù)翠拣。

接下來,我們隨便看一個(gè)CNN的模樣游盲,來獲取對(duì)CNN的一些感性認(rèn)識(shí):

image

上面這個(gè)CNN是我隨便拍腦門想的一個(gè)误墓。它的結(jié)構(gòu)可以用:
X-->CONV(relu)-->MAXPOOL-->CONV(relu)-->FC(relu)-->FC(softmax)-->Y
來表示。

這里需要說明的是益缎,在經(jīng)過數(shù)次卷積和池化之后谜慌,我們 最后會(huì)先將多維的數(shù)據(jù)進(jìn)行“扁平化”,也就是把 (height,width,channel)的數(shù)據(jù)壓縮成長度為 height × width × channel 的一維數(shù)組莺奔,然后再與 FC層連接欣范,這之后就跟普通的神經(jīng)網(wǎng)絡(luò)無異了

可以從圖中看到令哟,隨著網(wǎng)絡(luò)的深入恼琼,我們的圖像(嚴(yán)格來說中間的那些不能叫圖像了,但是為了方便屏富,還是這樣說吧)越來越小晴竞,但是channels卻越來越大了。在圖中的表示就是長方體面對(duì)我們的面積越來越小狠半,但是長度卻越來越長了噩死。


四、卷積神經(jīng)網(wǎng)絡(luò) VS. 傳統(tǒng)神經(jīng)網(wǎng)絡(luò)

其實(shí)現(xiàn)在回過頭來看神年,CNN跟我們之前學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)已维,也沒有很大的差別。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)已日,其實(shí)就是多個(gè)FC層疊加起來垛耳。
CNN,無非就是把FC改成了CONV和POOL飘千,就是把傳統(tǒng)的由一個(gè)個(gè)神經(jīng)元組成的layer堂鲜,變成了由filters組成的layer。

那么占婉,為什么要這樣變泡嘴?有什么好處甫恩?
具體說來有兩點(diǎn):

1.參數(shù)共享機(jī)制(parameters sharing)
我們對(duì)比一下傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的層和由filters構(gòu)成的CONV層:
假設(shè)我們的圖像是8×8大小逆济,也就是64個(gè)像素,假設(shè)我們用一個(gè)有9個(gè)單元的全連接層:

image

那這一層我們需要多少個(gè)參數(shù)呢?需要 64×9 = 576個(gè)參數(shù)(先不考慮偏置項(xiàng)b)奖慌。因?yàn)槊恳粋€(gè)鏈接都需要一個(gè)權(quán)重w抛虫。

那我們看看 同樣有9個(gè)單元的filter是怎么樣的:

image

其實(shí)不用看就知道,有幾個(gè)單元就幾個(gè)參數(shù)简僧,所以總共就9個(gè)參數(shù)建椰!

因?yàn)椋瑢?duì)于不同的區(qū)域岛马,我們都共享同一個(gè)filter棉姐,因此就共享這同一組參數(shù)。
這也是有道理的啦逆,通過前面的講解我們知道伞矩,filter是用來檢測特征的,那一個(gè)特征一般情況下很可能在不止一個(gè)地方出現(xiàn)夏志,比如“豎直邊界”乃坤,就可能在一幅圖中多出出現(xiàn),那么 我們共享同一個(gè)filter不僅是合理的沟蔑,而且是應(yīng)該這么做的湿诊。

由此可見,參數(shù)共享機(jī)制瘦材,讓我們的網(wǎng)絡(luò)的參數(shù)數(shù)量大大地減少厅须。這樣,我們可以用較少的參數(shù)食棕,訓(xùn)練出更加好的模型九杂,典型的事半功倍,而且可以有效地 避免過擬合宣蠕。
同樣例隆,由于filter的參數(shù)共享,即使圖片進(jìn)行了一定的平移操作抢蚀,我們照樣可以識(shí)別出特征镀层,這叫做 “平移不變性”。因此皿曲,模型就更加穩(wěn)健了唱逢。

2.連接的稀疏性(sparsity of connections)
由卷積的操作可知,輸出圖像中的任何一個(gè)單元屋休,只跟輸入圖像的一部分有關(guān)系:

image

而傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中坞古,由于都是全連接,所以輸出的任何一個(gè)單元劫樟,都要受輸入的所有的單元的影響痪枫。這樣無形中會(huì)對(duì)圖像的識(shí)別效果大打折扣织堂。比較,每一個(gè)區(qū)域都有自己的專屬特征奶陈,我們不希望它受到其他區(qū)域的影響易阳。

正是由于上面這兩大優(yōu)勢(shì),使得CNN超越了傳統(tǒng)的NN吃粒,開啟了神經(jīng)網(wǎng)絡(luò)的新時(shí)代潦俺。

本文內(nèi)容為轉(zhuǎn)載,版權(quán)歸作者所有

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徐勃,一起剝皮案震驚了整個(gè)濱河市事示,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌僻肖,老刑警劉巖很魂,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異檐涝,居然都是意外死亡遏匆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門谁榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幅聘,“玉大人,你說我怎么就攤上這事窃植〉圯铮” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵巷怜,是天一觀的道長葛超。 經(jīng)常有香客問我,道長延塑,這世上最難降的妖魔是什么绣张? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮关带,結(jié)果婚禮上侥涵,老公的妹妹穿的比我還像新娘。我一直安慰自己宋雏,他們只是感情好芜飘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磨总,像睡著了一般嗦明。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚪燕,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天娶牌,我揣著相機(jī)與錄音奔浅,去河邊找鬼。 笑死裙戏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厕诡。 我是一名探鬼主播累榜,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼灵嫌!你這毒婦竟也來了壹罚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤寿羞,失蹤者是張志新(化名)和其女友劉穎猖凛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绪穆,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辨泳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玖院。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菠红。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖难菌,靈堂內(nèi)的尸體忽然破棺而出试溯,到底是詐尸還是另有隱情,我是刑警寧澤郊酒,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布遇绞,位于F島的核電站,受9級(jí)特大地震影響燎窘,放射性物質(zhì)發(fā)生泄漏摹闽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一褐健、第九天 我趴在偏房一處隱蔽的房頂上張望钩骇。 院中可真熱鬧,春花似錦铝量、人聲如沸倘屹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纽匙。三九已至,卻和暖如春拍谐,著一層夾襖步出監(jiān)牢的瞬間烛缔,已是汗流浹背馏段。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留践瓷,地道東北人院喜。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像晕翠,于是被迫代替她去往敵國和親喷舀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容