神經網絡學習筆記 - 激活函數的作用、定義和微分證明


神經網絡學習筆記 - 激活函數的作用、定義和微分證明

看到知乎上對激活函數(Activation Function)的解釋。
我一下子迷失了。
因此,匆匆寫下我對激活函數的理解。

激活函數被用到了什么地方

目前為止,我見到使用激活函數的地方有兩個。

  • 邏輯回歸(Logistic Regression)
  • 神經網絡(Neural Network)
    這兩處,激活函數都用於計算一個線性函數的結果。

了解激活函數

激活函數的作用:就是將權值結果轉化成分類結果

2類的線性分類器

先說一個簡單的情況 - 一個2類的線性分類器。
了解激活函數,先要明確我們的問題是:"計算一個(矢量)數據的標簽(分類)"。
以下圖為例:

Logistic Regression

訓練

訓練的結果,是一組\((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類分類器的情況

我們再看看在一個多類分類器中,激活函數的作用。
以下圖為例:

Logistic Regression 3 classes

訓練

3類\({a, b, c}\)分類器的訓練結果是3個\((w, b)\),三個\(f(x)\),三條分割線。
每個\(f(x)\),可以認為是針對一個分類的model。因此:

\[f_a(x) = w_ax + b_a \\ f_b(x) = w_bx + b_b \\ f_c(x) = w_cx + b_c \]

預測

對於預測的點\(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) $$
sigmoid
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 $$
tanh
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函數

\[\sigma(x) = \frac{1}{1 + e^{-x}} \\ \sigma'(x) = (1 - \sigma(x))\sigma(x) \]

證明

\[\begin{align} \frac{\partial \sigma(x)}{\partial x} & = \frac{e^{-x}}{(1 + e^{-x})^2} \\ & = {\left ( \frac{1 + e^{-x} - 1}{1 + e^{-x}} \right ) }{\left ( \frac{1}{1 + e^{-x}} \right )} \\ & = (1 - \sigma(x))\sigma(x) \end{align} \]

tanh

tanh函數

\[\tanh(x) = \frac{e^{2x} - 1}{e^{2x} + 1} \\ tanh'(x) = 1 - tanh(x)^2 \]

證明

\[\begin{align} \frac{\partial tanh(x)}{\partial x} & = \left (1 - \frac{2}{e^{2x} + 1} \right )' \\ & = 2 \cdot \frac{2e^{2x}}{(e^{2x} + 1)^2} \\ & = \frac{4e^{2x}}{(e^{2x} + 1)^2} \\ & = \frac{(e^{2x} + 1)^2 - (e^{2x} - 1)^2}{(e^{2x} + 1)^2} \\ & = 1 - \left (\frac{e^{2x} - 1}{e^{2x} + 1} \right )^2 \\ & = 1 - tanh(x)^2 \end{align} \]

softmax

激活函數softmax和損失函數會一起使用。
激活函數會根據輸入的參數(一個矢量,表示每個分類的可能性),計算每個分類的概率(0, 1)。
損失函數根據softmax的計算結果\(\hat{y}\)和期望結果\(y\),根據交叉熵方法(cross entropy loss) 可得到損失\(L\)

softmax函數

\[\text{softmax:} \\ \hat{y_{t_i}} = softmax(o_{t_i}) = \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \\ \hat{y_t} = softmax(z_t) = \begin{bmatrix} \cdots & \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} & \cdots \end{bmatrix} \\ \\ 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} \]

證明

\[softmax'(z_t) = \frac{\partial \hat{y_t} }{\partial z_t } \\ \\ \text{if } i = j \\ \begin{align} \frac{\partial \hat{y_{t_i}} } {\partial o_{t_i} } & = \left ( \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \right )' \\ & = \left ( 1 - \frac{S}{\sum_{k}e^{o_{t_k}}} \right )' \text{ // set } S = \sum_{k \ne i}e^{o_{t_k}} \\ & = \left ( 1 - \frac{S}{S + e^{o_{t_i}}} \right )' \\ & = \frac{S \cdot e^{o_{t_i}}}{(S + e^{o_{t_i}})^2} \\ & = \frac{S}{S + e^{o_{t_i}}} \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \frac{S}{S + e^{o_{t_i}}} \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \left ( 1 - \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \right ) \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \left ( 1 - \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \right ) \cdot \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \\ & = \left ( 1 - \hat{y_{t_i}} \right ) \cdot \hat{y_{t_i}} \\ \text{if } i \ne j \\ \frac{\partial \hat{y_{t_j}} }{\partial o_{t_i} } & = \left ( \frac{ e^{o_{t_j}} } { \sum_{k}e^{o_{t_k}} } \right )' \\ & = \left ( \frac{e^{o_{t_j}}}{S + e^{o_{t_i}}} \right )' \text{ // set } S = \sum_{k \ne i}e^{o_{t_k}} \\ & = - \frac{ e^{o_{t_j}} \cdot e^{o_{t_i}} }{ (S + e^{o_{t_i}})^2 } \\ & = - \frac{ e^{o_{t_j}} }{ S + e^{o_{t_i}} } \cdot \frac{ e^{o_{t_i}} }{ S + e^{o_{t_i}} } \\ & = - \frac{ e^{o_{t_j}} }{ \sum_{k}e^{o_{t_k}} } \cdot \frac{ e^{o_{t_i}} }{ \sum_{k}e^{o_{t_k}} } \\ & = - \hat{y_{t_j}} \cdot \hat{y_{t_i}} \end{align} \]

參照


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM