資源 | 從ReLU到Sinc,26種神經網絡激活函數可視化

2021-03-02 機器之心

在本文中,作者對包括 Relu、Sigmoid 在內的 26 種激活函數做了可視化,並附上了神經網絡的相關屬性,為大家了解激活函數提供了很好的資源。

在神經網絡中,激活函數決定來自給定輸入集的節點的輸出,其中非線性激活函數允許網絡複製複雜的非線性行為。正如絕大多數神經網絡藉助某種形式的梯度下降進行優化,激活函數需要是可微分(或者至少是幾乎完全可微分的)。此外,複雜的激活函數也許產生一些梯度消失或爆炸的問題。因此,神經網絡傾向於部署若干個特定的激活函數(identity、sigmoid、ReLU 及其變體)。

下面是 26 個激活函數的圖示及其一階導數,圖的右側是一些與神經網絡相關的屬性。

1. Step

激活函數 Step 更傾向於理論而不是實際,它模仿了生物神經元要麼全有要麼全無的屬性。它無法應用於神經網絡,因為其導數是 0(除了零點導數無定義以外),這意味著基於梯度的優化方法並不可行。

2. Identity

通過激活函數 Identity,節點的輸入等於輸出。它完美適合於潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用於回歸任務。

3. ReLU

修正線性單元(Rectified linear unit,ReLU)是神經網絡中最常用的激活函數。它保留了 step 函數的生物學啟發(只有輸入超出閾值時神經元才激活),不過當輸入為正的時候,導數不為零,從而允許基於梯度的學習(儘管在 x=0 的時候,導數是未定義的)。使用這個函數能使計算變得很快,因為無論是函數還是其導數都不包含複雜的數學運算。然而,當輸入為負值的時候,ReLU 的學習速度可能會變得很慢,甚至使神經元直接無效,因為此時輸入小於零而梯度為零,從而其權重無法得到更新,在剩下的訓練過程中會一直保持靜默。

4. Sigmoid

Sigmoid 因其在 logistic 回歸中的重要地位而被人熟知,值域在 0 到 1 之間。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了概率的概念。它的導數是非零的,並且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為標準的激活函數,因為後者為奇函數(關於原點對稱)。

5. Tanh

在分類任務中,雙曲正切函數(Tanh)逐漸取代 Sigmoid 函數作為標準的激活函數,其具有很多神經網絡所鍾愛的特徵。它是完全可微分的,反對稱,對稱中心在原點。為了解決學習緩慢和/或梯度消失問題,可以使用這個函數的更加平緩的變體(log-log、softsign、symmetrical sigmoid 等等)

6. Leaky ReLU

經典(以及廣泛使用的)ReLU 激活函數的變體,帶洩露修正線性單元(Leaky ReLU)的輸出對負值輸入有很小的坡度。由於導數總是不為零,這能減少靜默神經元的出現,允許基於梯度的學習(雖然會很慢)。

7. PReLU

參數化修正線性單元(Parameteric Rectified Linear Unit,PReLU)屬於 ReLU 修正類激活函數的一員。它和 RReLU 以及 Leaky ReLU 有一些共同點,即為負值輸入添加了一個線性項。而最關鍵的區別是,這個線性項的斜率實際上是在模型訓練中學習到的。

8. RReLU

隨機帶洩露的修正線性單元(Randomized Leaky Rectified Linear Unit,RReLU)也屬於 ReLU 修正類激活函數的一員。和 Leaky ReLU 以及 PReLU 很相似,為負值輸入添加了一個線性項。而最關鍵的區別是,這個線性項的斜率在每一個節點上都是隨機分配的(通常服從均勻分布)。

9. ELU

指數線性單元(Exponential Linear Unit,ELU)也屬於 ReLU 修正類激活函數的一員。和 PReLU 以及 RReLU 類似,為負值輸入添加了一個非零輸出。和其它修正類激活函數不同的是,它包括一個負指數項,從而防止靜默神經元出現,導數收斂為零,從而提高學習效率。

10. SELU

擴展指數線性單元(Scaled Exponential Linear Unit,SELU)是激活函數指數線性單元(ELU)的一個變種。其中λ和α是固定數值(分別為 1.0507 和 1.6726)。這些值背後的推論(零均值/單位方差)構成了自歸一化神經網絡的基礎(SNN)。

11. SReLU

S 型整流線性激活單元(S-shaped Rectified Linear Activation Unit,SReLU)屬於以 ReLU 為代表的整流激活函數族。它由三個分段線性函數組成。其中兩種函數的斜度,以及函數相交的位置會在模型訓練中被學習。

12. Hard Sigmoid

Hard Sigmoid 是 Logistic Sigmoid 激活函數的分段線性近似。它更易計算,這使得學習計算的速度更快,儘管首次派生值為零可能導致靜默神經元/過慢的學習速率(詳見 ReLU)。

13. Hard Tanh

Hard Tanh 是 Tanh 激活函數的線性分段近似。相較而言,它更易計算,這使得學習計算的速度更快,儘管首次派生值為零可能導致靜默神經元/過慢的學習速率(詳見 ReLU)。

14. LeCun Tanh

LeCun Tanh(也被稱作 Scaled Tanh)是 Tanh 激活函數的擴展版本。它具有以下幾個可以改善學習的屬性:f(± 1) = ±1;二階導數在 x=1 最大化;且有效增益接近 1。

15. ArcTan

視覺上類似於雙曲正切(Tanh)函數,ArcTan 激活函數更加平坦,這讓它比其他雙曲線更加清晰。在默認情況下,其輸出範圍在-π/2 和π/2 之間。其導數趨向於零的速度也更慢,這意味著學習的效率更高。但這也意味著,導數的計算比 Tanh 更加昂貴。

16. Softsign

Softsign 是 Tanh 激活函數的另一個替代選擇。就像 Tanh 一樣,Softsign 是反對稱、去中心、可微分,並返回-1 和 1 之間的值。其更平坦的曲線與更慢的下降導數表明它可以更高效地學習。另一方面,導數的計算比 Tanh 更麻煩。

17. SoftPlus

作為 ReLU 的一個不錯的替代選擇,SoftPlus 能夠返回任何大於 0 的值。與 ReLU 不同,SoftPlus 的導數是連續的、非零的,無處不在,從而防止出現靜默神經元。然而,SoftPlus 另一個不同於 ReLU 的地方在於其不對稱性,不以零為中心,這興許會妨礙學習。此外,由於導數常常小於 1,也可能出現梯度消失的問題。

18. Signum

激活函數 Signum(或者簡寫為 Sign)是二值階躍激活函數的擴展版本。它的值域為 [-1,1],原點值是 0。儘管缺少階躍函數的生物動機,Signum 依然是反對稱的,這對激活函數來說是一個有利的特徵。

19. Bent Identity

激活函數 Bent Identity 是介於 Identity 與 ReLU 之間的一種折衷選擇。它允許非線性行為,儘管其非零導數有效提升了學習並克服了與 ReLU 相關的靜默神經元的問題。由於其導數可在 1 的任意一側返回值,因此它可能容易受到梯度爆炸和消失的影響。

20. Symmetrical Sigmoid

Symmetrical Sigmoid 是另一個 Tanh 激活函數的變種(實際上,它相當於輸入減半的 Tanh)。和 Tanh 一樣,它是反對稱的、零中心、可微分的,值域在 -1 到 1 之間。它更平坦的形狀和更慢的下降派生表明它可以更有效地進行學習。

21. Log Log

Log Log 激活函數(由上圖 f(x) 可知該函數為以 e 為底的嵌套指數函數)的值域為 [0,1],Complementary Log Log 激活函數有潛力替代經典的 Sigmoid 激活函數。該函數飽和地更快,且零點值要高於 0.5。

22. Gaussian

高斯激活函數(Gaussian)並不是徑向基函數網絡(RBFN)中常用的高斯核函數,高斯激活函數在多層感知機類的模型中並不是很流行。該函數處處可微且為偶函數,但一階導會很快收斂到零。

23. Absolute

顧名思義,絕對值(Absolute)激活函數返回輸入的絕對值。該函數的導數除了零點外處處有定義,且導數的量值處處為 1。這種激活函數一定不會出現梯度爆炸或消失的情況。

24. Sinusoid

如同餘弦函數,Sinusoid(或簡單正弦函數)激活函數為神經網絡引入了周期性。該函數的值域為 [-1,1],且導數處處連續。此外,Sinusoid 激活函數為零點對稱的奇函數。

25. Cos

如同正弦函數,餘弦激活函數(Cos/Cosine)為神經網絡引入了周期性。它的值域為 [-1,1],且導數處處連續。和 Sinusoid 函數不同,餘弦函數為不以零點對稱的偶函數。

26. Sinc

Sinc 函數(全稱是 Cardinal Sine)在信號處理中尤為重要,因為它表徵了矩形函數的傅立葉變換(Fourier transform)。作為一種激活函數,它的優勢在於處處可微和對稱的特性,不過它比較容易產生梯度消失的問題。

原文連結:https://dashee87.github.io/data%20science/deep%20learning/visualising-activation-functions-in-neural-networks/

 

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

✄---

加入機器之心(全職記者/實習生):hr@jiqizhixin.com

投稿或尋求報導:content@jiqizhixin.com

廣告&商務合作:bd@jiqizhixin.com

相關焦點

  • ReLU到Sinc的26種神經網絡激活函數可視化大盤點
    在神經網絡中,激活函數決定來自給定輸入集的節點的輸出,其中非線性激活函數允許網絡複製複雜的非線性行為。正如絕大多數神經網絡藉助某種形式的梯度下降進行優化,激活函數需要是可微分(或者至少是幾乎完全可微分的)。此外,複雜的激活函數也許產生一些梯度消失或爆炸的問題。
  • 一文看盡26種神經網絡激活函數(從ReLU到Sinc)
    種激活函數做了可視化,並附上了神經網絡的相關屬性,為大家了解激活函數提供了很好的資源。在神經網絡中,激活函數決定來自給定輸入集的節點的輸出,其中非線性激活函數允許網絡複製複雜的非線性行為。正如絕大多數神經網絡藉助某種形式的梯度下降進行優化,激活函數需要是可微分(或者至少是幾乎完全可微分的)。此外,複雜的激活函數也許產生一些梯度消失或爆炸的問題。因此,神經網絡傾向於部署若干個特定的激活函數(identity、sigmoid、ReLU 及其變體)。
  • 從ReLU到GELU,一文概覽神經網絡的激活函數
    根據每一層前面的激活、權重和偏置,我們要為下一層的每個激活計算一個值。但在將該值發送給下一層之前,我們要使用一個激活函數對這個輸出進行縮放。本文將介紹不同的激活函數。在閱讀本文之前,你可以閱讀我前一篇介紹神經網絡中前向傳播和反向傳播的文章,其中已經簡單地提及過激活函數,但還未介紹其實際所做的事情。
  • TF2.0-五種優化器,激活函數(sigmoid,tanh,relu,leaky relu的優缺點),損失函數,正則化等
    【最常用】,SGDM,Adagrad,RMSProp,Adam   【文中圖因尺寸較大,放大可能不清晰,點擊原文連結獲取腦圖和代碼(含注釋),本文的代碼較多,文章內不附代碼,針對iris數據集,手動實現五種優化器,手動構建神經網絡加入激活函數】我們構建神經網絡模型的時候
  • 乾貨|通過函數圖像,理解26種神經網絡激活函數
    種激活函數做了可視化,並附上了神經網絡的相關屬性,為大家了解激活函數提供了很好的資源。在神經網絡中,激活函數決定來自給定輸入集的節點的輸出,其中非線性激活函數允許網絡複製複雜的非線性行為。正如絕大多數神經網絡藉助某種形式的梯度下降進行優化,激活函數需要是可微分(或者至少是幾乎完全可微分的)。此外,複雜的激活函數也許產生一些梯度消失或爆炸的問題。因此,神經網絡傾向於部署若干個特定的激活函數(identity、sigmoid、ReLU 及其變體)。
  • 大貝貝,激活函數 sigmoid、tanh、relu
    激活函數(activation functions)的目標是,將神經網絡非線性化。
  • 通過函數圖像,了解26種神經網絡激活函數都長啥樣.
    重磅乾貨,第一時間送達在本文中,作者對包括 Relu、Sigmoid 在內的 26 種激活函數做了可視化,並附上了神經網絡的相關屬性
  • 如何選擇神經網絡激活函數:有效的改善模型學習模式的能力
    激活函數是神經網絡中用於計算輸入和偏差的加權和的函數,用於確定神經元是否可以釋放。 它通常通過梯度下降法的某種梯度處理來操縱數據,然後產生神經網絡的輸出,該輸出包含數據中的參數。 有時這些激活函數通常稱為傳遞函數。激活函數具有改善數據學習模式的能力,從而實現了特徵檢測過程的自動化,並證明它們在神經網絡的隱藏層中的使用合理性,並且對於跨領域進行分類很有用。
  • 神經網絡中的激活函數解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU
    就是在神經網絡的輸出後面加的一個東西(節點)。也就是轉換函數,也可以加在兩層神經網絡之間。我們為什麼要在神經網絡中使用激活函數?用來決定神經網絡的輸出,就像是和否一樣,將結果映射到0到1或者-1到1之間(根據不同的函數)。
  • Pytorch_第九篇_神經網絡中常用的激活函數
    神經網絡中常用的激活函數Introduce理論上神經網絡能夠擬合任意線性函數,其中主要的一個因素是使用了非線性激活函數(因為如果每一層都是線性變換,那有啥用啊,始終能夠擬合的都是線性函數啊)。本文主要介紹神經網絡中各種常用的激活函數。以下均為個人學習筆記,若有錯誤望指出。
  • 總結|激活函數之sigmoid、ReLU、ELU 以及更新的 Leaky ReLU、SELU、GELU
    :書籍與論文激活函數是神經網絡中一個至關重要的部分。很明顯,這是有問題的:梯度很小,如同消失了一樣,使得神經網絡中的權重幾乎沒有更新。這會導致網絡中的節點離其最優值相去甚遠。這個問題會嚴重妨礙神經網絡的學習。人們已經觀察到,如果不同層的學習速度不同,那麼這個問題還會變得更加嚴重。層以不同的速度學習,前面幾層總是會根據學習率而變得更差。
  • Relu函數的優點是啥
    問題引入常見的激活函數有sigmoid, relu,Leaky ReLU等,上次我們介紹了sigmoid
  • 完勝ReLU!斯坦福的神經網絡用這種激活函數,高保真還原圖像視頻
    相比於ReLU、TanH等非周期性的激活函數來說,SIREN將正弦周期函數用作激活函數,相當於為神經網絡引入了周期性。由於周期性的正弦激活函數處處可微,使得其能夠快速適應複雜信號,很好地對自然圖像空間進行參數化,建模更為精細。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 人工神經網絡的驅動者:激活函數是什麼?
    從技術上來講,某個節點的激活函數將其在神經網絡中前一個節點的數據輸入,並輸出一個確定值,這個值繼而指導後續節點如何發動來響應特定輸入信號。本文剖析由激活函數組成的神經網絡,以及神經網絡的生物類似物,並簡要介紹幾種常用的激活函數。神經網絡的結構作為一名數據科學愛好者,你一定見過上面的這張圖片或者與之相似的圖片。這張圖片是對雙層神經網絡工作流程的經典描述。
  • 為什麼ReLu激活函數要好於tanh和sigmoid?
    當然現在也有一些對relu的改進,比如prelu,random relu等,在不同的數據集上會有一些訓練速度上或者準確率上的改進,具體的大家可以找相關的paper看。多加一句,現在主流的做法,會多做一步batch normalization,儘可能保證每一層網絡的輸入具有相同的分布[1]。
  • 資源| MIT提出Matlab插件mNeuron:實現深度模型神經元的可視化
    隨著層的深度的增加,神經元學著去識別簡單的邊沿、斑點和紋理圖案,以及複雜的物體局部和類別(從 Conv 網絡的第 5 層,我們檢索了真實圖像從而與 Zhou et al. 的結果進行對比)。b.鑲嵌藝術(Tessellation Art)我們不會在 1x1 的接受域(receptive field)內對單神經元的激活值進行優化,我們把接受域延伸到了全圖範圍(GoogleNet inception4a—14x14)。我們手動整理了一些神經元的可視化結果,從而把物體的局部鑲嵌進藝術牆紙。c.
  • 使用Python可視化卷積神經網絡方法匯總
    通常,下面列出的原因是一個深度學習實踐者要記住的最重要的知識點:讓我們看一個例子,在這個例子中,可視化一個神經網絡模型有助於理解模型一些不好的行為和提高性能(下面的例子來自:http://intelligence.org/files/AIPosNegFactor.pdf)。曾幾何時,美國陸軍想使用神經網絡來自動檢測偽裝的敵方坦克。
  • 21種NLP任務激活函數大比拼:你一定猜不到誰贏了
    目前最流行的激活函數之一是ReLU,但研究者最近又提出或「發現」了幾種競爭者,其中包括 LReLU 函數和 swish。大多數研究都是在少數幾種任務上比較新提出的激活函數(通常是圖像分類方面的任務),且對比的競爭者也少(通常是 ReLU),而我們首次在 8 種不同的 NLP 任務上進行了 21 種激活函數的大規模比較。
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...