最常用的10個啟用函式

最常用的10個啟用函式

那就讓我們來整理一下深度學習中離不開的啟用函式!

最常用的10個啟用函式

啟用函式(Activation Function)是一種新增到人工神經網路中的函式,旨在幫助網路學習資料中的複雜模式。類似於人類大腦中基於神經元的模型,啟用函式最終決定了要發射給下一個神經元的內容。在人工神經網路中,一個節點的啟用函式定義了該節點在給定的輸入或輸入集合下的輸出。標準的計算機晶片電路可以看作是根據輸入得到開(1)或關(0)輸出的數位電路啟用函式。因此,啟用函式是確定神經網路輸出的數學方程式,本文概述了深度學習中常見的十種啟用函式及其優缺點。首先我們來了解一下人工神經元的工作原理,大致如下:

最常用的10個啟用函式

上述過程的數學視覺化過程如下圖所示:

最常用的10個啟用函式

Sigmoid 啟用函式

最常用的10個啟用函式

函式表示式如下:

最常用的10個啟用函式

在什麼情況下適合使用 Sigmoid 啟用函式呢?

Sigmoid 函式的輸出範圍是 0 到 1。由於輸出值限定在 0 到 1,因此它對每個神經元的輸出進行了歸一化;

用於將預測機率作為輸出的模型。由於機率的取值範圍是 0 到 1,因此 Sigmoid 函式非常合適;

梯度平滑,避免「跳躍」的輸出值;

函式是可微的。這意味著可以找到任意兩個點的 sigmoid 曲線的斜率;

明確的預測,即非常接近 1 或 0。

Sigmoid 啟用函式有哪些缺點?

傾向於梯度消失;

函式輸出不是以 0 為中心的,這會降低權重更新的效率;

Sigmoid 函式執行指數運算,計算機執行得較慢。

Tanh / 雙曲正切啟用函式

最常用的10個啟用函式

表示式如下:

最常用的10個啟用函式

tanh 是一個雙曲正切函式。tanh 函式和 sigmoid 函式的曲線相對相似。但是它比 sigmoid 函式更有一些優勢。

最常用的10個啟用函式

首先,當輸入較大或較小時,輸出幾乎是平滑的並且梯度較小,這不利於權重更新。二者的區別在於輸出間隔,tanh 的輸出間隔為 1,並且整個函式以 0 為中心,比 sigmoid 函式更好;

在 tanh 圖中,負輸入將被強對映為負,而零輸入被對映為接近零。

注意:在一般的二元分類問題中,tanh 函式用於隱藏層,而 sigmoid 函式用於輸出層,但這並不是固定的,需要根據特定問題進行調整。

ReLU 啟用函式

最常用的10個啟用函式

ReLU 啟用函式影象如上圖所示,函式表示式如下:

最常用的10個啟用函式

ReLU 函式是深度學習中較為流行的一種啟用函式,相比於 sigmoid 函式和 tanh 函式,它具有如下優點:

當輸入為正時,不存在梯度飽和問題。

計算速度快得多。ReLU 函式中只存線上性關係,因此它的計算速度比 sigmoid 和 tanh 更快。

當然,它也有缺點:

Dead ReLU 問題。當輸入為負時,ReLU 完全失效,在正向傳播過程中,這不是問題。有些區域很敏感,有些則不敏感。但是在反向傳播過程中,如果輸入負數,則梯度將完全為零,sigmoid 函式和 tanh 函式也具有相同的問題;

我們發現 ReLU 函式的輸出為 0 或正數,這意味著 ReLU 函式不是以 0 為中心的函式。

Leaky ReLU

它是一種專門設計用於解決 Dead ReLU 問題的啟用函式:

最常用的10個啟用函式

最常用的10個啟用函式

Leaky ReLU 透過把 x 的非常小的線性分量給予負輸入(0。01x)來調整負值的零梯度(zero gradients)問題;

leak 有助於擴大 ReLU 函式的範圍,通常 a 的值為 0。01 左右;

Leaky ReLU 的函式範圍是(負無窮到正無窮)。

ELU

最常用的10個啟用函式

ELU 的提出也解決了 ReLU 的問題。與 ReLU 相比,ELU 有負值,這會使啟用的平均值接近零。均值啟用接近於零可以使學習更快,因為它們使梯度更接近自然梯度。

最常用的10個啟用函式

顯然,ELU 具有 ReLU 的所有優點,並且:

沒有 Dead ReLU 問題,輸出的平均值接近 0,以 0 為中心;

ELU 透過減少偏置偏移的影響,使正常梯度更接近於單位自然梯度,從而使均值向零加速學習;

ELU 在較小的輸入下會飽和至負值,從而減少前向傳播的變異和資訊。

PReLU(Parametric ReLU)

最常用的10個啟用函式

最常用的10個啟用函式

PReLU 的優點如下:

在負值域,PReLU 的斜率較小,這也可以避免 Dead ReLU 問題。

與 ELU 相比,PReLU 在負值域是線性運算。儘管斜率很小,但不會趨於 0。

Softmax

最常用的10個啟用函式

Softmax 是用於多類分類問題的啟用函式,在多類分類問題中,超過兩個類標籤則需要類成員關係。對於長度為 K 的任意實向量,Softmax 可以將其壓縮為長度為 K,值在(0,1)範圍內,並且向量中元素的總和為 1 的實向量。

最常用的10個啟用函式

Softmax 與正常的 max 函式不同:max 函式僅輸出最大值,但 Softmax 確保較小的值具有較小的機率,並且不會直接丟棄。我們可以認為它是 argmax 函式的機率版本。Softmax 函式的分母結合了原始輸出值的所有因子,這意味著 Softmax 函式獲得的各種機率彼此相關。

Softmax 啟用函式的主要缺點是:

在零點不可微;

負輸入的梯度為零,這意味著對於該區域的啟用,權重不會在反向傳播期間更新,因此會產生永不啟用的死亡神經元。

Swish

最常用的10個啟用函式

函式表示式:y = x * sigmoid (x)

Swish 的設計受到了 LSTM 和高速網路中 gating 的 sigmoid 函式使用的啟發。我們使用相同的 gating 值來簡化 gating 機制,這稱為 self-gating。self-gating 的優點在於它只需要簡單的標量輸入,而普通的 gating 則需要多個標量輸入。這使得諸如 Swish 之類的 self-gated 啟用函式能夠輕鬆替換以單個標量為輸入的啟用函式(例如 ReLU),而無需更改隱藏容量或引數數量。

Swish 啟用函式的主要優點如下:

無界性有助於防止慢速訓練期間,梯度逐漸接近 0 並導致飽和;(同時,有界性也是有優勢的,因為有界啟用函式可以具有很強的正則化,並且較大的負輸入問題也能解決);

導數恆 > 0;

平滑度在最佳化和泛化中起了重要作用。

Maxout

最常用的10個啟用函式

在 Maxout 層,啟用函式是輸入的最大值,因此只有 2 個 maxout 節點的多層感知機就可以擬合任意的凸函式。單個 Maxout 節點可以解釋為對一個實值函式進行分段線性近似 (PWL) ,其中函式圖上任意兩點之間的線段位於圖(凸函式)的上方。

最常用的10個啟用函式

Maxout 也可以對 d 維向量(V)實現:

最常用的10個啟用函式

假設兩個凸函式 h_1(x) 和 h_2(x),由兩個 Maxout 節點近似化,函式 g(x) 是連續的 PWL 函式。

最常用的10個啟用函式

因此,由兩個 Maxout 節點組成的 Maxout 層可以很好地近似任何連續函式。

最常用的10個啟用函式

Softplus

最常用的10個啟用函式

Softplus 函式:f(x)= ln(1 + exp x)

Softplus 的導數為f ′(x)=exp(x) / ( 1+exp⁡ x ) = 1/ (1 +exp(−x )),也稱為 logistic / sigmoid 函式。Softplus 函式類似於 ReLU 函式,但是相對較平滑,像 ReLU 一樣是單側抑制。它的接受範圍很廣:(0, + inf)。