DNN算法的基本思想
多層感知器在如何獲取隱層的權(quán)值的問題上遇到了瓶頸已亥。既然我們無法直接得到隱層的權(quán)值助币,能否先通過輸出層得到輸出結(jié)果和期望輸出的誤差來間接調(diào)整隱層的權(quán)值呢铸屉?BP算法就是采用這樣的思想設(shè)計出來的算法埠褪,它的精髓就是,學(xué)習(xí)過程由信號的正向傳播與誤差的反向傳播兩個過程組成瘸味。
正向傳播時宫仗,輸入樣本從輸入層傳入(layer1),經(jīng)各隱層逐層(layer2)處理后,傳向輸出層(layer3)。若輸出層的實際輸出與期望的輸出(教師信號)不符,則轉(zhuǎn)入誤差的反向傳播階段旁仿。
反向傳播時藕夫,將輸出以某種形式通過隱層向輸入層逐層反傳,并將誤差分?jǐn)偨o各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權(quán)值的依據(jù)。
說明上圖各符號代表意思
ωijl表示第l-1層第j個元素與第l層第i個元素的連接參數(shù)
Zil第l層第i個元素輸入Zil= Σjωijlajl-1+bil
ail=σ(Zil)
值從第一層向后傳播做運算直到輸出,正向傳播就結(jié)束了!
計算更新ωijl毅贮,目標(biāo)函數(shù)J(W,b,x,y),為了描述方便這里使用最簡單的目標(biāo)函數(shù)(一次計算一個樣本)
如果覺得矩陣運算費解办悟,還可以這樣
結(jié)合圖形與倒數(shù)第二個等式,對ωijL求偏導(dǎo)數(shù)滩褥,等于對應(yīng)分量誤差對其偏導(dǎo),更能體現(xiàn)反向傳播的意義病蛉。
上面求了WL的偏導(dǎo),下面求J對WL-1的偏導(dǎo)
依次類推可以求出每一層W梯度铸题,更新W與b
均方差損失函數(shù)+Sigmoid激活函數(shù)的問題
Sigmoid函數(shù)當(dāng)模型運行后铡恕,越來越接近目標(biāo)值,激活函數(shù)Sigmoid變的非常平滑丢间,σ'越接近0探熔,導(dǎo)致梯度消失,更新W烘挫,b更新到極值的速度較慢诀艰,算法收斂速度較慢。
交叉熵?fù)p失函數(shù)+Sigmoid激活函數(shù)改進(jìn)DNN算法收斂速度饮六,這個也只能消除L層的影響其垄,其余層的還是不能消除
使用對數(shù)似然損失函數(shù)和softmax激活函數(shù)進(jìn)行DNN分類輸出
在前面我們講的所有DNN相關(guān)知識中,我們都假設(shè)輸出是連續(xù)可導(dǎo)的值卤橄。但是如果是分類問題绿满,那么輸出是一個個的類別,那我們怎么用DNN來解決這個問題呢窟扑?
比如假設(shè)我們有一個三個類別的分類問題喇颁,這樣我們的DNN輸出層應(yīng)該有三個神經(jīng)元,假設(shè)第一個神經(jīng)元對應(yīng)類別一嚎货,第二個對應(yīng)類別二橘霎,第三個對應(yīng)類別三,這樣我們期望的輸出應(yīng)該是(1,0,0)殖属,(0,1,0)和(0,0,1)這三種姐叁。即樣本真實類別對應(yīng)的神經(jīng)元輸出應(yīng)該無限接近或者等于1,而非改樣本真實輸出對應(yīng)的神經(jīng)元的輸出應(yīng)該無限接近或者等于0洗显⊥馇保或者說,我們希望輸出層的神經(jīng)元對應(yīng)的輸出是若干個概率值挠唆,這若干個概率值即我們DNN模型對于輸入值對于各類別的輸出預(yù)測处窥,同時為滿足概率模型,這若干個概率值之和應(yīng)該等于1损搬。DNN分類模型要求是輸出層神經(jīng)元輸出的值在0到1之間碧库,同時所有輸出值之和為1柜与。很明顯,現(xiàn)有的普通DNN是無法滿足這個要求的嵌灰。但是我們只需要對現(xiàn)有的全連接DNN稍作改良弄匕,即可用于解決分類問題。在現(xiàn)有的DNN模型中沽瞭,我們可以將輸出層第i個神經(jīng)元的激活函數(shù)定義為如下形式:
梯度爆炸梯度消失與ReLU激活函數(shù)
對于梯度爆炸(偏導(dǎo)大于1迁匠,乘積積累后越來越大),則一般可以通過調(diào)整我們DNN模型中的初始化參數(shù)得以解決驹溃。
對于無法完美解決的梯度消失問題城丧,目前有很多研究,一個可能部分解決梯度消失問題的辦法是使用ReLU(Rectified Linear Unit)激活函數(shù)豌鹤,ReLU在卷積神經(jīng)網(wǎng)絡(luò)CNN中得到了廣泛的應(yīng)用亡哄,在CNN中梯度消失似乎不再是問題。那么它是什么樣子呢布疙?其實很簡單蚊惯,比我們前面提到的所有激活函數(shù)都簡單,表達(dá)式為:
σ(z)=max(0,z)
也就是說大于等于0則不變灵临,小于0則激活后為0截型。就這么一玩意就可以解決梯度消失?至少部分是的儒溉。這個函數(shù)小于0的部分σ'=0,大于0部分σ'=1