神經網絡中的激活函數解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU

2021-02-08 AI公園

就是在神經網絡的輸出後面加的一個東西(節點)。也就是轉換函數,也可以加在兩層神經網絡之間。

我們為什麼要在神經網絡中使用激活函數?

用來決定神經網絡的輸出,就像是和否一樣,將結果映射到0到1或者-1到1之間(根據不同的函數)。

激活函數基本上分為兩種類型:

線性激活函數

非線性激活函數

供參考: 下面有速查表

線性或者說恆等激活函數

你可以看到函數是一條直線,或者說線性的。也就是說,函數的輸出不會限制在任何的範圍以內。

線性激活函數

方程: f(x) = x

範圍:(負無窮到正無窮)

它對神經網絡的複雜性和常用數據的多種多樣的參數沒什麼幫助。

非線性激活函數

非線性激活函數是最常用的激活函數,非線性的圖看起來像下面這樣:

非線性激活函數

它讓模型更加容易泛化和適應不同的數據,區別不同的輸出。

對於非線性函數,需要理解的主要的術語:

導數或者微分:在x軸上的變化導致在y軸上的變化,也就是常說的斜率。

單調函數:函數要麼是一直變大的,要麼是一直變小的。

非線性激活函數的類型主要根據它們的範圍或者曲線的類型來劃分:

1. Sigmoid或者Logistic激活函數

Sigmoid函數曲線就像個S型。

Sigmoid函數

我們使用sigmoid函數主要是因為它的輸出的範圍是0到1。所以,它常常用在那些需要預測概率的模型上面,因為概率的範圍就是0到1,sigmoid正好符合。

這個函數可微的,意思是,sigmoid曲線上的任意兩點都可以找到一個斜率。

這個函數是單調的,不過函數的導數不是單調的。

sigmoid函數可能會造成神經網絡訓練的時候卡住。

softmax函數是更加一般性的logistic激活函數,用在多類分類上。

2. Tanh激活函數

tanh和logistic sigmoid差不多,但是更好一點。tanh的函數取值範圍是-1到1,tanh也是S型的。

tanh vs Logistic Sigmoid

優點是,負的輸入會映射成負值,0輸入會被映射成0附近的值。

這個函數可微的。

這個函數是單調的,不過函數的導數不是單調的。

tanh函數主要用在區分兩個類別的時候。

tanh和logistic sigmoid激活函數都是用在前向網絡中。

3. ReLU 激活函數

ReLU是目前世界上用的最多的激活函數,幾乎所有的深度學習和卷積神經網絡中都在使用它。

ReLU vs Logistic Sigmoid

你可以看到,ReLU是半整流的,當z小於0時,f(z)是0,當z大於等於0時,f(z)等於z。

取值範圍: [ 0,無窮)

這個函數和它的導數都是單調的。

但問題是,所有的負值都會變為零,這降低了模型擬合數據的能力。這意味著任何給ReLU激活函數的負值的輸入都會在圖中立即轉換為零,這樣沒有合理的映射負值反過來又會影響結果圖。

4. Leaky ReLU

它嘗試解決ReLU的負值映射為0的問題。

ReLU vs Leaky ReLU

你看到Leak了嗎?😆

leak有助於增加ReLU函數的取值範圍,a的值是0.01或者類似的比較小的值。

當a不是0.01時,叫做Randomized ReLU。

所以,Leaky ReLU的取值範圍是(負無窮到正無窮)。

Leaky 和 Randomized ReLU函數及其導數都是單調的。

為什麼需要用到導數/微分?

當對曲線進行更新時,需要知道更新的方向和大小,這個需要依賴斜率。這就是為什麼在幾乎所有的機器學習和深度學習中我們都需要使用微分。

激活函數速查表

激活函數的導數


相關焦點

  • TF2.0-五種優化器,激活函數(sigmoid,tanh,relu,leaky relu的優缺點),損失函數,正則化等
    sigmoid,tanh,relu,leaky reluⅢ.損失函數:    MSE,自定義loss,CE交叉熵含實現Ⅳ.緩解過擬合/欠擬合的方式:,採用的激活函數relu第7行:最後的輸出層,採用的激活函數sigmoid第9~11行:compile彙編器中,optimizer優化器用的:Adam,損失函數用的二分類的交叉熵binary_crossentropy。
  • 大貝貝,激活函數 sigmoid、tanh、relu
    激活函數是連續的(continuous),且可導的(differential)。激活函數常見的激活函數:sigmoid,tanh,relu。sigmoidsigmoid是平滑(smoothened)的階梯函數(step function),可導(differentiable)。sigmoid可以將任何值轉換為0~1概率,用於二分類。
  • 總結|激活函數之sigmoid、ReLU、ELU 以及更新的 Leaky ReLU、SELU、GELU
    :書籍與論文激活函數是神經網絡中一個至關重要的部分。這個問題使得 sigmoid 函數在神經網絡中並不實用,我們應該使用後面介紹的其它激活函數。我的前一篇文章說過,如果我們想更新特定的權重,則更新規則為:但如果偏導數 ∂C/∂w^(L) 很小,如同消失了一般,又該如何呢?這時我們就遇到了梯度消失問題,其中許多權重和偏置只能收到非常小的更新。
  • Pytorch_第九篇_神經網絡中常用的激活函數
    神經網絡中常用的激活函數Introduce理論上神經網絡能夠擬合任意線性函數,其中主要的一個因素是使用了非線性激活函數(因為如果每一層都是線性變換,那有啥用啊,始終能夠擬合的都是線性函數啊)。本文主要介紹神經網絡中各種常用的激活函數。以下均為個人學習筆記,若有錯誤望指出。
  • Relu函數的優點是啥
    問題引入常見的激活函數有sigmoid, relu,Leaky ReLU等,上次我們介紹了sigmoid
  • 面試題:人工神經網絡中為什麼ReLu要好過於tanh和sigmoid?
    第一,採用sigmoid等函數,算激活函數時(指數運算),計算量大。反向傳播求誤差梯度時,求導涉及除法和指數運算,計算量相對大,而採用Relu激活函數,整個過程的計算量節省很多。第二,對於深層網絡,sigmoid函數反向傳播時,很容易就會出現梯度消失的情況(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種情況會造成信息丟失。)
  • 從ReLU到GELU,一文概覽神經網絡的激活函數
    根據每一層前面的激活、權重和偏置,我們要為下一層的每個激活計算一個值。但在將該值發送給下一層之前,我們要使用一個激活函數對這個輸出進行縮放。本文將介紹不同的激活函數。在閱讀本文之前,你可以閱讀我前一篇介紹神經網絡中前向傳播和反向傳播的文章,其中已經簡單地提及過激活函數,但還未介紹其實際所做的事情。
  • 為什麼ReLu激活函數要好於tanh和sigmoid?
    當然現在也有一些對relu的改進,比如prelu,random relu等,在不同的數據集上會有一些訓練速度上或者準確率上的改進,具體的大家可以找相關的paper看。多加一句,現在主流的做法,會多做一步batch normalization,儘可能保證每一層網絡的輸入具有相同的分布[1]。
  • 人工智慧-深度學習-激活函數ReLU,Sigmoid,TanH,ELU,MaxOut
    激活函數:在多層神經網絡中,上層節點的輸出和下層節點的輸入之間具有一個函數關係,這個函數稱為激活函數(又稱激勵函數)激活函數的本質:激活函數是來向神經網絡中引入非線性因素的,通過激活函數,神經網絡就可以擬合各種曲線。
  • 如何選擇神經網絡激活函數:有效的改善模型學習模式的能力
    什麼是人工神經網絡?典型的人工神經網絡(ANN)是受人腦工作啟發而設計的受生物啟發的電腦程式。 這些ANN稱為網絡,因為它們由不同的功能組成,這些功能通過使用過去稱為訓練示例的經驗來檢測數據中的關係和模式來收集知識。 數據中的學習模式通過適當的激活函數進行修改,並作為神經元的輸出呈現,如下圖所示:什麼是激活函數?在神經網絡模型中怎麼使用?
  • 學霸筆記丨神經網絡 丨前向傳播激勵函數與批處理 (2)
    關鍵詞:機器學習 / 神經網絡太多的廣告宣傳他們自家的課程:手把手教你從頭構建神經網絡,這回小編的神經網絡已經進入到了第二集,用 numpy 從頭搭建全連結卷積神經網絡,閒言少敘,訂閱!然後進入正題!簡介上篇文章討論完了神經網絡的神經元和初始化過程與方法,接下來要逐漸進入網絡的主要細節,嘗試讓讀者理解神經網絡厲害之處,為什麼能夠在眾多複雜且多變的圖片還能給出很棒的判斷?主要原因就在於神經網絡有很強的非線性擬合能力,而這個能力的起源則是來自於一個簡單的函數:激勵函數。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 【DL知識拾貝】Pytorch版本第一篇:激活函數大匯總
    前言我們知道,神經網絡實際上就是用於實現複雜的函數,而非線性激活函數能夠使神經網絡逼近任意複雜的函數。如果沒有激活函數引入的非線性,無論神經網絡有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,多層神經網絡就相當於單層的神經網絡,從而對數據只是做仿射變換,⽽多個仿射變換的疊加仍然是⼀個仿射變換,網絡的逼近能力就相當有限,這樣是不能學習到複雜關係的。
  • Batch Normalization應該放在ReLU非線性激活層的前面還是後面?
    BN,也就是Batch-Normalization,這名字就能讓我們想到普通的normalization(歸一化),也就是將輸入傳給神經網絡之前對輸入做的normalization。這個normalization是對輸入操作的,是在輸入層之前進行的。
  • 機器學習:人工神經網絡ANN
    神經網絡是從生物領域自然的鬼斧神工中學習智慧的一種應用。
  • 21種NLP任務激活函數大比拼:你一定猜不到誰贏了
    我們發現一種很大程度上不為人知的激活函數在所有任務上都表現得最穩定,即所謂的 penalized tanh 函數。我們還表明它能在 LSTM 單元中成功替代 sigmoid 和 tanh 門,並能在一種高難度的 NLP 任務上取得優於標準選擇 2 個百分點的表現。
  • 面試題:簡單說下sigmoid激活函數
    常用的非線性激活函數有sigmoid、tanh、relu等等,前兩者sigmoid/tanh比較常見於全連接層
  • TF2.0實現簡單神經網絡
    首先,回憶一下神經網絡由輸入層,隱藏層和輸出層三部分組成,大概長這樣注意,上面的輸入層矩陣寫的1*2,其實是輸入了一個樣本,這個樣本的維度是