神經網絡學習筆記 - 激活函數的作用、定義和微分證明
看到知乎上對激活函數(Activation Function)的解釋。
我一下子迷失了。
因此,匆匆寫下我對激活函數的理解。
激活函數被用到了什么地方
目前為止,我見到使用激活函數的地方有兩個。
- 邏輯回歸(Logistic Regression)
- 神經網絡(Neural Network)
這兩處,激活函數都用於計算一個線性函數的結果。
了解激活函數
激活函數的作用:就是將權值結果轉化成分類結果。
2類的線性分類器
先說一個簡單的情況 - 一個2類的線性分類器。
了解激活函數,先要明確我們的問題是:"計算一個(矢量)數據的標簽(分類)"。
以下圖為例:
訓練
訓練的結果,是一組\((w,b)\),和一個線性函數\(f(x) = wx + b\)。
預測
我們現在仔細考慮一下,如何在預測函數中使用這個線性函數\(f(x)\)。
先從幾何方面理解一下,如果預測的點在分割線\(wx + b = 0\)上,那么\(f(x) = wx + b = 0\)。
如果,在分割線的上方某處,\(f(x) = wx + b = 8\)(假設是8)。
8可以認為是偏移量。
注:取決於(w, b),在分割線上方的點可以是正的,也可能是負的。
例如: y - x =0,和 x - y = 0,這兩條線實際上是一樣的。
但是,應用點(1, 9)的結果, 第一個是8, 第二個是 -8。
問題
然后,你該怎么辦???
如何用這個偏移量來得到數據的標簽?
激活函數
激活函數的作用是:將8變成紅色。
怎么變的呢?比如:我們使用sigmoid函數,sigmoid(8) = 0.99966464987。
sigmoid函數的結果在區間(0, 1)上。如果大於0.5,就可以認為滿足條件,即是紅色。
3類分類器的情況
我們再看看在一個多類分類器中,激活函數的作用。
以下圖為例:
訓練
3類\({a, b, c}\)分類器的訓練結果是3個\((w, b)\),三個\(f(x)\),三條分割線。
每個\(f(x)\),可以認為是針對一個分類的model。因此:
預測
對於預測的點\(x\),會得到三個偏移量\([f_a(x), f_b(x), f_c(x)]\)。
使用激活函數sigmoid:
\(sigmoid([f_a(x), f_b(x), f_c(x)])\)
會得到一個向量, 記為:\([S_a, S_b, S_c]\)。
這時的處理方法是:再次使用激活函數(沒想到吧)
一般會使用激活函數softmax。
激活函數,在這里的作用是:計算每個類別的可能性。
最后使用argmax函數得到:最大可能性的類。
注:上面差不多是Logistic Regression算法的一部分。
注:softmax也經常被使用於神經網絡的輸出層。
激活函數的來源
在學習神經網絡的過程中,激活函數的靈感來自於生物神經網絡,被認為是神經元對輸入的激活程度。
最簡單的輸出形式是:一個開關,\({0, 1}\)。 要么\(0\),要么\(1\)。
也就是一個單位階躍函數(Heaviside step function)。
這種思想主要是一種靈感來源,並不是嚴格的推理。
常用的激活函數有哪些
名稱 | 公式 | 取值范圍 | 微分 | 圖 |
---|---|---|---|---|
sigmoid - S型 |
$$ \begin{align} \sigma(x) & = \frac{e^x}{1 + e^x} \\ & = \frac{1}{1 + e^{-x}} \end{align} $$
|
$(0, 1)$ |
$$ \sigma'(x) = (1 - \sigma(x))\sigma(x) $$
|
![]() |
tanh(hyperbolic tangent) - 雙曲正切 |
$$ \begin{align} tanh(x) & = sinh(x)/cosh(x) \\ & = \frac{e^x - e^{-x}}{e^x + e^{-x}} \\ & = \frac{e^{2x} - 1}{e^{2x} + 1} \\ & = \frac{1 - e^{-2x}}{1 + e^{-2x}} \end{align} $$
|
$(-1, 1)$ |
$$ tanh'(x) = 1 - tanh(x)^2 $$
|
![]() |
Rectified linear unit - ReLU - 修正線性單元 |
$$ relu(x) = \begin{cases} 0 & \text{for}\ x < 0 \\ x & \text{for}\ x \geqslant 0 \end{cases} $$
|
$[0, \infty)$ |
$$ relu'(x) = \begin{cases} 0 & \text{for}\ x < 0 \\ 1 & \text{for}\ x \geqslant 0 \end{cases} $$
|
|
softmax |
$$ f(\vec{x}) = \begin{bmatrix} \cdots & \frac{e^{x_i}}{\sum_{k=1}^{k=K}e^{x_k}} & \cdots \end{bmatrix} $$
|
$(0, 1)$ |
$$ softmax'(z_t) = \frac{\partial{y_t}}{\partial{z_t}} = \begin{cases} \hat{y_{t_i}}(1 - \hat{y_{t_i}}), & \text{if } i = j \\ -\hat{y_{t_i}} \hat{y_{t_j}}, & \text{if } i \ne j \end{cases} $$
|
激活函數的意義
名稱 | 含義 |
---|---|
sigmoid - S型 | sigmoid的區間是[0, 1]。因此,可以用於表示Yes/No這樣的信息。 比如:不要(0)/要(1)。 多用於過濾數據。比如:門。 |
tanh(hyperbolic tangent) - 雙曲正切 | tanh的區間是[-1, 1]。同樣可以表示Yes/No的信息,而且加上了程度。 比如: 非常不可能(-1)/一般般(0)/非常可能(1)。 非常不喜歡(-1)/一般般(0)/非常喜歡(1)。 因此,tanh多用於輸出數據。輸出數據最終會使用softmax來計算可能性。 |
softmax | softmax用於輸出層,計算每個分類的可能性。 |
Rectified linear unit - ReLU - 修正線性單元 | ReLU的好處:ReLU對正值較少的數據,處理能力更強。 由於,其導數為{0, 1},可以避免梯度消失問題。 |
激活函數的微分的證明
sigmoid
sigmoid函數
證明
tanh
tanh函數
證明
softmax
激活函數softmax和損失函數會一起使用。
激活函數會根據輸入的參數(一個矢量,表示每個分類的可能性),計算每個分類的概率(0, 1)。
損失函數根據softmax的計算結果\(\hat{y}\)和期望結果\(y\),根據交叉熵方法(cross entropy loss) 可得到損失\(L\)。
softmax函數
證明