激活函數(shù)(Activation Function)是一種添加到人工神經(jīng)網(wǎng)絡(luò)中的函數(shù),旨在幫助網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)中的復(fù)雜模式。類似于人類大腦中基于神經(jīng)元的模型,激活函數(shù)最終決定了要發(fā)射給下一個神經(jīng)元的內(nèi)容。在人工神經(jīng)網(wǎng)絡(luò)中,一個節(jié)點的激活函數(shù)定義了該節(jié)點在給定的輸入或輸入集合下的輸出。標(biāo)準(zhǔn)的計算機芯片電路可以看作是根據(jù)輸入得到開(1)或關(guān)(0)輸出的數(shù)字電路激活函數(shù)。因此,激活函數(shù)是確定神經(jīng)網(wǎng)絡(luò)輸出的數(shù)學(xué)方程式,本文概述了深度學(xué)習(xí)中常見的十種激活函數(shù)及其優(yōu)缺點。首先我們來了解一下人工神經(jīng)元的工作原理,大致如下:上述過程的數(shù)學(xué)可視化過程如下圖所示:Sigmoid 函數(shù)的圖像看起來像一個 S 形曲線。在什么情況下適合使用 Sigmoid 激活函數(shù)呢?Sigmoid 函數(shù)的輸出范圍是 0 到 1。由于輸出值限定在 0 到 1,因此它對每個神經(jīng)元的輸出進(jìn)行了歸一化;
用于將預(yù)測概率作為輸出的模型。由于概率的取值范圍是 0 到 1,因此 Sigmoid 函數(shù)非常合適;
梯度平滑,避免「跳躍」的輸出值;
函數(shù)是可微的。這意味著可以找到任意兩個點的 sigmoid 曲線的斜率;
明確的預(yù)測,即非常接近 1 或 0。
tanh 激活函數(shù)的圖像也是 S 形,表達(dá)式如下:tanh 是一個雙曲正切函數(shù)。tanh 函數(shù)和 sigmoid 函數(shù)的曲線相對相似。但是它比 sigmoid 函數(shù)更有一些優(yōu)勢。注意:在一般的二元分類問題中,tanh 函數(shù)用于隱藏層,而 sigmoid 函數(shù)用于輸出層,但這并不是固定的,需要根據(jù)特定問題進(jìn)行調(diào)整。ReLU 激活函數(shù)圖像如上圖所示,函數(shù)表達(dá)式如下:ReLU 函數(shù)是深度學(xué)習(xí)中較為流行的一種激活函數(shù),相比于 sigmoid 函數(shù)和 tanh 函數(shù),它具有如下優(yōu)點:Dead ReLU 問題。當(dāng)輸入為負(fù)時,ReLU 完全失效,在正向傳播過程中,這不是問題。有些區(qū)域很敏感,有些則不敏感。但是在反向傳播過程中,如果輸入負(fù)數(shù),則梯度將完全為零,sigmoid 函數(shù)和 tanh 函數(shù)也具有相同的問題;
我們發(fā)現(xiàn) ReLU 函數(shù)的輸出為 0 或正數(shù),這意味著 ReLU 函數(shù)不是以 0 為中心的函數(shù)。
它是一種專門設(shè)計用于解決 Dead ReLU 問題的激活函數(shù):為什么 Leaky ReLU 比 ReLU 更好?Leaky ReLU 通過把 x 的非常小的線性分量給予負(fù)輸入(0.01x)來調(diào)整負(fù)值的零梯度(zero gradients)問題;
leak 有助于擴大 ReLU 函數(shù)的范圍,通常 a 的值為 0.01 左右;
Leaky ReLU 的函數(shù)范圍是(負(fù)無窮到正無窮)。
注意:從理論上講,Leaky ReLU 具有 ReLU 的所有優(yōu)點,而且 Dead ReLU 不會有任何問題,但在實際操作中,尚未完全證明 Leaky ReLU 總是比 ReLU 更好。ELU vs Leaky ReLU vs ReLUELU 的提出也解決了 ReLU 的問題。與 ReLU 相比,ELU 有負(fù)值,這會使激活的平均值接近零。均值激活接近于零可以使學(xué)習(xí)更快,因為它們使梯度更接近自然梯度。顯然,ELU 具有 ReLU 的所有優(yōu)點,并且:沒有 Dead ReLU 問題,輸出的平均值接近 0,以 0 為中心;
ELU 通過減少偏置偏移的影響,使正常梯度更接近于單位自然梯度,從而使均值向零加速學(xué)習(xí);
ELU 在較小的輸入下會飽和至負(fù)值,從而減少前向傳播的變異和信息。
一個小問題是它的計算強度更高。與 Leaky ReLU 類似,盡管理論上比 ReLU 要好,但目前在實踐中沒有充分的證據(jù)表明 ELU 總是比 ReLU 好。6. PReLU(Parametric ReLU)PReLU 也是 ReLU 的改進(jìn)版本:看一下 PReLU 的公式:參數(shù)α通常為 0 到 1 之間的數(shù)字,并且通常相對較小。如果 a_i= 0,則 f 變?yōu)?ReLU
如果 a_i> 0,則 f 變?yōu)?leaky ReLU
如果 a_i 是可學(xué)習(xí)的參數(shù),則 f 變?yōu)?PReLU
在負(fù)值域,PReLU 的斜率較小,這也可以避免 Dead ReLU 問題。
與 ELU 相比,PReLU 在負(fù)值域是線性運算。盡管斜率很小,但不會趨于 0。
Softmax 是用于多類分類問題的激活函數(shù),在多類分類問題中,超過兩個類標(biāo)簽則需要類成員關(guān)系。對于長度為 K 的任意實向量,Softmax 可以將其壓縮為長度為 K,值在(0,1)范圍內(nèi),并且向量中元素的總和為 1 的實向量。Softmax 與正常的 max 函數(shù)不同:max 函數(shù)僅輸出最大值,但 Softmax 確保較小的值具有較小的概率,并且不會直接丟棄。我們可以認(rèn)為它是 argmax 函數(shù)的概率版本或「soft」版本。Softmax 函數(shù)的分母結(jié)合了原始輸出值的所有因子,這意味著 Softmax 函數(shù)獲得的各種概率彼此相關(guān)。在零點不可微;
負(fù)輸入的梯度為零,這意味著對于該區(qū)域的激活,權(quán)重不會在反向傳播期間更新,因此會產(chǎn)生永不激活的死亡神經(jīng)元。
函數(shù)表達(dá)式:y = x * sigmoid (x)Swish 的設(shè)計受到了 LSTM 和高速網(wǎng)絡(luò)中 gating 的 sigmoid 函數(shù)使用的啟發(fā)。我們使用相同的 gating 值來簡化 gating 機制,這稱為 self-gating。self-gating 的優(yōu)點在于它只需要簡單的標(biāo)量輸入,而普通的 gating 則需要多個標(biāo)量輸入。這使得諸如 Swish 之類的 self-gated 激活函數(shù)能夠輕松替換以單個標(biāo)量為輸入的激活函數(shù)(例如 ReLU),而無需更改隱藏容量或參數(shù)數(shù)量。Swish 激活函數(shù)的主要優(yōu)點如下:在 Maxout 層,激活函數(shù)是輸入的最大值,因此只有 2 個 maxout 節(jié)點的多層感知機就可以擬合任意的凸函數(shù)。單個 Maxout 節(jié)點可以解釋為對一個實值函數(shù)進(jìn)行分段線性近似 (PWL) ,其中函數(shù)圖上任意兩點之間的線段位于圖(凸函數(shù))的上方。Maxout 也可以對 d 維向量(V)實現(xiàn):假設(shè)兩個凸函數(shù) h_1(x) 和 h_2(x),由兩個 Maxout 節(jié)點近似化,函數(shù) g(x) 是連續(xù)的 PWL 函數(shù)。因此,由兩個 Maxout 節(jié)點組成的 Maxout 層可以很好地近似任何連續(xù)函數(shù)。Softplus 函數(shù):f(x)= ln(1 + exp x)f ′(x)=exp(x) / ( 1+exp? x ),也稱為 logistic / sigmoid 函數(shù)。Softplus 函數(shù)類似于 ReLU 函數(shù),但是相對較平滑,像 ReLU 一樣是單側(cè)抑制。它的接受范圍很廣:(0, + inf)。
推薦閱讀
“拍一拍” 能撤回了 !??!
5款Chrome插件,第1款絕對良心!
為開發(fā)色情游戲,這家公司赴日尋找AV女優(yōu)拍攝,期望暴力賺錢結(jié)果...
拼多多終于釀成慘劇
華為阿里下班時間曝光:所有的光鮮,都有加班的味道
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運營維護(hù)的號,大家樂于分享高質(zhì)量文章,喜歡總結(jié)知識,歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!