為什么需要激活函數(shù)
來源:AI分析愛數(shù)據(jù) 本文約1500字,建議閱讀8分鐘
本文為你介紹激活函數(shù)中的Relu函數(shù)。
如上圖所示,神經(jīng)網(wǎng)絡中的每個神經(jīng)元節(jié)點接受上一層神經(jīng)元的輸出值作為本神經(jīng)元的輸入值,并將輸入值傳遞給下一層,輸入層神經(jīng)元節(jié)點會將輸入屬性值直接傳遞給下一層(隱層或輸出層)。在多層神經(jīng)網(wǎng)絡中,上層節(jié)點的輸出和下層節(jié)點的輸入之間具有一個函數(shù)關(guān)系,這個函數(shù)稱為激活函數(shù)。
簡單來說,激活函數(shù),并不是去激活什么,而是指如何把“激活的神經(jīng)元的特征”通過函數(shù)把特征保留并映射出來,即負責將神經(jīng)元的輸入映射到輸出端。
為什么需要激活函數(shù)?
首先明確一點,激活函數(shù)是用來加入非線性因素的,因為線性模型的表達力不夠。
假設(shè)如果沒有激活函數(shù)的出現(xiàn),你每一層節(jié)點的輸入都是上層輸出的線性函數(shù),很容易驗證,無論你神經(jīng)網(wǎng)絡有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,也就是說沒有激活函數(shù)的每層都相當于矩陣相乘。就算你疊加了若干層之后,無非還是個矩陣相乘罷了。那么網(wǎng)絡的逼近能力就相當有限。正因為上面的原因,我們決定引入非線性函數(shù)作為激活函數(shù),這樣深層神經(jīng)網(wǎng)絡表達能力就更加強大(不再是輸入的線性組合,而是幾乎可逼近任意函數(shù))
舉個例子:二分類問題,如果不使用激活函數(shù),例如使用簡單的邏輯回歸,只能作簡單的線性劃分,如下圖所示。
如果使用激活函數(shù),則可以實現(xiàn)非線性劃分,如下圖所示:
可見,激活函數(shù)能幫助我們引入非線性因素,使得神經(jīng)網(wǎng)絡能夠更好地解決更加復雜的問題。為什么激活函數(shù)一般都是非線性的,而不能是線性的呢?從反面來說,如果所有的激活函數(shù)都是線性的,則激活函數(shù) g(z)=z,即 a=z。那么,以兩層神經(jīng)網(wǎng)絡為例,最終的輸出為:
經(jīng)過推導我們發(fā)現(xiàn)網(wǎng)絡輸出仍是 X 的線性組合。這表明,使用神經(jīng)網(wǎng)絡與直接使用線性模型的效果并沒有什么兩樣。即便是包含多層隱藏層的神經(jīng)網(wǎng)絡,如果使用線性函數(shù)作為激活函數(shù),最終的輸出仍然是線性模型。這樣的話神經(jīng)網(wǎng)絡就沒有任何作用了。因此,隱藏層的激活函數(shù)必須要是非線性的。
補充一點:因為神經(jīng)網(wǎng)絡的數(shù)學基礎(chǔ)是處處可微的,所以選取的激活函數(shù)要能保證數(shù)據(jù)輸入與輸出也是可微的,運算特征是不斷進行循環(huán)計算,所以在每代循環(huán)過程中,每個神經(jīng)元的值也是在不斷變化的。
有了大概的概念后就可進入正題~
Relu函數(shù)是什么?
首先,relu函數(shù)是常見的激活函數(shù)中的一種,表達形式如下。
Relu函數(shù)的圖像和求導后的圖像如下:
從表達式和圖像可以明顯地看出:Relu其實就是個取最大值的函數(shù)。
ReLU函數(shù)其實是分段線性函數(shù),把所有的負值都變?yōu)?,而正值不變,這種操作被成為單側(cè)抑制。(也就是說:在輸入是負值的情況下,它會輸出0,那么神經(jīng)元就不會被激活。這意味著同一時間只有部分神經(jīng)元會被激活,從而使得網(wǎng)絡很稀疏,進而對計算來說是非常有效率的。)
正因為有了這單側(cè)抑制,才使得神經(jīng)網(wǎng)絡中的神經(jīng)元也具有了稀疏激活性。尤其體現(xiàn)在深度神經(jīng)網(wǎng)絡模型(如CNN)中,當模型增加N層之后,理論上ReLU神經(jīng)元的激活率將降低2的N次方倍。
使用Relu函數(shù)有什么優(yōu)勢?
-
沒有飽和區(qū),不存在梯度消失問題。 -
沒有復雜的指數(shù)運算,計算簡單、效率提高。 -
實際收斂速度較快,比 Sigmoid/tanh 快很多。 -
比 Sigmoid 更符合生物學神經(jīng)激活機制。
當然relu也存在不足:就是訓練的時候很”脆弱”,很容易就”die”了. 舉個例子:一個非常大的梯度流過一個 ReLU 神經(jīng)元,更新過參數(shù)之后,這個神經(jīng)元再也不會對任何數(shù)據(jù)有激活現(xiàn)象了。如果這個情況發(fā)生了,那么這個神經(jīng)元的梯度就永遠都會是0.實際操作中,如果你的learning rate 很大,那么很有可能你網(wǎng)絡中的40%的神經(jīng)元都”dead”了。當然,如果你設(shè)置了一個合適的較小的learning rate,這個問題發(fā)生的情況其實也不會太頻繁。
編輯:黃繼彥
