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