神经网络中的常用激活函数总结
?PaperWeekly 原創(chuàng) ·?作者|張文翔
單位|京東集團(tuán)算法工程師
研究方向|推薦算法
激活函數(shù)之性質(zhì)
1. 非線性:即導(dǎo)數(shù)不是常數(shù)。保證多層網(wǎng)絡(luò)不退化成單層線性網(wǎng)絡(luò)。這也是激活函數(shù)的意義所在。?
2. 可微性:保證了在優(yōu)化中梯度的可計(jì)算性。雖然 ReLU 存在有限個點(diǎn)處不可微,但處處 subgradient,可以替代梯度。
3. 計(jì)算簡單:激活函數(shù)復(fù)雜就會降低計(jì)算速度,因此 RELU 要比 Exp 等操作的激活函數(shù)更受歡迎。?
4. 非飽和性(saturation):飽和指的是在某些區(qū)間梯度接近于零(即梯度消失),使得參數(shù)無法繼續(xù)更新的問題。最經(jīng)典的例子是 Sigmoid,它的導(dǎo)數(shù)在 x 為比較大的正值和比較小的負(fù)值時都會接近于 0。RELU 對于 x<0,其梯度恒為 0,這時候它也會出現(xiàn)飽和的現(xiàn)象。Leaky ReLU 和 PReLU 的提出正是為了解決這一問題。?
5. 單調(diào)性(monotonic):即導(dǎo)數(shù)符號不變。當(dāng)激活函數(shù)是單調(diào)的時候,單層網(wǎng)絡(luò)能夠保證是凸函數(shù)。但是激活函數(shù)如 mish 等并不滿足單調(diào)的條件,因此單調(diào)性并不是硬性條件,因?yàn)樯窠?jīng)網(wǎng)絡(luò)本來就是非凸的。
6. 參數(shù)少:大部分激活函數(shù)都是沒有參數(shù)的。像 PReLU 帶單個參數(shù)會略微增加網(wǎng)絡(luò)的大小。還有一個例外是 Maxout,盡管本身沒有參數(shù),但在同樣輸出通道數(shù)下 k 路 Maxout 需要的輸入通道數(shù)是其它函數(shù)的 k 倍,這意味著神經(jīng)元數(shù)目也需要變?yōu)?k 倍。
參考:
[1] 如果在前向傳播的過程中使用了不可導(dǎo)的函數(shù),是不是就不能進(jìn)行反向傳播了?
https://www.zhihu.com/question/297337220/answer/936415957
[2] 為什么神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)大部分都是單調(diào)的?
https://www.zhihu.com/question/66747114/answer/372830123
激活函數(shù)之簡介
1. Sigmoid激活函數(shù)
sigmoid 函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
梯度平滑
輸出值在 0-1 之間
缺點(diǎn):
激活函數(shù)計(jì)算量大(在正向傳播和反向傳播中都包含冪運(yùn)算和除法);
梯度消失:輸入值較大或較小(圖像兩側(cè))時,sigmoid 函數(shù)值接近于零。sigmoid 導(dǎo)數(shù)則接近于零,導(dǎo)致最終的梯度接近于零,無法實(shí)現(xiàn)更新參數(shù)的目的;
Sigmoid 的輸出不是 0 為中心(zero-centered)。
1. Sigmoid激活函數(shù)
sigmoid 函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
梯度平滑
輸出值在 0-1 之間
缺點(diǎn):
激活函數(shù)計(jì)算量大(在正向傳播和反向傳播中都包含冪運(yùn)算和除法);
梯度消失:輸入值較大或較小(圖像兩側(cè))時,sigmoid 函數(shù)值接近于零。sigmoid 導(dǎo)數(shù)則接近于零,導(dǎo)致最終的梯度接近于零,無法實(shí)現(xiàn)更新參數(shù)的目的;
Sigmoid 的輸出不是 0 為中心(zero-centered)。
2. tanh激活函數(shù)
tanh 函數(shù)及其導(dǎo)數(shù):
優(yōu)點(diǎn):
同 sigmoid
tanh(x) 的梯度消失問題比 sigmoid 要輕,收斂更快
輸出是以 0 為中心 zero-centered
缺點(diǎn):
同?sigmoid
3. 整流線性單元(ReLU)
ReLU 的函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
簡單高效:不涉及指數(shù)等運(yùn)算;
一定程度緩解梯度消失問題:因?yàn)閷?dǎo)數(shù)為 1,不會像 sigmoid 那樣由于導(dǎo)數(shù)較小,而導(dǎo)致連乘得到的梯度逐漸消失。
缺點(diǎn):
dying Relu:即網(wǎng)絡(luò)的部分分量都永遠(yuǎn)不會更新,可以參考:
https://datascience.stackexchange.com/questions/5706/what-is-the-dying-relu-problem-in-neural-networks
4. 指數(shù)線性單元(ELU)
ELU 的函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
能避免死亡 ReLU 問題:x 小于 0 時函數(shù)值不再是 0,因此可以避免 dying relu 問題;
能得到負(fù)值輸出,這能幫助網(wǎng)絡(luò)向正確的方向推動權(quán)重和偏置變化。
缺點(diǎn):
計(jì)算耗時:包含指數(shù)運(yùn)算;
α 值是超參數(shù),需要人工設(shè)定
5. 擴(kuò)展型指數(shù)線性單元激活函數(shù)(SELU)
SELU 源于論文 Self-Normalizing Neural Networks,作者為 Sepp Hochreiter,ELU 同樣來自于他們組。?
SELU 其實(shí)就是 ELU 乘 lambda,關(guān)鍵在于這個 lambda 是大于 1 的,論文中給出了 lambda 和 alpha 的值:
lambda = 1.0507
alpha = 1.67326
SELU 的函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
SELU 激活能夠?qū)ι窠?jīng)網(wǎng)絡(luò)進(jìn)行自歸一化(self-normalizing);
不可能出現(xiàn)梯度消失或爆炸問題,論文附錄的定理 2 和 3 提供了證明。
缺點(diǎn):
應(yīng)用較少,需要更多驗(yàn)證;?
lecun_normal 和 Alpha Dropout:需要 lecun_normal 進(jìn)行權(quán)重初始化;如果 dropout,則必須用 Alpha Dropout 的特殊版本。
6. 滲漏型整流線性單元激活函數(shù)(Leaky ReLU)
leak_relu 的函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
類似于 ELU,能避免死亡 ReLU 問題:x 小于 0 時候,導(dǎo)數(shù)是一個小的數(shù)值,而不是 0;
與 ELU 類似,能得到負(fù)值輸出;
計(jì)算快速:不包含指數(shù)運(yùn)算。
缺點(diǎn):
同 ELU,α 值是超參數(shù),需要人工設(shè)定;
在微分時,兩部分都是線性的;而 ELU 的一部分是線性的,一部分是非線性的。
7. Parametric ReLU (PRELU)
形式上與 Leak_ReLU 在形式上類似,不同之處在于:PReLU 的參數(shù) alpha 是可學(xué)習(xí)的,需要根據(jù)梯度更新。
alpha=0:退化為 ReLU
alpha 固定不更新,退化為 Leak_ReLU
優(yōu)點(diǎn):
與 ReLU 相同。
缺點(diǎn):
在不同問題中,表現(xiàn)不一。
8. 高斯誤差線性單元(Gaussian Error Linear Unit,GELU)
Dropout 和 ReLU 都希望將“不重要”的激活信息變?yōu)榱恪R?ReLU 為例,對于每個輸入 x 都會乘以一個分布,這個分布在 x>0 時為常數(shù) 1,在 x≤0 時為常數(shù)0。而 GELU 也是在 x(服從標(biāo)準(zhǔn)正態(tài)分布)的基礎(chǔ)上乘以一個分布,這個分布就是伯努利分布 Φ(x) = P(X≤x)。?
因此,高斯誤差線性單元(GELU)為 GELU(x) = x*P(X≤x)。
隨著 x 的降低,它被歸零的概率會升高。對于 ReLU 來說,這個界限就是 0,輸入少于零就會被歸零;
與 RELU 類似:對輸入的依賴;
與 RELU 不同:軟依賴 P(X≤x),而非簡單 0-1 依賴;
直觀理解:可以按當(dāng)前輸入 x 在其它所有輸入中的位置來縮放 x。
但是這個函數(shù)無法直接計(jì)算,需要通過另外的方法來逼近這樣的激活函數(shù),研究者得出來兩個逼近函數(shù):
第二個逼近函數(shù),與谷歌 2017 年提出來的 Swish 激活函數(shù)類似:f(x) = x · sigmoid(x),后面詳細(xì)介紹。
以第一個近似函數(shù)為例,GELU 的函數(shù)及其導(dǎo)數(shù)如下:
優(yōu)點(diǎn):
在 NLP 領(lǐng)域效果最佳;尤其在 Transformer 模型中表現(xiàn)最好;
類似 RELU 能避免梯度消失問題。
缺點(diǎn):
2016 年提出較新穎;
計(jì)算量大:類似 ELU,涉及到指數(shù)運(yùn)算。
9. Swish by Google 2017
Swish 激活函數(shù)形式為:f(x)=x*sigmoid(βx)。
β?是個常數(shù)或可訓(xùn)練的參數(shù),通常所說的 Swish 是指?β=1;
β=1.702?時,可以看作是 GELU 激活函數(shù)。
優(yōu)點(diǎn):
據(jù)論文介紹,Swish 效果優(yōu)于 ReLU:
https://arxiv.org/abs/1710.05941v2
缺點(diǎn):
計(jì)算量大:sigmoid 涉及到指數(shù)運(yùn)算。
10. Mish by Diganta Misra 2019
Mish=x * tanh(ln(1+e^x))?
在函數(shù)形式和圖像上,都與 GELU 和 Swish(β=1) 類似。
優(yōu)點(diǎn):
根據(jù)論文介紹:
https://arxiv.org/abs/1908.08681
Mish 函數(shù)保證在曲線上幾乎所有點(diǎn)上的平滑度;
隨著層深的增加,ReLU 精度迅速下降,其次是 Swish。而 Mish 能更好地保持準(zhǔn)確性。
缺點(diǎn):
2019 年提出,需要時間和更多實(shí)際應(yīng)用驗(yàn)證。
11. Maxout
Maxout 的參數(shù)量較大,因此實(shí)際應(yīng)用中比較少。
普通網(wǎng)絡(luò)每一層只有一個參數(shù)矩陣 W,maxout 則有 k 個參數(shù) W,每個隱藏單元只取 k 個 W*x+b 的計(jì)算結(jié)果中最大的。下圖比較形象:
Maxout 可以擬合任意的的凸函數(shù)
Maxout 與 Dropout 的結(jié)合效果比較好
12.?Data Adaptive Activation Function (Dice) by alibaba 2018
這是阿里巴巴的一篇 CTR 論文 Deep Interest Network for Click-Through Rate Prediction 中提出的一個激活函數(shù),根據(jù) Parameter ReLU 改造而來的。?
通過下圖來看一下 PReLU 和 Dice 的異同:
激活函數(shù)的形式相同:f(s) = p(s) * s + (1 ? p(s)) · αs
p(s)的計(jì)算方式不同:
PReLU:p(s) 是指示函數(shù) I(s>0)
Dice:p(s) 是 sigmoid(BN(s)),BN 代表 Batch Normalization
Dice 可以看作是一種廣義的 PReLu,當(dāng) E(s) = 0 且 Var(s) = 0 時,Dice 退化為 PReLU。
Dice 受到數(shù)據(jù)影響,E(s) 決定其 rectified point:PReLU 是在 0 的位置,而 Dice 是在 E(s) 位置。
與Batch Normalization 有異曲同工之妙,可以解決 Internal Covariate Shift 問題。論文 Deep Interest Network for Click-Through Rate Prediction 實(shí)驗(yàn)表明 :Dice 效果優(yōu)于 PReLU。
具體實(shí)現(xiàn)可以參考 Dice 代碼:
https://github.com/mouna99/dien/blob/master/script/Dice.py
點(diǎn)擊以下標(biāo)題查看更多往期內(nèi)容:?
基于預(yù)訓(xùn)練自然語言生成的文本摘要方法
淺談 Knowledge-Injected BERTs
細(xì)粒度情感分析任務(wù)(ABSA)的最新進(jìn)展
自然語言處理中的語言模型預(yù)訓(xùn)練方法
BERT+知識圖譜:知識賦能的K-BERT模型
從三大頂會論文看百變Self-Attention
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。
總有一些你不認(rèn)識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實(shí)驗(yàn)室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)習(xí)心得或技術(shù)干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標(biāo)準(zhǔn):
? 稿件確系個人原創(chuàng)作品,來稿需注明作者個人信息(姓名+學(xué)校/工作單位+學(xué)歷/職位+研究方向)?
? 如果文章并非首發(fā),請?jiān)谕陡鍟r提醒并附上所有已發(fā)布鏈接?
? PaperWeekly 默認(rèn)每篇文章都是首發(fā),均會添加“原創(chuàng)”標(biāo)志
???? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨(dú)在附件中發(fā)送?
? 請留下即時聯(lián)系方式(微信或手機(jī)),以便我們在編輯發(fā)布時和作者溝通
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 獲取最新論文推薦
總結(jié)
以上是生活随笔為你收集整理的神经网络中的常用激活函数总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10投影亮度怎么调 Win10投影
- 下一篇: 软件不兼容win7怎么办 win7软件兼