2021卷積神經(jīng)網(wǎng)絡原理與視覺實踐_第1頁
2021卷積神經(jīng)網(wǎng)絡原理與視覺實踐_第2頁
2021卷積神經(jīng)網(wǎng)絡原理與視覺實踐_第3頁
2021卷積神經(jīng)網(wǎng)絡原理與視覺實踐_第4頁
2021卷積神經(jīng)網(wǎng)絡原理與視覺實踐_第5頁
已閱讀5頁,還剩122頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論