歷史|文章筆記-從線性分類器到卷積神經網路
前面已經 按照 指數分布族 的視角,把線性回歸(高斯分布)與邏輯回歸(Bernoulli分布)統一在 廣義線性模型 之下。 它是一種偏向數學的視角。閱讀了 這篇 從線性分類器到卷積神經網路 之後,發現還有另一種 神經元 的視角可以把邏輯回歸 ,SVM,神經網路(NN) 和 CNN都統一在一起。
這篇筆記的目的主要有幾個關鍵點:
- 引入 神經元視角統一看待幾個傳統機器學習演算法和神經網路
- 說明近年來火熱的一種神經網路 (深度卷積網路 也叫 深度學習)為什麼在沉寂一段時間後又突然熱起來。(換句話說:深度學習為什麼有效?做了那些改進?)
不過筆記旨在說明思想,不是專門講解知識點的教程。看不懂的同學可以把它當作機器學習的一篇發展史概述。
回想前面的兩篇 線性回歸 和 logistic regression 我們都可以按照 極大似然估計的統計學思想 step1: 假設 的分布 , step2:利用極大似然估計 得到 而 就是我們的損失函數。 (當然也可以不按照這個思路也能得出損失函數 例如 線性回歸 中的開篇就是以數學直觀含義直接給出了最小二乘法形式的損失函數 然後才按照似然估計賦予其概率意義)
【邏輯回歸(LR) - 神經元模型】
- 線性回歸的目標函數與損失函數分別為
, (此處是對於單個樣本的損失函數)
為了求解二分類問題,我們在線性回歸上加一個 sigmoid函數 (作映射 ) 就得到了邏輯回歸。
- 邏輯回歸的目標函數與損失函數分別為:
(注意:損失函數剛好是凸函數:全局最優就是局部最優)
而邏輯回歸模型的另外一個名稱為神經元模型——即我們認為大腦的神經元有著像上述模型一樣的結構:一個神經元會根據與它相連的神經元的輸入(x)做出反應,決定自身的激活程度(一般用sigmoid函數衡量激活程度),並將激活後的數值(y)輸出到其他神經元。
(上圖為單個的神經元模型)【神經網路(Neural Network,簡稱NN)】邏輯回歸的決策平面是線性的,它一般只能夠解決樣本是線性可分的情況。如果樣本呈現非線性的時候,我們可以引入多項式回歸。(看下圖)
(備註:多項式回歸也可以看成是線性回歸或者邏輯回歸的一個特例——將線性回歸或者邏輯回歸的特徵x轉化為等非線性的特徵組合,然後對其進行線性的擬合)多項式回歸雖然解決了非線性可分問題,但需要人工構造非線性的特徵()。
而神經網路(NN)既(a)能夠應付樣本非線性可分的情況,又同時(b)能夠自動構造非線性的特徵。
神經網路可以看成「線性組合-非線性激活函數-線性組合-非線性激活函數…」這鐘較為複雜網路結構,它的決策面是複雜的,於是能夠適應樣本非線性可分的情況。中間一列的橙色神經元構成的層次我們稱為隱層。我們認為隱層的神經元對原始特徵進行了組合,並提取出來了新的特徵,而這個過程是模型在訓練過程中自動「學習」出來的。
【支持向量機(簡稱SVM)】神經網路的出現一度引起研究熱潮,但有如下缺點:
- 一般來說需要大量的訓練樣本。
- 代價函數邊界複雜,非凸,存在多個局部最優值。
- 參數意義模糊,比如隱層的神經元個數應該取多少一直沒有定論。
- 淺層神經網路(Shallow network)對於特徵學習的表達能力有限。(只能學習很底層的淺特徵 ,無法得到抽象層次更高的深特徵 例如原子->分子->細胞 層次逐步加深)
- 深層神經網路(Deep network)的參數繁多,一方面容易導致過擬合問題,另一方面因為訓練時間過長而導致不可學習。(參數多容易從雜訊中學習模式)
上世紀90年代SVM被提出來後,神經網路一度衰落了。
典型的(不加核函數的)SVM是 L-SVM,本質上依然是一個線性分類器,SVM的核心思想在於它的分類準則——最大間隔(max margin).
(備註:同為線性分類器的拓展,邏輯回歸和L-SVM有著千絲萬縷的關係,Andrew Ng的課件有一張圖很清晰地把這兩者的代價函數聯繫起來了)由於L-SVM是線性分類器,所以不能解決樣本線性不可分的問題。於是後來人們引入了核函數的概念,於是得到了K-SVM(K是Kernel的意思)。從本質上講,核函數是用於將原始特徵映射到高維的特徵空間中去,並認為在高維特徵空間中能夠實現線性可分。
SVM比起神經網路有著以下的優點:
- 代價函數是凸函數,存在全局最優值。
- 能夠應付小樣本集的情況
- 不容易過擬合,並且有著不錯的泛化性能和魯棒性
- 核函數的引入,解決了非線性問題,同時還避免了維數災難
SVM參考:支持向量機通俗導論(理解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-元層的改進型神經認知機。
基本網路結構:
LeNet
為何神經網路重新興起?
卷積神經網路屬於一種深度的神經網路,如上文所說,深度神經網路在之前是不可計算的,主要是由於網路層次變深後會導致下面問題:
- 由於網路參數增多,導致了嚴重的過擬合現象
- 在訓練過程中,對深度網路使用BP演算法傳播時候梯度迅速減少,導致前面的網路得不到訓練,網路難以收斂。
而深度卷積網路提出了一系列改進辦法:
- 減少參數:
- 共享權值:即上文提到的卷積層的卷積核權值共享,大大減少了網路中參數的數量級。
- 解決過擬合
- 加大數據量:一個是通過眾包的方式來增加樣本的量級,比如,目前ImageNet已經有了120萬的帶標註的圖片數據。另一個是通過對已有的樣本進行隨機截取、局部擾動、小角度扭動等方法,來倍增已有的樣本數(人工擴增數據)。
- L1正則化:衰減權值,防止從雜訊中學習模式,專註於少數重要的連接
- L2正則化:衰減權值,防止從雜訊中學習模式,
- Dropout機制:Hinton在2012提出了Dropout機制,能夠在訓練過程中將通過隨機禁止一半的神經元被修改,避免了過擬合的現象。(相當於取平均 參考Dropout解決過擬合問題 - 曉雷機器學習筆記 - 知乎專欄)
- BP傳播時梯度衰減導致網路難以收斂的問題:改變激活函數,使用ReLU作為激活函數,由於ReLU的導數對於正數輸入來說恆為1,能夠很好地將梯度傳到位於前面的網路當中。
- 增強計算能力:使用GPU進行運算,比起CPU時代運算性能有了數量級的提升。(可以以更小的時間進行更多次迭代搜索問題空間,更快的收斂)
上述問題得到有效解決後,神經網路的優勢就得到充分的顯現了:
- 複雜模型帶來的強大的表達能力
- 有監督的自動特徵提取
深度卷積網路案例:
CNN樣例1 AlexNet:在ImageNet舉辦的大規模圖像識別比賽ILSVRC2012中分類比賽中,Hinton的學生Alex搭建了一個8層的CNN,最終top-5的漏報率是16%,拋離而第二名的27%整整有11個百分點。
這個網路中用到的技術有:
- ReLU激活函數
- 多GPU編程
- 局部正則化(Local Response Normalization)
- 重疊的下採樣(Overlapping Pooling)
- 通過隨機截取和PCA來增加數據
- Dropout
CNN樣例2 deconvnet:
在下一年的比賽ILSVRC2013中,在同樣的數據集同樣的任務下,Matthew進一步將漏報率降到了11%。他使用了一個被命名為「Deconvolutional Network」(簡稱deconvnet)的技術。
Matthew的核心工作在於嘗試將CNN學習出來的特徵映射回原圖片,來對每個卷積層最具有判別性的部分實現可視化——也就是,觀察CNN在卷積層中學習到了什麼。CNN樣例3 DeepPose:
DeepPose的貢獻在於它對CNN使用了級聯的思想:首先,可以用第一層CNN大致定位出人物的關節位置,然後使用反覆使用第二層神經網路對第一層網路進行微調,以達到精細定位的目的。從另外一個角度,這個工作也說明了,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效果雖然優秀,但對於我們來說依然是一個黑盒子。弄清楚這個黑盒子的構造,從而更好地去改進它,會是一個相當重要的工作。推薦閱讀:
※Learn R | AdaBoost of Data Mining(一)
※李宏毅機器學習2016 第十九講 結構化學習簡介
※一位老師,一位領導,一個讓全體學生考上目標學校的故事
※具有自學習(Self-paced learning)的集成學習(Boosting)分類器--(IJCAI 2016)--論文筆記
※處理不均衡數據 (機器學習)
TAG:深度学习DeepLearning | 机器学习 |