




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐A向量、矩陣及其基本運(yùn)算B隨機(jī)梯度下降C鏈?zhǔn)椒▌t參考文獻(xiàn)索引第一部分緒論引言2015年10月,一場(chǎng)圍棋的人機(jī)對(duì)決賽正在進(jìn)行,但由于是閉門(mén)對(duì)弈,這場(chǎng)比賽在進(jìn)行時(shí)可謂“悄無(wú)聲息”……圍棋,起源于中國(guó),是迄今最古老的人類(lèi)智力游戲之一。它的有趣和神奇,不僅在于規(guī)則簡(jiǎn)潔而優(yōu)雅但玩法卻千變?nèi)f化,而且還因?yàn)樗鞘澜缟献顝?fù)雜的棋盤(pán)游戲之一,是在此之前唯一一種機(jī)器不能戰(zhàn)勝人類(lèi)的棋類(lèi)游戲。那場(chǎng)對(duì)決的一方是三屆歐洲圍棋冠軍的樊麾二段,另一方則是GoogleDeepMind開(kāi)發(fā)的“阿爾法狗”(AlphaGo)人工智能(ArtificialIntelligence,AI)圍棋系統(tǒng),雙方以正式比賽中使用的十九路棋盤(pán)進(jìn)行了無(wú)讓子的五局較量。與比賽進(jìn)行時(shí)的狀況大相徑庭的是,賽后結(jié)局并非無(wú)人問(wèn)津而是舉世嘩然:阿爾法狗以5:0全勝的紀(jì)錄擊敗樊麾二段,而樊麾二段則成為世界上第一個(gè)于十九路棋盤(pán)上被AI圍棋系統(tǒng)擊敗的職業(yè)棋手。樊麾二段在賽后接受Nature采訪時(shí)曾談道:“如果事先不知道阿爾法狗是臺(tái)電腦,我會(huì)以為對(duì)手是棋士,一名有點(diǎn)奇怪的高手?!宾畷r(shí)間消息不脛而走,媒體報(bào)道鋪天蓋地,莫非人類(lèi)就如此這般輕易地丟掉了自己的“尊嚴(yán)”?莫非所有棋類(lèi)游戲均已輸給AI?當(dāng)然沒(méi)有。樊麾一戰(zhàn)過(guò)后不少?lài)甯呤趾蛯W(xué)界專(zhuān)家站出來(lái)質(zhì)疑阿爾法狗取勝的“含金量”,為人類(lèi)“背書(shū)”:此役機(jī)器僅僅戰(zhàn)勝了人類(lèi)的圍棋職業(yè)二段,根本談不上戰(zhàn)勝了圍棋高手,何談戰(zhàn)勝人類(lèi)呢!就在人們以一副淡定姿態(tài)評(píng)論這次“小游戲”時(shí),阿爾法狗正在醞釀下一次“大對(duì)決”,因?yàn)樗磳⒃?016年3月迎戰(zhàn)韓國(guó)籍世界冠軍李世乭九段。近十年來(lái),李世乭是奪取世界冠軍頭銜次數(shù)最多的超一流棋手,所以從嚴(yán)格意義上講,這才是真正的“人機(jī)大戰(zhàn)”。與上次不同,2016年3月這次人機(jī)“巔峰對(duì)決”不少人唱衰阿爾法狗,特別是整個(gè)圍棋界滿(mǎn)是鄙視,基本上認(rèn)為阿爾法狗能贏一盤(pán)保住“面子”就善莫大焉了。但是隨著比賽的進(jìn)行,結(jié)果卻令人錯(cuò)愕。第一局李世乭輸了!“是不是李世乭的狀態(tài)不對(duì),沒(méi)發(fā)揮出真正的水平?”第二局李世乭又輸了!“阿爾法狗還是蠻厲害的啊。不過(guò)阿爾法狗大局觀應(yīng)該不行,世乭九段在這方面加強(qiáng),應(yīng)該能贏?!钡谌掷钍纴h再次輸了!賽前站在人類(lèi)棋手一方的樂(lè)觀派陷入了悲觀。“完了!雖然比賽已輸,但李九段怎么說(shuō)也要贏一盤(pán)吧?!惫唬谒木?8手出現(xiàn)神之一手,李世乭終于贏了一盤(pán),讓人有了些許安慰。但末盤(pán)阿爾法狗沒(méi)有再給李世乭機(jī)會(huì),最終以4:1大勝人類(lèi)圍棋的頂級(jí)高手,徹底宣告人類(lèi)“喪失”了在圍棋上的統(tǒng)治地位?!鞍柗ü贰眲t迅速成為全世界熱議的話(huà)題。在阿爾法狗大紅大紫的同時(shí),人們也牢牢記住了一個(gè)原本陌生的專(zhuān)有名詞——“深度學(xué)習(xí)”(deeplearning)。什么是深度學(xué)習(xí)比起深度學(xué)習(xí),“機(jī)器學(xué)習(xí)”一詞大家更熟悉一些。機(jī)器學(xué)習(xí)(machinelearning)是人工智能的一個(gè)分支,它致力于研究如何通過(guò)計(jì)算的手段,利用經(jīng)驗(yàn)(experience)來(lái)改善計(jì)算機(jī)系統(tǒng)自身的性能。通過(guò)從經(jīng)驗(yàn)中獲取知識(shí)(knowledge),機(jī)器學(xué)習(xí)算法摒棄了人為向機(jī)器輸入知識(shí)的操作,轉(zhuǎn)而憑借算法自身學(xué)習(xí)到所需知識(shí)。對(duì)于傳統(tǒng)機(jī)器學(xué)習(xí)算法,“經(jīng)驗(yàn)”往往對(duì)應(yīng)以“特征”(feature)形式存儲(chǔ)的“數(shù)據(jù)”(data),傳統(tǒng)機(jī)器學(xué)習(xí)算法所做的事情便是依靠這些數(shù)據(jù)產(chǎn)生“模型”(model)。但是“特征”為何物?如何設(shè)計(jì)特征更有助于算法產(chǎn)生優(yōu)質(zhì)模型?……一開(kāi)始人們通過(guò)“特征工程”(featureengineering)形式的工程試錯(cuò)方式得到數(shù)據(jù)特征。可是隨著機(jī)器學(xué)習(xí)任務(wù)越來(lái)越復(fù)雜和多變,人們逐漸發(fā)現(xiàn)針對(duì)具體任務(wù)生成特定特征不僅費(fèi)時(shí)費(fèi)力,同時(shí)還特別敏感,很難將其應(yīng)用于另一任務(wù)。此外,對(duì)于一些任務(wù),人們根本不知道該如何使用特征有效表示數(shù)據(jù)。例如,人們知道一輛車(chē)的樣子,但完全不知道設(shè)計(jì)怎樣的像素值并配合起來(lái)才能讓機(jī)器“看懂”這是一輛車(chē)。這種情況就會(huì)導(dǎo)致,若特征“造”得不好,最終學(xué)習(xí)任務(wù)的性能也會(huì)受到極大程度的制約,可以說(shuō),特征工程的質(zhì)量決定了最終任務(wù)的性能。聰明而倔強(qiáng)的人類(lèi)并沒(méi)有屈服:既然模型學(xué)習(xí)的任務(wù)可以通過(guò)機(jī)器自動(dòng)完成,那么特征學(xué)習(xí)這個(gè)任務(wù)自然也可以完全通過(guò)機(jī)器自己實(shí)現(xiàn)。于是,人們嘗試將特征學(xué)習(xí)這一過(guò)程也讓機(jī)器自動(dòng)地“學(xué)”出來(lái),這便是“表示學(xué)習(xí)”(representationlearning)。表示學(xué)習(xí)的發(fā)展大幅提高了人工智能應(yīng)用場(chǎng)景下任務(wù)的最終性能,同時(shí)由于其具有自適應(yīng)性,這使得人們可以很快將人工智能系統(tǒng)移植到新的任務(wù)上去?!吧疃葘W(xué)習(xí)”便是表示學(xué)習(xí)中的一個(gè)經(jīng)典代表。深度學(xué)習(xí)以數(shù)據(jù)的原始形態(tài)(rawdata)作為算法輸入,由算法將原始數(shù)據(jù)逐層抽象為自身任務(wù)所需的最終特征表示,最后以特征到任務(wù)目標(biāo)的映射(mapping)作為結(jié)束。從原始數(shù)據(jù)到最終任務(wù)目標(biāo)“一氣呵成”,并無(wú)夾雜任何人為操作。如圖1所示,相比傳統(tǒng)機(jī)器學(xué)習(xí)算法僅學(xué)得模型這一單一“任務(wù)模塊”征抽象等任務(wù)模塊的參與,借助多層任務(wù)模塊完成最終學(xué)習(xí)任務(wù),故稱(chēng)其為“深度”神經(jīng)網(wǎng)絡(luò)算法是深度學(xué)習(xí)中的一類(lèi)代表算法,其中包括深度置信網(wǎng)絡(luò)(deepbeliefnetwork)、遞歸神經(jīng)網(wǎng)絡(luò)(recurrentneuralnetwork)和卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionNeuralNetwork,CNN),等等。特別是卷積神經(jīng)網(wǎng)絡(luò),目前在計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、醫(yī)學(xué)圖像處理等領(lǐng)域可謂“一枝獨(dú)秀”圖1傳統(tǒng)機(jī)器學(xué)習(xí)算法與深度學(xué)習(xí)概念性對(duì)比。圖中陰影標(biāo)注的模塊表示該模塊可由算法直接從數(shù)據(jù)中自學(xué)習(xí)所得圖2人工智能、機(jī)器學(xué)習(xí)、表示學(xué)習(xí)、深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)之間的關(guān)系深度學(xué)習(xí)的前世今生雖說(shuō)阿爾法狗一鳴驚人,但它背后的深度學(xué)習(xí)這個(gè)概念卻是由來(lái)已久。相對(duì)今日之繁榮,它一路走來(lái)的發(fā)展不能說(shuō)一帆風(fēng)順,甚至有些跌宕起伏?;仡櫄v史,深度學(xué)習(xí)的思維范式實(shí)際上是人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks)。追溯歷史,該類(lèi)算法的發(fā)展經(jīng)歷了三次高潮和兩次衰落。第一次高潮是20世紀(jì)40~60年代時(shí)廣為人知的控制論(cybernetics)。當(dāng)時(shí)的控制論是受神經(jīng)科學(xué)啟發(fā)的一類(lèi)簡(jiǎn)單的線性模型,其研究?jī)?nèi)容是給定一組輸入信號(hào)x1,x2,…,xn,去擬合一個(gè)輸出信號(hào)y,所學(xué)模型便是最簡(jiǎn)單的線性加權(quán):f(x,ω)=x1ω1+…+xnωn。顯然,如此簡(jiǎn)單的線性模型令其應(yīng)用領(lǐng)域極為受限,最為著名的是,它不能處理“異或”問(wèn)題(XORfunction)。因此,人工智能之父MarvinMinsky曾在當(dāng)時(shí)撰文,批判神經(jīng)網(wǎng)絡(luò)存在兩個(gè)關(guān)鍵問(wèn)題:首先,單層神經(jīng)網(wǎng)絡(luò)無(wú)法處理“異或”問(wèn)題;其次,當(dāng)時(shí)的計(jì)算機(jī)缺乏足夠的計(jì)算能力以滿(mǎn)足大型神經(jīng)網(wǎng)絡(luò)長(zhǎng)時(shí)間的運(yùn)行需求。Minsky對(duì)神經(jīng)網(wǎng)絡(luò)的批判使有關(guān)它的研究從20世紀(jì)60年代末開(kāi)始進(jìn)入“寒冬”,后來(lái)人工智能雖產(chǎn)生了很多不同的研究方向,可唯獨(dú)神經(jīng)網(wǎng)絡(luò)好像逐漸被人淡忘。直到20世紀(jì)80年代,DavidRumelhar和GeofferyE.Hinton等人提出了反向傳播(backpropagation)算法,解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計(jì)算量問(wèn)題,同時(shí)克服了Minsky所說(shuō)的神經(jīng)網(wǎng)絡(luò)無(wú)法解決的異或問(wèn)題,自此神經(jīng)網(wǎng)絡(luò)“重獲生機(jī)”,迎來(lái)了第二次高潮,即20世紀(jì)80~90年代的連接主義(connectionism)。但好景不長(zhǎng),受限于當(dāng)時(shí)數(shù)據(jù)獲取的瓶頸,神經(jīng)網(wǎng)絡(luò)只能在中小規(guī)模數(shù)據(jù)上訓(xùn)練,因此過(guò)擬合(overfitting)極大地困擾著神經(jīng)網(wǎng)絡(luò)算法。同時(shí),神經(jīng)網(wǎng)絡(luò)算法的不可解釋性令它儼然成為一個(gè)“黑盒”,訓(xùn)練模型好比撞運(yùn)氣,有人無(wú)奈地諷刺說(shuō)它根本不是“科學(xué)”(science),而是一種“藝術(shù)”(art)。另外,向量機(jī)(supportvectormachine)等數(shù)學(xué)優(yōu)美且可解釋性強(qiáng)的機(jī)器學(xué)習(xí)算法逐漸成為歷史舞臺(tái)上的“主角”。短短十年,神經(jīng)網(wǎng)絡(luò)再次跌入“谷底”。甚至當(dāng)時(shí)在一段時(shí)間內(nèi)只要和神經(jīng)網(wǎng)絡(luò)沾邊的學(xué)術(shù)論文幾乎都會(huì)收到類(lèi)似這樣的評(píng)審意見(jiàn):“Thebiggestissuewiththispaperisthatitreliesonneuralnetworks.”(這篇論文最大的問(wèn)題,就是它使用了神經(jīng)網(wǎng)絡(luò)。)但可貴的是,盡管當(dāng)時(shí)許多人拋棄神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)行做了其他方向,但GeofferyE.Hinton、YoshuaBengio和YannLeCun等人仍“堅(jiān)持不懈”,在神經(jīng)網(wǎng)絡(luò)領(lǐng)域默默耕耘,可謂“臥薪嘗膽”。在隨后的30年,軟件算法和硬件性能不斷優(yōu)化,2006年,GeofferyE.Hinton等人在Science上發(fā)表文章[38]提出:一種稱(chēng)為“深度置信網(wǎng)絡(luò)”(deepbeliefnetwork)的神經(jīng)網(wǎng)絡(luò)模型可通過(guò)逐層預(yù)訓(xùn)練(greedylayer-wisepretraining)的方式,有效完成模型訓(xùn)練過(guò)程。很快,更多的實(shí)驗(yàn)結(jié)果證實(shí)了這一發(fā)現(xiàn),更重要的是除了證明神經(jīng)網(wǎng)絡(luò)訓(xùn)練的可行性外,實(shí)驗(yàn)結(jié)果還表明神經(jīng)網(wǎng)絡(luò)模型的預(yù)測(cè)能力相比其他傳統(tǒng)機(jī)器學(xué)習(xí)算法可謂“鶴立雞群”。Hinton發(fā)表在Science上的這篇文章無(wú)疑為神經(jīng)網(wǎng)絡(luò)類(lèi)算法帶來(lái)了一縷曙光。被冠以“深度學(xué)習(xí)”名稱(chēng)的神經(jīng)網(wǎng)絡(luò)終于可以大展拳腳,它首先于2011年在語(yǔ)音識(shí)別領(lǐng)域大放異彩,其后便是在2012年計(jì)算機(jī)視覺(jué)“圣杯”ImageNet競(jìng)賽上強(qiáng)勢(shì)奪冠,接著于2013年被《MIT科技縱覽》(MITTechnologyReview)評(píng)為年度十大科技突破之首……這就是第三次高潮,也就是大家都比較熟悉的深度學(xué)習(xí)(deeplearning)時(shí)代。其實(shí),深度學(xué)習(xí)中的“deep”一詞是為了強(qiáng)調(diào)當(dāng)下人們已經(jīng)可以訓(xùn)練和掌握相比之前神經(jīng)網(wǎng)絡(luò)層數(shù)多得多的網(wǎng)絡(luò)模型。不過(guò)也有人說(shuō)深度學(xué)習(xí)無(wú)非是“新瓶裝舊酒”,而筆者更愿意稱(chēng)其是“鳥(niǎo)槍換炮”。有效數(shù)據(jù)的急劇擴(kuò)增、高性能計(jì)算硬件的實(shí)現(xiàn)以及訓(xùn)練方法的大幅完善,三者共同作用最終促成了神經(jīng)網(wǎng)絡(luò)的第三次“復(fù)興”。細(xì)細(xì)想來(lái),其實(shí)第三次神經(jīng)網(wǎng)絡(luò)的鼎盛與前兩次大有不同,這次深度學(xué)習(xí)的火熱不僅體現(xiàn)在學(xué)術(shù)研究領(lǐng)域的繁榮,它更引發(fā)相關(guān)技術(shù)的爆發(fā),并產(chǎn)生了巨大的現(xiàn)實(shí)影響力和商業(yè)價(jià)值——人工智能不再是一張“空頭支票”。盡管目前階段的人工智能還沒(méi)有達(dá)到科幻作品中的強(qiáng)人工智能水平,但當(dāng)下的系統(tǒng)質(zhì)量和性能已經(jīng)足以讓機(jī)器在特定任務(wù)中完勝人類(lèi),也足以產(chǎn)生巨大的產(chǎn)業(yè)生產(chǎn)力。的關(guān)鍵問(wèn)題;它又像一門(mén)人工智能時(shí)代人類(lèi)必須使用的語(yǔ)言,掌握了它就可以用之與機(jī)器“交流”完成之前無(wú)法企及的現(xiàn)實(shí)智能任務(wù)。因此許多著名的大型科技公司,如Google、Amazon、Facebook、微軟、百度、騰訊和阿里巴巴等紛紛第一時(shí)間成立了聚焦深度學(xué)習(xí)其他更富創(chuàng)新的活動(dòng)中去。有人說(shuō),“人工智能是不懂美的?!奔幢惆柗ü吩趪迳馅A了人類(lèi),但它根本無(wú)法體會(huì)“落子知心路”給人帶來(lái)的微妙感受。不過(guò)轉(zhuǎn)念一想,如果真有這樣一位可隨時(shí)與你“談”的朋友,怎能不算是件樂(lè)事?我們應(yīng)該慶幸可以目睹并且親身經(jīng)歷甚至參與這次人工智能的革命浪潮,相信今后一定還會(huì)有更多像阿爾法狗一樣的奇跡發(fā)生。此時(shí),我們登高望遠(yuǎn),極目遠(yuǎn)眺;此時(shí),我們指點(diǎn)江山,揮斥方遒。正是此刻站在浪潮之巔,因此我們興奮不已,徹夜難眠!第二部分基礎(chǔ)理論篇卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetworks,CNN)是一類(lèi)特殊的人工神經(jīng)網(wǎng)絡(luò),區(qū)別于神經(jīng)網(wǎng)絡(luò)其他模型(如遞歸神經(jīng)網(wǎng)絡(luò)、Boltzmann機(jī)等),它最主要的特點(diǎn)是卷積運(yùn)算操作(convolutionoperators)。因此,CNN在諸多領(lǐng)域的應(yīng)用特別是圖像相關(guān)任務(wù)上表現(xiàn)優(yōu)異,例如圖像分類(lèi)(imageclassification)、圖像語(yǔ)義分割(imagesemanticsegmentation)、圖像檢索(imageretrieval)、物體檢測(cè)(objectdetection)等計(jì)算機(jī)視覺(jué)問(wèn)題。此外,隨著CNN研究的深入,像自然語(yǔ)言處理(naturallanguageprocessing)中的文本分類(lèi)、軟件工程數(shù)據(jù)挖掘(softwaremining)中的軟件缺陷預(yù)測(cè)等問(wèn)題都在嘗試?yán)镁矸e神經(jīng)網(wǎng)絡(luò)解決,并取得了比傳統(tǒng)方法甚至其他深度網(wǎng)絡(luò)模型更優(yōu)的預(yù)測(cè)效果。本章首先回顧卷積神經(jīng)網(wǎng)絡(luò)發(fā)展歷程,接著從抽象層面介紹卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),以及卷積神經(jīng)網(wǎng)絡(luò)中的兩類(lèi)基本過(guò)程:前饋運(yùn)算(預(yù)測(cè)和推理)和反饋運(yùn)算(訓(xùn)練和學(xué)習(xí))。發(fā)展歷程卷積神經(jīng)網(wǎng)絡(luò)發(fā)展歷史中的第一個(gè)里程碑事件發(fā)生在20世紀(jì)60年代左右的神經(jīng)科學(xué)(neuroscience)領(lǐng)域中。加拿大神經(jīng)科學(xué)家DavidH.Hubel和TorstenWiesel(圖1-1)于1959年提出貓的初級(jí)視皮層中單個(gè)神經(jīng)元的“感受野”(receptivefield)概念,緊接著于1962年發(fā)現(xiàn)了貓的視覺(jué)中樞里存在感受野、雙目視覺(jué)和其他功能結(jié)構(gòu),這標(biāo)志著神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)首次在大腦視覺(jué)系統(tǒng)中被發(fā)現(xiàn)。[1]圖1-1TorstenWiesel(左)和DavidH.Hubel(右)。兩人因在視覺(jué)系統(tǒng)中信息處理方面的杰出貢獻(xiàn),于1981年獲得諾貝爾生理學(xué)或醫(yī)學(xué)獎(jiǎng)1980年前后,日本科學(xué)家福島邦彥(KunihikoFukushima)在Hubel和Wiesel工作的基礎(chǔ)上,模擬生物視覺(jué)系統(tǒng)并提出了一種層級(jí)化的多層人工神經(jīng)網(wǎng)絡(luò),即“神經(jīng)認(rèn)知”(neurocognitron)[19],以處理手寫(xiě)字符識(shí)別和其他模式識(shí)別任務(wù)。神經(jīng)認(rèn)知模型在組成單元是“S型細(xì)胞”(S-cells)和“C型細(xì)胞”(C-cells),兩類(lèi)細(xì)胞交替堆疊在一起構(gòu)成了神經(jīng)認(rèn)知網(wǎng)絡(luò)(如圖1-2所示)。其中,S型細(xì)胞用于抽取局部特征(localfeatures),C型細(xì)胞則用于抽象和容錯(cuò),不難發(fā)現(xiàn)這與現(xiàn)今卷積神經(jīng)網(wǎng)絡(luò)中的卷積層(convolutionlayer)和匯合層(poolinglayer)可一一對(duì)應(yīng)。圖1-21980年福島邦彥提出的神經(jīng)認(rèn)知模型[19]隨后,YannLeCun等人在1998年提出基于梯度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)算法[54],并將其成功用于手寫(xiě)數(shù)字字符識(shí)別中,在那時(shí)的技術(shù)條件下就能取得低于1%的錯(cuò)誤率。因此,LeNet這一卷積神經(jīng)網(wǎng)絡(luò)在當(dāng)時(shí)便效力于全美幾乎所有的郵政系統(tǒng),用來(lái)識(shí)別手寫(xiě)郵政編碼進(jìn)而分揀郵件和包裹。可以說(shuō),LeNet是第一個(gè)產(chǎn)生實(shí)際商業(yè)價(jià)值的卷積神經(jīng)網(wǎng)絡(luò),同時(shí)也為卷積神經(jīng)網(wǎng)絡(luò)以后的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。鑒于此,Google在2015年提出GoogLeNet[80]時(shí)還特意將“L”大寫(xiě),以此向“前輩”LeNet致敬。圖1-3LeNet-5結(jié)構(gòu)[54]:一種用于字符識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)。其中,每一個(gè)“矩形”代表一張?zhí)卣鲌D(featuremap),最后是兩層全連接層(fullyconnectedlayer)時(shí)間來(lái)到2012年,在有計(jì)算機(jī)視覺(jué)界“世界杯”之稱(chēng)的ImageNet圖像分類(lèi)競(jìng)賽四周年之際,GeoffreyE.Hinton等人憑借卷積神經(jīng)網(wǎng)絡(luò)Alex-Net力挫日本東京大學(xué)、英國(guó)牛津大學(xué)VGG組等勁旅,且以超過(guò)第二名近12%的準(zhǔn)確率一舉奪得該競(jìng)賽冠軍[52],霎時(shí)間學(xué)界、業(yè)界一片嘩然。自此揭開(kāi)了卷積神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域稱(chēng)霸的序幕[2],此后每年ImageNet競(jìng)賽的冠軍非深度卷積神經(jīng)網(wǎng)絡(luò)莫屬。直到2015年,在改進(jìn)了卷積神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)(activationfunction)后,卷積神經(jīng)網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上的性能(4.94%)第一次超過(guò)了人類(lèi)預(yù)測(cè)錯(cuò)誤率(5.1%)[34]。近年來(lái),隨著神經(jīng)網(wǎng)絡(luò)特別是卷積神經(jīng)網(wǎng)絡(luò)相關(guān)領(lǐng)域研究人員的增多、技術(shù)的日新月異,卷積神經(jīng)網(wǎng)絡(luò)也變得愈寬愈深愈加復(fù)雜,從最初的5層、16層,到MSRA等提出的152層ResidualNet[36],甚至上千層網(wǎng)絡(luò)對(duì)廣大研究者和工程實(shí)踐人員來(lái)說(shuō)也已司空見(jiàn)慣。不過(guò)有趣的是,我們從圖1-4a所示的Alex-Net網(wǎng)絡(luò)結(jié)構(gòu)可以發(fā)現(xiàn),在基本結(jié)構(gòu)方面它與十幾年前的LeNet幾乎毫無(wú)差異。但數(shù)十載間,數(shù)據(jù)和硬件設(shè)備(尤其是GPU)的發(fā)展確實(shí)是翻天覆地的,它們實(shí)際上才是進(jìn)一步助力神經(jīng)網(wǎng)絡(luò)領(lǐng)域革新的主引擎。正是如此,才使得深度神經(jīng)網(wǎng)絡(luò)不再是“晚會(huì)的戲法”和象牙塔里的研究,真正變成了切實(shí)可行的工具和應(yīng)用手段。深度卷積神經(jīng)網(wǎng)絡(luò)自2012年一炮走紅,到現(xiàn)在儼然已成為人工智能領(lǐng)域一個(gè)舉足輕重的研究課題,甚至可以說(shuō)深度學(xué)習(xí)是諸如計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域主宰性的研究技術(shù),更是工業(yè)界各大公司和創(chuàng)業(yè)機(jī)構(gòu)著力發(fā)展、力求搶占先機(jī)的技術(shù)奇點(diǎn)。基本結(jié)構(gòu)總體來(lái)說(shuō),卷積神經(jīng)網(wǎng)絡(luò)是一種層次模型(hierarchicalmodel),其輸入是原始數(shù)據(jù)(rawdata),如RGB圖像、原始音頻數(shù)據(jù)等。卷積神經(jīng)網(wǎng)絡(luò)通過(guò)卷積(convolution)操作、匯合(pooling)操作和非線性激活函數(shù)(nonlinearactivationfunction)映射等一系列操作的層層堆疊,將高層語(yǔ)義信息由原始數(shù)據(jù)輸入層中抽取出來(lái),逐層抽象,這一過(guò)程便是“前饋運(yùn)算”(feedforward)。其中,不同類(lèi)型操作在卷積神經(jīng)網(wǎng)絡(luò)中一般被稱(chēng)作“層”:卷積操作對(duì)應(yīng)“卷積層”,匯合操作對(duì)應(yīng)“匯合層”,等等。最終,卷積神經(jīng)網(wǎng)絡(luò)的最后一層將目標(biāo)任務(wù)(分類(lèi)、回歸等)形式化為目標(biāo)函數(shù)(objectivefunction)[3]。通過(guò)計(jì)算預(yù)測(cè)值與真實(shí)值之間的誤差或損失(loss),憑借反向傳播算法(back-propagationalgorithm[72])將誤差或損失由最后一層逐層向前反饋(back-forward),更新每層參數(shù),并在更新參數(shù)后再次前饋,如此往復(fù),直到網(wǎng)絡(luò)模型收斂,從而達(dá)到模型訓(xùn)練的目的。圖1-4Alex-Net網(wǎng)絡(luò)結(jié)構(gòu)和GeoffreyE.Hinton。值得一提的是,Hinton因其杰出的研究成就,獲得2016年度電氣和電子工程師協(xié)會(huì)(IEEE)與愛(ài)丁堡皇家科學(xué)會(huì)(RoyalSocietyofEdinburgh)聯(lián)合頒發(fā)的JamesClerkMaxwell獎(jiǎng),以表彰其在深度學(xué)習(xí)方面的突出貢獻(xiàn)更通俗地講,卷積神經(jīng)網(wǎng)絡(luò)操作猶如搭積木的過(guò)程(如圖1-5所示),將卷積等操作層作為“基本單元”依次“搭”在原始數(shù)據(jù)(圖1-5中的x1)上,逐層“堆砌”,以損失函數(shù)的計(jì)算(圖1-5中的z)作為過(guò)程結(jié)束,其中每層的數(shù)據(jù)形式是一個(gè)三維張量(tensor)。具體地說(shuō),在計(jì)算機(jī)視覺(jué)應(yīng)用中,卷積神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)層通常是RGB顏色空間的圖像:H行、W列、3個(gè)通道(分別為R、G、B),在此記作x1。x1經(jīng)過(guò)第一層操作可得x2,對(duì)應(yīng)第一層操作中的參數(shù)記為ω1;x2作為第二層操作層ω2的輸入,可得x3……直到第L?1層,此時(shí)網(wǎng)絡(luò)輸出為xL。在上述的過(guò)程中,理論上每層操作可以為單獨(dú)的卷積操作、匯合操作、非線性映射或其他操作/變換,當(dāng)然也可以是不同形式操作/變換的組合。圖1-5卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建示意圖。其中藍(lán)色箭頭表示數(shù)據(jù)層經(jīng)過(guò)操作層的過(guò)程,黑色虛線表示數(shù)據(jù)層流程最后,整個(gè)網(wǎng)絡(luò)以損失函數(shù)的計(jì)算作為結(jié)束。若y是輸入x1對(duì)應(yīng)的真實(shí)標(biāo)記(groundtruth),則損失函數(shù)表示為:其中,函數(shù)(·)中的參數(shù)即為ωL。事實(shí)上,可以發(fā)現(xiàn)對(duì)于層中的特定操作,參數(shù)ωi是可以為空的,如匯合操作、無(wú)參的非線性映射以及無(wú)參損失函數(shù)的計(jì)算等。在實(shí)際應(yīng)用中,對(duì)于不同任務(wù),損失函數(shù)的形式也隨之改變。以回歸問(wèn)題為例,常用的?2損失函數(shù)即可作為卷積網(wǎng)絡(luò)的目標(biāo)函數(shù),此時(shí)有數(shù)常采用交叉墑(crossentropy)損失函數(shù),有z=Lclassification(xL,y)=?∑iyi其中,C為分類(lèi)任務(wù)類(lèi)別數(shù)。顯然,無(wú)論是回歸問(wèn)題還是分類(lèi)問(wèn)題,在計(jì)算z前,均需要通過(guò)合適的操作得到與y同維度的xL,方可正確計(jì)算樣本預(yù)測(cè)的損失/誤差值。有關(guān)不同損失函數(shù)的對(duì)比請(qǐng)參見(jiàn)本書(shū)2.7節(jié)。前饋運(yùn)算無(wú)論是在訓(xùn)練模型時(shí)計(jì)算誤差還是在模型訓(xùn)練完畢后獲得樣本預(yù)測(cè),卷積神經(jīng)網(wǎng)絡(luò)的前饋(feed-forward)運(yùn)算都較直觀。同樣以圖像分類(lèi)任務(wù)為例,假設(shè)網(wǎng)絡(luò)已訓(xùn)練完畢,即其中參數(shù)ω1,…,ωL?1就是一次網(wǎng)絡(luò)的前饋運(yùn)算:將測(cè)試集圖像作為網(wǎng)絡(luò)輸入x1ω1可得x2,如此下去……直至輸出 。上一節(jié)提到,xL是與真實(shí)標(biāo)記同維的向量。在利用交叉墑?chuàng)p失函數(shù)訓(xùn)練后得到的網(wǎng)絡(luò)中,xL的每一維可表示x1分別隸屬C個(gè)類(lèi)別的后驗(yàn)概率。如此,可通過(guò)得到輸入圖像x1對(duì)應(yīng)的預(yù)測(cè)標(biāo)記。反饋運(yùn)算同其他許多機(jī)器學(xué)習(xí)模型(支持向量機(jī)等)一樣,卷積神經(jīng)網(wǎng)絡(luò),包括其他所有深度學(xué)習(xí)模型都依賴(lài)最小化損失函數(shù)來(lái)學(xué)得模型參數(shù),即最小化式1.1中的z。不過(guò)需指出的是,從凸優(yōu)化理論來(lái)看,神經(jīng)網(wǎng)絡(luò)模型不僅是非凸(non-convex)函數(shù)而且異常復(fù)雜,這便造成優(yōu)化求解的困難。在該情形下,深度學(xué)習(xí)模型采用隨機(jī)梯度下降法(StochasticGradientDescent,SGD)和誤差反向傳播(errorbackpropogation)進(jìn)行模型參數(shù)更新。有關(guān)隨機(jī)梯度下降法詳細(xì)內(nèi)容可參見(jiàn)附錄B。具體來(lái)講,在卷積神經(jīng)網(wǎng)絡(luò)求解時(shí),特別是針對(duì)大規(guī)模應(yīng)用問(wèn)題(如ILSVRC分類(lèi)或檢測(cè)任務(wù)),常采用批處理的隨機(jī)梯度下降法(mini-batchSGD)。批處理的隨機(jī)梯度下降法在訓(xùn)練模型階段隨機(jī)選取n個(gè)樣本作為一批(batch)樣本,先通過(guò)前饋運(yùn)算做出預(yù)測(cè)并計(jì)算其誤差,后通過(guò)梯度下降法更新參數(shù),梯度從后往前逐層反饋,直至更新到網(wǎng)絡(luò)的第一層參數(shù),這樣的一個(gè)參數(shù)更新過(guò)程稱(chēng)為“批處理過(guò)程”(mini-batch)。不同批處理之間按照無(wú)放回抽樣遍歷所有訓(xùn)練集樣本,遍歷一次訓(xùn)練樣本稱(chēng)為“一輪”(epoch[4])。其中,批處理樣本的大?。╞atchsize)不宜設(shè)置得過(guò)小。過(guò)小時(shí)(如batchsize為1、2等),由于樣本采樣隨機(jī),那么基于該樣本的誤差更新模型參數(shù)不一定在全局上最優(yōu)(此時(shí)僅為局部最優(yōu)更新),這會(huì)使得訓(xùn)練過(guò)程產(chǎn)生振蕩。而批處理大小的上限則主要受到硬件資源的限制,如GPU顯存大小。一般而言,批處理大小設(shè)為32、64、128或256即可。當(dāng)然在隨機(jī)梯度下降更新參數(shù)時(shí),還有不同的參數(shù)更新策略,具體可參見(jiàn)第11章有關(guān)內(nèi)容。下面我們來(lái)看誤差反向傳播的詳細(xì)過(guò)程。按照第1.2節(jié)的記號(hào),假設(shè)某批處理前饋后得到個(gè)樣本上的誤差為z,且表示最后一層的損失函數(shù),則易得:若為?2損失函數(shù),則 。通過(guò)上式不難發(fā)現(xiàn),實(shí)際上每層操作都對(duì)應(yīng)了兩部分導(dǎo)數(shù):一部分是誤差關(guān)于第i層參數(shù)的導(dǎo)數(shù) ,另一部分是誤差關(guān)于該層入的導(dǎo)數(shù) 。其中:參數(shù)ωi的導(dǎo)數(shù)用于該層參數(shù)更新η是每次隨機(jī)梯度下降的步長(zhǎng),一般隨訓(xùn)練輪數(shù)(epoch)的增多減小,詳細(xì)內(nèi)容請(qǐng)參見(jiàn)11.2.2節(jié)。關(guān)于輸入xi的導(dǎo)數(shù) 則用于誤差向前層的反向傳播??蓪⑵湟曌髯罱K誤差從最后一傳遞至第i層的誤差信號(hào)。下面以第i層參數(shù)更新為例。當(dāng)誤差更新信號(hào)(導(dǎo)數(shù))反向傳播至第i層時(shí),第i+1層的誤差導(dǎo)數(shù)為,第i層參數(shù)更新時(shí)需計(jì)算 和 的對(duì)應(yīng)值。根據(jù)鏈?zhǔn)椒▌t(見(jiàn)錄C),可得:前面提到,由于在第i+1層時(shí)已計(jì)算得到 ,即式1.5和式1.6中等號(hào)右端的左項(xiàng)。一方面,在第i層,由于xi經(jīng)ωi直接作用得xi+1,故反向求導(dǎo)時(shí)亦可直接得到其偏導(dǎo)數(shù)和 。如此,可求得式1.5和式1.6中等號(hào)左端項(xiàng) 和 。后根據(jù)式1.4更新該層參數(shù),并將 作為該層誤差傳至前層,即第i?1層,如此下去,直至更新到1層,從而完成一個(gè)批處理(mini-batch)的參數(shù)更新?;谏鲜龇聪騻鞑ニ惴ǖ哪P陀?xùn)練如算法1所示。當(dāng)然,上述方法是通過(guò)手動(dòng)書(shū)寫(xiě)導(dǎo)數(shù)并用鏈?zhǔn)椒▌t計(jì)算最終誤差對(duì)每層不同參數(shù)的梯度雜操作,其導(dǎo)數(shù)很難求得甚至無(wú)法顯式寫(xiě)出。針對(duì)這種情況,一些深度學(xué)習(xí)庫(kù),如和Tensorflow都采用了符號(hào)微分的方法進(jìn)行自動(dòng)求導(dǎo)來(lái)訓(xùn)練模型。符號(hào)微分可以在編譯時(shí)出的是,讀者有必要對(duì)上述反向梯度傳播過(guò)程加以了解,也要有能力求得正確的導(dǎo)數(shù)形式。小結(jié)§本章回顧了卷積神經(jīng)網(wǎng)絡(luò)自1959年至今的發(fā)展歷程?!旖榻B了卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),可將其理解為通過(guò)不同種類(lèi)基本操作層的“堆疊”,將原始數(shù)據(jù)表示(rawdatarepresentation)不經(jīng)任何人為干預(yù)直接映射為高層語(yǔ)義表示(high-levelsemanticrepresentation),并實(shí)現(xiàn)向任務(wù)目標(biāo)映射的過(guò)程——這也是為何深度學(xué)習(xí)被稱(chēng)作“端到端”(end-to-end)學(xué)習(xí)或作為“表示學(xué)習(xí)”(representationlearning)中最重要代表的原因?!旖榻B了卷積神經(jīng)網(wǎng)絡(luò)中的兩類(lèi)基本過(guò)程:前饋運(yùn)算和反饋運(yùn)算。神經(jīng)網(wǎng)絡(luò)模型通過(guò)前饋運(yùn)算對(duì)樣本進(jìn)行推理(inference)和預(yù)測(cè)(prediction),通過(guò)反饋運(yùn)算將預(yù)測(cè)誤差反向傳播并逐層更新參數(shù),如此兩種運(yùn)算依次交替迭代完成模型的訓(xùn)練過(guò)程。卷積神經(jīng)網(wǎng)絡(luò)基本部件在了解了深度卷積神經(jīng)網(wǎng)絡(luò)的基本架構(gòu)之后,本章將主要介紹卷積神經(jīng)網(wǎng)絡(luò)中的一些重要部件(或模塊),正是這些部件的層層堆疊使得卷積神經(jīng)網(wǎng)絡(luò)可以直接從原始數(shù)據(jù)(rawdata)中學(xué)習(xí)其特征表示并完成最終任務(wù)?!岸说蕉恕彼枷肷疃葘W(xué)習(xí)的一個(gè)重要思想即“端到端”的學(xué)習(xí)方式(end-to-endmanner),屬表示學(xué)習(xí)(representationlearning)的一種[5]。這是深度學(xué)習(xí)區(qū)別于其他機(jī)器學(xué)習(xí)算法的最重要的一個(gè)方面。其他機(jī)器學(xué)習(xí)算法,如特征選擇算法(featureselection)、分類(lèi)器(classifier)算法、集成學(xué)習(xí)(ensemblelearning)算法等,均假設(shè)樣本特征表示是給定的,并在此基礎(chǔ)上設(shè)計(jì)具體的機(jī)器學(xué)習(xí)算法。在深度學(xué)習(xí)時(shí)代之前,樣本表示基本都使用人工特征(hand-craftedfeature),但“巧婦難為無(wú)米之炊”,人工特征的優(yōu)劣往往在很大程度上決定了最終的任務(wù)精度。這樣便催生了一種特殊的機(jī)器學(xué)習(xí)分支——特征工程(featureengineering)。在深度學(xué)習(xí)時(shí)代之前,特征工程在數(shù)據(jù)挖掘的工業(yè)界應(yīng)用及計(jì)算機(jī)視覺(jué)應(yīng)用中都是非常重要和關(guān)鍵的環(huán)節(jié)。特別是在計(jì)算機(jī)視覺(jué)領(lǐng)域,在深度學(xué)習(xí)時(shí)代之前,針對(duì)圖像、視頻等對(duì)象的表示可謂“百花齊放,百家爭(zhēng)鳴”。僅拿圖像表示(imagerepresentation)舉例,從表示范圍可將其分為全局特征描述子(globaldescriptor)和局部特征描述子(localdescriptor),而僅局部特征描述子就有數(shù)十種之多,如SIFT[62]、PCA-SIFT[48]、SURF[2]、HOG[13]、steerable同時(shí),不同局部描述子擅長(zhǎng)的任務(wù)又不盡相同,一些適用于邊緣檢測(cè),一些適用于紋理識(shí)別,這便使得在實(shí)際應(yīng)用中挑選合適的特征描述子成為一件令人頭疼的事情。對(duì)此,甚至有研究者于2004年在相關(guān)領(lǐng)域國(guó)際頂級(jí)期刊TPAMI(IEEETransactionsonPatternAnalysisandMachineIntelligence)上發(fā)表實(shí)驗(yàn)性綜述“APerformanceEvaluationofLocalDescriptors”[66],來(lái)系統(tǒng)性地理解不同局部特征描述子的作用,至今已獲得近8000次引用。而在深度學(xué)習(xí)普及之后,人工特征已逐漸被表示學(xué)習(xí)根據(jù)任務(wù)自動(dòng)需求“學(xué)到”的特征表示所取代[6]。更重要的是,過(guò)去解決一個(gè)人工智能問(wèn)題(以圖像識(shí)別為例)往往通過(guò)分治法將其分解為預(yù)處理、特征提取與選擇、分類(lèi)器設(shè)計(jì)等若干步驟。分治法的動(dòng)機(jī)是將圖像識(shí)別的母問(wèn)題分解為簡(jiǎn)單、可控且清晰的若干小的子問(wèn)題。不過(guò)在分步解決子問(wèn)題時(shí),盡管可在子問(wèn)題上得到最優(yōu)解,但在子問(wèn)題上的最優(yōu)并不意味著就能得到全局問(wèn)題的最優(yōu)解。對(duì)此,深度學(xué)習(xí)則為我們提供了另一種范式(paradigm),即“端到端”的學(xué)習(xí)方式,其在整個(gè)學(xué)習(xí)流程中并不進(jìn)行人為的子問(wèn)題劃分,而是完全交給深度學(xué)習(xí)模型直接學(xué)得從原始輸入到期望輸出的映射。相比分治策略,“端到端”的學(xué)習(xí)方式具有協(xié)同增效的優(yōu)勢(shì),有更大可能獲得全局最優(yōu)解。如圖2-1所示,對(duì)于深度模型,其輸入數(shù)據(jù)是未經(jīng)任何人為加工的原始樣本形式,后續(xù)則是堆疊在輸入層上的眾多操作層。這些操作層整體可被看作一個(gè)復(fù)雜的函數(shù)fCNN,最終損失函數(shù)由數(shù)據(jù)損失(dataloss)和模型參數(shù)的正則化損失(regularizationloss)共同組成,深度模型的訓(xùn)練則在最終損失驅(qū)動(dòng)下對(duì)模型進(jìn)行參數(shù)更新并將誤差反向傳播至網(wǎng)絡(luò)各層。模型的訓(xùn)練過(guò)程可以簡(jiǎn)單抽象為從原始數(shù)據(jù)向最終目標(biāo)的直接“擬合”,而中間的這些部件正起到了將原始數(shù)據(jù)映射為特征(即特征學(xué)習(xí)),隨后再映射為樣本標(biāo)記(即目標(biāo)任務(wù),如分類(lèi))的作用。下面我們就來(lái)看看組成fCNN的各個(gè)基本部件。圖2-1卷積神經(jīng)網(wǎng)絡(luò)基本流程圖網(wǎng)絡(luò)符號(hào)定義同上一章類(lèi)似,在此用三維張量 表示卷積神經(jīng)網(wǎng)絡(luò)第l層的輸入,用三元組(il,jl,dl)來(lái)指示該張量對(duì)應(yīng)第il行、第jl列、第dl通道(channel)位置的元素,其中0≤il<Hl,0≤jl<Wl,0≤dl<Dl,如圖2-2所示。不過(guò),一般在工程實(shí)踐中,由于采用了mini-batch(批處理)訓(xùn)練策略,網(wǎng)絡(luò)第l層輸入通常是一個(gè)四維張量,即,其中N為mini-batch每一批的樣本數(shù)。圖2-2卷積神經(jīng)網(wǎng)絡(luò)第l層輸入xl示意圖N1為例,xllxl+1為y以作為第l層對(duì)應(yīng)的輸出,即y=xl+1∈。卷積層卷積層(convolutionlayer)是卷積神經(jīng)網(wǎng)絡(luò)中的基礎(chǔ)操作,甚至在網(wǎng)絡(luò)最后起分類(lèi)作用的全連接層在工程實(shí)現(xiàn)時(shí)也是由卷積操作替代的。什么是卷積卷積運(yùn)算實(shí)際上是分析數(shù)學(xué)中的一種運(yùn)算方式,在卷積神經(jīng)網(wǎng)絡(luò)中通常僅涉及離散卷積的情形。下面以dl=1的情形為例介紹二維場(chǎng)景的卷積操作。假設(shè)輸入圖像(輸入數(shù)據(jù))為如圖2-3所示右側(cè)的5×5矩陣,其對(duì)應(yīng)的卷積核(亦稱(chēng)卷積參數(shù),convolutionkernel或convolutionfilter)為一個(gè)3×3的矩陣。同時(shí),假定卷積操作時(shí)每做一次卷積,卷積核移動(dòng)一個(gè)像素位置,即卷積步長(zhǎng)(stride)為1。圖2-3二維場(chǎng)景下的卷積核與輸入數(shù)據(jù)。圖左為一個(gè)3×3的卷積核,圖右為5×5的輸入數(shù)據(jù)第一次卷積操作從圖像(0,0)像素開(kāi)始,由卷積核中參數(shù)與對(duì)應(yīng)位置圖像像素逐位相乘后累加作為一次卷積操作結(jié)果,即1×1+2×0+3×1+6×0+7×1+8×0+9×1+8×0+7×1=1+3+7+9+7=27,如圖2-4a所示。類(lèi)似地,在步長(zhǎng)為1時(shí),如圖2-4b~圖2-4d所示,卷積核按照步長(zhǎng)大小在輸入圖像上從左至右、自上而下依次將卷積操作進(jìn)行下去,最終輸出3×3大小的卷積特征,同時(shí)該結(jié)果將作為下一層操作的輸入。圖2-4卷積操作示例與之類(lèi)似,若三維情形下的卷積層l的輸入張量為 ,則該層卷積核為。在三維時(shí)卷積操作實(shí)際上只是將二維卷積擴(kuò)展到了對(duì)應(yīng)位置的所有通道上(即Dl),最終將一次卷積處理的所有HWDl個(gè)元素求和作為該位置卷結(jié)果。如圖2-5所示。圖2-5三維場(chǎng)景下的卷積核與輸入數(shù)據(jù)。圖左卷積核大小為3×4×3,圖右為在該位置進(jìn)行卷積操作后得到的1×1×1的輸出結(jié)果進(jìn)一步地,若類(lèi)似fl這樣的卷積核有D個(gè),則在同一個(gè)位置上可得到1×1×1×D維度的卷積輸出,而D即為第l+1層特征xl+1的通道數(shù)Dl+1。形式化的卷積操作可表示為:其中,(il+1,jl+1)為卷積結(jié)果的位置坐標(biāo),滿(mǎn)足:需要指出的是,式2.1中的可被視作學(xué)習(xí)到的權(quán)重(weight),可以發(fā)現(xiàn)該項(xiàng)權(quán)重對(duì)不同位置的所有輸入都是相同的,這便是卷積層“權(quán)值共享”(weightsharing)特性。除此之外,通常還會(huì)在 上加入偏置項(xiàng)(biasterm)bd。在誤差反向傳播時(shí)可針對(duì)該層權(quán)重和偏置項(xiàng)分別設(shè)置隨機(jī)梯度下降的學(xué)習(xí)率。當(dāng)然根據(jù)實(shí)際問(wèn)題需要,也以將某層偏置項(xiàng)設(shè)置為全0,或?qū)W(xué)習(xí)率設(shè)置為0,以起到固定該層偏置或權(quán)重的作用。外,在卷積操作中有兩個(gè)重要的超參數(shù)(hyperparameters):卷積核大?。╢iltersize)和卷積步長(zhǎng)(stride)。合適的超參數(shù)設(shè)置會(huì)給最終模型帶來(lái)理想的性能提升,詳細(xì)內(nèi)容請(qǐng)參見(jiàn)11.1節(jié)。卷積操作的作用可以看出,卷積是一種局部操作,通過(guò)一定大小的卷積核作用于局部圖像區(qū)域獲得圖像的局部信息。本節(jié)以三種邊緣卷積核(亦可稱(chēng)為濾波器)來(lái)說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中卷積操作的作用。如圖2-6所示,我們?cè)谠瓐D上分別作用以整體邊緣濾波器、橫向邊緣濾波器和縱向邊緣濾波器,這三種濾波器(卷積核)分別為式2.4中的3×3大小卷積核Ke、Kh和Kv:圖2-6卷積操作示例試想,若原圖像素(x,y)處可能存在物體邊緣,則其四周(x?1,y)、(x+1,y)、(x,y?1)、(x,y+1)處像素值應(yīng)與(x,y)處有顯著差異。此時(shí),如作用以整體邊緣濾波器Ke,則可消除四周像素值差異小的圖像區(qū)域而保留顯著差異區(qū)域,以此可檢測(cè)出物體邊緣信息。同理,類(lèi)似Kh和Kv[7]的橫向、縱向邊緣濾波器可分別保留橫向、縱向的邊緣信息。事實(shí)上,卷積網(wǎng)絡(luò)中的卷積核參數(shù)是通過(guò)網(wǎng)絡(luò)訓(xùn)練學(xué)得的,除了可以學(xué)得類(lèi)似的橫向、縱向邊緣濾波器,還可以學(xué)得任意角度的邊緣濾波器。當(dāng)然,不僅如此,檢測(cè)顏色、形狀、紋理等眾多基本模式(pattern)的濾波器(卷積核)都可以被包含在一個(gè)足夠復(fù)雜的深層卷積神經(jīng)網(wǎng)絡(luò)中。通過(guò)“組合”[8]這些濾波器(卷積核)以及隨著網(wǎng)絡(luò)后續(xù)操作的進(jìn)行,基本而一般的模式會(huì)逐漸被抽象為具有高層語(yǔ)義的“概念”表示,并以此對(duì)應(yīng)到具體的樣本類(lèi)別。這頗有“盲人摸象”后將各自結(jié)果集大成之意。匯合層本節(jié)討論第l層操作為匯合(pooling)[9]時(shí)的情況。通常使用的匯合操作為平均值匯合(average-pooling)和最大值匯合(max-pooling),需要指出的是,同卷積層操作不同,匯合層不包含需要學(xué)得的參數(shù)。使用時(shí)僅需指定匯合類(lèi)型(average或max等)、匯合操作的核大?。╧ernelsize)和匯合操作的步長(zhǎng)(stride)等超參數(shù)即可。什么是匯合遵循上一節(jié)的記號(hào),第l層匯合核可表示為。平均值(最大值)匯合在每次操作時(shí),將匯合核覆蓋區(qū)域中所有值的平均值(最大值)作為匯合結(jié)果,即:其中,0≤il+1<Hl+1,0≤jl+1<Wl+1,0≤d<Dl+1=Dl。圖2-7所示為2×2大小、步長(zhǎng)為1的最大值匯合操作示例。圖2-7最大值匯合操作示例除了上述最常用的兩種匯合操作外,隨機(jī)匯合(stochastic-pooling)[94]則介于二者之間。隨機(jī)匯合操作非常簡(jiǎn)單,只需對(duì)輸入數(shù)據(jù)中的元素按照一定概率值大小隨機(jī)選擇,其并不像最大值匯合那樣永遠(yuǎn)只取那個(gè)最大值元素。對(duì)隨機(jī)匯合而言,元素值大的響應(yīng)(activation)被選中的概率也大,反之亦然??梢哉f(shuō),在全局意義上,隨機(jī)匯合與平均值匯合近似;在局部意義上,則服從最大值匯合的準(zhǔn)則。匯合操作的作用從圖2.7所示的例子可以發(fā)現(xiàn),匯合操作后的結(jié)果相比其輸入減小了,其實(shí)匯合操作實(shí)際上就是一種“降采樣”(down-sampling)操作。另一方面,匯合操作也被看作一個(gè)用p-范數(shù)(p-norm)[10]作為非線性映射的“卷積”操作,特別是,當(dāng)p趨近正無(wú)窮時(shí)其就是最常見(jiàn)的最大值匯合。匯合層的引入是仿照了人的視覺(jué)系統(tǒng)對(duì)視覺(jué)輸入對(duì)象進(jìn)行降維(降采樣)和抽象操作。在過(guò)去關(guān)于卷積神經(jīng)網(wǎng)絡(luò)的工作中,研究者普遍認(rèn)為匯合層有如下三種功效:特征不變性(featureinvariant)。匯合操作使模型更關(guān)注是否存在某些特征而不是特征些特征微小的位移。個(gè)子區(qū)域(sub-region),因此匯合操作相當(dāng)于在空間范圍內(nèi)做了維度約減(spatiallydimensionreduction),從而使模型可以抽取更廣范圍的特征。同時(shí)減小了下一層輸入大小,進(jìn)而減少計(jì)算量和參數(shù)個(gè)數(shù)。在一定程度上防止過(guò)擬合(overfitting),更方便優(yōu)化。不過(guò),匯合操作并不是卷積神經(jīng)網(wǎng)絡(luò)必需的元件或操作。近期,德國(guó)著名高校弗賴(lài)堡大學(xué)(UniversityofFreiburg)的研究者提出,用一種特殊的卷積操作(即strideconvolutionallayer)來(lái)代替匯合層實(shí)現(xiàn)降采樣,進(jìn)而構(gòu)建一個(gè)只含卷積操作的網(wǎng)絡(luò)(allconvolutionnets),其實(shí)驗(yàn)結(jié)果顯示這種改造的網(wǎng)絡(luò)可以達(dá)到甚至超過(guò)傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(卷積層、匯合層交替)的分類(lèi)精度[77]。激活函數(shù)激活函數(shù)(activationfunction)層又稱(chēng)非線性映射(non-linearitymapping)層,顧名思義,激活函數(shù)的引入為的是增加整個(gè)網(wǎng)絡(luò)的表達(dá)能力(即非線性)。否則,若干線性操作層的堆疊仍然只能起到線性映射的作用,無(wú)法形成復(fù)雜的函數(shù)。在實(shí)際使用中,有多達(dá)十幾種激活函數(shù)可供選擇,有關(guān)激活函數(shù)選擇和對(duì)比的詳細(xì)內(nèi)容請(qǐng)參見(jiàn)第8章。本節(jié)以Sigmoid型激活函數(shù)和ReLU函數(shù)為例,介紹涉及激活函數(shù)的若干基本概念和問(wèn)題。直觀上,激活函數(shù)模擬了生物神經(jīng)元特性:接受一組輸入信號(hào)并產(chǎn)生輸出。在神經(jīng)科學(xué)神經(jīng)元就被激活而處于興奮狀態(tài);否則處于抑制狀態(tài)。在人工神經(jīng)網(wǎng)絡(luò)中,因Sigmoid型函數(shù)可以模擬這一生物過(guò)程,從而在神經(jīng)網(wǎng)絡(luò)發(fā)展歷史進(jìn)程中曾處于相當(dāng)重要的地位。Sigmoid型函數(shù)也被稱(chēng)為L(zhǎng)ogistic函數(shù):其函數(shù)形狀如圖2-8a所示??梢钥闯?,經(jīng)過(guò)Sigmoid型函數(shù)作用后,輸出響應(yīng)的值域被壓縮到[0,1]之間,而0對(duì)應(yīng)了生物神經(jīng)元的“抑制狀態(tài)”,1則恰好對(duì)應(yīng)了“興奮狀態(tài)”。不過(guò)再深入地觀察還能發(fā)現(xiàn),在Sigmoid型函數(shù)兩端,對(duì)于大于5(或小于?5)的值無(wú)論多大(或多小)都會(huì)被壓縮到1(或0)。如此便帶來(lái)一個(gè)嚴(yán)重問(wèn)題,即梯度的“飽和效應(yīng)”(saturationeffect)。對(duì)照Sigmoid型函數(shù)的梯度圖(見(jiàn)圖2-8b),大于5(或小于?5)部分的梯度接近0,這會(huì)導(dǎo)致在誤差反向傳播過(guò)程中,導(dǎo)數(shù)處于該區(qū)域的誤差將很難甚至根本無(wú)法傳遞至前層,進(jìn)而導(dǎo)致整個(gè)網(wǎng)絡(luò)無(wú)法訓(xùn)練(導(dǎo)數(shù)為0將無(wú)法更新網(wǎng)絡(luò)參數(shù))。此外,在參數(shù)初始化的時(shí)候還需特別注意,要避免初始化參數(shù)直接將輸出值域帶入這一區(qū)域。一種可能的情形是當(dāng)初始化參數(shù)過(guò)大時(shí),將直接引發(fā)梯度飽和效應(yīng)而無(wú)法訓(xùn)練。圖2-8Sigmoid型函數(shù)及其函數(shù)梯度為了避免梯度飽和效應(yīng)的發(fā)生,Nair和Hinton于2010年將修正線性單元(RectifiedLinearUnit,ReLU)引入神經(jīng)網(wǎng)絡(luò)[69]。ReLU函數(shù)是目前深度卷積神經(jīng)網(wǎng)絡(luò)中最為常用的激活函數(shù)之一。另外,根據(jù)ReLU函數(shù)改進(jìn)的其他激活函數(shù)也展示出很好的性能(請(qǐng)參見(jiàn)第8章內(nèi)容)。ReLU函數(shù)實(shí)際上是一個(gè)分段函數(shù),其定義為:由圖2-9可見(jiàn),ReLU函數(shù)的梯度在x≥0時(shí)為1,反之為0。對(duì)x≥0部分完全消除了Sigmoid型函數(shù)的梯度飽和效應(yīng)。同時(shí),在實(shí)驗(yàn)中還發(fā)現(xiàn)相比Sigmoid型函數(shù),ReLU函數(shù)有助于隨機(jī)梯度下降方法收斂,收斂速度約快6倍左右[52]。正是由于ReLU函數(shù)的這些優(yōu)秀特性,ReLU函數(shù)已成為目前卷積神經(jīng)網(wǎng)絡(luò)及其他深度學(xué)習(xí)模型(如遞歸神經(jīng)網(wǎng)絡(luò)RNN等)激活函數(shù)的首選之一。圖2-9ReLU函數(shù)及其函數(shù)梯度全連接層全連接層(fullyconnectedlayers)在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類(lèi)器”的作用。如果說(shuō)卷積層、匯合層和激活函數(shù)層等操作是將原始數(shù)據(jù)映射到隱層特征空間的話(huà),全連接層則起到將學(xué)到的特征表示映射到樣本的標(biāo)記空間的作用。在實(shí)際使用中,全連接層可由卷積操作實(shí)現(xiàn):對(duì)于前層是全連接的全連接層,可以將其轉(zhuǎn)化為卷積核為1×1的卷積;而對(duì)于前層是卷積層的全連接層,則可以將其轉(zhuǎn)化為卷積核為h×w的全局卷積,h和w分別為前層卷積輸出結(jié)果的高和寬。以經(jīng)典的VGG-16[74]網(wǎng)絡(luò)模型[11]為例,對(duì)于224×224×3的圖像輸入,最后一層卷積層(指VGG-16中的Pool5)可得輸出為7×7×512的特征張量。若后層是一層含4096個(gè)神經(jīng)元的全連接層,則可用卷積核為7×7×512×4096的全局卷積來(lái)實(shí)現(xiàn)這一全連接運(yùn)算過(guò)程,其中該卷積核具體參數(shù)如下:經(jīng)過(guò)此卷積操作后可得1×1×4096的輸出。如需再次疊加一個(gè)含2048個(gè)神經(jīng)元的全連接層,可設(shè)定以下參數(shù)的卷積層操作:目標(biāo)函數(shù)剛才提到,全連接層是將網(wǎng)絡(luò)特征映射到樣本的標(biāo)記空間做出預(yù)測(cè),目標(biāo)函數(shù)的作用則用來(lái)衡量該預(yù)測(cè)值與真實(shí)樣本標(biāo)記之間的誤差。在當(dāng)下的卷積神經(jīng)網(wǎng)絡(luò)中,交叉熵?fù)p失函數(shù)和?2損失函數(shù)分別是分類(lèi)問(wèn)題和回歸問(wèn)題中最為常用的目標(biāo)函數(shù)。同時(shí),越來(lái)越多的針對(duì)不同問(wèn)題特性的目標(biāo)函數(shù)被提出。詳細(xì)內(nèi)容請(qǐng)參見(jiàn)本書(shū)第9章。小結(jié)§本章介紹了深度學(xué)習(xí)中的關(guān)鍵思想——“端到端”學(xué)習(xí)方式。§介紹了卷積神經(jīng)網(wǎng)絡(luò)的基本部件:卷積操作、匯合操作、激活函數(shù)(非線性映射)、全連接層和目標(biāo)函數(shù)。整個(gè)卷積神經(jīng)網(wǎng)絡(luò)通過(guò)這些基本部件的“有機(jī)組合”即可實(shí)現(xiàn)將原始數(shù)據(jù)映射到高層語(yǔ)義,進(jìn)而得到樣本預(yù)測(cè)標(biāo)記的功能。下一章將介紹卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的幾個(gè)重要概念以及如何對(duì)這些部件進(jìn)行“有機(jī)組合”。卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典結(jié)構(gòu)上一章介紹了卷積神經(jīng)網(wǎng)絡(luò)中幾種基本部件:卷積、匯合、激活函數(shù)、全連接層和目標(biāo)函數(shù)。雖說(shuō)卷積神經(jīng)網(wǎng)絡(luò)模型就是這些基本部件的按序?qū)盈B,可“紙上得來(lái)終覺(jué)淺”,在實(shí)踐中究竟如何“有機(jī)組合”才能讓模型工作并發(fā)揮效能呢?本章首先介紹卷積網(wǎng)絡(luò)結(jié)構(gòu)中的三個(gè)重要概念,并以四類(lèi)典型的卷積神經(jīng)網(wǎng)絡(luò)模型為例做案例分析。CNN網(wǎng)絡(luò)結(jié)構(gòu)中的重要概念感受野感受野(receptivefield)原指聽(tīng)覺(jué)、視覺(jué)等神經(jīng)系統(tǒng)中一些神經(jīng)元的特性,即神經(jīng)元只接受其所支配的刺激區(qū)域內(nèi)的信號(hào)。在視覺(jué)神經(jīng)系統(tǒng)中,視覺(jué)皮層中神經(jīng)細(xì)胞的輸出依賴(lài)于視網(wǎng)膜上的光感受器。當(dāng)光感受器受刺激興奮時(shí),會(huì)將神經(jīng)沖動(dòng)信號(hào)傳導(dǎo)至視覺(jué)皮層。不過(guò)需要指出的是,并不是所有神經(jīng)皮層中的神經(jīng)元都會(huì)接受這些信號(hào),如1.1節(jié)我們提到的一樣,正是由于感受野等功能結(jié)構(gòu)在貓的視覺(jué)中樞中被發(fā)現(xiàn),催生了福島邦彥的帶卷積和子采樣操作的多層神經(jīng)網(wǎng)絡(luò)。而現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)中的感受野又是怎樣一回事呢?下面我們慢慢道來(lái)。先以單層卷積操作為例(見(jiàn)圖3-1a),該示例是一個(gè)7×7,步長(zhǎng)為1的卷積操作,對(duì)后層的每一個(gè)輸出神經(jīng)元(如紫色區(qū)域)來(lái)說(shuō),它的前層感受野即為黃色區(qū)域,可以發(fā)現(xiàn)這與神經(jīng)系統(tǒng)的感受野定義大同小異。不過(guò),由于現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)擁有多層甚至超多層卷積操作,隨著網(wǎng)絡(luò)深度的加深,后層神經(jīng)元在第一層輸入層的感受野會(huì)隨之增大。如圖3-1b所示為3×3,步長(zhǎng)為1的卷積操作,同單層卷積操作一樣,相鄰兩層中后層神經(jīng)元在前層的感受野僅為3×3,但隨著卷積操作的疊加,第L+3層的神經(jīng)元在第L層的感受野可擴(kuò)增至7×7。圖3-1感受野映射關(guān)系示例也就是說(shuō),小卷積核(如3×3)通過(guò)多層疊加可取得與大卷積核(如7×7)同等規(guī)模的感受野。此外采用小卷積核可帶來(lái)其余兩個(gè)優(yōu)勢(shì):第一,由于小卷積核需多層疊加,因此加深了網(wǎng)絡(luò)深度進(jìn)而增大了網(wǎng)絡(luò)容量(modelcapacity)和復(fù)雜度(modelcomplexity);第二,增大網(wǎng)絡(luò)容量的同時(shí)減少了參數(shù)個(gè)數(shù)。若假設(shè)上述示例中卷積核對(duì)應(yīng)的輸入、輸出特征張量的深度均為C,則7×7卷積核對(duì)應(yīng)參數(shù)有C×(7×7×C)=49C2個(gè)。而三層3×3卷積核堆疊只需三倍于單層3×3卷積核個(gè)數(shù)的參數(shù),即3×[C×(3×3×C)]=27C2,遠(yuǎn)小于7×7卷積核的參數(shù)個(gè)數(shù)。此外,需指出的是,目前已有不少研究工作為提升模型預(yù)測(cè)能力,通過(guò)改造現(xiàn)有卷積操作試圖擴(kuò)大原有卷積核在前層的感受野大小,或使原始感受野不再是矩形區(qū)域而是更自由可變的形狀。對(duì)以上內(nèi)容感興趣的讀者可參考“擴(kuò)張卷積操作”(dilatedconvolution)[92]和“可變卷積網(wǎng)絡(luò)”(deformableconvolutionalnetworks)[12]。分布式表示眾所周知,深度學(xué)習(xí)相比之前機(jī)器學(xué)習(xí)方法的獨(dú)到之處是其表示學(xué)習(xí)部分。但仍需強(qiáng)調(diào),深度學(xué)習(xí)只是表示學(xué)習(xí)(representationlearning)的一種。在深度學(xué)習(xí)興起之前,就有不少關(guān)于表示學(xué)習(xí)的研究,其中在計(jì)算機(jī)視覺(jué)中比較著名的就是“詞包”模型(bag-of-wordmodel)。詞包模型源自自然語(yǔ)言處理領(lǐng)域,在計(jì)算機(jī)視覺(jué)中,人們通常將圖像局部特征作為一個(gè)視覺(jué)單詞(visualword),將所有圖像的局部特征作為詞典(vocabulary),那么一張圖像就可以用它的視覺(jué)單詞來(lái)描述,而這些視覺(jué)單詞又可以通過(guò)詞典的映射形成一條表示向量(representationvector)。很顯然,這樣的表示是離散式表示(distributionalrepresentation),其表示向量的每個(gè)維度可以對(duì)應(yīng)一個(gè)明確的視覺(jué)模式(pattern)或概念(concept)。詞包模型示意圖如圖3-2所示。圖3-2詞包模型(bag-of-wordmodel)示意不同的是,在深度學(xué)習(xí)中,深度卷積神經(jīng)網(wǎng)絡(luò)呈現(xiàn)“分布式表示”(distributed的特性。神經(jīng)網(wǎng)絡(luò)中的“分布式表示”指“語(yǔ)義概念”(concept)到神經(jīng)元(neuron)是一個(gè)多對(duì)多映射,直觀來(lái)講,即每個(gè)語(yǔ)義概念由許多分布在不同神經(jīng)元中被激活的模式(pattern)表示;而每個(gè)神經(jīng)元又可以參與到許多不同語(yǔ)義概念的表示中去。舉個(gè)例子,如圖3-3所示,將一些物體為中心的圖像(object-centricimages)送入在ImageNet數(shù)據(jù)集[73]上預(yù)訓(xùn)練(pre-train)的卷積網(wǎng)絡(luò)[12],若輸入圖像分辨率為2247512大小的響應(yīng)張量(activationtensor),其中“512”對(duì)應(yīng)了最后一層卷積核的個(gè)數(shù),512個(gè)卷積核對(duì)應(yīng)了512個(gè)不同的卷積結(jié)果(512個(gè)特征圖或稱(chēng)“通道”)。在可視化時(shí),對(duì)于“鳥(niǎo)”或“狗”這組圖像,我們分別從512張77的特征圖(featuremap)中隨機(jī)選取相同的4張,并將特征圖與對(duì)應(yīng)原圖疊加,即可得到類(lèi)這組圖像為例,對(duì)上、下兩張“鳥(niǎo)”的圖像,即使是同一卷積核(第108個(gè)卷積核),但其在不同原圖中響應(yīng)(activate)的區(qū)域可謂大相徑庭:對(duì)上圖,其響應(yīng)在鳥(niǎo)爪部位;對(duì)下圖,其響應(yīng)卻在三個(gè)角落即背景區(qū)域。關(guān)于第三個(gè)隨機(jī)選取的特征圖(對(duì)應(yīng)第375個(gè)卷積核),(第284個(gè)卷積核)對(duì)下圖響應(yīng)在軀干,而對(duì)上圖卻毫無(wú)響應(yīng)。這也就證實(shí)了:對(duì)于某個(gè)模式,如鳥(niǎo)的軀干,會(huì)有不同卷積核(其實(shí)就是神經(jīng)元)產(chǎn)生響應(yīng);同時(shí)對(duì)于某個(gè)卷積核(神經(jīng)元),會(huì)在不同模式上產(chǎn)生響應(yīng),如軀干和頭部。另外,需要指出的是,除了分布式表示特性,還可從圖中發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)響應(yīng)的區(qū)域多呈現(xiàn)“稀疏”(sparse)特性,即響應(yīng)區(qū)域集中且占原圖比例較小。圖3-3卷積神經(jīng)網(wǎng)絡(luò)的分布式表示特性深度特征的層次性上一節(jié)我們討論了在同一層的神經(jīng)元的特性,本節(jié)介紹不同層神經(jīng)元的表示特點(diǎn),即深度特征的層次性。之前提到,卷積操作可獲取圖像區(qū)域不同類(lèi)型的特征,而匯合等操作可對(duì)這些特征進(jìn)行融合和抽象,隨著若干卷積、匯合等操作的堆疊,從各層得到的深度特征逐漸從泛化特征(如邊緣、紋理等)過(guò)渡到高層語(yǔ)義表示(軀干、頭部等模式)。2014年,Zeiler和Fergus[95]曾利用反卷積技術(shù)[96]對(duì)卷積神經(jīng)網(wǎng)絡(luò)([96]中以Alex-Net[52]為例)特征進(jìn)行可視化,洞察了卷積網(wǎng)絡(luò)的諸多特性,其中之一即是層次性。如圖3-4所示,可以發(fā)現(xiàn),淺層卷積核學(xué)到的是基本模式,如第一層中的邊緣、方向和第二層的紋理等特征表示。隨著網(wǎng)絡(luò)的加深,較深層(例如從第三層開(kāi)始)除了出現(xiàn)一些泛化模式外,也開(kāi)始出現(xiàn)了一些高層語(yǔ)義模式,如“車(chē)輪”、“文字”和“人臉”形狀的模式。直到第五層,更具有分辨能力的模式被卷積網(wǎng)絡(luò)所捕獲……以上的這些觀察就是深度網(wǎng)絡(luò)中特征的層次性。值得一提的是,目前深度特征的層次性已成為深度學(xué)習(xí)領(lǐng)域的一個(gè)共識(shí),也正是由于Zeiler和Fergus的貢獻(xiàn),該工作[96]被授予歐洲計(jì)算機(jī)視覺(jué)大會(huì)ECCV2014[13]最佳論文提名獎(jiǎng),短短幾年間引用已逾1700次。另外,由于卷積網(wǎng)絡(luò)特征的層次特性使得不同層特征可信息互補(bǔ),故此對(duì)單個(gè)網(wǎng)絡(luò)模型而言,“多層特征融合”(multi-layerensemble)往往是一種很直接且有效的網(wǎng)絡(luò)集成技術(shù),其對(duì)于提高網(wǎng)絡(luò)精度通常有較好表現(xiàn),詳細(xì)內(nèi)容可參見(jiàn)本書(shū)13.2.1節(jié)。圖3-4卷積神經(jīng)網(wǎng)絡(luò)深度特征的層次特性[95]。在該圖中,由于第一層卷積核相對(duì)較大,可對(duì)第一層學(xué)到的卷積核直接可視化。而深層的卷積核往往很小,直接可視化效果不佳,因此對(duì)第2~5層的可視化做以下處理:在驗(yàn)證集圖像中,將響應(yīng)最大的前9個(gè)卷積核利用反卷積技術(shù)投影到像素空間,以此完成后面深層卷積層參數(shù)的可視化經(jīng)典網(wǎng)絡(luò)案例分析本節(jié)將以Alex-Net[52]、VGG-Nets[74]、Network-In-Network[67]和深度殘差網(wǎng)絡(luò)[36](residualnetwork)為例,分析幾類(lèi)經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)案例。在此請(qǐng)讀者注意,此處的分析比較并不是不同網(wǎng)絡(luò)模型精度的“較量”,而是希望讀者體會(huì)卷積神經(jīng)網(wǎng)絡(luò)自始至今的發(fā)展脈絡(luò)和趨勢(shì),這樣會(huì)更有利于對(duì)卷積神經(jīng)網(wǎng)絡(luò)的理解,進(jìn)而舉一反三,提高解決真實(shí)問(wèn)題的能力。Alex-Net網(wǎng)絡(luò)模型Alex-Net[52]是計(jì)算機(jī)視覺(jué)領(lǐng)域中首個(gè)被廣泛關(guān)注并使用的卷積神經(jīng)網(wǎng)絡(luò),特別是Alex-Net在2012年ImageNet競(jìng)賽[73]中以超越第二名10.9個(gè)百分點(diǎn)的優(yōu)異成績(jī)一舉奪冠,從而打響了卷積神經(jīng)網(wǎng)絡(luò)乃至深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)領(lǐng)域中研究熱潮的“第一槍”。Alex-Net由加拿大多倫多大學(xué)的AlexKrizhevsky、IlyaSutskever(G.E.Hinton的兩位博士生)和GeoffreyE.Hinton提出,網(wǎng)絡(luò)名“Alex-Net”即取自第一作者名。關(guān)于Alex-Net還有一則八卦:由于Alex-Net劃時(shí)代的意義,并由此開(kāi)啟了深度學(xué)習(xí)在工業(yè)界的應(yīng)用。2015年Alex和Ilya兩位作者連同“半個(gè)”Hinton被Google重金(據(jù)傳高達(dá)3500萬(wàn)美金)收買(mǎi)。但為何說(shuō)“半個(gè)”Hinton?只因當(dāng)時(shí)Hinton只是花費(fèi)一半時(shí)間在Google工作,而另一半時(shí)間仍然留在多倫多大學(xué)。圖3-5所示是Alex-Net的網(wǎng)絡(luò)結(jié)構(gòu),共含五層卷積層和三層全連接層。其中,Alex-Net的上下兩支是為方便同時(shí)使用兩片GPU并行訓(xùn)練,不過(guò)在第三層卷積和全連接層處上、下兩支信息可交互。由于兩支網(wǎng)絡(luò)完全一致,在此僅對(duì)其中一支進(jìn)行分析。表3-1列出了Alex-Net網(wǎng)絡(luò)的架構(gòu)及具體參數(shù)。對(duì)比1.1節(jié)提到的LeNet可以發(fā)現(xiàn),單在網(wǎng)絡(luò)結(jié)構(gòu)或基本操作模塊方面,Alex-Net的改進(jìn)非常微小,構(gòu)建網(wǎng)絡(luò)的基本思路變化不大,僅在網(wǎng)絡(luò)深度、復(fù)雜度上有較大優(yōu)勢(shì)。圖3-5Alex-Net網(wǎng)絡(luò)結(jié)構(gòu)[52]表3-1Alex-Net網(wǎng)絡(luò)架構(gòu)及參數(shù)(續(xù)表)不過(guò)仍需指出Alex-Net的幾點(diǎn)重大貢獻(xiàn),正因如此,Alex-Net方可在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)甚至連接主義機(jī)器學(xué)習(xí)發(fā)展進(jìn)程中占據(jù)里程碑式的地位。Alex-Net首次將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于計(jì)算機(jī)視覺(jué)領(lǐng)域的海量圖像數(shù)據(jù)集ImageNet[73](該數(shù)據(jù)集共計(jì)1000類(lèi)圖像,圖像總數(shù)約128多萬(wàn)張),揭示了卷積神經(jīng)網(wǎng)絡(luò)擁有強(qiáng)大的學(xué)習(xí)能力和表示能力。另一方面,海量數(shù)據(jù)同時(shí)也使卷積神經(jīng)網(wǎng)絡(luò)免于過(guò)擬合??梢哉f(shuō)二者相輔相成,缺一不可。自此便引發(fā)了深度學(xué)習(xí),特別是卷積神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域中“井噴”式的研究。利用GPU實(shí)現(xiàn)網(wǎng)絡(luò)訓(xùn)練。在上一輪神經(jīng)網(wǎng)絡(luò)研究熱潮中,由于計(jì)算資源發(fā)展受限,研究者無(wú)法借助更加高效的計(jì)算手段(如GPU),進(jìn)程?!肮び破涫拢叵壤淦鳌?,在Alex-Net中,研究者借助GPU將原本需數(shù)周甚至數(shù)月的網(wǎng)絡(luò)訓(xùn)練過(guò)程大大縮短至5~6天。在揭示卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大能力的同時(shí),這無(wú)疑也大正是得益于此,數(shù)量繁多、立意新穎的網(wǎng)絡(luò)模型和應(yīng)用才能像雨后春筍一般層出不窮。一些訓(xùn)練技巧的引入使“不可為”變成“可為”,甚至是“大有可為”。如ReLU部響應(yīng)規(guī)范化操作、為防止過(guò)擬合而采取的數(shù)據(jù)增廣(dataaugmentation)和隨機(jī)失活(dropout)等,這些訓(xùn)練技巧不僅保證了模型性能,更重要的是為后續(xù)深度卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建提供了范本。實(shí)際上,此后的卷積神經(jīng)網(wǎng)絡(luò)大體都遵循這一網(wǎng)絡(luò)構(gòu)建的基本思路。有關(guān)Alex-Net涉及的訓(xùn)練技巧,本書(shū)第二部分對(duì)應(yīng)章節(jié)會(huì)有系統(tǒng)性介紹。在此僅對(duì)局部響應(yīng)規(guī)范化做以解釋。局部響應(yīng)規(guī)范化(LRN)要求對(duì)相同空間位置上相鄰深度(adjacentdepth)的卷積結(jié)果做規(guī)范化。假設(shè)為第d個(gè)通道的卷積核在(i,j)位置處的輸出結(jié)果(即響應(yīng)),隨后經(jīng)過(guò)ReLU激活函數(shù)的作用,其局部響應(yīng)規(guī)范化的結(jié)果 可表示為:其中,n指定了使用LRN的相鄰深度卷積核數(shù)目,N為該層所有卷積核數(shù)目。k、n、α、β等為超參數(shù),需通過(guò)驗(yàn)證集進(jìn)行選擇,在原始Alex-Net中這些參數(shù)的具體賦值如表3-1所示。使用LRN后,在ImageNet數(shù)據(jù)集上Alex-Net的性能分別在top-1和top-5錯(cuò)誤率上降低了1.4%和1.2%;此外,一個(gè)四層的卷積神經(jīng)網(wǎng)絡(luò)使用LRN后,在CIFAR-10數(shù)據(jù)上的錯(cuò)誤率也從13%降至11%[52]。LRN目前已經(jīng)作為各個(gè)深度學(xué)習(xí)工具箱的標(biāo)準(zhǔn)配置,將k、n、α、β等超參數(shù)稍做改變即可實(shí)現(xiàn)其他經(jīng)典規(guī)范化操作。如當(dāng)“k=0,n=N,α=1,β=0.5”時(shí)便是經(jīng)典的?2規(guī)范化:VGG-Nets網(wǎng)絡(luò)模型VGG-Nets[74]由英國(guó)牛津大學(xué)著名研究組VGG(VisualGeometryGroup)提出,是2014年ImageNet競(jìng)賽定位任務(wù)(localizationtask)第一名和分類(lèi)任務(wù)第二名做法中的基礎(chǔ)網(wǎng)絡(luò)。由于VGG-Nets具備良好的泛化性能,因而其在ImageNet數(shù)據(jù)集上的預(yù)訓(xùn)練模型(pre-trainedmodel)被廣泛應(yīng)用于除最常用的特征抽取(featureextractor)[7,20]外的諸多問(wèn)題,如物體候選框(objectproposal)生成[26]、細(xì)粒度圖像定位與檢索(fine-grainedobjectlocalizationandimageretrieval)[84]、圖像協(xié)同定位(co-localization)[85]等。以VGG-Nets中的代表VGG-16為例,表3-2列出了其每層具體參數(shù)信息??梢园l(fā)現(xiàn),相比Alex-Net,VGG-Nets中普遍使用了小卷積核以及11.1.2節(jié)提到的“保持輸入大小”等技巧,為的是在增加網(wǎng)絡(luò)深度(即網(wǎng)絡(luò)復(fù)雜度)時(shí)確保各層輸入大小隨深度增加而不急劇減小。同時(shí),網(wǎng)絡(luò)卷積層的通道數(shù)(channel)也從3→64→128→256→512逐漸增加。表3-2VGG-16網(wǎng)絡(luò)架構(gòu)及參數(shù)(續(xù)表)(續(xù)表)Network-In-NetworkNetwork-In-Network(NIN)[67]是由新加坡國(guó)立大學(xué)LV實(shí)驗(yàn)室提出的異于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的一類(lèi)經(jīng)典網(wǎng)絡(luò)模型,它與其他卷積神經(jīng)網(wǎng)絡(luò)的最大差異是用多層感知機(jī)(多層全連接層和非線性函數(shù)的組合)替代了先前卷積網(wǎng)絡(luò)中簡(jiǎn)單的線性卷積層,如圖3.6所示。我們知道,線性卷積層的復(fù)雜度有限,利用線性卷積進(jìn)行層間映射也只能將上層特征或輸入進(jìn)行“簡(jiǎn)單”的線性組合形成下層特征。而NIN采用了復(fù)雜度更高的多層感知機(jī)作為層間映射形式,這一方面提供了網(wǎng)絡(luò)層間映射的一種新可能,另一方面增加了網(wǎng)絡(luò)卷積層的非線性能力,使得上層特征可以更復(fù)雜地被映射到下層,這樣的想法也被后期出現(xiàn)的殘差網(wǎng)絡(luò)[36]和Inception[80]等網(wǎng)絡(luò)模型所借鑒。圖3-6傳統(tǒng)卷積模塊(a)與NIN網(wǎng)絡(luò)卷積模塊(b)對(duì)比[67]同時(shí),NIN網(wǎng)絡(luò)模型的另一個(gè)重大突破是摒棄了全連接層作為分類(lèi)層的傳統(tǒng),轉(zhuǎn)而改用全局匯合操作(globalaveragepooling),如圖3-7所示。NIN最后一層共有C張?zhí)卣鲌D(featuremap),分別對(duì)應(yīng)分類(lèi)任務(wù)的C個(gè)類(lèi)別。全局匯合操作分別作用于每張?zhí)卣鲌D,最后將匯合結(jié)果映射到樣本真實(shí)標(biāo)記??梢园l(fā)現(xiàn),在這樣的標(biāo)記映射關(guān)系下,C張?zhí)卣鲌D上的響應(yīng)將很自然地分別對(duì)應(yīng)到C個(gè)不同的樣本類(lèi)別,這也是相對(duì)先前卷積網(wǎng)絡(luò)來(lái)講,NIN在模型可解釋性上的一個(gè)優(yōu)勢(shì)。圖3-7NIN網(wǎng)絡(luò)模型整體結(jié)構(gòu)[67]。此示例中的NIN堆疊了三個(gè)多層感知機(jī)卷積層模塊和一個(gè)全局匯合操作層作為分類(lèi)層殘差網(wǎng)絡(luò)模型理論和實(shí)驗(yàn)已經(jīng)表明,神經(jīng)網(wǎng)絡(luò)的深度(depth)和寬度(width)是表征網(wǎng)絡(luò)復(fù)雜度的兩個(gè)核心因素,不過(guò)深度相比寬度在增加網(wǎng)絡(luò)的復(fù)雜性方面更加有效,這也正是為何VGG網(wǎng)絡(luò)想方設(shè)法增加網(wǎng)絡(luò)深度的一個(gè)原因。然而,隨著深度的增加,訓(xùn)練會(huì)變得愈加困難。這主要是因?yàn)樵诨陔S機(jī)梯度下降的網(wǎng)絡(luò)訓(xùn)練過(guò)程中,誤差信號(hào)的多層反向傳播非常容易引發(fā)梯度“彌散”(梯度過(guò)小會(huì)使回傳的訓(xùn)練誤差極其微弱)或者“爆炸”(梯度過(guò)大會(huì)導(dǎo)致模型訓(xùn)練出現(xiàn)NaN)現(xiàn)象。目前,一些特殊的權(quán)重初始化策略(參見(jiàn)第7章)以及批規(guī)范化(batchnormalization)策略[46]等方法使這個(gè)問(wèn)題得到極大的改善——網(wǎng)絡(luò)可以正常訓(xùn)練了!但是,實(shí)際情形仍不容樂(lè)觀。當(dāng)深度網(wǎng)絡(luò)收斂時(shí),另外的問(wèn)題又隨之而來(lái):隨著繼續(xù)增加網(wǎng)絡(luò)的深度,訓(xùn)練數(shù)據(jù)的訓(xùn)練誤差沒(méi)有降低反而升高[36,79],這種現(xiàn)象如圖3-8所示。這一觀察與直覺(jué)極其不符,因?yàn)槿绻粋€(gè)淺層神經(jīng)網(wǎng)絡(luò)可以被訓(xùn)練優(yōu)化求解到某一個(gè)很好的解,那么它對(duì)應(yīng)的深層網(wǎng)絡(luò)至少也可以,而不是更差。這一現(xiàn)象在一段時(shí)間內(nèi)困擾著更深層卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)、訓(xùn)練和應(yīng)用。圖3-820層和56層的常規(guī)網(wǎng)絡(luò)在CIFAR-10數(shù)據(jù)集上的訓(xùn)練錯(cuò)誤率(左圖)和測(cè)試錯(cuò)誤率(右圖)[36]不過(guò)很快,該方面便涌現(xiàn)出一個(gè)優(yōu)秀的網(wǎng)絡(luò)模型,這便是著名的殘差網(wǎng)絡(luò)(residualnetwork)[36]。由于殘差網(wǎng)絡(luò)很好地解決了網(wǎng)絡(luò)深度帶來(lái)的訓(xùn)練困難的問(wèn)題,因此它的網(wǎng)絡(luò)性能(完成任務(wù)的準(zhǔn)確度和精度)遠(yuǎn)超傳統(tǒng)網(wǎng)絡(luò)模型,曾在ILSVRC2015[14]和COCO2015[15]競(jìng)賽的檢測(cè)、定位和分割任務(wù)中紛紛斬獲第一,同時(shí)發(fā)表的殘差網(wǎng)絡(luò)的論文也獲得了計(jì)算機(jī)視覺(jué)與模式識(shí)別領(lǐng)域國(guó)際頂級(jí)會(huì)議CVPR2016的最佳論文獎(jiǎng)。殘差網(wǎng)絡(luò)模型的出現(xiàn)不僅備受學(xué)界、業(yè)界矚目,同時(shí)也拓寬了卷積神經(jīng)網(wǎng)絡(luò)研究的“道路”。介紹殘差網(wǎng)絡(luò)前,不得不提到另一個(gè)該方面的代表模型——高速公路網(wǎng)絡(luò)(highwaynetwork)。高速公路網(wǎng)絡(luò)為克服深度增加帶來(lái)的訓(xùn)練困難,Srivastava等[79]受長(zhǎng)短期記憶網(wǎng)絡(luò)[16](longshorttermmemorynetwork)[41]中門(mén)(gate)機(jī)制[25]的啟發(fā),通過(guò)對(duì)傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)修正,使得信息能夠在多個(gè)神經(jīng)網(wǎng)絡(luò)層之間高效流動(dòng),這種修改后的網(wǎng)絡(luò)也因此被稱(chēng)為“高速公路網(wǎng)絡(luò)”(Highwaynetwork)。假設(shè)某常規(guī)卷積神經(jīng)網(wǎng)絡(luò)有L層,其中第i層(i∈1,2,…,L)的輸入為xi,參數(shù)為ωi,則該層的輸出yi=xi+1。為了表述上的簡(jiǎn)單,我們忽略層數(shù)和偏置,則它們之間的關(guān)系可表示為:其中,F(xiàn)為非線性激活函數(shù),參數(shù)ωf的下標(biāo)表明該操作對(duì)應(yīng)于F。對(duì)于高速公路網(wǎng)絡(luò),y的計(jì)算定義為:同式3.3類(lèi)似,T(x,ωt)和C(x,ωc)是兩個(gè)非線性變換,分別稱(chēng)作“變換門(mén)”和“攜帶門(mén)”。變換門(mén)負(fù)責(zé)控制變換的強(qiáng)度,攜帶門(mén)則負(fù)責(zé)控制原輸入信號(hào)的保留強(qiáng)度。換句話(huà)說(shuō),y是F(x,ωf)和x的加權(quán)組合,其中T和C分別控制了兩項(xiàng)對(duì)應(yīng)的權(quán)重。為了簡(jiǎn)化模型,在高速公路網(wǎng)絡(luò)中,設(shè)置C=1?T,因此公式3.4可表示為:由于增加了恢復(fù)原始輸入的可能,這種改進(jìn)后的網(wǎng)絡(luò)層(式3.5)要比常規(guī)網(wǎng)絡(luò)層(式3.3)更加靈活。特別地,對(duì)于特定的變換門(mén),我們可以得到不同的輸出:其實(shí)不難發(fā)現(xiàn),當(dāng)變換門(mén)為恒等映射[17]時(shí),高速公路網(wǎng)絡(luò)則退化為常規(guī)網(wǎng)絡(luò)。深度殘差網(wǎng)絡(luò)言歸正傳,現(xiàn)在請(qǐng)出本節(jié)主角——?dú)埐罹W(wǎng)絡(luò)(residualnetwork)。其實(shí),He等人[36]提出的深度殘差網(wǎng)絡(luò)與高速公路網(wǎng)絡(luò)的出發(fā)點(diǎn)極其相似,甚至殘差網(wǎng)絡(luò)可以被看作高速公路網(wǎng)絡(luò)的一種特殊情況。在高速公路網(wǎng)絡(luò)中的攜帶門(mén)和變換門(mén)都為恒等映射時(shí),公式3.4可表示為:對(duì)式3.7做簡(jiǎn)單的變形,可得:也就是說(shuō),網(wǎng)絡(luò)需要學(xué)得的函數(shù)F實(shí)際上是式3.7右端的殘差項(xiàng)y?x,稱(chēng)為“殘差函數(shù)”。如圖3-9所示,殘差學(xué)習(xí)模塊有兩個(gè)分支:其一是左側(cè)的殘差函數(shù);其二是右側(cè)的對(duì)輸入的恒等映射。這兩個(gè)分支經(jīng)過(guò)一個(gè)簡(jiǎn)單的整合(對(duì)應(yīng)元素的相加)后,再經(jīng)過(guò)一個(gè)非線性的變換(ReLU激活函數(shù)),最后形成整個(gè)殘差學(xué)習(xí)模塊。由多個(gè)殘差模塊堆疊而成的網(wǎng)絡(luò)結(jié)構(gòu)被稱(chēng)作“殘差網(wǎng)絡(luò)”。圖3-9殘差學(xué)習(xí)模塊[36]圖3-10展示了兩種不同形式的殘差模塊。左圖為剛才提到的常規(guī)殘差模塊,由兩個(gè)3×3卷積堆疊而成,但是隨著網(wǎng)絡(luò)深度的進(jìn)一步增加,這種殘差函數(shù)在實(shí)踐中并不是十分有效。右圖所示為“瓶頸殘差模塊”(bottleneckresidualblock),依次由1×1、3×3和1×1三個(gè)卷積層構(gòu)成,這里1×1卷積能夠?qū)νǖ罃?shù)(channel)起到降維或者升維的作用,從而令3×3的卷積可以在相對(duì)較低維度的輸入上進(jìn)行,以達(dá)到提高計(jì)算效率的目的。在非常深的網(wǎng)絡(luò)中,“瓶頸殘差模塊”可大幅減少計(jì)算代價(jià)。圖3-10兩種不同的殘差學(xué)習(xí)模塊[36]。左圖為常規(guī)的殘差模塊,右圖為“瓶頸”殘差模塊和“高速公路”網(wǎng)絡(luò)相比,殘差網(wǎng)絡(luò)的不同點(diǎn)在于殘差模塊中的近路連接(shortcut)可直接通過(guò)簡(jiǎn)單的恒等映射完成,而不需要復(fù)雜的攜帶門(mén)和變換門(mén)去實(shí)現(xiàn)。因此,在殘差函數(shù)輸入、輸出維度一致的情況下,殘差網(wǎng)絡(luò)不需要引入額外的參數(shù)和計(jì)算的負(fù)擔(dān)。與高速公路網(wǎng)絡(luò)相同的是,通過(guò)這種近路連接的方式,即使面對(duì)特別深層的網(wǎng)絡(luò),也可以通過(guò)反向傳播進(jìn)行端到端的學(xué)習(xí),同時(shí)使用簡(jiǎn)單的隨機(jī)梯度下降的方法就能進(jìn)行訓(xùn)練。這主要受益于近路連接使梯度信息可以在多個(gè)神經(jīng)網(wǎng)絡(luò)層之間有效傳播。此外,將殘差網(wǎng)絡(luò)與傳統(tǒng)的VGG網(wǎng)絡(luò)模型對(duì)比(見(jiàn)圖3-11)殘差網(wǎng)絡(luò)實(shí)際上就是更深的VGG網(wǎng)絡(luò),只不過(guò)殘差網(wǎng)絡(luò)以全局平均匯合層(globalaveragepoolinglayer)替代了VGG網(wǎng)絡(luò)結(jié)構(gòu)中的全連接層,這一方面使得參數(shù)大大減少,另一方面降低了過(guò)擬合風(fēng)險(xiǎn)。同時(shí)需指出,這種“利用全局平均匯合操作替代全連接層”的設(shè)計(jì)理念早在2015年提出的GoogLeNet[80]中就已經(jīng)被使用。小結(jié)§本章介紹了深度卷積神經(jīng)網(wǎng)絡(luò)中的三個(gè)重要概念:神經(jīng)元感受野、特征分布式表示和與網(wǎng)絡(luò)深度相關(guān)的特征層次性?!煲訟lex-Net、VGG-Nets、NIN和殘差神經(jīng)網(wǎng)絡(luò)四種經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)為例,介紹了深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自2012年至今的發(fā)展變化。同時(shí)需要指出,上述模型包括其他目前應(yīng)用較多的卷積網(wǎng)絡(luò)模型的結(jié)構(gòu)仍需依賴(lài)人工設(shè)計(jì),到底何種結(jié)構(gòu)才是最優(yōu)模型結(jié)構(gòu)尚未可知,不過(guò)已有一些研究開(kāi)始著力于自動(dòng)化的深度網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)。相信不久的將來(lái),機(jī)器自己設(shè)計(jì)的深層網(wǎng)絡(luò)結(jié)構(gòu)終將打敗人類(lèi)精心設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)。圖3-11VGG網(wǎng)絡(luò)模型(VGG-19)、34層的普通網(wǎng)絡(luò)模型(34-layerplain)與34層的殘差網(wǎng)絡(luò)模型(34-layerresidual)對(duì)比[36]卷積神經(jīng)網(wǎng)絡(luò)的壓縮盡管卷積神經(jīng)網(wǎng)絡(luò)在諸如計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域均取得了極佳的效果,但其動(dòng)輒過(guò)億的參數(shù)數(shù)量卻使得諸多實(shí)際應(yīng)用(特別是基于嵌入式設(shè)備的應(yīng)用)望而卻步。以經(jīng)典的VGG-16網(wǎng)絡(luò)[74]為例,其參數(shù)數(shù)量達(dá)到了1億3千多萬(wàn),占用逾500MB的磁盤(pán)存儲(chǔ)空間,需要進(jìn)行309億次浮點(diǎn)運(yùn)算[18](FLoating-pointOPeration,FLOP)才能完成一張圖像的識(shí)別任務(wù)。如此巨大的存儲(chǔ)代價(jià)以及計(jì)算開(kāi)銷(xiāo),嚴(yán)重制約了深度網(wǎng)絡(luò)在移動(dòng)端等小型設(shè)備上的應(yīng)用。雖然云計(jì)算可以將一部分計(jì)算需求轉(zhuǎn)移到云端,但對(duì)于一些高實(shí)時(shí)性的計(jì)算場(chǎng)景,云計(jì)算的帶寬、延遲和全時(shí)可用性均面臨著嚴(yán)峻的挑戰(zhàn),因此無(wú)法替代本地計(jì)算。同時(shí)這些場(chǎng)景下的設(shè)備往往并不具備超高的計(jì)算性能。鑒于此,盡管深度學(xué)習(xí)帶來(lái)了巨大的性能提升,但對(duì)于這部分實(shí)際場(chǎng)景卻因計(jì)算瓶頸而無(wú)法得到有效應(yīng)用。另一方面,許多研究表明,深度神經(jīng)網(wǎng)絡(luò)面臨著嚴(yán)峻的過(guò)參數(shù)化(overparameterization)——模型內(nèi)部參數(shù)存在著巨大的冗余。如Denil等人[15]發(fā)現(xiàn),只給定很小一部分的參數(shù)子集(約全部參數(shù)量的5%),便能完整地重構(gòu)出剩余的參數(shù),從而揭示了模型壓縮的可行性。需要注意的是,這種冗余在模型訓(xùn)練階段是十分必要的。因?yàn)樯疃壬窠?jīng)網(wǎng)絡(luò)面臨的是一個(gè)極其復(fù)雜的非凸優(yōu)化問(wèn)題,對(duì)于現(xiàn)有的基于梯度下降的優(yōu)化算法,這種參數(shù)上的冗余保證了網(wǎng)絡(luò)能夠收斂到一個(gè)比較好的最優(yōu)值[16,39]。因而在一定程度上,網(wǎng)絡(luò)越深,參數(shù)越多,模型越復(fù)雜,其最終的效果也往往越好。鑒于此,神經(jīng)網(wǎng)絡(luò)的壓縮[19]逐漸成為當(dāng)下深度學(xué)習(xí)領(lǐng)域的熱門(mén)研究課題。研究者們提出了各種新穎的算法,在追求模型高準(zhǔn)確度的同時(shí),盡可能地降低其復(fù)雜度,以期達(dá)到性能與開(kāi)銷(xiāo)上的平衡??傮w而言,絕大多數(shù)的壓縮算法,均旨在將一個(gè)龐大而復(fù)雜的預(yù)訓(xùn)練模型(pre-trainedmodel)轉(zhuǎn)化為一個(gè)精簡(jiǎn)的小模型。當(dāng)然,也有研究人員試圖設(shè)計(jì)出更加緊湊的網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)對(duì)新的小模型進(jìn)行訓(xùn)練來(lái)獲得精簡(jiǎn)模型。從嚴(yán)格意義上來(lái)講,這種算法不屬于網(wǎng)絡(luò)壓縮的范疇,但本著減小模型復(fù)雜度的最終目的,我們也將其納入到本章的介紹內(nèi)容中來(lái)。按照壓縮過(guò)程對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的破壞程度,我們將模型壓縮技術(shù)分為“前端壓縮”與“后端壓縮”兩部分。所謂“前端壓縮”,是指不改變?cè)W(wǎng)絡(luò)結(jié)構(gòu)的壓縮技術(shù),主要包括知識(shí)蒸餾、(filt
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 惠州亞馬遜基礎(chǔ)知識(shí)培訓(xùn)課件
- 陜西省延安市延川縣中學(xué)2026屆化學(xué)高一上期中質(zhì)量檢測(cè)試題含解析
- 四川省眉山市青神縣青神中學(xué)2026屆高二化學(xué)第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含答案
- 大學(xué)圣誕節(jié)主題活動(dòng)策劃方案
- 江蘇省淮安市馬壩高級(jí)中學(xué)2026屆高一化學(xué)第一學(xué)期期中達(dá)標(biāo)檢測(cè)模擬試題含解析
- 海洋主題婚禮策劃方案
- 企業(yè)復(fù)工復(fù)產(chǎn)疫情防控工作策劃方案
- 校園學(xué)雷鋒活動(dòng)策劃稿方案
- 德勤秋招面試題及答案
- 家電公司品牌管理辦法
- IATF16949第五版AIAG-VDA-DFMEA案例分析
- 鋼軋一廠技能提升試題庫(kù) 鉗工
- 十二經(jīng)脈之足陽(yáng)明胃經(jīng)課件
- 預(yù)防老年癡呆癥課件
- 保監(jiān)發(fā)112號(hào)附件1保險(xiǎn)法人機(jī)構(gòu)公司治理自評(píng)表
- “紅旗杯”競(jìng)賽總題庫(kù)-6班組長(zhǎng)個(gè)人職業(yè)素養(yǎng)考試題庫(kù)(附答案)
- 【S煙草公司物流配送線路優(yōu)化設(shè)計(jì)8500字(論文)】
- JJG 635-2011二氧化碳紅外氣體分析器
- 2024銀行數(shù)據(jù)資產(chǎn)價(jià)值評(píng)估
- 骨科植入物簡(jiǎn)介演示
- 醫(yī)院感染控制標(biāo)準(zhǔn)執(zhí)行案例分析及改進(jìn)
評(píng)論
0/150
提交評(píng)論