机器学习——人工神经网络之参数设置(BP算法)
目錄
一、復(fù)習(xí)(BP算法)
二、訓(xùn)練模型的建議
三、參數(shù)設(shè)置內(nèi)容
1、隨機(jī)梯度下降(SGD)
2、激活函數(shù)的選擇
(1)sigmoid
(2)tanh雙曲正切函數(shù)
3、訓(xùn)練數(shù)集初始化
4、(w,b)的初始化
?
1)什么是梯度消失現(xiàn)象?
2)什么是梯度爆炸現(xiàn)象?
3)如何對(duì)w,b進(jìn)行初始化來(lái)避免梯度消失?
?>>>問(wèn)題1:怎么從區(qū)間中均勻隨機(jī)取值?
5、Batch Normalization(不懂)
6、目標(biāo)函數(shù)的選擇處理
1)加正則項(xiàng)
2)對(duì)目標(biāo)函數(shù)進(jìn)行改造
7、參數(shù)更新策略
(1)常規(guī)的更新
2)SGD的問(wèn)題
? 3)解決SGD問(wèn)題的方法
8、訓(xùn)練建議
四、神經(jīng)網(wǎng)絡(luò)相較于SVM算法的優(yōu)劣勢(shì)
?
一、復(fù)習(xí)(BP算法)
二、訓(xùn)練模型的建議
第2點(diǎn)意思是從訓(xùn)練集中分出一部分樣本來(lái)作為驗(yàn)證數(shù)集來(lái)驗(yàn)證模型,一般是將訓(xùn)練集分成多組,每一次一組數(shù)據(jù)集作為驗(yàn)證集,每一組數(shù)據(jù)集輪換作為驗(yàn)證數(shù)集,直到所有訓(xùn)練數(shù)據(jù)都被驗(yàn)證過(guò)為止,類似于《SVM——交叉驗(yàn)證》
三、參數(shù)設(shè)置內(nèi)容
?
1、隨機(jī)梯度下降(SGD)
?
2、激活函數(shù)的選擇
(1)sigmoid
(2)tanh雙曲正切函數(shù)
3、訓(xùn)練數(shù)集初始化
常用的初始化
4、(w,b)的初始化
1)什么是梯度消失現(xiàn)象?
答:當(dāng)取sigmoid函數(shù)作為激勵(lì)函數(shù)(上圖fai函數(shù))時(shí),因?yàn)閟igmoid函數(shù)的導(dǎo)數(shù)小于等于0.25,所以當(dāng)w很小時(shí),目標(biāo)函數(shù)E對(duì)w的偏導(dǎo)后向傳播不斷地由輸出層反向向輸入層傳播訓(xùn)練,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增多,導(dǎo)數(shù)很容易再傳播的過(guò)程中變?yōu)?,使得新一輪的w,b無(wú)法進(jìn)行更新,導(dǎo)致神經(jīng)網(wǎng)絡(luò)無(wú)法被優(yōu)化,訓(xùn)練無(wú)法收斂,這稱為梯度收斂問(wèn)題。
不管是用sigmoid函數(shù)還是tanh函數(shù)作為激活函數(shù),當(dāng)激活函數(shù)的自變量很小或者很小時(shí),都會(huì)出現(xiàn)激活函數(shù)的導(dǎo)數(shù)趨于0,這種現(xiàn)象會(huì)使得目標(biāo)函數(shù)對(duì)參數(shù)w,b偏導(dǎo)即梯度趨于0,即梯度消失
一般情況下將w稱為權(quán)重,b叫做偏置參數(shù)
?
以一個(gè)例子來(lái)說(shuō)明:
以下摘自:《https://blog.csdn.net/junjun150013652/article/details/81274958》
當(dāng)神經(jīng)網(wǎng)絡(luò)有很多層,每個(gè)隱藏層都使用Sigmoid函數(shù)作為激勵(lì)函數(shù)時(shí),很容易引起梯度消失的問(wèn)題
我們知道Sigmoid函數(shù)有一個(gè)缺點(diǎn):當(dāng)x較大或較小時(shí),導(dǎo)數(shù)接近0;并且Sigmoid函數(shù)導(dǎo)數(shù)的最大值是0.25
我們將問(wèn)題簡(jiǎn)單化來(lái)說(shuō)明梯度消失問(wèn)題,假設(shè)輸入只有一個(gè)特征,沒(méi)有偏置單元,每層只有一個(gè)神經(jīng)元:?
我們先進(jìn)行前向傳播,這里將Sigmoid激勵(lì)函數(shù)寫(xiě)為s(x):
z1 = w1*x
a1 = s(z1)
z2 = w2*a1
a2 = s(z2)
...
zn = wn*an-1 (這里n-1是下標(biāo))
an = s(zn)
根據(jù)鏈?zhǔn)角髮?dǎo)和反向傳播,我們很容易得出,其中C是代價(jià)函數(shù)
?如果我們使用標(biāo)準(zhǔn)方法來(lái)初始化網(wǎng)絡(luò)中的權(quán)重,那么會(huì)使用一個(gè)均值為0標(biāo)準(zhǔn)差為1的高斯分布。因此所有的權(quán)重通常會(huì)滿足|wj|<1,而s‘是小于0.25的值,那么當(dāng)神經(jīng)網(wǎng)絡(luò)特別深的時(shí)候,梯度呈指數(shù)級(jí)衰減,導(dǎo)數(shù)在每一層至少會(huì)被壓縮為原來(lái)的1/4,當(dāng)z值絕對(duì)值特別大時(shí),導(dǎo)數(shù)趨于0,正是因?yàn)檫@兩個(gè)原因,從輸出層不斷向輸入層反向傳播訓(xùn)練時(shí),導(dǎo)數(shù)很容易逐漸變?yōu)?,使得權(quán)重和偏差參數(shù)無(wú)法被更新,導(dǎo)致神經(jīng)網(wǎng)絡(luò)無(wú)法被優(yōu)化,訓(xùn)練永遠(yuǎn)不會(huì)收斂到良好的解決方案。 這被稱為梯度消失問(wèn)題。
?
2)什么是梯度爆炸現(xiàn)象?
以下摘自:《https://www.cnblogs.com/pinking/p/9418280.html》
對(duì)于目標(biāo)函數(shù),通常存在梯度變化很大的一個(gè)“懸崖”,在此處求梯度,很容易導(dǎo)致求解不穩(wěn)定的梯度爆炸現(xiàn)象。?
?
3)如何對(duì)w,b進(jìn)行初始化來(lái)避免梯度消失?
?>>>問(wèn)題1:怎么從區(qū)間中均勻隨機(jī)取值?
答:均勻隨機(jī)數(shù)是服從均勻分布的隨機(jī)數(shù)
參考:《均勻分布的隨機(jī)數(shù)》
均勻分布的概率密度函數(shù):
產(chǎn)生均勻分布隨機(jī)數(shù)的方法如下:
首先,由給定的初值x0,用混合同余法:
產(chǎn)生(0, 1)區(qū)間上的隨機(jī)數(shù)yi。其中:a=2045,c=1,M=2^20;
然后,通過(guò)變換zi=a+(b?a)yi產(chǎn)生(a,b)區(qū)間上的隨機(jī)數(shù)zi
使用:
/************************************a ---給定區(qū)間下限b ---給定區(qū)間上限seed ---隨機(jī)數(shù)種子 ************************************/ double uniform(double a, double b, long int *seed) {double t;*seed = 2045 * (*seed) + 1;*seed = *seed - (*seed / 1048576);t = (*seed) / 1048576.0;t = a + (b - a) * t;return(t); }5、Batch Normalization(不懂)
?
?
6、目標(biāo)函數(shù)的選擇處理
1)加正則項(xiàng)
2)對(duì)目標(biāo)函數(shù)進(jìn)行改造
?
7、參數(shù)更新策略
(1)常規(guī)的更新
2)SGD的問(wèn)題
3)解決SGD問(wèn)題的方法
?
8、訓(xùn)練建議
四、神經(jīng)網(wǎng)絡(luò)相較于SVM算法的優(yōu)劣勢(shì)
總結(jié)
以上是生活随笔為你收集整理的机器学习——人工神经网络之参数设置(BP算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 华为杯数学建模竞赛百分百获奖经验分享(获
- 下一篇: spring源码系列(一)sring源码