在深度視覺的三大基本任務中,我們構建乙個卷積神經網路,啟用函式是必不可少的,例如sigmoid,relu等,下面我們來介紹下啟用函式。
如圖所示:
不使用啟用函式的話,神經網路的每層都只是做線性變換,線性函式無論疊加多少層,都是線性的,只是斜率和截距不同,疊加網路對解決實際問題沒有多大幫助;因為需要神經網路解決的實際問題基本都是非線性的。
我們現在有乙個任務,要分4個類別,用下面兩個圖來說明:
從以上兩幅對比,用了啟用函式分類效果更準確,這也說明非線性擬合能力更強。
線性非線性在這裡就可以理解為直線和曲線。sigmoid其實光理解直線和曲線不太嚴謹,不過這裡不影響後續學習。
函式公式:
s ig
moid
=11+
e−xsigmoid = \frac}
sigmoi
d=1+
e−x1
函式影象如圖所示
sigmoid函式:輸出值範圍為[0,1]之間的實數,用作2分類問題。
缺點:sigmoid函式飽和使梯度消失。
sigmoid函式輸出不是零為中心,即zigziag現象,收斂慢。
指數函式計算比較消耗計算資源。
tanh
函式公式:
t an
h=1−
e−x1
+e−x
tanh = \frac}}
tanh=1
+e−x
1−e−
x函式影象如下圖所示:
優點:tanh解決了sigmoid的輸出非「零為中心」的問題
缺點:依然有sigmoid函式過飽和的問題。
依然進行的是指數運算
relu
函式公式:
r el
u=ma
x(0,
x)relu = max(0, x)
relu=m
ax(0
,x)優點:
relu解決了梯度消失的問題,至少x在正區間內,神經元不會飽和。
由於relu線性、非飽和的形式,在sgd中能夠快速收斂。
算速度要快很多。relu函式只有線性關係,不需要指數計算,計算速度都比sigmoid和tanh快。
缺點:relu的輸出不是「零為中心」。
隨著訓練的進行,可能會出現神經元死亡,權重無法更新的情況。這種神經元的死亡是不可逆轉的死亡。
常用的還是relu函式,當你不知道用啥,就用relu。softmax
softmax簡單理解:將輸出值變成概率化。
公式:
其直觀理解:
,對應的值為[31
−3][3~~~1 ~~-3]
[31−3]
,經過softmax函式作用,就是將輸出的值,帶入saoftmax公式,得到的y
yy就會被對映到(01
)(0 ~1)
(01)
之間,這些值的和為1
11,在最後的輸出選取概率輸出的最大值為分類結果,上圖中就是z1,
3z_1,3
z1,
3對應的輸出y
1y_1
y1的概率值最大,他的索引值,即為我們的目標分類 0
00 。
通常來說,不能把各種啟用函式串起來在乙個網路中使用。
如果使用relu,那麼一定要小心設定學習率(learning rate),並且要注意不要讓網路**現很多死亡神經元。
盡量不要使用sigmoid啟用函式,可以試試tanh,不過我還是感覺tanh的效果會比不上relu。
深度學習之啟用函式
sigmoid啟用函式 sigmoid將乙個實數輸入對映到 0,1 範圍內,如下圖 左 所示。使用sigmoid作為啟用函式存在以下幾個問題 梯度飽和。當函式啟用值接近於0或者1時,函式的梯度接近於0。在反向傳播計算梯度過程中 l w l t l 1 f z l 每層殘差接近於0,計算出的梯度也不可...
深度學習之啟用函式
啟用函式 activate function 在神經元中非常重要,為了增強網路的表示能力和學習能力,啟用函式需要具備以下幾點性質 1 連續並可導的非線性函式,以便於利用數值優化的方法來學習網路引數。2 啟用函式及其導數要盡可能簡單,以提高網路計算的效率。3 啟用函式的導函式的值域要在乙個合適的區間內...
深度學習 深度學習基礎知識 Adagrad
adagrad是一種基於梯度的優化演算法 它將學習速率與引數相適應,對不同的變數提供不同的學習率 它增加了罕見但資訊豐富的特徵的影響 因此,它非常適合處理稀疏資料。在基本的梯度下降法優化中,有個乙個常見問題是,要優化的變數對於目標函式的依賴是各不相同的。對於某些變數,已經優化到了極小值附近,但是有的...