從ReLU到GELU,一文概覽神經網路的啟用函式

杜佳豪發表於2019-12-20

從ReLU到GELU,一文概覽神經網路的啟用函式

在計算每一層的啟用值時,我們要用到啟用函式,之後才能確定這些啟用值究竟是多少。根據每一層前面的啟用、權重和偏置,我們要為下一層的每個啟用計算一個值。但在將該值傳送給下一層之前,我們要使用一個啟用函式對這個輸出進行縮放。本文將介紹不同的啟用函式。
 
在閱讀本文之前,你可以閱讀我前一篇介紹神經網路中前向傳播和反向傳播的文章,其中已經簡單地提及過啟用函式,但還未介紹其實際所做的事情。本文的內容將建立在你已瞭解前一篇文章知識的基礎上。

前一篇文章地址:https://mlfromscratch.com/neural-networks-explained/

Casper Hansen

目錄
  • 概述

  • sigmoid 函式是什麼?

  • 梯度問題:反向傳播

  • 梯度消失問題

  • 梯度爆炸問題

  • 梯度爆炸的極端案例

  • 避免梯度爆炸:梯度裁剪/範數

  • 整流線性單元(ReLU)

  • 死亡 ReLU:優勢和缺點

  • 指數線性單元(ELU)

  • 滲漏型整流線性單元(Leaky ReLU)

  • 擴充套件型指數線性單元(SELU)

  • SELU:歸一化的特例

  • 權重初始化+dropout 

  • 高斯誤差線性單元(GELU)

  • 程式碼:深度神經網路的超引數搜尋

  • 擴充套件閱讀:書籍與論文

概述

啟用函式是神經網路中一個至關重要的部分。在這篇長文中,我將全面介紹六種不同的啟用函式,並闡述它們各自的優缺點。我會給出啟用函式的方程和微分方程,還會給出它們的圖示。本文的目標是以簡單的術語解釋這些方程以及圖。

我會介紹梯度消失和爆炸問題;對於後者,我將按照 Nielsen 提出的那個很讚的示例來解釋梯度爆炸的原因。
 
最後,我還會提供一些程式碼讓你可以自己在 Jupyter Notebook 中執行。

從ReLU到GELU,一文概覽神經網路的啟用函式

我會在 MNIST 資料集上進行一些小型程式碼實驗,為每個啟用函式都獲得一張損失和準確度圖。

從ReLU到GELU,一文概覽神經網路的啟用函式

相關文章