深度學(xué)習(xí)最常用的10個(gè)激活函數(shù)!
作者丨Sukanya Bag
編譯 | 機(jī)器之心
今天早上在reddit上刷到一張非常形象的圖,

那就讓我們來整理一下深度學(xué)習(xí)中離不開的激活函數(shù)!





Sigmoid 函數(shù)的輸出范圍是 0 到 1。由于輸出值限定在 0 到 1,因此它對(duì)每個(gè)神經(jīng)元的輸出進(jìn)行了歸一化;
用于將預(yù)測概率作為輸出的模型。由于概率的取值范圍是 0 到 1,因此 Sigmoid 函數(shù)非常合適;
梯度平滑,避免「跳躍」的輸出值;
函數(shù)是可微的。這意味著可以找到任意兩個(gè)點(diǎn)的 sigmoid 曲線的斜率;
明確的預(yù)測,即非常接近 1 或 0。
傾向于梯度消失;
函數(shù)輸出不是以 0 為中心的,這會(huì)降低權(quán)重更新的效率;
Sigmoid 函數(shù)執(zhí)行指數(shù)運(yùn)算,計(jì)算機(jī)運(yùn)行得較慢。



首先,當(dāng)輸入較大或較小時(shí),輸出幾乎是平滑的并且梯度較小,這不利于權(quán)重更新。二者的區(qū)別在于輸出間隔,tanh 的輸出間隔為 1,并且整個(gè)函數(shù)以 0 為中心,比 sigmoid 函數(shù)更好;
在 tanh 圖中,負(fù)輸入將被強(qiáng)映射為負(fù),而零輸入被映射為接近零。


當(dāng)輸入為正時(shí),不存在梯度飽和問題。
計(jì)算速度快得多。ReLU 函數(shù)中只存在線性關(guān)系,因此它的計(jì)算速度比 sigmoid 和 tanh 更快。
Dead ReLU 問題。當(dāng)輸入為負(fù)時(shí),ReLU 完全失效,在正向傳播過程中,這不是問題。有些區(qū)域很敏感,有些則不敏感。但是在反向傳播過程中,如果輸入負(fù)數(shù),則梯度將完全為零,sigmoid 函數(shù)和 tanh 函數(shù)也具有相同的問題;
我們發(fā)現(xiàn) ReLU 函數(shù)的輸出為 0 或正數(shù),這意味著 ReLU 函數(shù)不是以 0 為中心的函數(shù)。


Leaky ReLU 通過把 x 的非常小的線性分量給予負(fù)輸入(0.01x)來調(diào)整負(fù)值的零梯度(zero gradients)問題;
leak 有助于擴(kuò)大 ReLU 函數(shù)的范圍,通常 a 的值為 0.01 左右;
Leaky ReLU 的函數(shù)范圍是(負(fù)無窮到正無窮)。


沒有 Dead ReLU 問題,輸出的平均值接近 0,以 0 為中心;
ELU 通過減少偏置偏移的影響,使正常梯度更接近于單位自然梯度,從而使均值向零加速學(xué)習(xí);
ELU 在較小的輸入下會(huì)飽和至負(fù)值,從而減少前向傳播的變異和信息。


如果 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ù)值域是線性運(yùn)算。盡管斜率很小,但不會(huì)趨于 0。


在零點(diǎn)不可微;
負(fù)輸入的梯度為零,這意味著對(duì)于該區(qū)域的激活,權(quán)重不會(huì)在反向傳播期間更新,因此會(huì)產(chǎn)生永不激活的死亡神經(jīng)元。

「無界性」有助于防止慢速訓(xùn)練期間,梯度逐漸接近 0 并導(dǎo)致飽和;(同時(shí),有界性也是有優(yōu)勢的,因?yàn)橛薪缂せ詈瘮?shù)可以具有很強(qiáng)的正則化,并且較大的負(fù)輸入問題也能解決);
導(dǎo)數(shù)恒 > 0;
平滑度在優(yōu)化和泛化中起了重要作用。






