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