在本文中,我將用很多天鵝圖片來解釋卷積神經(jīng)網(wǎng)絡(luò)(CNN)的概念,并將完成CNN在常規(guī)多層感知器神經(jīng)網(wǎng)絡(luò)上處理圖像的案例。 圖像分析假設(shè)我們想要創(chuàng)建一個能夠識別圖像中的天鵝的神經(jīng)網(wǎng)絡(luò)模型。天鵝具有某些特征,可用于幫助確定天鵝是否存在,例如長頸,白色等。 天鵝的某些特征可以用于識別 有些圖像中,確定天鵝是否存在比較困難,來看下面這張圖像: 為天鵝圖像分類較為困難 上述圖像仍然存在某些特征,但對我們來說提取這些特征已經(jīng)較為困難了。還有更極端的情況。 天鵝分類的極端情況 至少顏色還沒變,對吧?但是…… 別忘了還有黑天鵝! 還能再難點嗎?當然可以。 最糟糕的情況 好的,天鵝圖片的分析到此為止,下面來談?wù)勆窠?jīng)網(wǎng)絡(luò)。我們基本上一直以非常幼稚的方式來討論檢測圖像中的特征。研究人員構(gòu)建了多種計算機視覺技術(shù)來解決這些問題:SIFT,F(xiàn)AST,SURF,Brief等。 然而,類似的問題又出現(xiàn)了:探測器要么過于籠統(tǒng),要么設(shè)計過渡。人們正在設(shè)計這些特征探測器,這使得它們要么太簡易,要么難以推廣。
表征學(xué)習是一種允許系統(tǒng)自動查找給定任務(wù)的相關(guān)特征的技術(shù),能代替人工特征工程。有這樣幾種方法:
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的問題假設(shè)你已經(jīng)熟悉多層感知器(MLP)的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)了。如果你不熟悉這些內(nèi)容,在中間大綱上有很多有關(guān)MLP工作方式的介紹,你可以去了學(xué)習一下。這些是類比人腦建模的,其中神經(jīng)元由連接的節(jié)點刺激,并且僅在達到特定閾值時才被激活。 一個標準多層感知器(傳統(tǒng)神經(jīng)網(wǎng)絡(luò)) MLP有幾個缺點,特別是在圖像處理方面。MLP對每個輸入使用一個感知器(例如,圖像中的像素,在RGB情況下乘以3)。對于大圖像,權(quán)重數(shù)量迅速變得難以處理。對于具有3個顏色通道的224 x 224像素圖像,必須訓(xùn)練大約150,000個權(quán)重!結(jié)果,在訓(xùn)練和過擬合過程中,困難同時出現(xiàn)。 另一個常見問題是MLP對輸入(圖像)及其移位圖像的反應(yīng)不同——它們不是平移不變的。例如,如果貓的圖片出現(xiàn)在一張圖片的左上角,且出現(xiàn)在另一張圖片的右下角,則MLP會嘗試自我糾正并認為貓是一直出現(xiàn)在圖像的這一部分中的。 顯然,MLP不是用于圖像處理的最佳方法。其中一個主要問題是當圖像變平為MLP時,空間信息會丟失。靠近的節(jié)點很重要,因為它們有助于定義圖像的特征。因此,我們需要一種方法來利用圖像特征(像素)的空間相關(guān)性,這樣無論貓出現(xiàn)在何處,我們就可以看到它。在下圖中,我們正在學(xué)習剩余特征。這種方法并不健全,因為貓可能出現(xiàn)在另一個位置。 使用MLP的貓?zhí)綔y器,隨著貓的位置改變而改變 進入卷積神經(jīng)網(wǎng)絡(luò)我希望這個案例可以清楚地說明對于圖像處理為什么MLP不好用?,F(xiàn)在讓我們繼續(xù)討論CNN是如何用來解決我們的大多數(shù)問題的。 CNN利用近處的像素比遠處的相關(guān)性更強的事實 我們通過使用稱為卷積核的東西來分析附近像素的影響。卷積核正是你認為的過濾器,在上述情況下,我們采用用戶指定尺寸的卷積核(經(jīng)驗法則為3x3或5x5),然后將圖像從左上角移到右下角。對于圖像上的每個點,基于卷積核使用卷積運算,計算結(jié)果。 卷積核可能與任何東西有關(guān),對于人類照片,一個卷積核可能與看到的鼻子有關(guān),而我們的鼻子卷積核會讓我們看到鼻子在我們的圖像中出現(xiàn)的強度、次數(shù)和它們出現(xiàn)的位置。與MLP相比,這減少了神經(jīng)網(wǎng)絡(luò)必須學(xué)習的權(quán)重數(shù)量,并且還意味著當這些特征的位置發(fā)生變化時,它不會脫離神經(jīng)網(wǎng)絡(luò)。 卷積操作 如果您想知道如何通過神經(jīng)網(wǎng)絡(luò)學(xué)到不同的特征,以及神經(jīng)網(wǎng)絡(luò)是否可能學(xué)習同樣的特征(10個鼻子卷積核將是多余的),這種情況極不可能發(fā)生。在構(gòu)建網(wǎng)絡(luò)時,我們隨機指卷積核的值,然后在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時不斷更新。除非所選卷積核的數(shù)量非常大,否則很可能不會產(chǎn)生兩個相同的卷積核。 一些卷積核的例子,或者也可以叫它過濾器,如下: CNN卷積核的例子 在過濾器經(jīng)過圖像之后,為每個過濾器生成特征映射。然后通過激活函數(shù)獲取這些函數(shù),激活函數(shù)決定圖像中給定位置是否存在某個特征。然后我們可以做很多事情,例如添加更多過濾層和創(chuàng)建更多特征映射,隨著我們創(chuàng)建更深入的CNN,這些映射變得越來越抽象。我們還可以使用池化圖層來選擇要素圖上的最大值,并將它們用作后續(xù)圖層的輸入。理論上,任何類型的操作都可以在池化層中完成,但實際上,只使用最大池,因為我們想要找到異常值 - 這些是我們的網(wǎng)絡(luò)看到該功能的時候! 示例CNN具有兩個卷積層,兩個合并層和一個完全連接的層,它將圖像的最終分類決定為幾個類別之一。 只是重申我們迄今為止所發(fā)現(xiàn)的內(nèi)容。我們知道MLP:
CNN的一般思想是智能地適應(yīng)圖像的屬性:
MLP和CNN的體系結(jié)構(gòu)比較。 CNN也由層組成,但這些層沒有完全連接:它們具有濾鏡,在整個圖像中應(yīng)用的立方體形狀的權(quán)重集。過濾器的每個2D切片稱為內(nèi)核。這些過濾器引入了平移不變性和參數(shù)共享。它們是如何應(yīng)用的?卷積! 使用內(nèi)核過濾器如何將卷積應(yīng)用于圖像的示例。 現(xiàn)在一個好問題是圖像邊緣會發(fā)生什么?如果我們在正常圖像上應(yīng)用卷積,則結(jié)果將根據(jù)濾波器的大小進行下采樣。如果我們不希望這種情況發(fā)生,我們該怎么辦?我們可以使用填充。 填充Full padding.填充0確保全部的像素都被過濾器卷積。增加輸出的大小。 Same padding.確保輸出和輸入有相同的大小。 圖片示例如何在卷積神經(jīng)網(wǎng)絡(luò)中使用full padding和same padding 填充本質(zhì)上是使得卷積核產(chǎn)生的特征映射與原始圖像的大小相同。這對于深度CNN非常有用,因為我們不希望減少輸出,因此我們僅僅在網(wǎng)絡(luò)的邊緣留下一個2x2的區(qū)域來預(yù)測我們的結(jié)果。 我們?nèi)绾螌⑦^濾器連接在一起?如果我們有許多的特稱映射,那么在我們網(wǎng)絡(luò)中如何將這些映射結(jié)合起來幫助我們獲得最終結(jié)果? 左圖:在黑白圖像上使用4個3x3卷積層(僅一個通道) 右圖:在RGB圖像上使用4個3x3卷積層。如你所見,過濾器是立方體,它們應(yīng)用于圖像的完整深度。 需要明確的是,每一個過濾器都與整個輸入3D立方體進行卷積,但是只生成一個2D特征映射。
在卷積層中,我們一般地在圖像上應(yīng)用多個過濾器來提取不同的特征。但更重要的是,我們正在學(xué)習這些過濾器!我們?nèi)鄙僖粯訓(xùn)|西:非線性。 介紹ReLU對CNN來說,最成功的非線性函數(shù)是修正線性單元(ReLU), 它克服了在sigmoid函數(shù)中出現(xiàn)的梯度消失問題。ReLU更容易計算并生成稀疏性(但這并不總是有益的)。 不同層次比較 卷積神經(jīng)網(wǎng)絡(luò)中有三種層:卷積層,池化層和全連接層。每層都有不同的參數(shù),可以對這些參數(shù)進行優(yōu)化,并對輸入層執(zhí)行不同的任務(wù)。 卷積層的特征 卷積層是對原始圖像或深度CNN中的其他特征圖應(yīng)用過濾器的層。這一層包含了整個神經(jīng)網(wǎng)絡(luò)中大多數(shù)由用戶指定的參數(shù)。最重要的參數(shù)是核的數(shù)量和核的大小 池化層的特征 池化層與卷積層很相似,但池化層執(zhí)行特定的功能,如max池化(在某個過濾器區(qū)域取最大值),或average池化(在某個過濾器區(qū)域取平均值)。這些通常被用來降低網(wǎng)絡(luò)的維度。 全連接層的特征 在CNN分類結(jié)果輸出前放置全連接層,并在分類前對結(jié)果進行扁平化處理。這類似于MLP的輸出層。 標準CNN的架構(gòu) CNN圖層學(xué)了什么? 每個CNN層都學(xué)習增加復(fù)雜度的過濾器。 CNN訓(xùn)練的識別特定物體及其生成的特征圖的例子。 要查看CNN實際工作的3D示例,請查看下面的鏈接。 http://scs./~aharley/vis/conv/ 想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻? |
|
來自: LibraryPKU > 《機器學(xué)習》