當前位置:
首頁 > 知識 > 重磅!卷積神經網路為什麼能稱霸計算機視覺領域?

重磅!卷積神經網路為什麼能稱霸計算機視覺領域?

來源:SigAI

作者: AI學習與實踐平台


導言

在機器視覺和其他很多問題上,卷積神經網路取得了當前最好的效果,它的成功促使我們思考一個問題,卷積神經網路為什麼會這麼有效?在本文中,SIGAI將為大家分析卷積神經網路背後的奧秘。


思想起源

在各種深度神經網路結構中,卷積神經網路是應用最廣泛的一種,它由LeCun在1989年提出[1]。卷積神經網路在早期被成功應用於手寫字元圖像識別[1][2][3]。2012年更深層次的AlexNet網路[4]取得成功,此後卷積神經網路蓬勃發展,被廣泛用於各個領域,在很多問題上都取得了當前最好的性能。

卷積神經網路通過卷積和池化操作自動學習圖像在各個層次上的特徵,這符合我們理解圖像的常識。人在認知圖像時是分層抽象的,首先理解的是顏色和亮度,然後是邊緣、角點、直線等局部細節特徵,接下來是紋理、幾何形狀等更複雜的信息和結構,最後形成整個物體的概念。

視覺神經科學(Visual Neuroscience)對於視覺機理的研究驗證了這一結論,動物大腦的視覺皮層具有分層結構。眼睛將看到的景象成像在視網膜上,視網膜把光學信號轉換成電信號,傳遞到大腦的視覺皮層(Visual cortex),視覺皮層是大腦中負責處理視覺信號的部分。1959年,David和Wiesel進行了一次實驗[5],他們在貓的大腦初級視覺皮層內插入電極,在貓的眼前展示各種形狀、空間位置、角度的光帶,然後測量貓大腦神經元放出的電信號。實驗發現,當光帶處於某一位置和角度時,電信號最為強烈;不同的神經元對各種空間位置和方向偏好不同。這一成果後來讓他們獲得了諾貝爾獎。

目前已經證明,視覺皮層具有層次結構。從視網膜傳來的信號首先到達初級視覺皮層(primary visual cortex),即V1皮層。V1皮層簡單神經元對一些細節、特定方向的圖像信號敏感。V1皮層處理之後,將信號傳導到V2皮層。V2皮層將邊緣和輪廓信息表示成簡單形狀,然後由V4皮層中的神經元進行處理,它顏色信息敏感。複雜物體最終在IT皮層(inferior temporal cortex)被表示出來。

視覺皮層結構

卷積神經網路可以看成是上面這種機制的簡單模仿。它由多個卷積層構成,每個卷積層包含多個卷積核,用這些卷積核從左向右、從上往下依次掃描整個圖像,得到稱為特徵圖(feature map)的輸出數據。網路前面的卷積層捕捉圖像局部、細節信息,有小的感受野,即輸出圖像的每個像素只利用輸入圖像很小的一個範圍。後面的卷積層感受野逐層加大,用於捕獲圖像更複雜,更抽象的信息。經過多個卷積層的運算,最後得到圖像在各個不同尺度的抽象表示。


卷積運算

一維信號的卷積是數字信號處理里的一種經典手段,在圖像處理領域,卷積也是一種常用的運算。它被用於圖像去噪、增強、邊緣檢測等問題,還可以提取圖像的特徵。卷積運算用一個稱為卷積核的矩陣自上而下、自左向右在圖像上滑動,將卷積核矩陣的各個元素與它在圖像上覆蓋的對應位置的元素相乘,然後求和,得到輸出像素值。以Sobel邊緣檢測運算元為例,它的卷積核矩陣為:

假設輸入圖像的矩陣為以(x,y)為中心的3x3子圖像為:

在該點處的卷積結果按照如下方式計算:

即以(x,y)為中心的的子圖像與卷積核的對應元素相乘,然後相加。通過核卷積作用於輸入圖像的所有位置,我們可以得到圖像的邊緣圖。邊緣圖在邊緣位置有更大的值,在非邊緣處的值接近於0。下圖為Sobel運算元對圖像卷積的結果,左圖為輸入圖像,右圖為卷積後的結果:

Sobel運算元卷積結果

從上圖可以看到,通過卷積將圖像的邊緣信息凸顯出來了。除了Sobel運算元之外,常用的還有Roberts 、Prewitt運算元等,它們實現卷積的方法相同 ,但有不同的卷積核矩陣。如果我們使用其他不同的核,也可以抽取更一般的圖像特徵。在圖像處理中,這些卷積核矩陣的數值是人工設計的。通過某種方法,我們可以通過機器學習的手段來自動生成這些卷積核,從而描述各種不同類型的特徵,卷積神經網路就是通過這種自動學習的手段來得到各種有用的卷積核。


卷積層

卷積層是卷積神經網路的核心。下面通過一個實際的例子來理解卷積運算。如果被卷積圖像為:

卷積核為:

首先用圖像第一個位置處的子圖像,即左上角的子圖像和卷積核對應元素相乘,然後相加,在這裡子圖像為:

卷積結果為:

接下來在待卷積圖像上向右滑動一列,將第二個位置處的子圖像:

與卷積核卷積,結果為154。接下來,再向右滑動一位,將第三個位置處的子圖像與卷積核進行卷積,結果為166。處理完第一行之後,向下滑動一行,然後重複上面的過程。以此類推,最後得到卷積結果圖像為:

經過卷積運算之後,圖像尺寸變小了。我們也可以先對圖像進行擴充(padding),例如在周邊補0,然後用尺寸擴大後的圖像進行卷積,保證卷積結果圖像和原圖像尺寸相同。另外,在從上到下,從左到右滑動過程中,水平和垂直方向滑動的步長都是1,我們也可以採用其他步長。

卷積運算顯然是一個線性操作,而神經網路要擬合的是非線性的函數,因此和全連接網路類似,我們需要加上激活函數,常用的有sigmoid函數,tanh函數,ReLU函數等。關於激活函數的解釋,為什麼需要激活函數,什麼樣的函數可以用來做激活函數,SIGAI會在後續的文章中講述,請關注我們的公眾號。

前面我們講述的是單通道圖像的卷積,輸入是二維數組。實際應用時我們遇到的經常是多通道圖像,如RGB彩色圖像有三個通道,另外由於每一層可以有多個卷積核,產生的輸出也是多通道的特徵圖像,此時對應的卷積核也是多通道的。具體做法是用卷積核的各個通道分別對輸入圖像的各個通道進行卷積,然後把對應位置處的像素值按照各個通道累加。

由於每一層允許有多個卷積核,卷積操作後輸出多張特徵圖像,因此第L個卷積層的卷積核通道數必須和輸入特徵圖像的通道數相同,即等於第L-1個卷積層的卷積核的個數。

下圖是一個簡單的例子:

多通道卷積

在上圖中卷積層的輸入圖像是3通道的(圖中第1列)。對應的,卷積核也是3通道的。在進行卷積操作時,分別用每個通道的卷積核對對應通道的圖像進行卷積,然後將同一個位置處的各個通道值累加,得到一個單通道圖像。在上圖中,有4個卷積核,每個卷積核產生一個單通道的輸出圖像,4個卷積核共產生4個通道的輸出圖像。


池化層

通過卷積操作,我們完成了對輸入向圖像的降維和特徵抽取,但特徵圖像的維數還是很高。維數高不僅計算耗時,而且容易導致過擬合。為此引入了下採樣技術,也稱為pooling即池化操作。

池化的做法是對圖像的某一個區域用一個值代替,如最大值或平均值。如果採用最大值,叫做max池化;如果採用均值,叫做均值池化。除了降低圖像尺寸之外,下採樣帶來的另外一個好處是平移、旋轉不變性,因為輸出值由圖像的一片區域計算得到,對於平移和旋轉並不敏感。

下面通過一個實際例子來理解下採樣運算。輸入圖像為:

在這裡進行無重疊的2x2max池化,結果圖像為:

結果圖像中第一個元素11是原圖左上角2x2子圖像:

元素的最大值11。第二個元素9為第二個2x2子圖像:

元素的最大值9,其他的以此類推。如果是採用的均值下採樣,結果為:

池化層的具體實現是在進行卷積操作之後對得到的特徵圖像進行分塊,圖像被劃分成的不相交塊,計算這些塊內的最大值或平均值,得到池化後的圖像。

均值池化和max池化都可以完成下採樣操作,前者是線性函數,而後者是非線性函數,一般情況下max池化有更好的效果。


網路結構

典型的卷積神經網路由卷積層、池化層、全連接層構成。在這裡以LeNet5網路來說明,下圖是這個網路的結構:

網路的輸入為的灰度圖像,由3個卷積層,2個池化層,1個全連接層組成。前面兩個卷積層後面都有一個池化層。輸出層有10個神經元,表示0-9這10個數字。

應用

機器視覺是深度學習技術最先取得突破的領域,也是應用最廣泛的領域。在AlexNet出現之後,卷積神經網路很快被用於機器視覺里的各種任務,包括通用目標檢測、行人檢測、人臉檢測、人臉識別、圖像語義分割、邊緣檢測、目標跟蹤、視頻分類等各種問題,都取得了成功。

自然語言處理領域大多數的問題都是時間序列問題,這是循環神經網路擅長處理的問題。但對於有些問題,使用卷積網路也能進行建模並且得到了很好的結果,典型的是文本分類和機器翻譯。

除此之外,卷積神經網路在語音識別、計算機圖形學等其他方向也有應用。


卷積層可視化

卷積網路設計的初衷是通過卷積層和池化層逐級提取圖像在各個不同抽象層次的特徵,我們會有這樣的疑問:現實結果真的是這樣的嗎?

先看圖像卷積之後的結果。下面是一張卡車的圖像:

卡車圖像

用AlexNet網路處理之後,第一個卷積層的輸出結果(我們把各個卷積核的結果依次排開了)是這樣的:

卷層1的結果

可以看到這裡抽取了一些邊緣信息。第二個卷積層的輸出結果是這樣的:

卷層2的結果

它抽取了更大區域的特徵。後面幾個卷積層的結果是這樣的:

卷層3—5的結果

卷積層3-5的結果在上圖中依次排開。然後我們看全連接層,下圖自上向下是3個全連接層的輸出結果:

全連接層的結果

我們再來看卷積核的可視化結果。第一個卷積層的卷積核圖像如下圖所示:

卷積層1的卷積核

可以看到,這些卷積核確實是在提取邊緣,方向等信息。再看第2個卷積層的卷積核:

卷積層2的卷積核

看上去很雜亂,沒有反應太多信息。有沒有更好的辦法?答案是肯定的,目前出現了一些文章解決卷積層可視化的問題。在這裡,我們介紹一種典型的方法,通過反卷積運算將卷積核的效果可視化出來。

文獻[6]設計了一種用反卷積操作可視化卷積層的方案。具體做法是,將卷積網路學習到的特徵圖像左乘得到這些特徵圖像的卷積核的轉置矩陣,將圖片特徵從特徵圖像空間投影到像素空間,以發現是哪些像素激活了特定的特徵圖像,達到分析理解卷積網路的目的。這這操作稱為反卷積,也叫轉置卷積。

對於卷積層,在反卷積運算時使用正向傳播時的卷積核的轉置矩陣對特徵圖像進行卷積,將特徵圖像還原到原始的像素圖像空間得到重構的圖像。通過反卷積操作得到卷積核的可視化圖像如下圖所示:

通過反卷積進行可視化

上圖表明,前面的層提取的特徵比較簡單,是一些顏色、邊緣特徵。越往後的卷積層提取的特徵越複雜,是一些複雜的幾何形狀。這符合我們對卷積神經網路的設計初衷,即通過多層卷積完成對圖像的逐層特徵提取和抽象。

另外一種分析卷積網路機理的方法是根據卷積結果圖像直接重構出原始輸入圖像,如果根據卷積結果可以重構出原始輸入圖像,則說明卷積網路很大程度上保留了圖像的信息。文獻[7]設計了一種方法,通過卷積網路提取出來的特徵反向表示圖像來觀察卷積網路的表達能力。在這裡,反向表示是指由卷積網路編碼後的向量近似重構原始輸入圖像。具體做法是給定卷積網路編碼後的向量,尋找一張圖像,這種圖像通過卷積網路編碼之後的向量與給定向量最匹配,這通過求解一個最優化問題實現。下圖是根據卷積輸出結果重構出來的圖像:

卷積圖像重構

其中,上面一行是原始圖像,下面一行是重構後的圖像。從這個結果可以看出,卷積神經網路確實提取出了圖像的有用信息。


理論分析

對卷積神經網路的理論解釋和分析來自兩個方面。第一個方面是從數學角度的分析,對網路的表示能力、映射特性的數學分析;第二個方面是卷積網路和動物視覺系統關係的研究,分析二者的關係有助於理解、設計更好的方法,同時也促進了神經科學的進步。


數學特性

神經網路代表了人工智慧中的連接主義思想,它是一種仿生的方法,被看做是對動物大腦神經系統的模擬。在實現時,它又和大腦的結構不同。從數學上看,多層神經網路本質上是一個複合函數。

既然神經網路在本質上是一個複雜的複合函數,這會讓我們思考一個問題:這個函數的建模能力有多強?即它能模擬什麼樣的目標函數?已經證明,只要激活函數選擇得當,神經元個數足夠多,使用3層即包含一個隱含層的神經網路就可以實現對任何一個從輸入向量到輸出向量的連續映射函數的逼近[8][9][10],這個結論稱為萬能逼近(universal approximation)定理。

文獻[10]對使用sigmoid激活函數時的情況進行了證明。文獻[8]指出,萬能逼近特性並不取決於神經網路具體的激活函數,而是由神經網路的結構保證的。

由於原文公式複製過來為圖像,故這裡截圖,還請見諒

萬能逼近定理的直觀解釋是可以構造出上面這樣的函數,逼近定義在單位立方體空間中的任何一個連續函數到任意指定的精度。這一結論和多項式逼近類似,後者利用多項式函數來逼近任何連續函數到任何精度。這個定理的意義在於,從理論上保證了神經網路的擬合能力。

但是這只是一個理論結果,具體實現時,神經網路需要多少層,每層要多少個神經元?這些問題只能通過實驗和經驗來確定,以保證效果。另外一個問題是訓練樣本,要擬合出一個複雜的函數需要大量的訓練樣本,而且面臨過擬合的問題。這些工程實現的細節也至關重要,卷積網路在1989年就已經出現了,為什麼直到2012年才取得成功?答案有這麼幾點:

1.訓練樣本數量的限制。早期的訓練樣本非常少,沒有大規模採集,不足以訓練出一個複雜的卷積網路。

2.計算能力的限制。1990年代的計算機能力太弱,沒有GPU這樣的高性能計算技術,要訓練一個複雜的神經網路不現實。

3.演算法本身的問題。神經網路長期以來存在梯度消失的問題,由於反向傳播時每一層都要乘上激活函數的導數值,如果這個導數的絕對值小於1,次數多了之後梯度很快趨近於0,使得前面的層無法得到更新。

AlexNet網路的規模尤其是層數比之前的網路更深,使用了ReLU作為激活函數,拋棄了sigmoid和tanh函數,一定程度上緩解了梯度消失問題。加上Dropout機制,還減輕了過擬合問題。這些技術上的改進,加上ImageNet這樣的大樣本集,以及GPU的計算能力,保證了它的成功。後面的研究表明,加大網路的層數、參數數量,能夠明顯的增加網路的精度。對於這些問題,SIGAI會在後面的專題文章中詳細介紹,感興趣的讀者可以關注我們的公眾號。

卷積神經網路本質上權重共享的全連接神經網路,因此萬能逼近定理對它是適用的。但卷積網路的卷積層,池化層又具有其特性。文獻[11]從數學的角度對深層卷積網路進行了解釋。在這裡,作者將卷積網路看做是用一組級聯的線性加權濾波器和非線性函數對數據進行散射。通過對這一組函數的壓縮(contraction)和分離(separation)特性進行分析從而解釋深度卷積網路的建模能力。另外,還解釋了深度神經網路的遷移特性。卷積神經網路的卷積操作分為兩步,第一步是線性變換,第二步是激活函數變換。前者可以看成是將數據線性投影到更低維的空間;後者是對數據的壓縮非線性變換。作者對這幾種變換的分離和壓縮特性分別進行了分析。


與視覺神經系統的關係

卷積網路與人腦視覺系統的關係對於卷積網路的解釋和設計有重要的意義,這分為兩個方面的問題。第一個問題是深度卷積神經網路是否能夠取得和人腦視覺系統相似的性能,這涉及到二者能力的對比。第二個問題是二者在結構上是否具有一致性,這是從系統結構上分析二者的關係。

從更深層來看,這個問題也是人工智慧無法迴避的一個問題。很多人都會有一個疑問:我們是否要理解了大腦的工作機理才能實現出和它相當的人工智慧?對這個問題的答案有兩種觀點。第一種觀點認為,我們要先弄清楚大腦的原理,才能研製出和他功能相當的人工智慧。第二種觀點認為,即使我們沒有弄清大腦的工作原理,也能研製出和它能力相當的人工智慧。一個例子就是飛機的發明過程,長期以來,人們都想通過仿照鳥的飛行方式來製造飛機,即煽動翅膀,結果均以失敗告終。而螺旋槳的使用,使得我們採用另外一種方法,也能讓飛機飛起來,後面出現的噴氣發動機甚至讓我們突破了音速,遠比鳥強大。事實上,大腦可能不是實現和它具有同等功能的智能的唯一方案。

文獻[12]對第一個問題進行了分析。他們驗證了深度神經網路可以取得和靈長類動物視覺IT皮層相同的性能。人腦的視覺神經系統在物體樣例變化,幾何變換,背景變化的情況下仍然可以達到很高的識別性能,這主要歸功於下顳葉皮層inferior temporal cortex,簡稱IT皮層的表示能力。通過深度卷積神經網路訓練的模型,在物體識別問題上同樣達到了很高的性能。對兩者的精確比較存在很多困難。

作者用擴展的核分析技術對深度神經網路和IT皮層進行了比較。這種技術將模型的泛化誤差作為表示複雜度的函數。分析結果表明,深度神經網路在視覺目標識別任務上的的性能可以得到大腦IT皮層的表示能力。

神經網路與視覺皮層能力的對比

文獻[13]也分析了深層神經網路與視覺神經之間的對應關係。他們利用目標驅動的深度學習模型來理解大腦的感覺皮層。具體的思路是用目標驅動的分層卷積神經網路(goal-driven hierarchical convolutional neural networks,簡稱HCNNs)對高視覺皮層區中單個單元和群體的輸出響應進行建模。這種手段建立起了深層神經網路和大腦感知皮層的對應關係,能夠幫助我們理解視覺皮層的機理。從另一角度看,也找到了深度神經網路在神經科學上的對應點。下圖是神經網路與視覺皮層的結構和功能對比:

神經網路與視覺皮層的結構對比

目前對深度神經網路工作機理、理論的研究還不完善,腦科學的研究也還處於比較低級的階段。相信在未來通過人類不斷的努力,能夠更清楚的理解大腦的工作機理,也能夠設計出功能更強大的神經網路。

來源:AI學習與實踐平台

- 加入人工智慧學院系統學習 -


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

重磅《美國機器智能國家戰略》
在NLP中深度學習模型何時需要樹形結構?

TAG:AI講堂 |