电竞比分网-中国电竞赛事及体育赛事平台

分享

深度神經(jīng)網(wǎng)絡(luò)總結(jié)-CSDN博客

 dbn9981 2024-01-20 發(fā)布于北京

深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)可以理解為有很多隱藏層的神經(jīng)網(wǎng)絡(luò),又被稱為深度前饋網(wǎng)絡(luò)(DFN),多層感知機(jī)(Multi-Layer perceptron,MLP)。

1 前向傳播算法

1.1 從感知機(jī)到神經(jīng)網(wǎng)絡(luò)

感知機(jī)的模型是一個(gè)有若干輸入和一個(gè)輸出的模型,如下圖:

輸出和輸入之間學(xué)習(xí)到一個(gè)線性關(guān)系,得到中間輸出結(jié)果:

接著是一個(gè)神經(jīng)元激活函數(shù),得到輸出結(jié)果1或者-1。:

這個(gè)模型只能用于二元分類,且無法學(xué)習(xí)比較復(fù)雜的非線性模型,因此在工業(yè)界無法使用。

而神經(jīng)網(wǎng)絡(luò)則在感知機(jī)的模型上做了擴(kuò)展,總結(jié)下主要有三點(diǎn):

  • 1)加入了多層隱藏層,增強(qiáng)模型的表達(dá)能力。
  • 2)輸出層神經(jīng)元可以不止一個(gè),可以有多個(gè)輸出,這樣模型可以靈活的應(yīng)用于分類,回歸,降維和聚類等。下圖輸出層有4個(gè)神經(jīng)元。

  • 3) 對(duì)激活函數(shù)做擴(kuò)展。感知機(jī)的激活函數(shù)是sign(z),雖然簡(jiǎn)單但是處理能力有限,因此神經(jīng)網(wǎng)絡(luò)中一般使用:Sigmoid,tanx, ReLU,softplus,softmax等加入非線性因素,提高模型的表達(dá)能力。

1.2 DNN的基本結(jié)構(gòu)

按不同層的位置劃分,DNN內(nèi)部的神經(jīng)網(wǎng)絡(luò)層可以分為:輸入層,隱藏層和輸出層,一般第一層是輸入層,最后一層是輸出層,而中間的層數(shù)都是隱藏層。層與層之間是全連接的,即第i層的任意一個(gè)神經(jīng)元一定與第i+1層的任意一個(gè)神經(jīng)元相連。

雖然DNN看起來很復(fù)雜,但是從小的局部模型來說,還是和感知機(jī)一樣,即一個(gè)線性關(guān)系加上一個(gè)激活函數(shù)σ(z)。

由于DNN層數(shù)多,參數(shù)較多,線性關(guān)系系數(shù)w和偏倚b的定義需要一定的規(guī)則。線性關(guān)系系數(shù)w的定義:第二層的第4個(gè)神經(jīng)元到第三層的第2個(gè)神經(jīng)元的線性系數(shù)定義為。上標(biāo)3代表線性系數(shù)w所在的層數(shù),而下標(biāo)對(duì)應(yīng)的是輸出的第三層索引2和輸入的第二層索引4。你也許會(huì)問,為什么不是w342, 呢?這主要是為了便于模型用于矩陣表示運(yùn)算,如果是w342而每次進(jìn)行矩陣運(yùn)算是wTx+b,需要進(jìn)行轉(zhuǎn)置。將輸出的索引放在前面的話,則線性運(yùn)算不用轉(zhuǎn)置,即直接為wx+b。注意,輸入層是沒有w參數(shù),偏倚參數(shù)b。

 偏倚b的定義:第二層的第三個(gè)神經(jīng)元對(duì)應(yīng)的偏倚定義為。其中,上標(biāo)2代表所在的層數(shù),下標(biāo)3代表偏倚所在的神經(jīng)元的索引。

1.3 DNN前向傳播算法數(shù)學(xué)原理

假設(shè)選擇的激活函數(shù)是σ(z),隱藏層和輸出層的輸出值為a。

1.4 DNN前向傳播算法

DNN的前向傳播算法是利用若干個(gè)權(quán)重系數(shù)矩陣W,偏倚向量b來和輸入值向量x進(jìn)行一系列線性運(yùn)算和激活運(yùn)算,從輸入層開始,利用上一層的輸出計(jì)算下一層的輸出,一層層的向后計(jì)算,一直到運(yùn)算到輸出層,得到輸出結(jié)果為值。

2 DNN反向傳播算法

使用前向傳播計(jì)算訓(xùn)練樣本的輸出,使用損失函數(shù),來度量訓(xùn)練樣本計(jì)算出的輸出和真實(shí)的訓(xùn)練樣本標(biāo)簽之間的損失。DNN的反向傳播算法(Back Propagation,BP)通過對(duì)損失函數(shù)用梯度下降法進(jìn)行迭代優(yōu)化求極小值,找到合適的隱藏層和輸出層對(duì)應(yīng)的線性系數(shù)矩陣W,偏倚向量b,讓所有的訓(xùn)練樣本輸入計(jì)算出的輸出盡可能的等于或接近樣本標(biāo)簽。

2.1 DNN反向傳播算法的基本思路

使用均方差來度量損失進(jìn)行推導(dǎo)。即對(duì)于每個(gè)樣本,期望最小化下式:

2.2 DNN反向傳播算法過程

梯度下降法有批量(Batch),小批量(mini-Batch),隨機(jī)三個(gè)變種,為了簡(jiǎn)化描述,這里以最基本的批量梯度下降法為例來描述反向傳播算法。實(shí)際上在業(yè)界使用最多的是mini-Batch的梯度下降法。不過區(qū)別僅僅在于迭代時(shí)訓(xùn)練樣本的選擇而已。

3 損失函數(shù)和激活函數(shù)

3.1 均方差損失函數(shù)+Sigmoid激活函數(shù)的問題

Sigmoid激活函數(shù)的表達(dá)式和圖像:

對(duì)于Sigmoid,當(dāng)z的取值越來越大(或z的取值越來越小時(shí)),函數(shù)曲線變得越來越平緩,導(dǎo)數(shù)σ′(z)也越來越小。僅僅在z取值為0附近時(shí),導(dǎo)數(shù)σ′(z)的取值較大。在使用均方差+Sigmoid的反向傳播算法中,每一層向前遞推都要乘以σ′(z),得到梯度變化值。Sigmoid的這個(gè)曲線意味著在大多數(shù)時(shí)候,梯度變化值很小,導(dǎo)致W,b更新到極值的速度較慢,算法收斂速度較慢。

2. 使用交叉熵?fù)p失函數(shù)+Sigmoid激活函數(shù)改進(jìn)DNN算法收斂速度

每個(gè)樣本的交叉熵?fù)p失函數(shù)的形式:

另外,表示預(yù)測(cè)值與實(shí)際值的誤差,當(dāng)誤差越大時(shí),梯度就越大,參數(shù)w和b的調(diào)整就越快,訓(xùn)練的速度也就越快。通常情況下,如果使用了sigmoid激活函數(shù),交叉熵?fù)p失函數(shù)肯定比均方差損失函數(shù)好用。綜上:如果輸出神經(jīng)元是線性的,那么二次代價(jià)函數(shù)就是一種合適的選擇,如果輸出神經(jīng)元是S型函數(shù)(sigmoid,tanh),那么比較適合用交叉熵代價(jià)函數(shù)。

3. 使用對(duì)數(shù)似然損失函數(shù)和softmax激活函數(shù)進(jìn)行DNN分類輸出

對(duì)數(shù)似然函數(shù)與softmax的組合和交叉熵與sigmoid函數(shù)的組合相似,對(duì)數(shù)似然代價(jià)函數(shù)在二分類時(shí)可以化簡(jiǎn)為交叉熵代價(jià)函數(shù)的形式。

將DNN用于分類問題,在輸出層用softmax激活函數(shù)非常常見。DNN分類模型要求是輸出層神經(jīng)元輸出的值在0到1之間,同時(shí)所有輸出值之和為1。普通DNN是無法滿足這個(gè)要求。對(duì)現(xiàn)有的全連接DNN稍作改良,將輸出層的激活函數(shù)從Sigmoid之類的函數(shù)轉(zhuǎn)變?yōu)樯鲜降膕oftmax激活函數(shù),即可用于解決分類問題。在現(xiàn)有的DNN模型中,將輸出層第i個(gè)神經(jīng)元的激活函數(shù)定義為如下形式:

softmax激活函數(shù)在前向傳播算法時(shí)的使用:假設(shè)輸出層為三個(gè)神經(jīng)元,而未激活的輸出為3,1和-3,求出各自的指數(shù)表達(dá)式為:20,2.7和0.05,歸一化因子即為22.75,則三個(gè)類別的概率輸出分布為0.88,0.12和0。

4. 梯度爆炸,梯度消失與ReLU激活函數(shù)

在反向傳播算法中,由于使用了是矩陣求導(dǎo)的鏈?zhǔn)椒▌t,有一大串連乘,如果連乘的數(shù)字在每層都是小于1的,則梯度越往前乘越小,導(dǎo)致梯度消失,而如果連乘的數(shù)字在每層都是大于1的,則梯度越往前乘越大,導(dǎo)致梯度爆炸。對(duì)于梯度爆炸,則一般可以通過調(diào)整DNN模型中的初始化參數(shù)得以解決。

反向傳播算法中δ的計(jì)算:

甚至接近于0,導(dǎo)致梯度幾乎消失,進(jìn)而導(dǎo)致前面隱藏層的W,b參數(shù)隨著迭代的進(jìn)行幾乎沒有大的改變,收斂速度較慢。

一個(gè)可能部分解決梯度消失問題的辦法是使用ReLU(Rectified Linear Unit)激活函數(shù):σ(z)=max(0,z),ReLU在卷積神經(jīng)網(wǎng)絡(luò)CNN中得到了廣泛的應(yīng)用。

5. DNN損失函數(shù)和激活函數(shù)小結(jié)

1)如果使用sigmoid激活函數(shù),則交叉熵?fù)p失函數(shù)一般肯定比均方差損失函數(shù)好。2)如果是DNN用于分類,則一般在輸出層使用softmax激活函數(shù)和對(duì)數(shù)似然損失函數(shù)。3)ReLU激活函數(shù)對(duì)梯度消失問題有一定程度的解決,尤其是在CNN模型中。

DNN常用的激活函數(shù):

  • 1)sigmoid:
  • 2)ReLU:σ(z)=max(0,z)
  • 3) tanh:sigmoid的變種,輸出區(qū)間為[-1,1]表達(dá)式為:

tanh激活函數(shù)和sigmoid激活函數(shù)的關(guān)系為:

  • 4) softplus:sigmoid函數(shù)的原函數(shù),表達(dá)式為:

它的導(dǎo)數(shù)就是sigmoid函數(shù)。softplus的函數(shù)圖像和ReLU有些類似。它出現(xiàn)的比ReLU早,可以視為ReLU的鼻祖。

  • 5)PReLU:ReLU的變種,特點(diǎn)是如果未激活值小于0,不是簡(jiǎn)單粗暴的直接變?yōu)?,而是進(jìn)行一定幅度的縮小。

正則化

1. DNN的L1&L2正則化

L1正則化和L2正則化原理類似,重點(diǎn)講述DNN的L2正則化。DNN的L2正則化通常只針對(duì)與線性系數(shù)矩陣W,而不針對(duì)偏倚系數(shù)b。

假如每個(gè)樣本的損失函數(shù)是均方差損失函數(shù),則所有的m個(gè)樣本的損失函數(shù)為:

則加上了L2正則化后的損失函數(shù)是:

其中,λ即正則化超參數(shù),實(shí)際使用時(shí)需要調(diào)參。而w為所有權(quán)重矩陣W的所有列向量。

如果使用上式的損失函數(shù),進(jìn)行反向傳播算法時(shí),流程和沒有正則化的反向傳播算法完全一樣,區(qū)別僅僅在于進(jìn)行梯度下降法時(shí),W的更新公式。反向傳播算法中,W的梯度下降更新公式為:

加入L2正則化以后,迭代更新公式變成:

注意到上式中的梯度計(jì)算中我忽略了,因?yàn)棣潦浅?shù),而除以m也是常數(shù),所以等同于用了新常數(shù)α來代替。類似的L2正則化方法可以用于交叉熵?fù)p失函數(shù)或者其他的DNN損失函數(shù)。

2. DNN通過集成學(xué)習(xí)的思路正則化

除了常見的L1&L2正則化,DNN可以用Bagging的思路來正則化。常用的機(jī)器學(xué)習(xí)Bagging算法中,隨機(jī)森林是最流行的。它通過隨機(jī)采樣構(gòu)建若干個(gè)相互獨(dú)立的弱決策樹學(xué)習(xí)器,最后采用加權(quán)平均法或者投票法決定集成的輸出。在DNN中同樣可以使用Bagging的思路。不過和隨機(jī)森林不同的是,這里不是若干個(gè)決策樹,而是若干個(gè)DNN的網(wǎng)絡(luò)。

首先對(duì)原始的m個(gè)訓(xùn)練樣本進(jìn)行有放回隨機(jī)采樣,構(gòu)建N組m個(gè)樣本的數(shù)據(jù)集,然后分別用這N組數(shù)據(jù)集訓(xùn)練DNN。即采用前向傳播算法和反向傳播算法得到N個(gè)DNN模型的W,b參數(shù)組合,最后對(duì)N個(gè)DNN模型的輸出用加權(quán)平均法或者投票法決定最終輸出。

不過用集成學(xué)習(xí)Bagging的方法有一個(gè)問題,就是DNN模型本來就比較復(fù)雜,參數(shù)很多?,F(xiàn)在又變成了N個(gè)DNN模型,這樣參數(shù)又增加了N倍,從而導(dǎo)致訓(xùn)練這樣的網(wǎng)絡(luò)要花更加多的時(shí)間和空間。因此一般N的個(gè)數(shù)不能太多,比如5-10個(gè)就可以了。

3. DNN通過dropout 正則化

Dropout指的是在用前向傳播算法和反向傳播算法訓(xùn)練DNN模型時(shí),一批數(shù)據(jù)迭代時(shí),隨機(jī)的從全連接DNN網(wǎng)絡(luò)中去掉一部分隱藏層的神經(jīng)元。在對(duì)訓(xùn)練集中的一批數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),隨機(jī)去掉一部分隱藏層的神經(jīng)元,并用去掉隱藏層的神經(jīng)元的網(wǎng)絡(luò)來擬合一批訓(xùn)練數(shù)據(jù)。如下圖,去掉了一半的隱藏層神經(jīng)元:

然后用這個(gè)去掉隱藏層的神經(jīng)元的網(wǎng)絡(luò)來進(jìn)行一輪迭代,更新所有的W,b。

dropout并不意味著這些神經(jīng)元永遠(yuǎn)的消失了。在下一批數(shù)據(jù)迭代前,會(huì)把DNN模型恢復(fù)成最初的全連接模型,然后再用隨機(jī)的方法去掉部分隱藏層的神經(jīng)元,接著去迭代更新W,b。當(dāng)然,這次用隨機(jī)的方法去掉部分隱藏層后的殘缺DNN網(wǎng)絡(luò)和上次的殘缺DNN網(wǎng)絡(luò)并不相同。

總結(jié)下dropout的方法: 每輪梯度下降迭代時(shí),它需要將訓(xùn)練數(shù)據(jù)分成若干批,然后分批進(jìn)行迭代,每批數(shù)據(jù)迭代時(shí),需要將原始的DNN模型隨機(jī)去掉部分隱藏層的神經(jīng)元,用殘缺的DNN模型來迭代更新W,b。每批數(shù)據(jù)迭代更新完畢后,要將殘缺的DNN模型恢復(fù)成原始的DNN模型。

dropout和Bagging的正則化思路不同,dropout模型中的W,b是共享的,所有的殘缺DNN迭代時(shí),更新的是同一組W,b;而Bagging正則化時(shí)每個(gè)DNN模型有自己獨(dú)有的一套W,b參數(shù),相互之間是獨(dú)立的。相同點(diǎn)是:每次使用基于原始數(shù)據(jù)集得到的分批的數(shù)據(jù)集來訓(xùn)練模型。

使用基于dropout的正則化比基于bagging的正則化簡(jiǎn)單,當(dāng)然天下沒有免費(fèi)的午餐,由于dropout會(huì)將原始數(shù)據(jù)分批迭代,因此原始數(shù)據(jù)集最好較大,否則模型可能會(huì)欠擬合。

4. DNN通過增強(qiáng)數(shù)據(jù)集正則化

增強(qiáng)模型泛化能力最好的辦法是有更多的訓(xùn)練數(shù)據(jù),但是在實(shí)際應(yīng)用中,更多的訓(xùn)練數(shù)據(jù)往往很難得到。有時(shí)候我們不得不去自己想辦法無中生有,來增加訓(xùn)練數(shù)據(jù)集,進(jìn)而得到讓模型泛化能力更強(qiáng)的目的。


從感知機(jī)到神經(jīng)網(wǎng)絡(luò)

感知機(jī)是二分類的線性模型,假設(shè)訓(xùn)練數(shù)據(jù)集是線性可分的,感知機(jī)學(xué)習(xí)的目標(biāo)是求得一個(gè)能夠?qū)⒂?xùn)練數(shù)據(jù)集正負(fù)樣本點(diǎn)正確分開的超平面,使誤分類的樣本點(diǎn)到超平面的距離之和最小。這個(gè)模型只能用于二元分類,且無法學(xué)習(xí)比較復(fù)雜的非線性模型,因此在工業(yè)界無法使用。

將單個(gè)神經(jīng)元的激活函數(shù)設(shè)為sign可以得到感知機(jī);激活函數(shù)設(shè)為sigmoid,即可得到二分類的LR;將激活函數(shù)設(shè)為softmax可以得到多分類的LR,但需要注意的是:它們需要優(yōu)化的損失函數(shù)并不相同,所以LR和感知機(jī)的不同體現(xiàn)在兩點(diǎn):激活函數(shù)和損失函數(shù)。

神經(jīng)網(wǎng)絡(luò)在感知機(jī)的模型上做了擴(kuò)展,主要有三點(diǎn):

  1. 加入了多層隱藏層,特征的“等級(jí)”隨著網(wǎng)絡(luò)深度的加深而變高,增強(qiáng)了模型的表達(dá)能力。
  2. 輸出層神經(jīng)元可以有多個(gè)輸出,模型可以靈活的應(yīng)用于分類,回歸,降維和聚類等。
  3. 對(duì)激活函數(shù)做擴(kuò)展。感知機(jī)的激活函數(shù)是sign(z),雖然簡(jiǎn)單但是處理能力有限,因此神經(jīng)網(wǎng)絡(luò)中一般使用:Sigmoid,Softmax,tanx, ReLU,softplus等激活函數(shù),加入非線性因素,提高模型的表達(dá)能力。

深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)的基本結(jié)構(gòu)

DNN可以分為:輸入層,隱藏層和輸出層,一般第一層是輸入層,最后一層是輸出層,而中間的層數(shù)都是隱藏層。層與層之間是全連接的,即第i層的任意一個(gè)神經(jīng)元一定與第i+1層的任意一個(gè)神經(jīng)元相連。

DNN前向傳播算法

從輸入層開始,利用輸入向量x,若干個(gè)權(quán)重系數(shù)矩陣W和偏置向量b,進(jìn)行一系列線性運(yùn)算和激活運(yùn)算,利用上一層的輸出計(jì)算下一層的輸出,一層層的向后計(jì)算,一直到運(yùn)算到輸出層得到輸出結(jié)果。

DNN反向傳播算法(Back Propagation,BP)

反向傳播算法的學(xué)習(xí)過程由正向傳播和反向傳播組成。在正向傳播過程中,輸入信息通過輸入層,經(jīng)隱藏層逐層處理并傳向輸出層。如果在輸出層得不到期望的輸出值,則取輸出結(jié)果與樣本標(biāo)簽誤差的平方和作為目標(biāo)函數(shù),轉(zhuǎn)入反向傳播,通過對(duì)損失函數(shù)用梯度下降法進(jìn)行迭代優(yōu)化求極小值,找到合適的輸出層和隱藏層對(duì)應(yīng)的線性系數(shù)矩陣W,偏置向量b,網(wǎng)絡(luò)的學(xué)習(xí)在權(quán)值修改過程中完成,誤差達(dá)到所期望值時(shí),網(wǎng)絡(luò)學(xué)習(xí)結(jié)束。

DNN激活函數(shù)

為什么引入非線性激活函數(shù)

不用激活函數(shù)時(shí),每一層輸出都是上層輸出的線性函數(shù), 無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當(dāng),引入激活函數(shù)相當(dāng)于加入非線性因素,可以有效避免多層網(wǎng)絡(luò)等效于單層線性函數(shù),提高模型表達(dá)力,使模型更有區(qū)分度。激活函數(shù)通常有如下一些性質(zhì):非線性(提高模型表達(dá)力),可微性(方便求梯度),單調(diào)性(損失函數(shù)為凸函數(shù))

DNN常用的激活函數(shù)

梯度消失與梯度爆炸

在反向傳播算法中,由于使用了矩陣求導(dǎo)的鏈?zhǔn)椒▌t,后層的梯度以連乘方式疊加到前層,當(dāng)神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)為S型激活函數(shù)時(shí),由于其飽和特性,在輸入達(dá)到一定值的情況下,輸出就不會(huì)發(fā)生明顯變化,其導(dǎo)數(shù)逐漸趨近于0。使用梯度進(jìn)行參數(shù)更新時(shí),如果連乘的數(shù)字在每層都是小于1的,則梯度越往前乘越小,誤差梯度反傳到前層時(shí)幾乎會(huì)衰減為0,因此無法對(duì)前層的參數(shù)進(jìn)行有效的更新學(xué)習(xí),這就會(huì)導(dǎo)致梯度消失,而如果連乘的數(shù)字在每層都是大于1的,則梯度越往前乘越大,導(dǎo)致梯度爆炸。梯度消失會(huì)導(dǎo)致隱層的W,b參數(shù)隨著迭代的進(jìn)行幾乎沒有大的改變,甚至不會(huì)收斂,因此無法通過加深網(wǎng)絡(luò)層次來改善神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)效果。梯度爆炸會(huì)導(dǎo)致網(wǎng)絡(luò)權(quán)重的大幅更新,引起網(wǎng)絡(luò)不穩(wěn)定,在極端情況下,權(quán)重的值變得非常大,以至于溢出,導(dǎo)致 NaN 值。

ReLU系列相對(duì)于Sigmoid和Tanh激活函數(shù)的優(yōu)點(diǎn)是什么?它的缺點(diǎn)以及如何改進(jìn)?

優(yōu)點(diǎn)

  1. 從計(jì)算的角度上,Sigmoid和Tanh激活函數(shù)均需要計(jì)算指數(shù),復(fù)雜度高,而ReLU只需要一個(gè)閾值即可得到激活值。
  2. 深層網(wǎng)絡(luò)中,S型激活函數(shù)反向傳播時(shí)容易出現(xiàn)梯度消失現(xiàn)象,ReLU的非飽和性可以有效地解決梯度消失的問題,提供相對(duì)寬的激活邊界。
  3. ReLU的單側(cè)抑制會(huì)使一部分神經(jīng)元的輸出為 0,提供了網(wǎng)絡(luò)的稀疏表達(dá)能力,并且減少了參數(shù)的相互依存關(guān)系,可以緩解過擬合。

缺點(diǎn)
使用Relu激活函數(shù)在訓(xùn)練過程中Relu會(huì)導(dǎo)致神經(jīng)元不可逆死亡。因?yàn)楹瘮?shù)會(huì)導(dǎo)致負(fù)梯度在經(jīng)過該ReLU單元時(shí)被置為0,且在之后也不被任何數(shù)據(jù)激活,即流經(jīng)該神經(jīng)元的梯度永遠(yuǎn)為0,不對(duì)任何數(shù)據(jù)產(chǎn)生響應(yīng)。在實(shí)際訓(xùn)練中,如果學(xué)習(xí)率(Learning Rate)設(shè)置較大,會(huì)導(dǎo)致超過一定比例的神經(jīng)元不可逆死亡,進(jìn)而參數(shù)梯度無法更新,整個(gè)訓(xùn)練過程失敗。                              

缺點(diǎn)的改進(jìn)

為解決練過程中會(huì)導(dǎo)致神經(jīng)元死亡的問題,人們?cè)O(shè)計(jì)了ReLU的變種LReLU( Leaky ReLU),其形式表示為:

LReLU與ReLU的區(qū)別在于:當(dāng)z<=0時(shí),其值不為0,而是一個(gè)斜率為a的線性函數(shù),一般a為一個(gè)很小的正常數(shù),這樣既實(shí)現(xiàn)了單側(cè)抑制,又保留了部分負(fù)梯度信息以致不完全丟失。但a值的選擇增加了問題難度,需要較強(qiáng)的先驗(yàn)知識(shí)或多次重復(fù)訓(xùn)練以確定合適的參數(shù)值。

DNN損失函數(shù)

常用的損失函數(shù)有:平方誤差損失函數(shù),交叉熵?fù)p失函數(shù),對(duì)數(shù)似然損失函數(shù)

對(duì)數(shù)似然損失是對(duì)預(yù)測(cè)概率的似然估計(jì),其最小化的本質(zhì)是利用樣本中的已知分布,求解導(dǎo)致這種分布的最佳模型參數(shù),使這種分布出現(xiàn)概率最大。它衡量的是預(yù)測(cè)概率分布和真實(shí)概率分布的差異性,取值越小越好。其標(biāo)準(zhǔn)形式為:。

對(duì)數(shù)似然損失函數(shù)在二分類時(shí)可以化簡(jiǎn)為交叉熵?fù)p失函數(shù)。交叉熵表示兩個(gè)概率分布之間的距離,交叉熵越大,兩個(gè)概率分布距離越遠(yuǎn),概率分布越相異;交叉熵越小,兩個(gè)概率分布距離越近,概率分布越相似,通過交叉熵可以判斷哪個(gè)預(yù)測(cè)結(jié)果與標(biāo)準(zhǔn)答案更接近。

交叉熵?fù)p失函數(shù)的計(jì)算公式為:

對(duì)數(shù)損失在多分類問題中的計(jì)算公式為:

平方誤差損失函數(shù)和交叉熵?fù)p失函數(shù)分別適合什么場(chǎng)景?

一般來說,平方誤差損失函數(shù)更適合輸出為連續(xù),并且最后一層不含Sigmoid或Softmax激活函數(shù)的神經(jīng)網(wǎng)絡(luò);如果是使用Sigmoid或Softmax激活函數(shù)進(jìn)行二分類或多分類的神經(jīng)網(wǎng)絡(luò),使用交叉熵?fù)p失或?qū)?shù)似然損失會(huì)有更快的收斂速度。

推導(dǎo)平方誤差損失函數(shù)相對(duì)于輸出層的導(dǎo)數(shù):其中最后一項(xiàng)σ′(z)為激活函數(shù)的導(dǎo)數(shù)。反向傳播算法中,每一層向前遞推都要乘以σ′(z),得到梯度變化值,當(dāng)激活函數(shù)為S型函數(shù)時(shí),如果z 的絕對(duì)值較大,函數(shù)會(huì)趨于飽和,即σ′(z)的絕對(duì)值非常小,導(dǎo)致W,b更新到極值的速度較慢,算法收斂速度較慢。當(dāng)使用交叉熵?fù)p失函數(shù)時(shí),相對(duì)于輸出層的導(dǎo)數(shù)為:(也可以認(rèn)為是殘差),此時(shí)的導(dǎo)數(shù)是線性的,因此不會(huì)存在學(xué)習(xí)速度過慢的問題,而且其表示預(yù)測(cè)值與實(shí)際值的誤差,誤差越大時(shí),梯度越大,參數(shù)w和b的調(diào)整就越快,訓(xùn)練的速度也就越快。

將輸出層的激活函數(shù)從Sigmoid之類的函數(shù)轉(zhuǎn)變?yōu)镾oftmax激活函數(shù)可以使輸出層神經(jīng)元輸出的值在0到1之間,同時(shí)所有輸出值之和為1,可用于解決多分類問題。

DNN激活函數(shù)和損失函數(shù)小結(jié):

  1. 如果神經(jīng)元的輸出是線性的,平方損失函數(shù)是一種合適的選擇,如果輸出神經(jīng)元是S型激活函數(shù),則交叉熵?fù)p失函數(shù)會(huì)有更快的收斂速度。
  2. softmax激活函數(shù)與對(duì)數(shù)似然損失的組合和sigmoid函數(shù)與交叉熵的組合相似,所以一般使用sigmoid激活函數(shù)與交叉熵進(jìn)行二分類輸出;使用softmax激活函數(shù)與對(duì)數(shù)似然損失進(jìn)行DNN多分類輸出。

正則化(L1&L2,Bagging,Dropout,數(shù)據(jù)擴(kuò)充)

1. DNN的L1&L2正則化

假如每個(gè)樣本的損失函數(shù)是均方差損失函數(shù),則加上了L2正則化后的損失函數(shù)是(L1正則化類似):

其中,λ即正則化超參數(shù),實(shí)際使用時(shí)需要調(diào)參。

2. DNN通過Bagging正則化

首先對(duì)原始的m個(gè)訓(xùn)練樣本進(jìn)行有放回隨機(jī)采樣,構(gòu)建N組m個(gè)樣本的數(shù)據(jù)集,然后分別用這N組數(shù)據(jù)集訓(xùn)練DNN。即采用前向傳播算法和反向傳播算法得到N個(gè)DNN模型的W,b參數(shù)組合,最后對(duì)N個(gè)DNN模型的輸出用加權(quán)平均法或者投票法決定最終輸出。

需要注意的是:DNN模型本來就比較復(fù)雜,參數(shù)很多。N個(gè)DNN模型集成,參數(shù)增加了N倍,導(dǎo)致訓(xùn)練網(wǎng)絡(luò)要花更加多的時(shí)間和空間。N的取值一般為:5-10個(gè)。

3. DNN通過Dropout 正則化

Dropout(隨機(jī)失活)是指在深度網(wǎng)絡(luò)的訓(xùn)練中,將訓(xùn)練數(shù)據(jù)分成若干批,使用一批數(shù)據(jù)進(jìn)行梯度下降迭代時(shí),以一定的概率隨機(jī)地 “臨時(shí)丟棄”一部分神經(jīng)元節(jié)點(diǎn),然后用這個(gè)去掉隱藏層神經(jīng)元的網(wǎng)絡(luò)來擬合一批訓(xùn)練數(shù)據(jù),并更新所有的權(quán)重和偏置(W,b)。在下一批數(shù)據(jù)迭代前,會(huì)把DNN模型恢復(fù)成最初的全連接模型,然后再用隨機(jī)去掉部分隱藏層的神經(jīng)元,迭代更新權(quán)重和偏置。

由于其隨機(jī)丟棄部分神經(jīng)元的機(jī)制,每次dropout都相當(dāng)于訓(xùn)練了原始網(wǎng)絡(luò)的子網(wǎng)絡(luò),它們共享部分權(quán)值,并且具有相同的網(wǎng)絡(luò)層數(shù),而模型整體的參數(shù)數(shù)目不變,這就大大簡(jiǎn)化了運(yùn)算,而且這個(gè)過程會(huì)減弱神經(jīng)元之間的依賴關(guān)系,減少過擬合,增強(qiáng)模型的泛化能力。(避免神經(jīng)元相互連接,參數(shù)過多,將結(jié)果記?。?/p>

Bagging集成算法是多個(gè)模型的同時(shí)訓(xùn)練與測(cè)試評(píng)估,當(dāng)網(wǎng)絡(luò)與參數(shù)規(guī)模龐大時(shí),需要消耗大量的運(yùn)算時(shí)間與空間。Dropout在小批量數(shù)據(jù)集上進(jìn)行操作,最后的結(jié)果相當(dāng)于很多子網(wǎng)絡(luò)的組合,這可以看做是bagging集成的近似,如果每次訓(xùn)練的子網(wǎng)絡(luò)之間有一定的獨(dú)立性,最后融合會(huì)降低模型的方差,增強(qiáng)模型的泛化能力。

Dropout和Bagging的正則化的異同

  • 不同點(diǎn):dropout模型中的W,b是一套共享的,所有的殘缺DNN迭代時(shí),更新的是同一組W,b;而Bagging正則化時(shí)每個(gè)DNN模型有自己獨(dú)有的一套W,b參數(shù),相互之間是獨(dú)立的。
  • 相同點(diǎn):二者都是使用基于原始數(shù)據(jù)集分批得到的數(shù)據(jù)集來訓(xùn)練模型。

Dropout和 L1,L2的正則化的異同

二者的目的都是用來減少 overfitting(過擬合)。但 L1,L2正則化是針對(duì)損失函數(shù)進(jìn)行優(yōu)化,Dropout是改變神經(jīng)網(wǎng)絡(luò)本身的結(jié)構(gòu)。

4. DNN通過擴(kuò)充數(shù)據(jù)集正則化

減少模型過擬合,增強(qiáng)模型泛化能力最好的辦法是有更多的訓(xùn)練數(shù)據(jù)。如:計(jì)算機(jī)視覺中可以使用圖像數(shù)據(jù)增強(qiáng)技術(shù)。

深度學(xué)習(xí)輸入數(shù)據(jù)歸一化的原因(使數(shù)據(jù)處于同一數(shù)量級(jí),具有相同的數(shù)據(jù)分布)

  1. 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程本質(zhì)就是為了學(xué)習(xí)數(shù)據(jù)分布,一旦訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)的分布不同,那么網(wǎng)絡(luò)的泛化能力也大大降低;
  2. 數(shù)據(jù)歸一化可以在反向傳播的過程中,加快網(wǎng)絡(luò)中每一層權(quán)重參數(shù)的收斂速度。如果每批訓(xùn)練數(shù)據(jù)的分布各不相同,那么網(wǎng)絡(luò)就要在每次迭代都去學(xué)習(xí)適應(yīng)不同的數(shù)據(jù)分布,這樣將會(huì)大大降低網(wǎng)絡(luò)的訓(xùn)練速度

什么樣的數(shù)據(jù)集不適合用深度學(xué)習(xí)?

  1. 數(shù)據(jù)集太小,深度學(xué)習(xí)容易產(chǎn)生過擬合。
  2. 數(shù)據(jù)集沒有局部相關(guān)特性,目前深度學(xué)習(xí)表現(xiàn)比較好的領(lǐng)域主要是圖像/語音/自然語言處理等領(lǐng)域,這些領(lǐng)域的一個(gè)共性是局部相關(guān)性。圖像中像素組成物體,語音信號(hào)中音位組合成單詞,文本數(shù)據(jù)中單詞組合成句子,這些特征元素的組合一旦被打亂,表示的含義同時(shí)也被改變

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多