白天鵝黑天鵝灰天鵝?卷積神經網路幫你搞定識別
全文共3014字,預計學習時長6分鐘
本文將通過一系列的天鵝圖片來解釋卷積神經網路(CNN)的概念,並使用CNN在常規多層感知器神經網路上處理圖像。
圖像分析
假設我們要創建一個能夠識別圖像中的天鵝的神經網路模型。
天鵝具有某些特徵,可用於幫助確定天鵝是否在圖片中存在,例如長頸、白色等。
天鵝具有某些可用於識別目的的特徵
對於某些圖像,可能難以確定是否存在天鵝,請看以下圖像。
很難區分的天鵝形象
這些特徵仍然存在於上圖中,但我們卻難以找出上文提出的特徵。除此之外,還會有一些更極端的情況。
天鵝分類的極端情況
至少顏色是一致的,對吧? 還是......
不要忘記這些黑天鵝。
情況可以更糟嗎?絕對可以。
最壞的情況
好的,現在已經有了足夠多的天鵝照片。
我們來談談神經網路。
現如今,我們基本上一直在以非常天真的方式談論檢測圖像中的特徵。研究人員構建了多種計算機視覺技術來處理這些問題:SIFT,FAST,SURF,Brief等。然而,出現了類似的問題:探測器要麼過於籠統,要麼過於設計化,這使得它們太簡單或難以概括。
· 如果我們學習了要檢測的功能,該怎麼辦?
· 我們需要一個可以進行表徵學習(或特徵學習)的系統。
表徵學習是一種允許系統自動查找給定任務的相關特徵的技術。替換手動功能工程。有以下幾種技巧:
· 無監督(K-means,PCA,......)
· 監督(Sup. 字典學習,神經網路!)
傳統神經網路的問題
假設你已經熟悉了被稱為多層感知器(MLP)的傳統神經網路。如果你不熟悉這些內容,那麼網路上有數百篇有關MLP工作方式的教程。這些是在人腦上建模的,其中神經元由連接的節點刺激,並且僅在達到特定閾值時才被激活。
標準多層感知器(傳統神經網路)
MLP有幾個缺點,特別是在圖像處理方面。MLP對每個輸入使用一個感知器(例如,圖像中的像素,在RGB情況下乘以3)。對於大圖像,權重量迅速變得難以操縱。對於具有3個顏色通道的224 x 224像素圖像,必須訓練大約150,000個重量!結果,困難發生在訓練和過度擬合的時候。
另一個常見問題是MLP對輸入(圖像)及其移位版本的反應不同——它們不是平移不變的。例如,如果貓的圖片出現在一張圖片的左上角和另一張圖片的右下角,則MLP會嘗試自我糾正並認為貓將始終出現在圖像的這一部分中。
很明顯,MLP不是用於圖像處理的最佳思路。其中一個主要問題是當圖像變平為MLP時,空間信息會丟失。靠近的節點很重要,因為它們有助於定義圖像的特徵。
因此,我們需要一種方法來利用圖像特徵(像素)的空間相關性,這樣我們就可以看到圖片中的貓,無論它出現在何處。在下圖中,我們正在學習冗餘功能。這種方法並不健全,因為貓可能出現在另一個位置。
使用MLP的貓探測器,隨著貓的位置改變而改變。
開始CNN之旅
現在讓我們繼續討論CNN如何用於解決大多數問題。
CNN利用了附近像素與遠距離像素相關性更強的事實
通過使用稱為過濾器的東西,我們分析了附近像素的影響。採用指定尺寸的過濾器(經驗法則為3x3或5x5),然後將過濾器從圖像左上角移到右下角。對於圖像上的每個點,使用卷積運算基於濾波器計算值。
過濾器可能與任何東西有關,對於人類的照片,一個過濾器可能與看到鼻子有關,而我們的鼻子過濾器會讓我們看到鼻子在圖像中出現的強度,以及多少次和在它們發生的位置。與MLP相比,這減少了神經網路必須學習的權重數量,並且還意味著當這些特徵的位置發生變化時,它不會拋棄神經網路。
卷積運算
如果你想知道如何通過網路學習不同的功能,以及網路是否可能學習相同的功能(10個頭部過濾器會有點多餘),這種情況基本不會發生。在構建網路時,我們隨機指定過濾器的值,然後在網路訓練時不斷更新。除非所選濾波器的數量極其大,否則產生兩個相同的濾波器的可能性是非常非常小的。
下面給出了稱之為過濾器或內核的示例。
CNN的內核過濾器示例
在過濾器經過圖像之後,為每個過濾器生成特徵映射。然後通過激活函數獲取這些函數,激活函數決定圖像中給定位置是否存在某個特徵。然後我們可以做很多事情,例如添加更多過濾層和創建更多特徵映射。隨著我們創建更深入的CNN,這些映射變得越來越抽象。我們還可以使用池化圖層來選擇要素圖上的最大值,並將它們用作後續圖層的輸入。理論上,任何類型的操作都可以在池化層中完成,但實際上,只使用最大池,因為我們想要找到極端值——這就是我們的網路看到該功能的時候!
示例CNN具有兩個卷積層,兩個合併層和一個完全連接的層,它將圖像的最終分類決定為幾個類別之一。
只是重申我們迄今為止所發現的內容。我們知道MLP:
· 不能很好地縮放圖像
· 忽略像素位置和鄰居關聯帶來的信息
· 無法處理翻譯
CNN的一般思維是智能地適應圖像的屬性:
· 像素位置和鄰域具有語義含義
· 感興趣的元素可以出現在圖像的任何位置
MLP和CNN的體系結構比較
CNN也由層組成,但這些層沒有完全連接:它們具有濾鏡,在整個圖像中應用的立方體形狀的權重集。過濾器的每個2D切片稱為內核。這些過濾器引入了平移不變性和參數共享。它們是如何應用的?當然是卷積!
該示例表明了如何使用內核過濾器將卷積應用於圖像
現在有一個問題是:圖像邊緣會發生什麼?如果我們在正常圖像上應用卷積,則結果將根據濾波器的大小進行下採樣。如果我們不希望這種情況發生,該怎麼辦?可以使用填充。
填充
這幅圖展現了如何將完全填充和相同的填充應用於CNN
填充本質上使得濾波器內核產生的特徵映射與原始映像的大小相同。這對於深度CNN非常有用,因為我們不希望減少輸出,為此我們只在網路末端留下一個2x2區域來預測結果。
我們如何將過濾器連接起來?
如果我們有許多功能圖,那麼這些功能如何在網路中結合起來幫助我們獲得最終結果?
需要清楚的是,每個濾鏡都與整個3D輸入立方體進行卷積,但會生成2D要素貼圖。
· 因為我們有多個濾鏡,所以最終得到一個3D輸出:每個濾鏡一個2D特徵貼圖
· 特徵貼圖尺寸可以從一個卷積層大幅變化到下一個:輸入一個32x32x16輸入的圖層,如果該圖層有128個濾鏡,則退出一個32x32x128輸出。
· 使用濾鏡對圖像進行卷積會生成一個特徵圖,該特徵圖突出顯示圖像中給定要素的存在。
在卷積層中,我們基本上在圖像上應用多個濾波器來提取不同的特徵。但最重要的是,我們正在學習這些過濾器!我們缺少的一件事是:非線性。
介紹線性整流函數(ReLU)
CNN最成功的非線性是線性整流函數(ReLU),它可以解決sigmoids中出現的消失梯度問題。ReLU更容易計算併產生稀疏性(並不總是有益)。
不同層的比較
卷積神經網路中有三種類型的層:卷積層,池化層和完全連接層。這些層中的每一層都具有可以優化的不同參數,並且對輸入數據執行不同的任務。
卷積層的特徵
卷積層是將濾鏡應用於原始圖像或深CNN中的其他要素貼圖的圖層。這是大多數用戶指定的參數在網路中的位置。最重要的參數是內核的數量和內核的大小。
池化層的特徵
池化層類似於卷積層,但它們執行特定功能,例如最大池,其取特定過濾區域中的最大值,或平均池,其取過濾區域中的平均值。這些通常用於降低網路的維度。
完全連接層的功能
完全連接的層放置在CNN的分類輸出之前,並用於在分類之前展平結果。這類似於MLP的輸出層。
標準CNN的架構
CNN層學習什麼?
· 每個CNN層都學習越來越複雜的過濾器。
· 第一層學習基本特徵檢測濾鏡:邊緣、角落等
· 中間層學習檢測對象部分的過濾器。對於面孔,他們可能會學會對眼睛、鼻子等做出反應
·最後一層具有更高的表示:它們學習識別不同形狀和位置的完整對象。
CNN的示例經過訓練以識別特定對象及其生成的特徵映射
留言 點贊 發個朋友圈
我們一起分享AI學習與發展的乾貨
編譯組:安然、盧佳琦
※人工智慧+藥物研發:AI葯神真的來了嗎?
※深度神經網路是如何成為圖像大師的?
TAG:讀芯術 |