吳教授的CNN課堂:基礎(chǔ)篇 | 卷積和池化

下篇傳送門(mén):
吳教授的CNN課堂:進(jìn)階 | 從LeNet到殘差網(wǎng)絡(luò)(ResNet)和Inception Net

等了一個(gè)月,吳教授的Deeplearning.ai的第四部分斑鸦,也就是關(guān)于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)寫(xiě)CNN)的課愕贡。

作為吳教授的忠實(shí)門(mén)徒(自封),除了在課堂上受到吳教授秀恩愛(ài)暴擊外巷屿,當(dāng)然也要好好做筆記固以。雖然之前也有過(guò)一些CNN基礎(chǔ),但這次收益還是挺多的嘱巾。

CNN目前主要用于憨琳?

CNN目前主要用于CV領(lǐng)域,也就是計(jì)算機(jī)視覺(jué)領(lǐng)域旬昭。

很多當(dāng)前最先進(jìn)的計(jì)算機(jī)視覺(jué)方面的應(yīng)用篙螟,如圖片識(shí)別,物體檢測(cè)问拘,神經(jīng)風(fēng)格轉(zhuǎn)換等等闲擦,都大量使用到了CNN。

而且不光是CV領(lǐng)域场梆,很多CNN在CV領(lǐng)域應(yīng)用的很多技巧墅冷,其他領(lǐng)域也可以從其中借鑒到很多,如自然語(yǔ)言處理或油。

為什么要用CNN

首先寞忿,假如我們要進(jìn)行一個(gè)圖像識(shí)別任務(wù)?這里就不用已經(jīng)都快被玩爛了的的MNIST顶岸,用吳教授課上的SIGNS數(shù)據(jù)集(包含了用手勢(shì)表示的從0到5的圖片)腔彰。目標(biāo)任務(wù)就是叫编,給一個(gè)手勢(shì),識(shí)別出代表數(shù)字幾霹抛。

如果是上過(guò)之前吳教授機(jī)器學(xué)習(xí)的同學(xué)的話(huà)搓逾,那么可能會(huì)問(wèn),為什么要用CNN呢杯拐?

何不直接像機(jī)器學(xué)習(xí)課里面一樣霞篡,將圖片拍扁(flatten),也就是直接將(高 x 寬 x 通道(如RGB))的圖片展成一個(gè)一維向量呢端逼。如SIGNS朗兵,本來(lái)是64x64x3的圖片,我們將它拍成1x12288的向量顶滩。

之后直接輸入全連接網(wǎng)絡(luò)(即一般我們認(rèn)為的神經(jīng)網(wǎng)絡(luò))余掖,中間加點(diǎn)隱層,最后一層用softmax壓一下直接輸出結(jié)果就好了礁鲁。

我們可以這樣設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)盐欺,第一層12288個(gè)單元,然后中間三個(gè)隱層仅醇,分別是1028個(gè)單元找田、256個(gè)單元、64個(gè)單元着憨,最后一層6個(gè)單元墩衙,也就是我們的分類(lèi)數(shù)。

搭建好網(wǎng)絡(luò)后甲抖,然后訓(xùn)練漆改。這樣子確實(shí)也可以得到還過(guò)得去的結(jié)果,大概70~80%准谚。但是相信大家也發(fā)現(xiàn)了挫剑,這樣子搭建的網(wǎng)絡(luò)需要很多很多參數(shù),如這個(gè)例子里面

也就是大約一千三百萬(wàn)個(gè)參數(shù)柱衔。

而這個(gè)例子還只是很小的圖片樊破,因?yàn)橹挥?4x64大小,而現(xiàn)在隨意用手機(jī)拍張照片就比這大很多唆铐。處理這些圖片時(shí)哲戚,用全連接網(wǎng)絡(luò)搭建出來(lái)的網(wǎng)絡(luò)的參數(shù)個(gè)數(shù),將會(huì)是一個(gè)天文數(shù)字艾岂,不光優(yōu)化困難顺少,而且性能也不怎么樣。

而這時(shí)候,就是CNN大展神威的時(shí)候了脆炎。只需要多少參數(shù)呢梅猿?之后再揭曉揭曉。

CNN基礎(chǔ):卷積層

卷積 Convolution

CNN網(wǎng)絡(luò)最主要的計(jì)算部分就是首字母C秒裕,卷積(Convolutional)袱蚓。

如下圖,這里的一次卷積運(yùn)算指的是几蜻,當(dāng)我們有一個(gè)過(guò)濾器(filter)喇潘,即下圖移動(dòng)的方塊,將這個(gè)方塊對(duì)應(yīng)要處理的輸入數(shù)據(jù)的一部分入蛆,然后位置一一對(duì)應(yīng)相乘响蓉,然后把結(jié)果再相加得到一個(gè)數(shù)硕勿。

一個(gè)過(guò)濾器對(duì)一張圖片進(jìn)行卷積運(yùn)算時(shí)哨毁,往往要進(jìn)行多次卷積運(yùn)算,對(duì)一部分進(jìn)行計(jì)算完之后源武,然后移動(dòng)一點(diǎn)距離再計(jì)算扼褪,繼續(xù)移動(dòng),計(jì)算... 直到處理完整張圖片粱栖。

為什么叫做過(guò)濾器呢(也有叫做kernel(核)的)话浇?

因?yàn)槲覀兛梢园衙總€(gè)過(guò)濾器,當(dāng)做是設(shè)定了一定條件的特征檢測(cè)器闹究,把不屬于檢測(cè)條件的都過(guò)濾掉幔崖。只有當(dāng)前卷積的區(qū)域符合這個(gè)過(guò)濾器設(shè)置的條件時(shí),卷積計(jì)算結(jié)果才會(huì)得到一個(gè)比較大的數(shù)渣淤。

舉個(gè)栗子赏寇,如用于檢測(cè)垂直和水平邊線(xiàn)的過(guò)濾器。

可以試著自己計(jì)算一下价认。如下圖嗅定,如果用灰度表示的話(huà),黑的地方是255用踩,白的地方是0渠退。用上面的Gx來(lái)卷積下面這張圖的話(huà),就會(huì)在中間黑白邊界獲得比較大的值脐彩。

而CNN中會(huì)有很多個(gè)過(guò)濾器碎乃,每個(gè)過(guò)濾器對(duì)圖片進(jìn)行卷積后,會(huì)得到下一個(gè)結(jié)果的一個(gè)通道惠奸。CNN厲害的地方在于荠锭,過(guò)濾器的特征并不是人為設(shè)定的,而是通過(guò)大量圖片自己訓(xùn)練出來(lái)的晨川。

這樣也就增加了它的靈活性证九,而且因?yàn)橐曈X(jué)底層特征的兼容特性删豺,因此也保證了遷移學(xué)習(xí)的可能。

步長(zhǎng)(Stride)與填充(Padding)

上面說(shuō)了卷積計(jì)算愧怜,但還有一些小的細(xì)節(jié)沒(méi)提呀页。

如果用(f, f)的過(guò)濾器來(lái)卷積一張$(h, w)$大小的圖片,每次移動(dòng)一個(gè)像素的話(huà)拥坛,那么得出的結(jié)果就是(h-f+1, w-f+1)的輸出結(jié)果蓬蝶。f是過(guò)濾器大小,h和w分別是圖片的高寬猜惋。

如果每次不止移動(dòng)一個(gè)像素丸氛,而是兩個(gè)像素,或者是s個(gè)像素會(huì)怎么樣呢著摔。

那么結(jié)果就會(huì)變?yōu)?/p>


這個(gè)s被稱(chēng)為步長(zhǎng)缓窜。

但是如果每次這樣子進(jìn)行卷積的話(huà),會(huì)出現(xiàn)一個(gè)問(wèn)題谍咆。只要是$f$和$s$的值比1要大的話(huà)禾锤,那么每次卷積之后結(jié)果的長(zhǎng)寬,要比卷積前小一些摹察。

因?yàn)檫@樣子的卷積恩掷,實(shí)際上每次都丟棄了一些圖片邊緣的信息。一直這樣卷積的話(huà)供嚎,一旦卷積層過(guò)多男旗,就會(huì)有很多信息丟失栽惶。為了防止這種情況的發(fā)生莫瞬,我們就需要對(duì)原來(lái)的圖片四周進(jìn)行填充(padding)歧蒋。

一般都會(huì)用“0”值來(lái)填充,填充1就代表對(duì)周?chē)畛湟蝗Τナ铮缟蠄D氮凝。填充2就填充兩圈,填充為p就是p圈望忆,長(zhǎng)寬各增加2p罩阵。

有了填充之后,每次卷積后的大小會(huì)變?yōu)?/p>

此時(shí)假設(shè)卷積后高不變

那么我們可以獲得

假設(shè)s步長(zhǎng)為1启摄,那么

也就是如果過(guò)濾器的高h(yuǎn)=5的話(huà)稿壁,那么為了保持輸出高寬不變,那么就需要p=2歉备。

上面這種保持卷積前后高寬不變的填充方式叫做"Same(相同)填充"傅是。

分?jǐn)?shù)情況

之后來(lái)討論一下分?jǐn)?shù)情況吧。

萬(wàn)一f是4或者6這樣的數(shù)呢,那么得到的p豈不是分?jǐn)?shù)喧笔,怎么填充帽驯。答案是,那f就不要取偶數(shù)嘛书闸。這就是為什么一般默認(rèn)的過(guò)濾器大小都是5尼变、7、11這樣的單數(shù)浆劲。

好的嫌术,解決了填充的情況,那么如果輸出的

是分?jǐn)?shù)怎么辦牌借。如h=6,f=3,p=0,s=2的情況下度气,按照公式計(jì)算會(huì)得到2.5。一般的處理是膨报,只取整數(shù)部分磷籍。

而這種p=0,然后結(jié)果取整數(shù)部分的處理方式丙躏,叫做"Valid(有效)填充"择示。

CNN基礎(chǔ):池化(Pooling)層

除了上面的卷積層束凑,CNN里面還有一個(gè)很重要的部分晒旅,池化層。

一般會(huì)跟在卷積層之后汪诉,主要用到的Pooling層主要由有Max PoolingAverage Pooling, 也就是最大池化和平均池化废恋。

其實(shí)概念很簡(jiǎn)單,最大池化就如下圖扒寄。假設(shè)有一個(gè)2x2的窗口鱼鼓,每次移動(dòng)步長(zhǎng)也為2,每次對(duì)窗口里的數(shù)取最大值该编,然后輸出迄本。

同樣的平均池化,則就把取最大值這個(gè)操作換成取平均值就行了课竣。

除了上面兩種池化方式嘉赎,當(dāng)然還有一些其他的池化方法,如k-Max Pooling之類(lèi)的于樟,但是應(yīng)用很少公条。在最大和平均兩個(gè)里面,也是最大池化比較常用迂曲。

池化層輸出大小的轉(zhuǎn)換也和卷積層比較類(lèi)似靶橱,用

來(lái)計(jì)算,一般池化層不用填充。而且池化層沒(méi)有要需要訓(xùn)練的參數(shù)关霸。

CNN基礎(chǔ):組合

有了卷積層和池化層兩大部件之后传黄,就只剩下組合了。下圖是吳教授手繪LeNet-5網(wǎng)絡(luò)队寇。

結(jié)構(gòu)很簡(jiǎn)單大概是這樣子Input -> Conv1 -> Pool1 -> Conv2 -> Pool2 -> (Flatten) -> FC3 -> FC4 -> Output尝江。

Conv是卷積層,Pool是池化層英上,F(xiàn)C指的是全連接網(wǎng)絡(luò)層(Full-Connected)炭序。其中Flatten指的是,因?yàn)榫矸e網(wǎng)絡(luò)輸出的數(shù)據(jù)形狀(3維)苍日,和緊接著的全連接網(wǎng)絡(luò)的輸入形狀(1維)不吻合惭聂,所以需要進(jìn)行一些處理。

就是之前在直接用全連接網(wǎng)絡(luò)提到的相恃,把卷積網(wǎng)絡(luò)的輸出拍扁(flatten)辜纲,把三維的拍成一維,之后再輸入全連接網(wǎng)絡(luò)拦耐。

建議大家可以按照前面提到的形狀變換公式耕腾,還有吳教授的手繪圖,親自把LeNet-5過(guò)一遍杀糯,對(duì)之后編程CNN很有幫助的扫俺。

關(guān)于前面的參數(shù)個(gè)數(shù)的問(wèn)題,用上面這個(gè)LeNet-5來(lái)處理的話(huà)

也就是大概114萬(wàn)固翰。

一下子就縮小了一個(gè)數(shù)量級(jí)狼纬,當(dāng)然對(duì)于越大的圖片這個(gè)差還會(huì)更加大。

結(jié)尾

這就是吳教授CNN課堂的第一周上的內(nèi)容了骂际。這次在通道這個(gè)概念有了很多新的看法疗琉。

如果想要自己修的話(huà),直接Coursera Deeplearning ai就能搜索到課程歉铝。

Coursera小技巧盈简,點(diǎn)擊注冊(cè),不想付錢(qián)的話(huà)太示,點(diǎn)左下角的那個(gè)小小的旁聽(tīng)就好了柠贤。之后想拿證的時(shí)候再充值。

習(xí)題很簡(jiǎn)單先匪,這里是我的練習(xí)解答种吸,如有困難可以參考。 repo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呀非,一起剝皮案震驚了整個(gè)濱河市坚俗,隨后出現(xiàn)的幾起案子镜盯,更是在濱河造成了極大的恐慌,老刑警劉巖猖败,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件速缆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡恩闻,警方通過(guò)查閱死者的電腦和手機(jī)艺糜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幢尚,“玉大人破停,你說(shuō)我怎么就攤上這事∥臼#” “怎么了真慢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)理茎。 經(jīng)常有香客問(wèn)我黑界,道長(zhǎng),這世上最難降的妖魔是什么皂林? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任朗鸠,我火速辦了婚禮,結(jié)果婚禮上础倍,老公的妹妹穿的比我還像新娘烛占。我一直安慰自己,他們只是感情好著隆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布扰楼。 她就那樣靜靜地躺著呀癣,像睡著了一般美浦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上项栏,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天浦辨,我揣著相機(jī)與錄音,去河邊找鬼沼沈。 笑死流酬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的列另。 我是一名探鬼主播芽腾,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼页衙!你這毒婦竟也來(lái)了摊滔?” 一聲冷哼從身側(cè)響起阴绢,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艰躺,沒(méi)想到半個(gè)月后呻袭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腺兴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年左电,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片页响。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篓足,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闰蚕,到底是詐尸還是另有隱情纷纫,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布陪腌,位于F島的核電站辱魁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诗鸭。R本人自食惡果不足惜染簇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望强岸。 院中可真熱鬧锻弓,春花似錦、人聲如沸蝌箍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妓盲。三九已至杂拨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悯衬,已是汗流浹背弹沽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筋粗,地道東北人策橘。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像娜亿,于是被迫代替她去往敵國(guó)和親丽已。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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