在reddit上刷到一張非常 形象 的圖。激活函數(Activation Function)是一種添加到人工神經網絡中的函數,旨在幫助網絡學習數據中的復雜模式。類似于人類大腦中基于神經元的模型,激活函數最終決定了要發(fā)射給下一個神經元的內容。在人工神經網絡中,一個節(jié)點的激活函數定義了該節(jié)點在給定的輸入或輸入集合下的輸出。標準的計算機芯片電路可以看作是根據輸入得到開(1)或關(0)輸出的數字電路激活函數。因此,激活函數是確定神經網絡輸出的數學方程式,本文概述了深度學習中常見的十種激活函數及其優(yōu)缺點。首先我們來了解一下人工神經元的工作原理,大致如下:Sigmoid 函數的圖像看起來像一個 S 形曲線。在什么情況下適合使用 Sigmoid 激活函數呢?Sigmoid 函數的輸出范圍是 0 到 1。由于輸出值限定在 0 到 1,因此它對每個神經元的輸出進行了歸一化;
用于將預測概率作為輸出的模型。由于概率的取值范圍是 0 到 1,因此 Sigmoid 函數非常合適;
梯度平滑,避免「跳躍」的輸出值;
函數是可微的。這意味著可以找到任意兩個點的 sigmoid 曲線的斜率;
明確的預測,即非常接近 1 或 0。
tanh 激活函數的圖像也是 S 形,表達式如下:tanh 是一個雙曲正切函數。tanh 函數和 sigmoid 函數的曲線相對相似。但是它比 sigmoid 函數更有一些優(yōu)勢。注意:在一般的二元分類問題中,tanh 函數用于隱藏層,而 sigmoid 函數用于輸出層,但這并不是固定的,需要根據特定問題進行調整。ReLU 激活函數圖像如上圖所示,函數表達式如下:ReLU 函數是深度學習中較為流行的一種激活函數,相比于 sigmoid 函數和 tanh 函數,它具有如下優(yōu)點:Dead ReLU 問題。當輸入為負時,ReLU 完全失效,在正向傳播過程中,這不是問題。有些區(qū)域很敏感,有些則不敏感。但是在反向傳播過程中,如果輸入負數,則梯度將完全為零,sigmoid 函數和 tanh 函數也具有相同的問題;
我們發(fā)現 ReLU 函數的輸出為 0 或正數,這意味著 ReLU 函數不是以 0 為中心的函數。
它是一種專門設計用于解決 Dead ReLU 問題的激活函數:為什么 Leaky ReLU 比 ReLU 更好?Leaky ReLU 通過把 x 的非常小的線性分量給予負輸入(0.01x)來調整負值的零梯度(zero gradients)問題;
leak 有助于擴大 ReLU 函數的范圍,通常 a 的值為 0.01 左右;
Leaky ReLU 的函數范圍是(負無窮到正無窮)。
注意:從理論上講,Leaky ReLU 具有 ReLU 的所有優(yōu)點,而且 Dead ReLU 不會有任何問題,但在實際操作中,尚未完全證明 Leaky ReLU 總是比 ReLU 更好。ELU vs Leaky ReLU vs ReLUELU 的提出也解決了 ReLU 的問題。與 ReLU 相比,ELU 有負值,這會使激活的平均值接近零。均值激活接近于零可以使學習更快,因為它們使梯度更接近自然梯度。顯然,ELU 具有 ReLU 的所有優(yōu)點,并且:沒有 Dead ReLU 問題,輸出的平均值接近 0,以 0 為中心;
ELU 通過減少偏置偏移的影響,使正常梯度更接近于單位自然梯度,從而使均值向零加速學習;
ELU 在較小的輸入下會飽和至負值,從而減少前向傳播的變異和信息。
一個小問題是它的計算強度更高。與 Leaky ReLU 類似,盡管理論上比 ReLU 要好,但目前在實踐中沒有充分的證據表明 ELU 總是比 ReLU 好。6. PReLU(Parametric ReLU)看一下 PReLU 的公式:參數α通常為 0 到 1 之間的數字,并且通常相對較小。如果 a_i= 0,則 f 變?yōu)?ReLU
如果 a_i> 0,則 f 變?yōu)?leaky ReLU
如果 a_i 是可學習的參數,則 f 變?yōu)?PReLU
在負值域,PReLU 的斜率較小,這也可以避免 Dead ReLU 問題。
與 ELU 相比,PReLU 在負值域是線性運算。盡管斜率很小,但不會趨于 0。
Softmax 是用于多類分類問題的激活函數,在多類分類問題中,超過兩個類標簽則需要類成員關系。對于長度為 K 的任意實向量,Softmax 可以將其壓縮為長度為 K,值在(0,1)范圍內,并且向量中元素的總和為 1 的實向量。Softmax 與正常的 max 函數不同:max 函數僅輸出最大值,但 Softmax 確保較小的值具有較小的概率,并且不會直接丟棄。我們可以認為它是 argmax 函數的概率版本或「soft」版本。Softmax 函數的分母結合了原始輸出值的所有因子,這意味著 Softmax 函數獲得的各種概率彼此相關。在零點不可微;
負輸入的梯度為零,這意味著對于該區(qū)域的激活,權重不會在反向傳播期間更新,因此會產生永不激活的死亡神經元。
函數表達式:y = x * sigmoid (x)Swish 的設計受到了 LSTM 和高速網絡中 gating 的 sigmoid 函數使用的啟發(fā)。我們使用相同的 gating 值來簡化 gating 機制,這稱為 self-gating。self-gating 的優(yōu)點在于它只需要簡單的標量輸入,而普通的 gating 則需要多個標量輸入。這使得諸如 Swish 之類的 self-gated 激活函數能夠輕松替換以單個標量為輸入的激活函數(例如 ReLU),而無需更改隱藏容量或參數數量。在 Maxout 層,激活函數是輸入的最大值,因此只有 2 個 maxout 節(jié)點的多層感知機就可以擬合任意的凸函數。單個 Maxout 節(jié)點可以解釋為對一個實值函數進行分段線性近似 (PWL) ,其中函數圖上任意兩點之間的線段位于圖(凸函數)的上方。假設兩個凸函數 h_1(x) 和 h_2(x),由兩個 Maxout 節(jié)點近似化,函數 g(x) 是連續(xù)的 PWL 函數。因此,由兩個 Maxout 節(jié)點組成的 Maxout 層可以很好地近似任何連續(xù)函數。Softplus 函數:f(x)= ln(1 + exp x)f ′(x)=exp(x) / ( 1+exp? x ),也稱為 logistic / sigmoid 函數。Softplus 函數類似于 ReLU 函數,但是相對較平滑,像 ReLU 一樣是單側抑制。它的接受范圍很廣:(0, + inf)。