TensorFlow從1到2 - 4 - 深入拆解CNN架構(gòu)

TensorFlow從0到N專題入口

上一篇3 深度學(xué)習(xí)革命的開端:卷積神經(jīng)網(wǎng)絡(luò) 快速回顧了CNN的前世今生。

本篇將拆開CNN架構(gòu)傻挂,一探究竟。

卷積濾波器

基于空間映射的架構(gòu)

全連接網(wǎng)絡(luò)架構(gòu)存在一個“硬”傷:網(wǎng)絡(luò)中各層神經(jīng)元的一維排布方式,丟棄了圖像的空間結(jié)構(gòu)信息嚎莉。

以MNIST識別為例腿椎,當(dāng)輸入一副28x28的二維圖像桌硫,我們首先會把它拉平為一個長度為784的一維的向量,而后才將其連入隱藏層的每個神經(jīng)元啃炸。輸入圖像中兩個相距較近的像素位置铆隘,與兩個相距較遠的像素位置,對于神經(jīng)元來說并沒有差別南用。全連接網(wǎng)絡(luò)只能靠大量訓(xùn)練膀钠,通過更新神經(jīng)元對每個像素位置權(quán)重這種“軟”方法,推斷出圖像的空間結(jié)構(gòu)裹虫。

與全連接網(wǎng)絡(luò)不同肿嘲,CNN中的各層神經(jīng)元排列都保持了二維的圖像空間結(jié)構(gòu)(末端的全連接層除外),如下圖所示筑公。

CNN架構(gòu)
LeNet-5

這就是LeCun在1998年發(fā)表《Gradient-based learning applied to document recognition》提出的第一個正式的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)——LeNet-5睦刃,Google學(xué)術(shù)搜索顯示被引用9562次,經(jīng)典程度可見一斑十酣。

以“層”作為拆解粒度的話涩拙,刨去輸入層和輸出層际长,LeNet-5共有6個隱藏層:從左到右依次是:

  • C1卷積層(Convolutional Layer);
  • S2降采樣層(Sub-Sampling Layer)兴泥,即池化層(Pooling Layer)工育;
  • C3卷積層;
  • S4降采樣層搓彻;
  • C5卷積層如绸;
  • F6全連接層(Full Connected Layer);

其中旭贬,關(guān)于全連接層我們已經(jīng)非常熟悉了(回顧直達TensorFlow從0到1)怔接,而其余的5層中,只有卷積層和降采樣層兩種類型稀轨,交替重復(fù)出現(xiàn)扼脐。

需要注意的是,LeNet-5是CNN的一種特化架構(gòu)奋刽,在構(gòu)建自己的CNN的時候完全可以自定義架構(gòu)的大小和深度(卷積層和降采樣層的數(shù)量)瓦侮。

接下來分別去看卷積層和池化層。

卷積層

卷積層分為4個小主題來說:

  • 局部感受野佣谐;
  • 共享權(quán)重和偏置肚吏;
  • 多通道算法;
  • 濾波器的層次狭魂;

局部感受野

與全連接網(wǎng)絡(luò)的另一個迥異是罚攀,卷積層神經(jīng)元具有局部感受野,它只能“看到”一小塊局部圖像雌澄,如下圖所示斋泄。

局部感受野-1

圖中左側(cè)是28x28的輸入層,右側(cè)是第一個隱藏層——卷積層掷伙,其中第一行第一列的神經(jīng)元能夠“看到”一塊5x5的局部圖像是己。

接下來看卷積層的第一行第二個神經(jīng)元,5x5的“小視窗”從之前的位置任柜,整體向右滑動了1個像素(跨距)卒废,形成了它的感受野,見下圖宙地。

局部感受野-2

依照上述這種局部映射邏輯摔认,依次從左到右,從上到下宅粥,便構(gòu)建好了卷積層與上一層輸出的位置映射關(guān)系参袱。需要注意的是,卷積網(wǎng)絡(luò)中各層的二維結(jié)構(gòu),以及“小視窗”都是正方形的抹蚀,如果輸入原始數(shù)據(jù)是長方形圖片剿牺,則需要進行預(yù)處理。

與全連接(Fully Connected)不同环壤,卷積層單元與上一層單元之間的連接被稱為局部連接(Locally Connected)晒来,連接數(shù)量較前者驟減。而這一點也與二十一世紀(jì)以來生物神經(jīng)科學(xué)所發(fā)現(xiàn)的神經(jīng)元的稀疏(Sparse)激活性相一致郑现。

用N代表輸入層的尺寸湃崩,F(xiàn)代表小視窗尺寸,stride代表跨距接箫,那么卷積層的二維尺寸與前者的關(guān)系為:

K = (N - F) / stride + 1

已上圖為例攒读,輸入層的尺寸是28x28,小視窗尺寸為5x5辛友,每次整體挪動1個像素薄扁,那么計算得出卷積層的二維尺寸是:

(28 - 5) / 1 + 1 = 24。

經(jīng)過卷積映射瞎领,卷積層的尺寸比輸入層尺寸減小了泌辫。如果想保持卷積層尺寸不變随夸,一個常規(guī)做法是對輸入圖像沿邊界整圈補0九默。記補0的圈數(shù)為P,那么卷積層尺寸的計算公式更新為:

K = (N + 2P - F) / stride + 1

已上圖為例宾毒,在做卷積映射前驼修,對輸入圖像補0兩圈,可以使卷積層尺寸保持與原圖像不變:

(28 + 2x2 - 5) / 1 + 1 = 28诈铛。

補0操作如下所示:

Pad the Boarder

歸納當(dāng)前構(gòu)建網(wǎng)絡(luò)用到的超參數(shù):

  • 輸入層的尺寸乙各,記為N;
  • 小視窗尺寸幢竹,記為F耳峦;
  • 跨距,stride焕毫;
  • 補0圈數(shù)蹲坷,記為P;

共享權(quán)重和偏置

仍以前面的圖[局部感受野-1]為例邑飒。

如果“小視窗”的尺寸是5x5循签,那么卷積層中一個神經(jīng)元的連接數(shù)(即權(quán)重數(shù))只需要25個,明顯比全連接神經(jīng)元少很多疙咸。不僅如此县匠,更感意外的是,該神經(jīng)元所在整個隱藏層的權(quán)重數(shù)量也只需要25個!

這是本篇提到的第3個與全連接網(wǎng)絡(luò)的迥異之處:卷積層中的這些神經(jīng)元的權(quán)重和偏置是共享的乞旦。也就是說贼穆,這些神經(jīng)元其實長得一模一樣的。

對此一個形象的解釋是:卷積層中的這些神經(jīng)元其實是在圖像不同的局部區(qū)域中去“挑選”一組“必須”相同的特征兰粉“绲耄基于此理解,代表共享權(quán)重和偏置的“小視窗”亲桦,被稱為Filter(濾波器)也就非常自然了崖蜜。

局部感受野和權(quán)重共享兩大特性,直接導(dǎo)致了:

  • 網(wǎng)絡(luò)參數(shù)數(shù)量與輸入大小客峭、神經(jīng)元數(shù)量無關(guān)豫领,只與卷積核有關(guān)。無論輸入圖像有多大舔琅,與其連接的隱藏層的參數(shù)數(shù)量是固定的等恐,上例中對于只有一個5x5濾波器的隱藏層,那權(quán)重數(shù)量就只有25個备蚓。在降低深度網(wǎng)絡(luò)的參數(shù)規(guī)模的各種設(shè)計中课蔬,卷積層居功至首。
  • 具有對圖像平移郊尝、縮放二跋、旋轉(zhuǎn)的不變性。

對于卷積層位置在(j,k)的神經(jīng)元,其輸出表達式可以記為:

神經(jīng)元輸出表達式

其中:

  • σ是神經(jīng)元的激活函數(shù);
  • b是共享偏置花沉;
  • wl,m1個5x5的共享權(quán)重;
  • ax,y是上一層位置為(x,y)的輸出值谚鄙;

基于位置映射規(guī)則,以及神經(jīng)元共享權(quán)重和偏置刁绒,整個隱藏層的輸出闷营,可以用數(shù)學(xué)上稱為卷積(Convolutional)的操作來非常簡明的表示出來:

al+1 = σ(w * al + b)

其中,符號“*”就表示卷積操作知市,在這個解釋下“小視窗”又有了一個新名字——卷積核傻盟。這就是卷積神經(jīng)網(wǎng)絡(luò)這個名字的來歷。關(guān)于更多卷積的解釋初狰,可以看看知乎上的精彩討論:卷積的物理意義是什么莫杈?

多通道卷積算法

為了解釋清楚局部感受野奢入、參數(shù)共享以及神經(jīng)元輸出的計算方法筝闹,在前面采用了一個極簡的模型:

  • 輸入圖像是單通道的灰度圖媳叨;
  • 卷積層的濾波器(卷積核)也只有1個;
  • 卷積層輸出仍然是單通道的关顷;

但是在實際情況中糊秆,事情要復(fù)雜的多。首先輸入圖像多數(shù)是多通道的(比如RGB三通道)议双,再者卷積層做特征檢測的濾波器只有1個肯定是遠遠不夠的痘番,我們需要大量不同的濾波器來提取各種特征,進而產(chǎn)生多通道的輸出平痰。概括起來汞舱,有以下三方面的擴展:

  • 多通道輸入;
  • 多個多通道濾波器宗雇;
  • 多通道輸出昂芜;

KEEP CALM!一張動圖可以體現(xiàn)出以上的所有擴展:

多通道卷積

觀察上圖赔蒲,有:

  • 輸入尺寸:7x7x3泌神;
  • 濾波器尺寸:3x3x3;
  • 濾波器數(shù)量:2舞虱;
  • 濾波器跨距:2欢际;
  • 補0圈數(shù):1;
  • 輸出尺寸:3x3x2矾兜;

其中輸入损趋,濾波器,輸出都變成了三維結(jié)構(gòu)焕刮,多出的一維就是通道舶沿,Channel墙杯。3者的關(guān)歸納如下配并,務(wù)必牢記:

  • 輸入的通道數(shù) == 濾波器的通道數(shù)
  • 濾波器的個數(shù) == 輸出的通道數(shù)高镐;

這個關(guān)系可以用另一種視圖輔助記憶溉旋,見下:

濾波器的層次

上一篇3 深度學(xué)習(xí)革命的開端:卷積神經(jīng)網(wǎng)絡(luò),介紹了哺乳動物的視覺系統(tǒng)嫉髓,它是分層遞進的观腊,每一級都比前一級處理更高層次的視覺概念。而據(jù)此啟發(fā)設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)算行,是如何體現(xiàn)分層遞進的呢梧油?

2013年Zeiler與Fergus的《Visualizing and Understanding Convolutional Networks》給出了回答,他們將訓(xùn)練好的卷積網(wǎng)絡(luò)的各卷積層卷積核州邢,通過可視化手段呈現(xiàn)了出來儡陨。卷積神經(jīng)網(wǎng)絡(luò)果真如同生物視覺皮層那樣,先從邊緣檢測開始,然后逐層提升檢測特征的抽象層次骗村,如下圖所示:

特征檢測的層次

池化層

在卷積網(wǎng)絡(luò)架構(gòu)中嫌褪,一個卷積層后面,會緊跟一個池化層(Pooling Layer)胚股,它的主要作用就是降采樣(Sub-Sampling)笼痛,只保留最顯著的特征,簡化卷積層輸出信息的同時琅拌,也提升了抗畸變能力缨伊。

池化層的行為比較簡單,輸入和輸出的通道數(shù)并不發(fā)生改變进宝,僅僅是二維尺寸的縮小倘核,如下圖:

池化,來源:CS231n

最常用的池化濾波器之一是最大值池化(Max Pooling)即彪,同卷積濾波器一樣它也有自己的超參數(shù):尺寸和跨距(stride)紧唱。以一個尺寸為2x2,跨距為2的Max Pooling為例隶校,池化操作對輸入逐通道進行操作漏益,只保留局部感受野中的最大值形成新的輸出通道,如下圖所示:

最大值池化深胳,來源:CS231n

全連接層

經(jīng)歷了多次的卷積和池化绰疤,網(wǎng)絡(luò)最終提取出了原始輸入的最高級特征,它是一個W x H x D的三維數(shù)據(jù)體舞终。此時就輪到全連接網(wǎng)絡(luò)登場了轻庆,因為做分類或者回歸,是全連接網(wǎng)絡(luò)的長項敛劝。

向全連接網(wǎng)絡(luò)輸入數(shù)據(jù)余爆,請記得首先將三維數(shù)據(jù)拉平為一個一維向量。

為什么深度CNN可以訓(xùn)練

“深度網(wǎng)絡(luò)的訓(xùn)練存在各種障礙與困難”夸盟,我們在2 消失的梯度中曾討論過蛾方。可是到了CNN這里上陕,少則不低于四層桩砰,多則上百層,深度的問題似乎自動解決了释簿,這是為什么亚隅?如果不考慮數(shù)據(jù)量大與運算能力強,卷積神經(jīng)網(wǎng)絡(luò)從理論上是如何克服深度問題的庶溶?

遺憾的是煮纵,確切的原因并不完全清楚沉删。我們所了解的一些不充分(必要)的原因有:

  • 網(wǎng)絡(luò)各層參數(shù)量級的有效控制,降低了計算復(fù)雜度醉途,也改善了過擬合矾瑰。這得益于卷積層的共享權(quán)重和偏置。以之前MNIST識別所采用的全連接網(wǎng)絡(luò)為例隘擎,在輸入長度為784殴穴,第一個隱藏層為30個神經(jīng)元的情況下,就已經(jīng)產(chǎn)生了23520個權(quán)重货葬。而CNN的第一個隱藏層采幌,使用32個5x5x1濾波器,權(quán)重數(shù)量僅有800個震桶;
  • ReLU等改進方法的應(yīng)用使網(wǎng)絡(luò)計算效率更高休傍;
  • 其他燒腦的思考留給科學(xué)家們吧;

最后值得一提的是蹲姐,雖然卷積神經(jīng)網(wǎng)絡(luò)是基于生物視覺系統(tǒng)啟發(fā)的磨取,但是在現(xiàn)實應(yīng)用中,它不僅能夠處理二維圖像數(shù)據(jù)柴墩,對于任何具有清晰網(wǎng)格結(jié)構(gòu)的數(shù)據(jù)它都能進行學(xué)習(xí)忙厌,這種普適性使其能夠脫離生物神經(jīng)科學(xué)范疇,成為了一種通用的人工智能方法江咳。

上一篇 3 深度學(xué)習(xí)革命的開端:卷積神經(jīng)網(wǎng)絡(luò)


共享協(xié)議:署名-非商業(yè)性使用-禁止演繹(CC BY-NC-ND 3.0 CN)
轉(zhuǎn)載請注明:作者黑猿大叔(簡書)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逢净,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子歼指,更是在濱河造成了極大的恐慌爹土,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踩身,死亡現(xiàn)場離奇詭異胀茵,居然都是意外死亡,警方通過查閱死者的電腦和手機惰赋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門宰掉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赁濒,你說我怎么就攤上這事∶虾Γ” “怎么了拒炎?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挨务。 經(jīng)常有香客問我击你,道長玉组,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任丁侄,我火速辦了婚禮惯雳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸿摇。我一直安慰自己石景,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布拙吉。 她就那樣靜靜地躺著潮孽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筷黔。 梳的紋絲不亂的頭發(fā)上往史,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音佛舱,去河邊找鬼椎例。 笑死,一個胖子當(dāng)著我的面吹牛请祖,可吹牛的內(nèi)容都是我干的粟矿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼损拢,長吁一口氣:“原來是場噩夢啊……” “哼陌粹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起福压,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤掏秩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荆姆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒙幻,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年胆筒,在試婚紗的時候發(fā)現(xiàn)自己被綠了邮破。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡仆救,死狀恐怖抒和,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情彤蔽,我是刑警寧澤摧莽,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站顿痪,受9級特大地震影響镊辕,放射性物質(zhì)發(fā)生泄漏油够。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一征懈、第九天 我趴在偏房一處隱蔽的房頂上張望石咬。 院中可真熱鬧,春花似錦卖哎、人聲如沸鬼悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厦章。三九已至,卻和暖如春照藻,著一層夾襖步出監(jiān)牢的瞬間袜啃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工幸缕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留群发,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓发乔,卻偏偏與公主長得像熟妓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栏尚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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