在多層神經網路中,上層節點的輸出和下層節點的輸入之間具有乙個函式關係,這個函式稱為啟用函式。
如果沒有激勵函式,在這種情況下你每一層節點的輸入都是上層輸出的線性函式,無論你神經網路有多少層,輸出都是輸入的線性組合,相當於沒有隱藏層,網路的學習能力有限。
深度學習最主要的特點就是:多層,非線性。 多層為了能夠學習更多的東西;沒有非線性,多層和單層沒什麼區別,就是簡單的線性組合,連異或都解決不了。
感興趣的可以看這篇文章:為什麼神經網路需要解決多層和非線性問題
當啟用函式滿足如下要求,稱為右飽和:
當啟用函式滿足如下要求,稱為左飽和:
啟用函式飽和會造成梯度值接近0,導致梯度消失使模型無法收斂。
特點:它能夠把輸入的連續實值變換為0和1之間的輸出,特別的,如果是非常大的負數,那麼輸出就是0;如果是非常大的正數,輸出就是1。sigmoid啟用函式具有「連續可微」,「單調性」,「輸出值有限」。通過檢視導函式影象,sigmoid啟用函式最大的問題就是兩端飽和,造成梯度消失(解決辦法:使用relu啟用函式,bn等),此外輸出不以0中心(以0中心的好處是可以加快模型收斂)。目前sigmoid啟用函式多使用在二分類問題(對於大於二分類問題,如果類別之間存在相互關係使用sigmoid,反之使用softmax),門控機制的判斷等。
缺點:1)容易導致梯度消失。
如果我們初始化神經網路的權值為 [0,1]之間的隨機值,由反向傳播演算法的數學推導可知,梯度從後向前傳播時,每傳遞一層梯度值都會減小為原來的0.25倍,如果神經網路隱層特別多,那麼梯度在穿過多層後將變得非常小接近於0,即出現梯度消失現象。(這裡有個坑,面試官可能聽你提起反向傳播,然後問你:什麼是反向傳播?會推導公式嗎?看大佬部落格:神經網路bp反向傳播演算法原理和詳細推導流程)
bp演算法是乙個迭代演算法,它的基本思想為:
(1)先計算每一層的狀態和啟用值,直到最後一層(即訊號是前向傳播的);
(2)計算每一層的誤差,誤差的計算過程是從最後一層向前推進的(這就是反向傳播演算法名字的由來);
(3)更新引數(目標是誤差變小)。求解梯度用鏈導法則。迭代前面兩個步驟,直到滿足停止準則(比如相鄰兩次迭代的誤差的差別很小)。
問:梯度消失和梯度**?改進方法。
解決梯度**:
a.可以通過梯度截斷。通過新增正則項。
解決梯度消失:
a.將rnn改掉,使用lstm等自迴圈和門控制機制。
b.優化啟用函式,如將sigmold改為relu
c.使用batchnorm
d.使用殘差結構
可以看這篇文章 詳解機器學習中的梯度消失、**原因及其解決方法
2)sigmoid 的輸出不是0均值(即zero-centered)。
sigmoid的輸出不是零中心的。這個特性會導致為在後面神經網路的高層處理中收到不是零中心的資料。這將導致梯度下降時的晃動,因為如果資料到了神經元永遠時正數時,反向傳播時權值w就會全為正數或者負數。這將導致梯度下降不希望遇到的鋸齒形歡動。但是,如果採用這些梯度是由批資料累加起來,最終權值更新時就會更準確。因此,這是乙個麻煩一些,但是能比上面飽和的啟用問題結果好那麼一些。
(面試官看你說了資料的偏移,不是0均值,可能會問你,你會哪些normalization[規範化]方法?batch norm,layer norm會不會?這部分重新寫一篇。
tanh是雙曲正切函式,tanh函式和sigmod函式的曲線是比較相近的,咱們來比較一下看看。首先相同的是,這兩個函式在輸入很大或是很小的時候,輸出都幾乎平滑,梯度很小,不利於權重更新;不同的是輸出區間,tanh的輸出區間是在(-1,1)之間,而且整個函式是以0為中心的,這個特點比sigmod的好。與sigmoid啟用函式相比具有更大的梯度值,再加上輸出值以0為中心,模型收斂更快。不過它依然存在兩端飽和,梯度消失問題還是存在,tanh啟用函式在rnn模型中應用較多。
優點:
缺點:
relu與線性單元的區別是在其一半的定義域上輸出為0,這使得它易於優化,計算。通過影象可得,relu啟用函式的梯度不僅大,而且一致,更重要的是它沒有sigmoid,tanh啟用函式的飽和性,有效緩解了梯度消失問題。目前,relu啟用函式是神經網路隱藏層的首選。但是,它最大的問題是當輸入小於0時,輸出值為0,此時神經元將無法學習。
優點:
缺點:
leakyrelu啟用函式是relu的衍變版本,主要就是為了解決relu輸出為0的問題。如圖所示,在輸入小於0時,雖然輸出值很小但是值不為0。
leakyrelu啟用函式乙個缺點就是它有些近似線性,導致在複雜分類中效果不好。
elu和relu的區別在負區間,relu輸出為0,而elu輸出會逐漸接近-α,更具魯棒性。elu啟用函式另一優點是它將輸出值的均值控制為0(這一點確實和bn很像,bn將分布控制到均值為0,標準差為1)。
softmax單元常作為網路的輸出層,它很自然地表示了具有 k 個可能值的離散型隨機變數的概率分布。
softmax將向量等比例壓縮到[0,1]之間,且保證所有元素之和為1。
深度學習分享9 啟用函式
tf.nn.sigmoid x f x 1 1 exp x 特點 容易造成梯度消失,輸出非0均值,收斂慢,冪運算複雜,訓練時間長 深層神經網路一般不再使用sigmoid函式,因為它的導數處於0到0.25的區間,而深層神經網路的鏈式法則會導致多個這樣的導數值相乘,從而出現乙個極小的梯度,這就是梯度消失...
深度學習筆記2 啟用函式
目前啟用函式有sigmoid tanh relu leakyrelu elu。sigmoid函式 sigmoid函式表示式f x 11 e x f x frac f x 1 e x 1 sigmoid函式在遠離座標原點的時候,函式梯度非常小,在梯度反向傳播時,會造成梯度消失 梯度瀰散 無法更新引數,...
深度學習 啟用函式
如下圖,在神經元中,輸入的 inputs 通過加權,求和後,還被作用了乙個函式,這個函式就是啟用函式 activation function。啟用函式的這些特性可以很好地解釋我們為什麼要用啟用函式。函式公式和圖表如下圖 在sigmod函式中我們可以看到,其輸出是在 0,1 這個開區間內,這點很有意思...