當前位置:
首頁 > 科技 > 白天鵝黑天鵝灰天鵝?卷積神經網路幫你搞定識別

白天鵝黑天鵝灰天鵝?卷積神經網路幫你搞定識別

全文共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:讀芯術 |