|
深度神經(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.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)系 由于DNN層數(shù)多,參數(shù)較多,線性關(guān)系系數(shù)w和偏倚b的定義需要一定的規(guī)則。線性關(guān)系系數(shù)w的定義:第二層的第4個(gè)神經(jīng)元到第三層的第2個(gè)神經(jīng)元的線性系數(shù)定義為
偏倚b的定義:第二層的第三個(gè)神經(jīng)元對(duì)應(yī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ù)的形式:
另外, 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ù):
tanh激活函數(shù)和sigmoid激活函數(shù)的關(guān)系為:
它的導(dǎo)數(shù)就是sigmoid函數(shù)。softplus的函數(shù)圖像和ReLU有些類似。它出現(xiàn)的比ReLU早,可以視為ReLU的鼻祖。
正則化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ì)算中 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):
深度神經(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)
缺點(diǎ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ù): 將輸出層的激活函數(shù)從Sigmoid之類的函數(shù)轉(zhuǎn)變?yōu)镾oftmax激活函數(shù)可以使輸出層神經(jīng)元輸出的值在0到1之間,同時(shí)所有輸出值之和為1,可用于解決多分類問題。
DNN激活函數(shù)和損失函數(shù)小結(jié):
正則化(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的正則化的異同
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ù)分布)
什么樣的數(shù)據(jù)集不適合用深度學(xué)習(xí)?
|
|
|