資源共享分類 |
|
微信:HuangL1121
Q Q:1224848052
團(tuán)隊(duì):嘉興麥特萊博軟件開發(fā)工作室 地址:嘉興港區(qū)
|
|
|
智能優(yōu)化 |
MATLAB代做|MATLAB專業(yè)代做|深度學(xué)習(xí)常見算法的介紹和比較 |
來源:本站 日期:2019/8/3 瀏覽量:1224 |
|
|
功能描述:
很多人都有誤解,以為深度學(xué)習(xí)比機(jī)器學(xué)習(xí)先進(jìn)。其實(shí)深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支。可以理解為具有多層結(jié)構(gòu)的模型。具體的話,深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的具有深層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)算法,即機(jī)器學(xué)習(xí)>神經(jīng)網(wǎng)絡(luò)算法>深度神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))。
關(guān)于深度學(xué)習(xí)的理論推導(dǎo),太大太復(fù)雜,一些常見的深度學(xué)習(xí)算法本人也是模模糊糊的,看過好多次的,隔斷時(shí)間就會(huì)忘記,現(xiàn)在對(duì)其系統(tǒng)的整理一下(從歷史,致命問題出發(fā),再看具體算法的思想,框架,優(yōu)缺點(diǎn)和改進(jìn)的方向,又總結(jié)了CNN和RNN的比較)。
一、歷史:多層感知機(jī)到神經(jīng)網(wǎng)絡(luò),再到深度學(xué)習(xí)
神經(jīng)網(wǎng)絡(luò)技術(shù)起源于上世紀(jì)五、六十年代,當(dāng)時(shí)叫感知機(jī)(perceptron),擁有輸入層、輸出層和一個(gè)隱含層。輸入的特征向量通過隱含層變換達(dá)到輸出層,在輸出層得到分類結(jié)果。(扯一個(gè)不相關(guān)的:由于計(jì)算技術(shù)的落后,當(dāng)時(shí)感知器傳輸函數(shù)是用線拉動(dòng)變阻器改變電阻的方法機(jī)械實(shí)現(xiàn)的,腦補(bǔ)一下科學(xué)家們扯著密密麻麻的導(dǎo)線的樣子…)
心理學(xué)家Rosenblatt提出的單層感知機(jī)有一個(gè)嚴(yán)重得不能再嚴(yán)重的問題,即它對(duì)稍復(fù)雜一些的函數(shù)都無能為力(比如最為典型的“異或”操作)。
這個(gè)缺點(diǎn)直到上世紀(jì)八十年代才被Rumelhart、Williams、Hinton、LeCun等人發(fā)明的多層感知機(jī)解決,多層感知機(jī)解決了之前無法模擬異或邏輯的缺陷,同時(shí)更多的層數(shù)也讓網(wǎng)絡(luò)更能夠刻畫現(xiàn)實(shí)世界中的復(fù)雜情形。
多層感知機(jī)可以擺脫早期離散傳輸函數(shù)的束縛,使用sigmoid或tanh等連續(xù)函數(shù)模擬神經(jīng)元對(duì)激勵(lì)的響應(yīng),在訓(xùn)練算法上則使用Werbos發(fā)明的反向傳播BP算法。這就是我們現(xiàn)在所說的【神經(jīng)網(wǎng)絡(luò)】,BP算法也叫BP神經(jīng)網(wǎng)絡(luò)具體過程可參見我轉(zhuǎn)載的文章(http://blog.csdn.net/abc200941410128/article/details/78708319)。
但是BP神經(jīng)網(wǎng)絡(luò)(多層感知機(jī))面臨在致命問題(見下節(jié))。隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,有兩個(gè)重大問題:一是優(yōu)化函數(shù)越來越容易陷入局部最優(yōu)解,并且這個(gè)“陷阱”越來越偏離真正的全局最優(yōu)。利用有限數(shù)據(jù)訓(xùn)練的深層網(wǎng)絡(luò),性能還不如較淺層網(wǎng)絡(luò)。同時(shí),另一個(gè)不可忽略的問題是“梯度消失”現(xiàn)象更加嚴(yán)重。
2006年,Hinton利用預(yù)訓(xùn)練方法緩解了局部最優(yōu)解問題,將隱含層推動(dòng)到了7層,神經(jīng)網(wǎng)絡(luò)真正意義上有了“深度”,由此揭開了深度學(xué)習(xí)的熱潮,隨后的DBN、CNN、RNN、LSTM等才逐漸出現(xiàn)。
這里的“深度”并沒有固定的定義——在語音識(shí)別中4層網(wǎng)絡(luò)就能夠被認(rèn)為是“較深的”,而在圖像識(shí)別中20層以上的網(wǎng)絡(luò)屢見不鮮。
為了克服梯度消失,ReLU、maxout等傳輸函數(shù)代替了sigmoid,形成了如今DNN的基本形式。單從結(jié)構(gòu)上來說,全鏈接的多層感知機(jī)是沒有任何區(qū)別的。
二、深度神經(jīng)網(wǎng)絡(luò)的致命問題
隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,有三個(gè)重大問題:一是非凸優(yōu)化問題,即優(yōu)化函數(shù)越來越容易陷入局部最優(yōu)解;二是(Gradient Vanish)梯度消失問題;三是過擬合問題。
2.1 非凸優(yōu)化問題
線性回歸,本質(zhì)是一個(gè)多元一次函數(shù)的優(yōu)化問題,設(shè)f(x,y)=x+y
多層神經(jīng)網(wǎng)絡(luò),本質(zhì)是一個(gè)多元K次函數(shù)優(yōu)化問題,設(shè)f(x,y)=xy
在線性回歸當(dāng)中,從任意一個(gè)點(diǎn)出發(fā)搜索,最終必然是下降到全局最小值附近的。所以置0也無妨(這也是為什么我們往往解線性回歸方程時(shí)初值為0)。
而在多層神經(jīng)網(wǎng)絡(luò)中,從不同點(diǎn)出發(fā),可能最終困在局部最小值。局部最小值是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)帶來的揮之不去的陰影,隨著隱層層數(shù)的增加,非凸的目標(biāo)函數(shù)越來越復(fù)雜,局部最小值點(diǎn)成倍增長,利用有限數(shù)據(jù)訓(xùn)練的深層網(wǎng)絡(luò),性能還不如較淺層網(wǎng)絡(luò)。。避免的方法一般是權(quán)值初始化。為了統(tǒng)一初始化方案,通常將輸入縮放到[−1,1],但是仍然無法保證能夠達(dá)到全局最優(yōu),其實(shí)這也是科學(xué)家們一直在研究而未解決的問題。
所以,從本質(zhì)上來看,深度結(jié)構(gòu)帶來的非凸優(yōu)化仍然不能解決(包括現(xiàn)在的各類深度學(xué)習(xí)算法和其他非凸優(yōu)化問題都是如此),這限制著深度結(jié)構(gòu)的發(fā)展。
2.2 (Gradient Vanish)梯度消失問題
這個(gè)問題實(shí)際上是由激活函數(shù)不當(dāng)引起的,多層使用Sigmoid系函數(shù),會(huì)使得誤差從輸出層開始呈指數(shù)衰減。在數(shù)學(xué)上,激活函數(shù)的作用就是將輸入數(shù)據(jù)映射到0到1上(tanh是映射-1到+1上)。至于映射的原因,除了對(duì)數(shù)據(jù)進(jìn)行正則化外,大概是控制數(shù)據(jù),使其只在一定的范圍內(nèi)。當(dāng)然也有另外細(xì)節(jié)作用,例如Sigmoid(tanh)中,能在激活的時(shí)候,更關(guān)注數(shù)據(jù)在零(或中心點(diǎn))前后的細(xì)小變化,而忽略數(shù)據(jù)在極端時(shí)的變化,例如ReLU還有避免梯度消失的作用。通常,Sigmoid(tanh)多用于全連接層,而ReLU多用于卷積層。
|
|
|
|
|