分類: 版權聲明:本文為博主原創文章,未經博主允許不得轉載。
Deep Learning論文筆記之(六)Multi-Stage多級架構分析
zouxy09@QQ.com
http://blog.csdn.net/zouxy09
自己平時看了一些論文,但老感覺看完過后就會慢慢的淡忘,某一天重新拾起來的時候又好像沒有看過一樣。所以想習慣地把一些感覺有用的論文中的知識點總結整理一下,一方面在整理過程中,自己的理解也會更深,另一方面也方便未來自己的勘察。更好的還可以放到博客上面與大家交流。因為基礎有限,所以對論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。
本文的論文來自:
Kevin Jarrett, Koray Kavukcuoglu, Marc’Aurelio Ranzato, and Yann LeCun, ”What is the Best Multi-Stage Architecture for Object Recognition?”, in PRoc. International Conference on Computer Vision (ICCV’09), 2009
這里面還提供了一個精簡版的Matlab代碼。實現的是random convolutional filters 和linear logistic regression classifier的兩級目標識別系統。
下面是自己對其中的一些知識點的理解:
《What is the Best Multi-Stage Architecture for Object Recognition?》
對目標識別怎樣的多級架構Multi-Stage Architecture還是最好的?在當前的很多目標識別系統中,特征提取階段一般由一組濾波器,再進行非線性變換和一些類型的特征pooling層組成。大部分系統都使用一級特征提取,這時候的濾波器是hard-wired(人工選擇的,硬連線的,參數不可學習調整)的,或者使用兩級,這時候其中的一級或者兩級的濾波器都可以通過監督或者非監督的方式學習得到。
本文關注三個問題:
1)濾波器組后面接的non-linearities非線性算法是如何影響識別的準確性的?
2)通過監督或者非監督方式學習到的濾波器組是否比隨機的濾波器組或者人工指定的濾波器要好?
3)與僅有一級的特征提取對比,兩級的特征提取是否還有其他優點?
我們證明了:
1)使用包含校正和局部對比度歸一化的非線性算子對增加目標識別的準確性來說有很大幫助。
2)兩級的特征提取比一級的要好。準確率更高。
3)驚喜的是,用隨機初始化的濾波器組的兩級系統卻可以在Caltech這個數據中達到63%的識別率。當然,這里面包含了合適的非線性算子和pooling層。
4)經過監督微調,系統在NORB數據庫上達到當前領先水平。而且非監督預訓練后再加監督微調可以在Caltech這個數據庫中達到更好的準確率(大于63%)。然后在沒有處理過的MNIST數據庫中,可以達到目前我們知道的最低的0.53%的錯誤率。
一、概述
在過去這幾年,對于目標識別來說,出現了很多不錯的特征描述子。很多方法都是把輸入圖像劃分為一個個規律排列的密集的patch,然后提取這些patch的特征。再以某種方式組合這些patch的特征作為這個輸入圖像的特征。概括的來說,這些系統的很大一部分都是這樣的一個特征提取過程:輸入經過一個濾波器組filter bank(一般是基于方向性的邊緣檢測器),再經過一個非線性算子non-linear Operation(quantization, winner-take-all, sparsification, normalization, and/or point-wise saturation),然后用一個pooling操作(把實空間或者特征空間鄰域的值通過一個max, average, or histogramming operator)來絳維和得到一定的不變性。例如俺們熟知的SIFT特征,它先通過對每個小patch經過方向性邊緣檢測器,然后用winner-take-all算子來獲取最顯著的方向。最后,在更大塊的patch上面統計局部方向的直方圖,pooling成一個稀疏向量。
對于一層特征提取的系統,也就是提取到了上面的這個特征后,例如SIFT,HOG等,然后直接接一個監督學習的分類器,就構成了一個目標識別系統。還有一些模型會使用兩級或者更多級的特征提取器,然后再接一個監督學習分類器來構成一個比較復雜的目標識別系統。這些系統本質的差別在于:有一個或者多個特征提取層、濾波器組后使用的非線性算子、濾波器組的得到(人工選擇、非監督學習還是監督學習)和頂層的分類器的選擇(線性分類器還是更復雜的分類器)。
一般對濾波器組的選擇是Gabor小波,還有人選擇一些簡單的方向性檢測濾波器組,也就是梯度算子,例如SIFT和HOG。還有一些直接通過非監督學習方法直接從訓練數據中學習這些濾波器組。當在自然圖像中訓練的時候,學到的濾波器也是類似于Gabor邊緣檢測的東西。特征學習方法的一個好處就是它可以分級的學習特征。因為我們具有一定的先驗知識,覺得第一級的特征就應該是邊緣檢測器,但第二層特征又應該是什么呢?人就沒有這個類似的先驗知識了。所以就比較難人工設計一個比較好二級特征提取器。所以說,二級或者多級特征必須讓系統自己學習。現在出現的方法也很多了,有監督的,非監督的,或者兩者聯合的。
咋一看,用像Caltech-101這些非常少的訓練數據庫(這個數據庫要識別101類的物體,但每類只提供了很少的有標簽訓練數據)只用監督學習算法來訓練一個完整的系統顯得有點天真和不被看好,因為模型參數的個數比訓練樣本的個數都要多很多。所以很多人覺得只有非常認真的訓練或者人工挑選好的濾波器組才可以有好的識別性能,然后再考慮非線性算子的選擇。其實,這些觀點,都是wrong的。
二、模型架構
這部分講述如何去構建一個分級的特征提取和分類系統。分級通過堆疊一個或者多個特征提取階段,每個階段包括一個濾波器組合層、非線性變換層和一個pooling層,pooling層通過組合(取平均或者最大的)局部鄰域的濾波器響應,因而達到對微小變形的不變性。

1、濾波器組層Filter Bank Layer-FCSG:
FCSG一般包括三部分:一組卷積濾波器(C)、再接一個sigmoid/tanh非線性變換函數(S),然后是一個可訓練的增益系數(G)。分別對應下面的三個運算:

2、校正層Rectification Layer-Rabs:
只是簡單的一個取絕對值的操作(如果是tanh,則存在負的值,但在圖像中負值是不表示的,而對于卷積來說,里面的都是絕對值越大,非線性函數輸出的絕對值最大,實際意義是一樣的。卷積是越相似,輸出值越大)。除了絕對值算子外,我們還試過了其他的非線性算子,產生的效果差不多。
3、局部對比度歸一化層Local Contrast Normalization Layer-N:
該模塊主要進行的是局部做減和做除歸一化,它會迫使在特征map中的相鄰特征進行局部競爭,還會迫使在不同特征maps的同一空間位置的特征進行競爭。在一個給定的位置進行減法歸一化操作,實際上就是該位置的值減去鄰域各像素的加權后的值,權值是為了區分與該位置距離不同影響不同,權值可以由一個高斯加權窗來確定。除法歸一化實際上先計算每一個特征maps在同一個空間位置的鄰域的加權和的值,然后取所有特征maps這個值的均值,然后每個特征map該位置的值被重新計算為該點的值除以max(那個均值,該點在該map的鄰域的加權和的值)。分母表示的是在所有特征maps的同一個空間鄰域的加權標準差。哦哦,實際上如果對于一個圖像的話,就是均值和方差歸一化,也就是特征歸一化。這個實際上是由計算神經科學模型啟發得到的。(這里自己有點理解,請見本文的第四節)
4、平均池化和子采樣層Average Pooling and Subsampling Layer -PA:
該層的作用是使得提取的特征對微小變形魯棒,和視覺感知中的復雜細胞的角色差不多。采樣窗口所有值取平均得到下采樣層的值。
5、最大值池化和子采樣層Max-Pooling and Subsampling Layer -PM:
可以用任何一種對稱的pooling操作實現對提取的特征的平移不變性。最大池與平均池相似,只是最大取代了平均。一般來說,池化窗口是不重疊的。
三、實驗與結論
該文做了很多實驗來驗證不同的模型架構的性能(組合上面的不同的層)。這里就不列舉實驗結果了,可以回原文查看。這里就直接回答一開始的那幾個問題吧:
1)濾波器組后面接的non-linearities非線性算法是如何影響識別的準確性的?
俺們的實驗結論是,簡單的矯正過的非線性算子會提高識別性能。原因可能有二。a)特征的對立polarity(也就是負值的特征)和目標的識別是無關的。b)在采用平均池化的時候,矯正層的添加會消去鄰近的濾波器輸出之間的cancellations,因為如果沒有矯正,平均下采樣只會傳播輸入的噪聲。另外,局部歸一化層也會增加性能,因為它可以使監督學習算法更快,也許是因為所有的變量都具有相似的方差了(與其他白化和去相關的方法的優點一樣),這樣會加快收斂速度。
2)通過監督或者非監督方式學習到的濾波器組是否比隨機的濾波器組或者人工指定的濾波器要好?
實驗結果很驚喜,在兩級系統中采樣隨機濾波器組在Caltech-101中居然達到了挺高的62.9%的識別率,但在NORB數據庫中就顯得有點低調了,可能這種情況只會在訓練樣本集較少的時候才出現。另外,非監督預訓練接個監督微調會有最好的效果,盡管比單純的全部使用監督會差點。
3)與僅有一級的特征提取對比,兩級的特征提取是否還有其他優點?
實驗證明,兩級比一級好。我們這里,兩級系統的性能和最好的一級系統的性能:SIFT特征+PMK-SVM分類器相媲美,也許PM Kernel還隱藏著實現了我們的第二級特征提取的功能。
四、關于local contract normalization
這里對這個東西再啰嗦一下。local contract normalization 這個歸一化包括兩個部分:局部做減和局部做除(local subtractive and divisive normalizations)。我的理解:自然圖像存在低階和高階的統計特征,低階(例如二階)的統計特征是滿足高斯分布的,但高階的統計特性是非高斯分布。圖像中,空間上相鄰的像素點有著很強的相關性。而對于PCA來說,因為它是對協方差矩陣操作,所以可以去掉輸入圖像的二階相關性,但是卻無法去掉高階相關性。而有人證明了除以一個隱含的變量就可以去除高階相關性。你可以理解為一張圖像x的像素值是一個隨機變量,它由兩個獨立的隨機變量相乘得到,分別是二階量和高階量相乘,二階量的相關性可以由PCA去掉,然后高階量(這個是隱含的,需要通過MAP最大后驗估計等方法估計出來)直接用x除掉就好了。
有論文的操作是這樣:
對輸入圖像的每一個像素,我們計算其鄰域(例如3x3窗口)的均值,然后每個像素先減去這個均值,再除以這個鄰域窗口(例如3x3窗口)拉成的9維向量的歐幾里德范數(如果這個范數大于1的時候才除:這個約束是為了保證歸一化只作用于減少響應(除以大于1的數值變小),而不會加強響應(除以小于1的數值變大))。也有論文在計算均值和范數的時候,都加入了距離的影響,也就是距離離該窗口中心越遠,影響越小,例如加個高斯權重窗口(空間上相鄰的像素點的相關性隨著距離變大而變小)。
其實在這里,很多自己也還不清楚,所以上面的不一定正確,僅供參考。還望明白的人也指點一下。謝謝。
關于local contract normalization可以參考以下兩篇文章:
S. Lyu 等:Nonlinear image representation using divisive normalization.
N. Pinto等: Why is real-world visual object recognition hard?
新聞熱點
疑難解答