原地址:http://zhangliliang.com/2014/06/14/from-lr-to-cnn/
csdn: http://blog.csdn.net/t0903/article/details/41825667
前言
本文大致分成兩大部分,第一部分嘗試將本文涉及的分類器統一到神經元類模型中,第二部分闡述卷積神經網絡(CNN)的發展簡述和目前的相關工作。
本文涉及的分類器(分類方法)有:
- 線性回歸
- 邏輯回歸(即神經元模型)
- 神經網絡(NN)
- 支持向量機(SVM)
- 卷積神經網絡(CNN)
從神經元的角度來看,上述分類器都可以看成神經元的一部分或者神經元組成的網絡結構。
各分類器簡述
邏輯回歸
圖1中描述了一個單變量的線性回歸模型:藍點代表自變量x的分布——顯然x呈現線性分布。於是我們可以用下面的式子對其進行擬合,即我們的目標函數可以寫成:
而邏輯回歸,可以簡單理解成線性回歸的結果加上了一個sigmoid函數。
圖2 sigmoid 函數圖像
從本質上來說,加上sigmoid函數的目的在於能夠將函數輸出的值域從(−∞,∞)映射到(0,1)之間,於是可以說邏輯回歸的輸出能夠代表一個事件發生的概率。

這里為何要使用一個復雜的損失函數這構造了一個凸函數,而如果直接使用最小二乘進行定義,損失函數會變成非凸函數。
實際上邏輯回歸模型雖然名字帶有回歸,實際上一般用於二分類問題。即對
設置一個閾值(一般是0.5),便實現了二分類問題。
而邏輯回歸模型的另外一個名稱為神經元模型——即我們認為大腦的神經元有着像上述模型一樣的結構:一個神經元會根據與它相連的神經元的輸入(x)做出反應,決定自身的激活程度(一般用sigmoid函數衡量激活程度),並將激活后的數值(y)輸出到其他神經元。
圖3 邏輯回歸模型,即單個的神經元模型
神經網絡(Neural Network,簡稱NN)
邏輯回歸的決策平面是線性的,所以,它一般只能夠解決樣本是線性可分的情況。
如果樣本呈現非線性的時候,我們可以引入多項式回歸。
圖4 多項式回歸解決樣本線性不可分的情況,圖片來自Andrew Ng的Machine Learning課程的課件
其實,多項式回歸也可以看成是線性回歸或者邏輯回歸的一個特例——將線性回歸或者邏輯回歸的特征x轉化為x2,x3…等非線性的特征組合,然后對其進行線性的擬合。
多項式回歸雖然能夠解決非線性問題,但需要人工構造非線性的特征,那么,是否有一種模型,既能夠應付樣本非線性可分的情況,又同時能夠自動構造非線性的特征呢?
答案是有的,這個模型就是神經網絡。
圖5 帶一個隱層的神經網絡模型
如圖5所示,每個圓圈都是一個神經元(或者說是一個邏輯回歸模型)。所以神經網絡可以看成“線性組合-非線性激活函數-線性組合-非線性激活函數…”這樣的較為復雜網絡結構,它的決策面是復雜的,於是能夠適應樣本非線性可分的情況。
另一方面,圖5中中間一列的橙色神經元構成的層次我們成為隱層。我們認為隱層的神經元對原始特征進行了組合,並提取出來了新的特征,而這個過程是模型在訓練過程中自動“學習”出來的。
神經網絡的fomulation相對較為復雜,已經超出本文的范圍,可參考Standford的深度學習教程
支持向量機(簡稱SVM)
神經網絡的出現一度引起研究熱潮,但神經網絡有它的缺點:
- 一般來說需要大量的訓練樣本
- 代價函數邊界復雜,非凸,存在多個局部最優值。
- 參數意義模糊,比如隱層的神經元個數應該取多少一直沒有定論。
- 淺層神經網絡對於特征學習的表達能力有限。
- 深層神經網絡的參數繁多,一方面容易導致過擬合問題,另一方面因為訓練時間過長而導致不可學習。
於是,在上世紀90年代SVM被提出來后,神經網絡一度衰落了。
那么SVM是什么?
SVM,更准確的說是L-SVM,本質上依然是一個線性分類器,SVM的核心思想在於它的分類准則——最大間隔(max margin).
圖6 L-SVM本質上是最大分類間隔的線性分類器
同為線性分類器的拓展,邏輯回歸和L-SVM有着千絲萬縷的關系,Andrew Ng的課件有一張圖很清晰地把這兩者的代價函數聯系起來了(見圖7)。
圖7 L-SVM和邏輯回歸的代價函數對比,SVM的有一個明顯的轉折點
由於L-SVM是線性分類器,所以不能解決樣本線性不可分的問題。於是后來人們引入了核函數的概念,於是得到了K-SVM(K是Kernel的意思)。從本質上講,核函數是用於將原始特征映射到高維的特征空間中去,並認為在高為特征空間中能夠實現線性可分。個人認為,這個跟多項式回歸的思想是類似的,只不過核函數涵括的范圍更加廣,以及形式上更加優雅,使得它能夠避免維數災難。
圖8 Kernel能夠對特征進行非線性映射(圖片from pluskid)
SVM比起神經網絡有着以下的優點:
- 代價函數是凸函數,存在全局最優值。
- 能夠應付小樣本集的情況
- 不容易過擬合,並且有着不錯的泛化性能和魯棒性
- 核函數的引入,解決了非線性問題,同時還避免了維數災難
更多關於SVM的內容可以參考July的這篇文章:支持向量機通俗導論(理解SVM的三層境界)
然而,其實我們依然可以將SVM看成一種特殊的神經元模型:
- L-SVM本質上跟單神經元(即邏輯回歸)模型的最大差別,只是代價函數的不同,所以可以將SVM也理解成一種神經元,只不過它的激活函數不是sigmoid函數,而是SVM獨有的一種激活函數的定義方法。
- K-SVM只是比起L-SVM多了一個負責用於非線性變換的核函數,這個跟神經網絡的隱層的思想也是一脈相承的。所以K-SVM實際上是兩層的神經元網絡結構:第一層負責非線性變換,第二層負責回歸。
- 《基於核函數的SVM機與三層前向神經網絡的關系》一文中,認為這兩者從表達性來說是等價的。(注:這里的“三層前向神經網絡”實際上是帶一個隱層的神經網絡,說是三層是因為它把網絡的輸入也看成一個層。)
卷積神經網絡
近年來,神經網絡又重新興盛起來了。尤以“卷積神經網絡”為其代表。於是本文下面的篇幅主要圍繞卷積神經網絡進行展開。
生物學基礎
引自Deep Learning(深度學習)學習筆記整理系列之(七)。
1962年Hubel和Wiesel通過對貓視覺皮層細胞的研究,提出了感受野(receptive field)的概念,1984年日本學者Fukushima基於感受野概念提出的神經認知機(neocognitron)可以看作是卷積神經網絡的第一個實現網絡,也是感受野概念在人工神經網絡領域的首次應用。神經認知機將一個視覺模式分解成許多子模式(特征),然后進入分層遞階式相連的特征平面進行處理,它試圖將視覺系統模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。
通常神經認知機包含兩類神經元,即承擔特征抽取的S-元和抗變形的C-元。S-元中涉及兩個重要參數,即感受野與閾值參數,前者確定輸入連接的數目,后者則控制對特征子模式的反應程度。許多學者一直致力於提高神經認知機的性能的研究:在傳統的神經認知機中,每個S-元的感光區中由C-元帶來的視覺模糊量呈正態分布。如果感光區的邊緣所產生的模糊效果要比中央來得大,S-元將會接受這種非正態模糊所導致的更大的變形容忍性。我們希望得到的是,訓練模式與變形刺激模式在感受野的邊緣與其中心所產生的效果之間的差異變得越來越大。為了有效地形成這種非正態模糊,Fukushima提出了帶雙C-元層的改進型神經認知機。
基本的網絡結構
一個較為出名的CNN結構為LeNet5,它的demo可以參看這個網站。圖9是LeNet的結構示意圖。
圖9 LeNet5的網絡結構示意圖
圖中的Convolutions對應了上一段說的S-元,Subsampling對應了上一段中說的C-元。
對於Convolution層的每個神經元,它們的權值都是共享的,這樣做的好處是大大減少了神經網絡的參數個數。
對於Sampling層的每個神經元,它們是上一層Convolution層的局部范圍的均值(或者最大值),能夠有效地提供局部的平移和旋轉不變性。
為何神經網絡重新興起?
卷積神經網絡屬於一種深度的神經網絡,如上文所說,深度神經網絡在之前是不可計算的,主要是由於網絡層次變深后會導致下面問題:
- 由於網絡參數增多,導致了嚴重的過擬合現象
- 在訓練過程中,對深度網絡使用BP算法傳播時候梯度迅速減少,導致前面的網絡得不到訓練,網絡難以收斂。
而這兩個問題在目前都得到了較好的解決:
- 共享權值:即上文提到的卷積層的卷積核權值共享,大大減少了網絡中參數的數量級。
- 加大數據量:一個是通過眾包的方式來增加樣本的量級,比如,目前ImageNet已經有了120萬的帶標注的圖片數據。另一個是通過對已有的樣本進行隨機截取、局部擾動、小角度扭動等方法,來倍增已有的樣本數。
- 改變激活函數:使用ReLU)作為激活函數,由於ReLU的導數對於正數輸入來說恆為1,能夠很好地將梯度傳到位於前面的網絡當中。
- Dropout機制:Hinton在2012提出了Dropout機制,能夠在訓練過程中將通過隨機禁止一半的神經元被修改,避免了過擬合的現象。
- GPU編程:使用GPU進行運算,比起CPU時代運算性能有了數量級的提升。
上述問題得到有效解決后,神經網絡的優勢就得到充分的顯現了:
- 復雜模型帶來的強大的表達能力
- 有監督的自動特征提取
於是神經網絡能夠得到重新興起,也就可以解釋了。下文會選取一些樣例來說明神經網絡的強大之處。
CNN樣例1 AlexNet
在ImageNet舉辦的大規模圖像識別比賽ILSVRC2012中分類比賽中,Hinton的學生Alex搭建了一個8層的CNN,最終top-5的漏報率是16%,拋離而第二名的27%整整有11個百分點。
圖10 AlexNet的CNN結構,包括5個卷積層,和3個全連接層,最后一個softmax分類器
這個網絡中用到的技術有:
- ReLU激活函數
- 多GPU編程
- 局部正則化(Local Response Normalization)
- 重疊的下采樣(Overlapping Pooling)
- 通過隨機截取和PCA來增加數據
- Dropout
CNN樣例2 deconvnet
在下一年的比賽ILSVRC2013中,在同樣的數據集同樣的任務下,Matthew進一步將漏報率降到了11%。他使用了一個被命名為“Deconvolutional Network”(簡稱deconvnet)的技術。
Matthew的核心工作在於嘗試將CNN學習出來的特征映射回原圖片,來對每個卷積層最具有判別性的部分實現可視化——也就是,觀察CNN在卷積層中學習到了什么。
圖11 deconvnet的思想是將網絡的輸出還原成輸入
CNN樣例3 DeepPose
DeepPose的貢獻在於它對CNN使用了級聯的思想:首先,可以用第一層CNN大致定位出人物的關節位置,然后使用反復使用第二層神經網絡對第一層網絡進行微調,以達到精細定位的目的。
從另外一個角度,這個工作也說明了,CNN不僅能夠應付分類問題,也能夠應付定位的問題。
圖12 DeepPose通過級聯地使用CNN來達到精細定位關節的位置
CNN樣例4 CNN vs 人工特征
CNN Features off-the-shelf: an Astounding Baseline for Recognition
該工作旨在驗證CNN提取出來的特征是否有效,於是作者做了這樣的一個實驗:將在ILSVRC2013的分類+定位比賽中獲勝的OverFeat團隊使用CNN提取出來的特征,加上一個L-SVM后構成了一個分類器,去跟各個物體分類的數據集上目前最好(state-of-the-art)的方法進行比較,結果幾乎取得了全面的優勝。
總結
本文對數個分類器模型進行了介紹,並嘗試統一到神經元網絡模型的框架之中。
神經元網絡模型的發展一直發生停滯,只是在中途有着不同的發展方向和重點。
神經元網絡模型是個極其有效的模型,近年來由於樣本數量和計算性能都得到了幾何量級的提高,CNN這一深度框架得以發揮它的優勢,在計算機視覺的數個領域都取得了不菲的成就。
目前來說,對CNN本身的研究還不夠深入,CNN效果雖然優秀,但對於我們來說依然是一個黑盒子。弄清楚這個黑盒子的構造,從而更好地去改進它,會是一個相當重要的工作。
參考
- Machine Learning@Coursera
- UFLDL Tutorial
- 支持向量機通俗導論(理解SVM的三層境界)
- 支持向量機系列 from pluskid
- 基於核函數的SVM機與三層前向神經網絡的關系,張鈴,計算機學報,vol.25,No.7,July 2012
- Deep Learning(深度學習)學習筆記整理系列之(七)
- ImageNet Classification with Deep Convolutional Neural Networks,Alex Krizhevsky.etc,NIPS2012
- Visualizing and Understanding Convolutional Networks,Matthew D. Zeiler,arXiv:1311.2901v3 [cs.CV] 28 Nov 2013
- DeepPose: Human Pose Estimation via Deep Neural Networks,arXiv:1312.4659v1 [cs.CV] 17 Dec 2013
- CNN Features off-the-shelf: an Astounding Baseline for Recognition,arXiv:1403.6382v3 [cs.CV] 12 May 2014