常用激活函数比较
常用激活函數比較
本文結構:
1. 什么是激活函數
如下圖,在神經元中,輸入的 inputs 通過加權,求和后,還被作用了一個函數,這個函數就是激活函數 Activation Function。
2. 為什么要用
如果不用激勵函數,每一層輸出都是上層輸入的線性函數,無論神經網絡有多少層,輸出都是輸入的線性組合。
如果使用的話,激活函數給神經元引入了非線性因素,使得神經網絡可以任意逼近任何非線性函數,這樣神經網絡就可以應用到眾多的非線性模型中。
3. 都有什么
(1) sigmoid函數(曲線很像“S”型)
公式:
曲線:
也叫 Logistic 函數,用于隱層神經元輸出
取值范圍為(0,1)
它可以將一個實數映射到(0,1)的區間,可以用來做二分類。(它不像SVM直接給出一個分類的結果,Logistic Regression給出的是這個樣本屬于正類或者負類的可能性是多少,當然在多分類的系統中給出的是屬于不同類別的可能性,進而通過可能性來分類。)
在特征相差比較復雜或是相差不是特別大時效果比較好。
sigmoid缺點:
激活函數計算量大,反向傳播求誤差梯度時,求導涉及除法
反向傳播時,很容易就會出現梯度消失的情況,從而無法完成深層網絡的訓練(sigmoid的飽和性)
下面解釋為何會出現梯度消失:
反向傳播算法中,要對激活函數求導,sigmoid 的導數表達式為:
sigmoid 原函數及導數圖形如下:
從上圖可以看到,其兩側導數逐漸趨近于0?
limx?>∞f′(x)=0
具有這種性質的稱為軟飽和激活函數。具體的,飽和又可分為左飽和與右飽和。與軟飽和對應的是硬飽和, 即
f′(x)=0,當|x|>c,其中c為常數。
f‘f ‘x)=0,當|x|>c,其中c為常數。sigmoid 的軟飽和性,使得深度神經網絡在二三十年里一直難以有效的訓練,是阻礙神經網絡發展的重要原因。具體來說,由于在后向傳遞過程中,sigmoid向下傳導的梯度包含了一個? sigmoid 的軟飽和性,使得深度神經網絡在二三十年里一直難以有效的訓練,是阻礙神經網絡發展的重要原因。具體來說,由于在后向傳遞過程中,sigmoid向下傳導的梯度包含了一個?f′(x)?因子(sigmoid關于輸入的導數),因此一旦輸入落入飽和區,f′(x)的導數就會變得接近于0,導致了向底層傳遞的梯度也變得非常小。此時,網絡參數很難得到有效訓練。這種現象被稱為梯度消失。一般來說, sigmoid 網絡在 5 層之內就會產生梯度消失現象
此外,sigmoid函數的輸出均大于0,使得輸出不是0均值,這稱為偏移現象,這會導致后一層的神經元將得到上一層輸出的非0均值的信號作為輸入。
(2) Tanh函數
公式
f’(z)=4sigmoid‘(2z)
曲線
也稱為雙切正切函數
取值范圍為[-1,1]。
tanh在特征相差明顯時的效果會很好,在循環過程中會不斷擴大特征效果。
與 sigmoid 的區別是,tanh 是 0 均值的,因此實際應用中 tanh 會比 sigmoid 更好,然而,tanh一樣具有軟飽和性,從而造成梯度消失。
(3) ReLU
Rectified Linear Unit(ReLU) - 用于隱層神經元輸出
公式
曲線
輸入信號 <0 時,輸出都是0,>0 的情況下,輸出等于輸入
ReLU 的優點:
Krizhevsky et al.?發現使用 ReLU 得到的 SGD 的收斂速度會比 sigmoid/tanh 快很多。除此之外,當x<0時,ReLU硬飽和,而當x>0時,則不存在飽和問題。所以,ReLU 能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。這讓我們能夠直接以監督的方式訓練深度神經網絡,而無需依賴無監督的逐層預訓練。
ReLU 的缺點:
隨著訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更新。這種現象被稱為“神經元死亡”。與sigmoid類似,ReLU的輸出均值也大于0,偏移現象和 神經元死亡會共同影響網絡的收斂性。
(4) softmax函數
Softmax - 用于多分類神經網絡輸出
公式
舉個例子來看公式的意思:
就是如果某一個 zj 大過其他 z, 那這個映射的分量就逼近于 1,其他就逼近于 0,主要應用就是多分類。
為什么要取指數,第一個原因是要模擬 max 的行為,所以要讓大的更大。
第二個原因是需要一個可導的函數。
4. sigmoid ,ReLU, softmax 的比較
Sigmoid 和 ReLU 比較:
sigmoid 的梯度消失問題,ReLU 的導數就不存在這樣的問題,它的導數表達式如下:
曲線如圖
對比sigmoid類函數主要變化是:
1)單側抑制
2)相對寬闊的興奮邊界
3)稀疏激活性。
Sigmoid 和 Softmax 區別:
softmax is a generalization of logistic function that “squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1.
sigmoid將一個real value映射到(0,1)的區間,用來做二分類。
而 softmax 把一個 k 維的real value向量(a1,a2,a3,a4….)映射成一個(b1,b2,b3,b4….)其中 bi 是一個 0~1 的常數,輸出神經元之和為 1.0,所以相當于概率值,然后可以根據 bi 的概率大小來進行多分類的任務。
二分類問題時 sigmoid 和 softmax 是一樣的,求的都是 cross entropy loss,而 softmax 可以用于多分類問題
softmax是sigmoid的擴展,因為,當類別數 k=2 時,softmax 回歸退化為 logistic 回歸。具體地說,當 k=2 時,softmax 回歸的假設函數為:
利用softmax回歸參數冗余的特點,從兩個參數向量中都減去向量θ1 ,得到:
最后,用 θ′ 來表示 θ2?θ1,上述公式可以表示為 softmax 回歸器預測其中一個類別的概率為
另一個類別概率的為
這與 logistic回歸是一致的。
softmax建模使用的分布是多項式分布,而logistic則基于伯努利分布
多個logistic回歸通過疊加也同樣可以實現多分類的效果,但是 softmax回歸進行的多分類,類與類之間是互斥的,即一個輸入只能被歸為一類;多個logistic回歸進行多分類,輸出的類別并不是互斥的,即"蘋果"這個詞語既屬于"水果"類也屬于"3C"類別。
5. 如何選擇
選擇的時候,就是根據各個函數的優缺點來配置,例如:
如果使用 ReLU,要小心設置 learning rate,注意不要讓網絡出現很多 “dead” 神經元,如果不好解決,可以試試 Leaky ReLU、PReLU 或者 Maxout.
參考資料:
http://feisky.xyz/machine-learning/neural-networks/active.html
http://jishu.y5y.com.cn/qq_17754181/article/details/56495406
https://www.zhihu.com/question/29021768
http://blog.csdn.net/cyh_24/article/details/50593400
http://www.itdadao.com/articles/c15a1000722p0.html
https://www.zhihu.com/question/23765351
總結
- 上一篇: KSVD
- 下一篇: few-shot learning 1.