本次深度學(xué)習(xí)系列主要從以下幾個(gè)方面記錄,主要為CNN相關(guān)?
另外最后會(huì)專留一章講述CNN與計(jì)算機(jī)視覺中的目標(biāo)檢測(cè)的發(fā)展。
?發(fā)展歷史?
?基礎(chǔ)結(jié)構(gòu)?
?損失函數(shù)?
?優(yōu)化方法?
?訓(xùn)練trick
學(xué)習(xí)任一門知識(shí)都應(yīng)該先從其歷史開始,把握了歷史,也就抓住了現(xiàn)在與未來?
———by BryantLJ
首先盜一張圖(來自于“深度學(xué)習(xí)大講堂”微信公眾號(hào)~),該圖形象的展示DL今年來的發(fā)展歷程及關(guān)鍵節(jié)點(diǎn):
由圖可以明顯看出DL在從06年崛起之前經(jīng)歷了兩個(gè)低谷,這兩個(gè)低谷也將神經(jīng)網(wǎng)絡(luò)的發(fā)展分為了三個(gè)不同的階段,下面就分別講述這三個(gè)階段
第一代神經(jīng)網(wǎng)絡(luò)(1958~1969)
最早的神經(jīng)網(wǎng)絡(luò)的思想起源于1943年的MCP人工神經(jīng)元模型,當(dāng)時(shí)是希望能夠用計(jì)算機(jī)來模擬人的神經(jīng)元反應(yīng)的過程,該模型將神經(jīng)元簡(jiǎn)化為了三個(gè)過程:輸入信號(hào)線性加權(quán),求和,非線性激活(閾值法)。如下圖所示
第一次將MCP用于機(jī)器學(xué)習(xí)(分類)的當(dāng)屬1958年Rosenblatt發(fā)明的感知器(perceptron)算法。該算法使用MCP模型對(duì)輸入的多維數(shù)據(jù)進(jìn)行二分類,且能夠使用梯度下降法從訓(xùn)練樣本中自動(dòng)學(xué)習(xí)更新權(quán)值。1962年,該方法被證明為能夠收斂,理論與實(shí)踐效果引起第一次神經(jīng)網(wǎng)絡(luò)的浪潮。
然而學(xué)科發(fā)展的歷史不總是一帆風(fēng)順的。
1969年,美國(guó)數(shù)學(xué)家及人工智能先驅(qū)Minsky在其著作中證明了感知器本質(zhì)上是一種線性模型,只能處理線性分類問題,就連最簡(jiǎn)單的XOR(亦或)問題都無法正確分類。這等于直接宣判了感知器的死刑,神經(jīng)網(wǎng)絡(luò)的研究也陷入了近20年的停滯。
第二代神經(jīng)網(wǎng)絡(luò)(1986~1998)
第一次打破非線性詛咒的當(dāng)屬現(xiàn)代DL大牛Hinton,其在1986年發(fā)明了適用于多層感知器(MLP)的BP算法,并采用Sigmoid進(jìn)行非線性映射,有效解決了非線性分類和學(xué)習(xí)的問題。該方法引起了神經(jīng)網(wǎng)絡(luò)的第二次熱潮。
1989年,Robert Hecht-Nielsen證明了MLP的萬(wàn)能逼近定理,即對(duì)于任何閉區(qū)間內(nèi)的一個(gè)連續(xù)函數(shù)f,都可以用含有一個(gè)隱含層的BP網(wǎng)絡(luò)來逼近該定理的發(fā)現(xiàn)極大的鼓舞了神經(jīng)網(wǎng)絡(luò)的研究人員。
也是在1989年,LeCun發(fā)明了卷積神經(jīng)網(wǎng)絡(luò)-LeNet,并將其用于數(shù)字識(shí)別,且取得了較好的成績(jī),不過當(dāng)時(shí)并沒有引起足夠的注意。
值得強(qiáng)調(diào)的是在1989年以后由于沒有特別突出的方法被提出,且NN一直缺少相應(yīng)的嚴(yán)格的數(shù)學(xué)理論支持,神經(jīng)網(wǎng)絡(luò)的熱潮漸漸冷淡下去。冰點(diǎn)來自于1991年,BP算法被指出存在梯度消失問題,即在誤差梯度后向傳遞的過程中,后層梯度以乘性方式疊加到前層,由于Sigmoid函數(shù)的飽和特性,后層梯度本來就小,誤差梯度傳到前層時(shí)幾乎為0,因此無法對(duì)前層進(jìn)行有效的學(xué)習(xí),該發(fā)現(xiàn)對(duì)此時(shí)的NN發(fā)展雪上加霜。
1997年,LSTM模型被發(fā)明,盡管該模型在序列建模上的特性非常突出,但由于正處于NN的下坡期,也沒有引起足夠的重視。
統(tǒng)計(jì)學(xué)習(xí)方法的春天(1986~2006)
1986年,決策樹方法被提出,很快ID3,ID4,CART等改進(jìn)的決策樹方法相繼出現(xiàn),到目前仍然是非常常用的一種機(jī)器學(xué)習(xí)方法。該方法也是符號(hào)學(xué)習(xí)方法的代表。?
1995年,線性SVM被統(tǒng)計(jì)學(xué)家Vapnik提出。該方法的特點(diǎn)有兩個(gè):由非常完美的數(shù)學(xué)理論推導(dǎo)而來(統(tǒng)計(jì)學(xué)與凸優(yōu)化等),符合人的直觀感受(最大間隔)。不過,最重要的還是該方法在線性分類的問題上取得了當(dāng)時(shí)最好的成績(jī)。?
1997年,AdaBoost被提出,該方法是PAC(Probably Approximately Correct)理論在機(jī)器學(xué)習(xí)實(shí)踐上的代表,也催生了集成方法這一類。該方法通過一系列的弱分類器集成,達(dá)到強(qiáng)分類器的效果。?
2000年,KernelSVM被提出,核化的SVM通過一種巧妙的方式將原空間線性不可分的問題,通過Kernel映射成高維空間的線性可分問題,成功解決了非線性分類的問題,且分類效果非常好。至此也更加終結(jié)了NN時(shí)代。?
2001年,隨機(jī)森林被提出,這是集成方法的另一代表,該方法的理論扎實(shí),比AdaBoost更好的抑制過擬合問題,實(shí)際效果也非常不錯(cuò)。?
2001年,一種新的統(tǒng)一框架-圖模型被提出,該方法試圖統(tǒng)一機(jī)器學(xué)習(xí)混亂的方法,如樸素貝葉斯,SVM,隱馬爾可夫模型等,為各種學(xué)習(xí)方法提供一個(gè)統(tǒng)一的描述框架。
第三代神經(jīng)網(wǎng)絡(luò)-DL(2006-至今)
該階段又分為兩個(gè)時(shí)期:快速發(fā)展期(2006~2012)與爆發(fā)期(2012~至今)
2006年,DL元年。是年,Hinton提出了深層網(wǎng)絡(luò)訓(xùn)練中梯度消失問題的解決方案:無監(jiān)督預(yù)訓(xùn)練對(duì)權(quán)值進(jìn)行初始化+有監(jiān)督訓(xùn)練微調(diào)。其主要思想是先通過自學(xué)習(xí)的方法學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的結(jié)構(gòu)(自動(dòng)編碼器),然后在該結(jié)構(gòu)上進(jìn)行有監(jiān)督訓(xùn)練微調(diào)。但是由于沒有特別有效的實(shí)驗(yàn)驗(yàn)證,該論文并沒有引起重視。
2011年,ReLU激活函數(shù)被提出,該激活函數(shù)能夠有效的抑制梯度消失問題。
2011年,微軟首次將DL應(yīng)用在語(yǔ)音識(shí)別上,取得了重大突破。
2012年,Hinton課題組為了證明深度學(xué)習(xí)的潛力,首次參加ImageNet圖像識(shí)別比賽,其通過構(gòu)建的CNN網(wǎng)絡(luò)AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)的分類性能。也正是由于該比賽,CNN吸引到了眾多研究者的注意。?
AlexNet的創(chuàng)新點(diǎn):?
(1)首次采用ReLU激活函數(shù),極大增大收斂速度且從根本上解決了梯度消失問題;(2)由于ReLU方法可以很好抑制梯度消失問題,AlexNet拋棄了“預(yù)訓(xùn)練+微調(diào)”的方法,完全采用有監(jiān)督訓(xùn)練。也正因?yàn)槿绱耍?b>DL的主流學(xué)習(xí)方法也因此變?yōu)榱思兇獾挠斜O(jiān)督學(xué)習(xí);(3)擴(kuò)展了LeNet5結(jié)構(gòu),添加Dropout層減小過擬合,LRN層增強(qiáng)泛化能力/減小過擬合;(4)首次采用GPU對(duì)計(jì)算進(jìn)行加速;
2013,2014,2015年,通過ImageNet圖像識(shí)別比賽,DL的網(wǎng)絡(luò)結(jié)構(gòu),訓(xùn)練方法,GPU硬件的不斷進(jìn)步,促使其在其他領(lǐng)域也在不斷的征服戰(zhàn)場(chǎng)
2015年,Hinton,LeCun,Bengio論證了局部極值問題對(duì)于DL的影響,結(jié)果是Loss的局部極值問題對(duì)于深層網(wǎng)絡(luò)來說影響可以忽略。該論斷也消除了籠罩在神經(jīng)網(wǎng)絡(luò)上的局部極值問題的陰霾。具體原因是深層網(wǎng)絡(luò)雖然局部極值非常多,但是通過DL的BatchGradientDescent優(yōu)化方法很難陷進(jìn)去,而且就算陷進(jìn)去,其局部極小值點(diǎn)與全局極小值點(diǎn)也是非常接近,但是淺層網(wǎng)絡(luò)卻不然,其擁有較少的局部極小值點(diǎn),但是卻很容易陷進(jìn)去,且這些局部極小值點(diǎn)與全局極小值點(diǎn)相差較大。論述原文其實(shí)沒有證明,只是簡(jiǎn)單敘述,嚴(yán)密論證是猜的。。。
2015,DeepResidualNet發(fā)明。分層預(yù)訓(xùn)練,ReLU和BatchNormalization都是為了解決深度神經(jīng)網(wǎng)絡(luò)優(yōu)化時(shí)的梯度消失或者爆炸問題。但是在對(duì)更深層的神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化時(shí),又出現(xiàn)了新的Degradation問題,即”通常來說,如果在VGG16后面加上若干個(gè)單位映射,網(wǎng)絡(luò)的輸出特性將和VGG16一樣,這說明更深次的網(wǎng)絡(luò)其潛在的分類性能只可能>=VGG16的性能,不可能變壞,然而實(shí)際效果卻是只是簡(jiǎn)單的加深VGG16的話,分類性能會(huì)下降(不考慮模型過擬合問題)“Residual網(wǎng)絡(luò)認(rèn)為這說明DL網(wǎng)絡(luò)在學(xué)習(xí)單位映射方面有困難,因此設(shè)計(jì)了一個(gè)對(duì)于單位映射(或接近單位映射)有較強(qiáng)學(xué)習(xí)能力的DL網(wǎng)絡(luò),極大的增強(qiáng)了DL網(wǎng)絡(luò)的表達(dá)能力。此方法能夠輕松的訓(xùn)練高達(dá)150層的網(wǎng)絡(luò)。
從原理上解釋為什么CNN要比傳統(tǒng)的目標(biāo)檢測(cè)方法好??
(1)傳統(tǒng)方法都是通過人工提取特征,需要在領(lǐng)域?qū)<彝ㄟ^多年的積累和經(jīng)驗(yàn)才能手工設(shè)計(jì)出來,DL方法是通過大量的數(shù)據(jù),自動(dòng)學(xué)習(xí)到能夠反應(yīng)數(shù)據(jù)差別的特征,更具有代表性?
(2)對(duì)于視覺識(shí)別來說,CNN分層提取的特征與人的視覺機(jī)理(神經(jīng)科學(xué))類似,都是進(jìn)行邊緣->部分->全體的過程。
以上。
原文參考:http://blog.csdn.net/u012177034/article/details/52252851