深度學習中常用的激勵函式

2021-08-16 00:09:03 字數 2490 閱讀 9994

我們知道深度學習的理論基礎是神經網路,在單層神經網路中(感知機),輸入和輸出計算關係如下圖所示:

可見,輸入與輸出是乙個線性關係,對於增加了多個神經元之後,計算公式也是類似,如下圖:

這樣的模型就只能處理一些簡單的線性資料,而對於非線性資料則很難有效地處理(也可通過組合多個不同線性表示,但這樣更加複雜和不靈活),如下圖所示:

那麼,通過在神經網路中加入非線性激勵函式後,神經網路就有可能學習到平滑的曲線來實現對非線性資料的處理了。如下圖所示:

因此,神經網路中激勵函式的作用通俗上講就是將多個線性輸入轉換為非線性的關係。如果不使用激勵函式的話,神經網路的每層都只是做線性變換,即使是多層輸入疊加後也還是線性變換。通過激勵函式引入非線性因素後,使神經網路的表示能力更強了。

下面介紹幾個常用的激勵函式

1、sigmoid 函式

這應該是神經網路中使用最頻繁的激勵函式了,它把乙個實數壓縮至0到1之間,當輸入的數字非常大的時候,結果會接近1,當輸入非常大的負數時,則會得到接近0的結果。在早期的神經網路中使用得非常多,因為它很好地解釋了神經元受到刺激後是否被啟用和向後傳遞的場景(0:幾乎沒有被啟用,1:完全被啟用),不過近幾年在深度學習的應用中比較少見到它的身影,因為使用sigmoid函式容易出現梯度瀰散或者梯度飽和。當神經網路的層數很多時,如果每一層的激勵函式都採用sigmoid函式的話,就會產生梯度瀰散的問題,因為利用反向傳播更新引數時,會乘以它的導數,所以會一直減小。如果輸入的是比較大或者比較小的數(例如輸入100,經sigmoid函式後結果接近於1,梯度接近於0),會產生飽和效應,導致神經元類似於死亡狀態。

【小白科普】什麼是飽和呢?

2、tanh 函式

tanh函式將輸入值壓縮至-1到1之間。該函式與sigmoid類似,也存在著梯度瀰散或梯度飽和的缺點。

3、relu函式

relu是修正線性單元(the rectified linear unit)的簡稱,近些年來在深度學習中使用得很多,可以解決梯度瀰散問題,因為它的導數等於1或者就是0。相對於sigmoid和tanh激勵函式,對relu求梯度非常簡單,計算也很簡單,可以非常大程度地提公升隨機梯度下降的收斂速度。(因為relu是線性的,而sigmoid和tanh是非線性的)。

但relu的缺點是比較脆弱,隨著訓練的進行,可能會出現神經元死亡的情況,例如有乙個很大的梯度流經relu單元後,那權重的更新結果可能是,在此之後任何的資料點都沒有辦法再啟用它了。如果發生這種情況,那麼流經神經元的梯度從這一點開始將永遠是0。也就是說,relu神經元在訓練中不可逆地死亡了。

4、leaky relu 函式

leaky relu主要是為了避免梯度消失,當神經元處於非啟用狀態時,允許乙個非0的梯度存在,這樣不會出現梯度消失,收斂速度快。它的優缺點跟relu類似。

5、elu 函式

elu在正值區間的值為x本身,這樣減輕了梯度瀰散問題(x>0區間導數處處為1),這點跟relu、leaky relu相似。而在負值區間,elu在輸入取較小值時具有軟飽和的特性,提公升了對雜訊的魯棒性

下圖是relu、lrelu、elu的曲線比較圖:

6、maxout 函式

maxout也是近些年非常流行的激勵函式,簡單來說,它是relu和leaky relu的乙個泛化版本,當w1、b1設定為0時,便轉換為relu公式。

因此,maxout繼承了relu的優點,同時又沒有「一不小心就掛了」的擔憂。但相比relu,因為有2次線性對映運算,因此計算量也會翻倍。

深度學習中常用的激勵函式

我們知道深度學習的理論基礎是神經網路,在單層神經網路中 感知機 輸入和輸出計算關係如下圖所示 可見,輸入與輸出是乙個線性關係,對於增加了多個神經元之後,計算公式也是類似,如下圖 這樣的模型就只能處理一些簡單的線性資料,而對於非線性資料則很難有效地處理 也可通過組合多個不同線性表示,但這樣更加複雜和不...

深度學習的激勵函式

1.sigmoid函式 s x 1 1 exp x 導數為 s x 1 s x 這個數值不會超過0.25.通過sigmoid函式計算的函式值在0 1之間,如果神經網路的層數很多,如果每一層的激勵函式採用sigmoid函式,就會產生梯度瀰散的問題。因為利用bp函式更新引數的時候,會乘以它的導數,所以會...

pytorch 學習筆記(三) 激勵函式

學習自 莫煩python 一句話概括 activation 就是讓神經網路可以描述非線性問題的步驟,是神經網路變得更強大 1.啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。2.激勵函式要考慮到線性所收到的約束條件,也就是掰彎線性函式 3.它其實就是另外乙個非線性函式.比如說relu,...