6 種激活函數核心知識點,請務必掌握!
關鍵時刻,第一時間送達!
我們知道,神經網路模型中,各隱藏層、包括輸出層都需要激活函數(Activation Function)。我們比較熟悉的、常用的激活函數也有 ReLU、Sigmoid 等等。但是,對於各個激活函數的選取方法、區別特點還有幾點需要特別注意的地方。今天紅色石頭就和大家一起來總結一下常用激活函數 Sigmoid、tanh、ReLU、Leaky ReLU、ELU、Maxout 的關鍵知識點。
1
為什麼需要激活函數
神經網路單個神經元的基本結構由線性輸出 Z 和非線性輸出 A 兩部分組成。如下圖所示:
其中,f(x) 即為線性輸出 Z,g(x) 即為非線性輸出,g() 表示激活函數。通俗來說,激活函數一般是非線性函數,其作用是能夠給神經網路加入一些非線性因素,使得神經網路可以更好地解決較為複雜的問題。
舉個簡單的例子,二分類問題,如果不使用激活函數,例如使用簡單的邏輯回歸,只能作簡單的線性劃分,如下圖所示:
如果使用激活函數,則可以實現非線性劃分,如下圖所示:
可見,激活函數能夠幫助我們引入非線性因素,使得神經網路能夠更好地解決更加複雜的問題。
有個問題,為什麼激活函數一般都是非線性的,而不能是線性的呢?從反面來說,如果所有的激活函數都是線性的,則激活函數 g(z)=z,即 a=z。那麼,以兩層神經網路為例,最終的輸出為:
經過推導我們發現網路輸出仍是 X 的線性組合。這表明,使用神經網路與直接使用線性模型的效果並沒有什麼兩樣。即便是包含多層隱藏層的神經網路,如果使用線性函數作為激活函數,最終的輸出仍然是線性模型。這樣的話神經網路就沒有任何作用了。因此,隱藏層的激活函數必須要是非線性的。
值得一提的是,如果所有的隱藏層全部使用線性激活函數,只有輸出層使用非線性激活函數,那麼整個神經網路的結構就類似於一個簡單的邏輯回歸模型,效果與單個神經元無異。另外,如果是擬合問題而不是分類問題,輸出層的激活函數可以使用線性函數。
2
Sigmoid
激活函數 Sigmoid 的圖形表達式如下所示:
Sigmoid 函數的取值範圍在 (0,1) 之間,單調連續,求導容易,一般用於二分類神經網路的輸出層。
下面重點談一下 Sigmoid 函數的缺點。
首先,Sigmoid 函數飽和區範圍廣,容易造成梯度消失。飽和區如下圖所示:
上圖中紅色橢圓標註的飽和區曲線平緩,梯度的值很小,近似為零。而且 Sigmoid 函數的飽和區範圍很廣,例如除了 [-5,5],其餘區域都近似飽和區。這種情況很容易造成梯度消失,梯度消失會增大神經網路訓練難度,影響神經網路模型的性能。
其次,Sigmoid 函數輸出是非零對稱的,即輸出恆大於零。這會產生什麼影響呢?我們來看,假如 Sigmoid 函數的輸出為 σ(Wx+b),且滿足 0
其中,σ(Wx+b)>0,1-σ(Wx+b)>0。
若神經元的輸入 x>0,則無論 dσ 正負如何,總能得到 dW 恆為正或者恆為負。也就是說參數矩陣 W 的每個元素都會朝著同一個方向變化,同為正或同為負。這對於神經網路訓練是不利的,所有的 W 都朝著同一符號方向變化會減小訓練速度,增加模型訓練時間。就好比我們下樓梯的所需的時間總比直接滑梯下來的時間要長得多,如下圖所示:
圖中,紅色折線是上文討論的情況,藍色斜線是 W 不全朝同一方向變化的情況。
值得一提的是,針對 Sigmoid 函數的這一問題,神經元的輸入 x 常會做預處理,即將均值歸一化到零值。這樣也能有效避免dW 恆為正或者恆為負。
最後還有一點,Sigmoid 函數包含 exp 指數運算,運算成本也比較大。
3
tanh
激活函數 tanh 的圖形表達式如下所示:
tanh 函數的取值範圍在 (-1,1) 之間,單調連續,求導容易。
相比於 Sigmoid 函數,tanh 函數的優點主要有兩個:其一,收斂速度更快,如下圖所示,tanh 函數線性區斜率較 Sigmoid 更大一些。在此區域內訓練速度會更快。其二,tanh 函數輸出均值為零,也就不存在 Sigmoid 函數中 dW 恆為正或者恆為負,從而影響訓練速度的問題。
但是,tanh 函數與 Sigmoid 函數一樣,也存在飽和區梯度消失問題。其飽和區甚至比 Sigmoid 還要大一些,但不明顯。
4
ReLU
激活函數 ReLU 的全稱是 Rectified Linear Unit,其圖形表達式如下所示:
ReLU 函數是最近幾年比較火熱的激活函數之一。相比 Sigmoid 和 tanh 函數,其主要優點包括以下幾個方面:
沒有飽和區,不存在梯度消失問題。
沒有複雜的指數運算,計算簡單、效率提高。
實際收斂速度較快,大約是 Sigmoid/tanh 的 6 倍。
比 Sigmoid 更符合生物學神經激活機制。
下面這張圖對比了 ReLU 與 tanh 的收斂速度差異性。數據集是 CIFAR 10,模型是四層的卷積神經網路。圖中,實線代表 ReLU,虛線代表 tanh,ReLU 比 tanh 更快地到達了錯誤率 0.25 處。(引自論文《ImageNet Classification with Deep Convolutional Neural Networks》)
但是,ReLU 函數的缺點也比較明顯。首先,ReLU 的輸出仍然是非零對稱的,可能出現dW 恆為正或者恆為負,從而影響訓練速度。
其次,也是最為重要的,當 x
5
Leaky ReLU
Leaky ReLU 對 ReLU 進行了改進,其圖形表達式如下所示:
Leaky ReLU 的優點與 ReLU 類似:
沒有飽和區,不存在梯度消失問題。
沒有複雜的指數運算,計算簡單、效率提高。
實際收斂速度較快,大約是 Sigmoid/tanh 的 6 倍。
不會造成神經元失效,形成了「死神經元」。
當然,0.01 的係數是可調的,一般不會太大。
6
ELU
ELU(Exponential Linear Units)也是 ReLU 的一個變種,其圖形表達式如下所示:
ELU 繼承了 Leaky ReLU 的所有優點:
沒有飽和區,不存在梯度消失問題。
沒有複雜的指數運算,計算簡單、效率提高。
實際收斂速度較快,大約是 Sigmoid/tanh 的 6 倍。
不會造成神經元失效,形成了「死神經元」。
輸出均值為零
負飽和區的存在使得 ELU 比 Leaky ReLU 更加健壯,抗雜訊能力更強。
但是,ELU 包含了指數運算,存在運算量較大的問題。
7
Maxout
Maxout 最早出現在 ICML2013 上,由 Goodfellow 提出。其表達式如下所示:
Maxout 的擬合能力是非常強的,它可以擬合任意的的凸函數。最直觀的解釋就是任意的凸函數都可以由分段線性函數以任意精度擬合,而 Maxout 又是取 k 個隱藏層節點的最大值,這些」隱藏層"節點也是線性的,所以在不同的取值範圍下,最大值也可以看做是分段線性的(上面的公式中 k = 2)。
上圖引自論文《Maxout Networks. Ian J. Goodfellow, David Warde-Farley, Mehdi Mirza, Aaron Courville, Yoshua Bengio》,可以說,Maxout 可以擬合任意凸函數,k 值越大,分段越多,擬合效果也就越好。
Maxout 保證了始終是線性區域,沒有飽和區,訓練速度快,而且不會出現壞死神經元。
8
如何選擇合適的激活函數
1)首選 ReLU,速度快,但是要注意學習速率的調整,
2)如果 ReLU 效果欠佳,嘗試使用 Leaky ReLU、ELU 或 Maxout 等變種。
3)可以嘗試使用 tanh。
4)Sigmoid 和 tanh 在 RNN(LSTM、注意力機制等)結構中有所應用,作為門控或者概率值。其它情況下,減少 Sigmoid 的使用。
5)在淺層神經網路中,選擇使用哪種激勵函數影響不大。


※白話生成對抗網路 GAN,50 行代碼玩轉 GAN 模型!附源碼
TAG:AI有道 |