機器學習之簡單介紹啟用函式

swensun發表於2018-04-09

Activation funcation 啟用函式

啟用函式將神經網路最後一層輸出當做輸入,進行轉換。也用於神經網路兩層之間。
那麼在神經網路為什麼要使啟用函式?
比如在邏輯迴歸中,用於將輸出轉換為0/1進行分類。在神經網路中用於確定輸出是yes/no。或者將輸出對映到某一個範圍之間,比如手寫數字識別中,將輸出對映到0--9之間。

啟用函式一般分類兩類:線性和非線性

線性或恆等啟用函式

機器學習之簡單介紹啟用函式
如上函式,該輸出不會限制在任何範圍內,與上述我們的目的不相符。

非線性啟用函式

機器學習之簡單介紹啟用函式
如上就是非線性啟用函式的例子,在神經網路中用的最多。它是模型易於泛化或者適應各種資料,並對輸出進行區分。 對啟用函式有幾個術語需要了解: 導數或者微分:當優化方法與梯度相關時,需要求導,因此函式必須可微。 單調性:當啟用函式是單調時,單層網路能夠保證是凸函式。 輸出值的範圍: 當啟用函式輸出值是 有限 的時候,基於梯度的優化方法會更加 穩定,因為特徵的表示受有限權值的影響更顯著;當啟用函式的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的learning rate.

下面介紹幾種常見的啟用函式:

sigmoid 函式

機器學習之簡單介紹啟用函式
如上,輸出永遠在0--1之間,其中在接近0或者1時,變化速度變慢。在模型預測可能性時有用。 該函式可微,因此在兩點之間可以計算斜率。該函式單調但是其導函式不是單調的。 該啟用函式會導致神經網路在訓練時被卡住,部分缺點如下:

  1. 當輸入過大過小時, 梯度接近0.因此初始值很大時,神經元梯度會消失,加大訓練難度。
  2. 該函式輸出的均值不為0。因此後一層神經元將上一層的非0輸出作為訊號輸入,梯度始終為正。

Tanh 雙曲正弦啟用函式

機器學習之簡單介紹啟用函式
與sigmoid類似,但是比sigmoid效果要好,輸出在-1--1之間。不同與sigmoid,該函式輸出均值為0. 常用於二分類問題。

Relu(線性整流)啟用函式

機器學習之簡單介紹啟用函式
目前這是在神經網路中用的最多的啟用函式,大部分卷積神經網路和深度神經網路在在使用。 如上,該範圍在0--無窮大之間。 其中該函式和其倒數都是單調的。 部分優點如下:

  1. 收斂速度相比於sigmoid和Tanh要快很多
  2. 相比於sigmoid和Tanh, 由於函式特性,只需要一個閾值就能得到啟用值 同時也有缺點,比如一個非常大的梯度流過一個Relu神經元時, 更新引數以後,由於啟用值太大, 導致對後面的資料啟用困難。

Softmax 啟用函式

機器學習之簡單介紹啟用函式

softmax用於多分類過程中,它將多個神經元的輸出,對映到(0,1)區間內,可以看成概率來理解,從而來進行多分類!

上述中為什麼會提到導數或者可微: 當在梯度下降中更新梯度時,需要知道曲線的斜率,並進行更新,因為這是下降最快的方向。因此在神經網路中需要使用到啟用函式的導數。

相關文章