1. 程式人生 > >深度學習(一)深度學習的發展歷史

深度學習(一)深度學習的發展歷史

本次深度學習系列主要從以下幾個方面記錄,主要為CNN相關
另外最後會專留一章講述CNN與計算機視覺中的目標檢測的發展。

發展歷史
基礎結構
損失函式
優化方法
訓練trick

學習任一門知識都應該先從其歷史開始,把握了歷史,也就抓住了現在與未來
———by BryantLJ

首先盜一張圖(來自於“深度學習大講堂”微信公眾號~),該圖形象的展示DL今年來的發展歷程及關鍵節點:

DL發展歷史

由圖可以明顯看出DL在從06年崛起之前經歷了兩個低谷,這兩個低谷也將神經網路的發展分為了三個不同的階段,下面就分別講述這三個階段

第一代神經網路(1958~1969)

最早的神經網路的思想起源於1943年的MCP人工神經元模型

,當時是希望能夠用計算機來模擬人的神經元反應的過程,該模型將神經元簡化為了三個過程:輸入訊號線性加權,求和,非線性啟用(閾值法)。如下圖所示

MCP神經元模型

第一次將MCP用於機器學習(分類)的當屬1958年Rosenblatt發明的感知器(perceptron)演算法。該演算法使用MCP模型對輸入的多維資料進行二分類,且能夠使用梯度下降法從訓練樣本中自動學習更新權值。1962年,該方法被證明為能夠收斂,理論與實踐效果引起第一次神經網路的浪潮。

然而學科發展的歷史不總是一帆風順的。

1969年,美國數學家及人工智慧先驅Minsky在其著作中證明了感知器本質上是一種線性模型,只能處理線性分類問題,就連最簡單的XOR(亦或)問題都無法正確分類。這等於直接宣判了感知器的死刑,神經網路的研究也陷入了近20年的停滯。

第二代神經網路(1986~1998)

第一次打破非線性詛咒的當屬現代DL大牛Hinton,其在1986年發明了適用於多層感知器(MLP)的BP演算法,並採用Sigmoid進行非線性對映有效解決了非線性分類和學習的問題。該方法引起了神經網路的第二次熱潮。

1989年,Robert Hecht-Nielsen證明了MLP的萬能逼近定理,即對於任何閉區間內的一個連續函式f,都可以用含有一個隱含層的BP網路來逼近該定理的發現極大的鼓舞了神經網路的研究人員。

也是在1989年,LeCun發明了卷積神經網路-LeNet,並將其用於數字識別,且取得了較好的成績,不過當時並沒有引起足夠的注意。

值得強調的是在1989年以後由於沒有特別突出的方法被提出,且NN一直缺少相應的嚴格的數學理論支援,神經網路的熱潮漸漸冷淡下去。冰點來自於1991年,BP演算法被指出存在梯度消失問題,即在誤差梯度後向傳遞的過程中,後層梯度以乘性方式疊加到前層,由於Sigmoid函式的飽和特性,後層梯度本來就小,誤差梯度傳到前層時幾乎為0,因此無法對前層進行有效的學習,該發現對此時的NN發展雪上加霜。

1997年,LSTM模型被髮明,儘管該模型在序列建模上的特性非常突出,但由於正處於NN的下坡期,也沒有引起足夠的重視。

統計學習方法的春天(1986~2006)

1986年,決策樹方法被提出,很快ID3,ID4,CART等改進的決策樹方法相繼出現,到目前仍然是非常常用的一種機器學習方法。該方法也是符號學習方法的代表。
1995年,線性SVM被統計學家Vapnik提出。該方法的特點有兩個:由非常完美的數學理論推導而來(統計學與凸優化等),符合人的直觀感受(最大間隔)。不過,最重要的還是該方法線上性分類的問題上取得了當時最好的成績。
1997年,AdaBoost被提出,該方法是PAC(Probably Approximately Correct)理論在機器學習實踐上的代表,也催生了整合方法這一類。該方法通過一系列的弱分類器整合,達到強分類器的效果。
2000年,KernelSVM被提出,核化的SVM通過一種巧妙的方式將原空間線性不可分的問題,通過Kernel對映成高維空間的線性可分問題,成功解決了非線性分類的問題,且分類效果非常好。至此也更加終結了NN時代。
2001年,隨機森林被提出,這是整合方法的另一代表,該方法的理論紮實,比AdaBoost更好的抑制過擬合問題,實際效果也非常不錯。
2001年,一種新的統一框架-圖模型被提出,該方法試圖統一機器學習混亂的方法,如樸素貝葉斯,SVM,隱馬爾可夫模型等,為各種學習方法提供一個統一的描述框架。

第三代神經網路-DL(2006-至今)

該階段又分為兩個時期:快速發展期(2006~2012)與爆發期(2012~至今)

快速發展期(2006~2012)

2006年,DL元年。是年,Hinton提出了深層網路訓練中梯度消失問題的解決方案:無監督預訓練對權值進行初始化+有監督訓練微調。其主要思想是先通過自學習的方法學習到訓練資料的結構(自動編碼器),然後在該結構上進行有監督訓練微調。但是由於沒有特別有效的實驗驗證,該論文並沒有引起重視。

2011年,ReLU啟用函式被提出,該啟用函式能夠有效的抑制梯度消失問題。

2011年,微軟首次將DL應用在語音識別上,取得了重大突破。

爆發期(2012~至今)

2012年,Hinton課題組為了證明深度學習的潛力,首次參加ImageNet影象識別比賽,其通過構建的CNN網路AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)的分類效能。也正是由於該比賽,CNN吸引到了眾多研究者的注意。
AlexNet的創新點:
(1)首次採用ReLU啟用函式,極大增大收斂速度且從根本上解決了梯度消失問題;(2)由於ReLU方法可以很好抑制梯度消失問題,AlexNet拋棄了“預訓練+微調”的方法,完全採用有監督訓練。也正因為如此,DL的主流學習方法也因此變為了純粹的有監督學習;(3)擴充套件了LeNet5結構,新增Dropout層減小過擬合,LRN層增強泛化能力/減小過擬合;(4)首次採用GPU對計算進行加速;

2013,2014,2015年,通過ImageNet影象識別比賽,DL的網路結構,訓練方法,GPU硬體的不斷進步,促使其在其他領域也在不斷的征服戰場

2015年,Hinton,LeCun,Bengio論證了區域性極值問題對於DL的影響,結果是Loss的區域性極值問題對於深層網路來說影響可以忽略。該論斷也消除了籠罩在神經網路上的區域性極值問題的陰霾。具體原因是深層網路雖然區域性極值非常多,但是通過DL的BatchGradientDescent優化方法很難陷進去,而且就算陷進去,其區域性極小值點與全域性極小值點也是非常接近,但是淺層網路卻不然,其擁有較少的區域性極小值點,但是卻很容易陷進去,且這些區域性極小值點與全域性極小值點相差較大。論述原文其實沒有證明,只是簡單敘述,嚴密論證是猜的。。。

2015,DeepResidualNet發明。分層預訓練,ReLU和BatchNormalization都是為了解決深度神經網路優化時的梯度消失或者爆炸問題。但是在對更深層的神經網路進行優化時,又出現了新的Degradation問題,即”通常來說,如果在VGG16後面加上若干個單位對映,網路的輸出特性將和VGG16一樣,這說明更深次的網路其潛在的分類效能只可能>=VGG16的效能,不可能變壞,然而實際效果卻是隻是簡單的加深VGG16的話,分類效能會下降(不考慮模型過擬合問題)“Residual網路認為這說明DL網路在學習單位對映方面有困難,因此設計了一個對於單位對映(或接近單位對映)有較強學習能力的DL網路,極大的增強了DL網路的表達能力。此方法能夠輕鬆的訓練高達150層的網路。

總結

從原理上解釋為什麼CNN要比傳統的目標檢測方法好?
(1)傳統方法都是通過人工提取特徵,需要在領域專家通過多年的積累和經驗才能手工設計出來,DL方法是通過大量的資料,自動學習到能夠反應資料差別的特徵,更具有代表性
(2)對於視覺識別來說,CNN分層提取的特徵與人的視覺機理(神經科學)類似,都是進行邊緣->部分->全體的過程。

以上。