卷積神經網路理論基礎
理解卷積
-
相關是將濾波器在影象上滑動,對應位置相乘求和;卷積則先將濾波器旋轉180度(行列均對稱翻轉),然後使用旋轉後的濾波器進行相關運算。兩者在計算方式上可以等價,有時為了簡化,雖然名義上說是“卷積”,但實際實現時是相關。
-
這裡提供兩個理解卷積的角度:
-
從函式(或者說對映、變換)的角度理解。
-
卷積過程是在影象每個位置進行線性變換對映成新值的過程,將卷積核看成權重,若拉成向量記為w,影象對應位置的畫素拉成向量記為x,則該位置卷積結果為y=w′x+b,即向量內積+偏置,將x變換為y。
-
從這個角度看,多層卷積是在進行逐層對映,整體構成一個複雜函式,訓練過程是在學習每個區域性對映所需的權重,訓練過程可以看成是函式擬合的過程。
-
-
從模版匹配的角度理解。
-
前面我們已經知道,卷積與相關在計算上可以等價,相關運算常用模板匹配,即認為卷積核定義了某種模式。
-
卷積(相關)運算是在計算每個位置與該模式的相似程度,或者說每個位置具有該模式的分量有多少,當前位置與該模式越像,響應越強。
-
下圖為影象層面的模板匹配,右圖為響應圖,可見狗頭位置的響應最大。當然,也可以在特徵層面進行模版匹配,卷積神經網路中的隱藏層即可以看成是在特徵層面進行模板匹配。這時,響應圖中每個元素代表的是當前位置與該模式的相似程度,單看響應圖其實看不出什麼,可以想像每個位置都有個“狗頭”,越亮的地方越像“狗頭”,若給定模板甚至可以通過反捲積的方式將影象復原出來。
-
這裡多說一句,我們真的是想把影象復原出來嗎,我們希望的是在影象中找到需要的模式,若是通過一個非線性函式,將響應圖中完全不像“狗頭”的地方清零,而將像“狗頭”的地方保留,然後再將影象復原,發現復原圖中只有一個“狗頭”,這是不是更美好——因為我們明確了影象中的模式,而減少了其他資訊的干擾!
-
-
卷積能抽取特徵
-
上一節中提到了“狗頭”模板,如果把卷積核定為“狗頭”模板會有什麼問題?將缺乏靈活性,或者說泛化能力不夠,因為狗的姿態變化是多樣的,如果直接把卷積核定義得這麼“死板”,狗換個姿勢或者換一條狗就不認得了。
-
那麼,為了適應目標的多樣性,卷積核該怎麼設計呢?這個問題,我們在下一節回答,這裡先看看人工定義的卷積核是如何提取特徵的。
-
以下圖sobel運算元為例(圖片來自連結),對影象進行卷積,獲得影象的邊緣響應圖,當我們看到響應圖時,要知道圖中每個位置的響應代表著這個位置在原圖中有個形似sobel運算元的邊緣,資訊被壓縮了,響應圖裡的一個數值其實代表了這個位置有個相應強度的sobel邊緣模式,我們通過卷積抽取到了特徵。
-
人工能定義邊緣這樣的簡單卷積核來描述簡單模式,但是更復雜的模式怎麼辦,像人臉、貓、狗等等,儘管每個狗長得都不一樣,但是我們即使從未見過某種狗,當看到了也會知道那是狗,所以對於狗這個群體一定是存在著某種共有的模式,讓我們人能夠辨認出來,但問題是這種模式如何定義?在上一節,我們知道“死板”地定義個狗的模板是不行的,其缺乏泛化能力,我們該怎麼辦?
-
通過多層卷積,來將簡單模式組合成複雜模式,通過這種靈活的組合來保證具有足夠的表達能力和泛化能力。
-
-
多層卷積能抽取複雜特徵
-
為了直觀,我們先上圖,圖片出自論文《Visualizing and Understanding Convolutional Networks》,作者可視化了卷積神經網路每層學到的特徵,當輸入給定圖片時,每層學到的特徵如下圖所示。
-
注意,我們上面提到過每層得到的特徵圖直接觀察是看不出什麼的,因為其中每個位置都代表了某種模式,需要在這個位置將模式復現出來才能形成人能夠理解的影象,作者在文中將這個復現過程稱之為deconvolution,詳細檢視論文(前文已經有所暗示,讀者可以先獨自思考下復現會怎麼做)。
-
從圖中可知,淺層layer學到的特徵為簡單的邊緣、角點、紋理、幾何形狀、表面等,到深層layer學到的特徵則更為複雜抽象,為狗、人臉、鍵盤等等,有幾點需要注意:
-
1、卷積神經網路每層的卷積核權重是由資料驅動學習得來,不是人工設計的,人工只能勝任簡單卷積核的設計,像邊緣,但在邊緣響應圖之上設計出能描述複雜模式的卷積核則十分困難。
-
2、資料驅動卷積神經網路逐層學到由簡單到複雜的特徵(模式),複雜模式是由簡單模式組合而成,比如Layer4的狗臉是由Layer3的幾何圖形組合而成,Layer3的幾何圖形是由Layer2的紋理組合而成,Layer2的紋理是由Layer1的邊緣組合而成,從特徵圖上看的話,Layer4特徵圖上一個點代表Layer3某種幾何圖形或表面的組合,Layer3特徵圖上一個點代表Layer2某種紋理的組合,Layer2特徵圖上一個點代表Layer1某種邊緣的組合。
-
3、這種組合是一種相對靈活的方式在進行,不同的邊緣→不同紋理→不同幾何圖形和表面→不同的狗臉、不同的物體……,前面層模式的組合可以多種多樣,使後面層可以描述的模式也可以多種多樣,所以具有很強的表達能力,不是“死板”的模板,而是“靈活”的模板,泛化能力更強。
-
4、卷積神經網路真正使用時,還需要配合池化、啟用函式等,以獲得更強的表達能力,但模式蘊含在卷積核中,如果沒有非線性啟用函式,網路仍能學到模式,但表達能力會下降,由論文《Systematic evaluation of CNN advances on the ImageNet》,在ImageNet上,使用調整後的caffenet,不使用非線性啟用函式相比使用ReLU的效能會下降約8個百分點,如下圖所示。通過池化和啟用函式的配合,可以看到復現出的每層學到的特徵是非常單純的,狗、人、物體是清晰的,少有其他其他元素的干擾,可見網路學到了待檢測物件區別於其他物件的模式。
-
卷積計算
-
濾波器數量K、濾波器大小F、步長S、零填充P常用引數設定:
-
卷積層之間,計算輸出矩陣的尺寸大小(零填充、不填充)
\
卷積複雜度