今天我們來談談 activation function 吧!
前言
在神經網路模型(neural network)及深度學習(deep learning)中,activation function 一直扮演重要的角色。
網路模型中的層的概念基本上是由以下的式子構成:
$$
\sigma(Wx + b)
$$
其中 $Wx$ 的矩陣相乘是大家在線性代數中常見的線性運算(linear operation),$Wx + b$ 嚴格來說是稱為仿射運算(affine operation)。相對應線性空間,仿射運算會構成仿射空間,不過兩者只差一個位移 $b$ 而已,但是大家都把它叫做線性(其實是錯誤的阿阿阿阿阿阿阿阿)。最後就是最外層的 $\sigma$ 了。這就是我們今天要談的 activation function。大家應該知道 activation function 會提供神經網路模型非線性的特性,而在沒有非線性特性前的神經網路長什麼樣子呢?
仿射?線性?
其實是可以將仿射看成線性的。假設
$$
Wx + b = \begin{bmatrix}
w_{11}& w_{12}& \cdots& w_{1n} \\
\vdots& \vdots& \ddots& \vdots \\
w_{m1}& w_{m2}& \cdots& w_{mn} \\
\end{bmatrix}
\begin{bmatrix}
x_{1} \\
\vdots \\
x_{n} \\
\end{bmatrix} + \begin{bmatrix}
b_{1} \\
\vdots \\
b_{m} \\
\end{bmatrix}
$$
然後把 $W$ 跟 $b$ 合併,有點像高中學的增廣矩陣那樣,就變成了:
$$
= \begin{bmatrix}
w_{11}& w_{12}& \cdots& w_{1n}& b_{1} \\
\vdots& \vdots& \ddots& \vdots& \vdots \\
w_{m1}& w_{m2}& \cdots& w_{mn}& b_{m} \\
\end{bmatrix}
\begin{bmatrix}
x_{1} \\
\vdots \\
x_{n} \\
1
\end{bmatrix} = W’x’
$$
這樣就可以把 $b$ 吸收到 $W$ 裡面,整體就變成線性的了。
先談談線性轉換
談 activation function 之前先要談談線性轉換。去除掉 activation function 後的神經網路層只剩下 $Wx + b$ 的部份,而如果講這部份看成線性,我們就可以用線性代數裡的東西來解釋它。
有上到比較後面的線性代數的同學,應該有爬過 SVD 這座高山。基本上,SVD 是一種矩陣分解的技巧,可以適用各式的矩陣(只要是可分解的)。SVD 可以告訴我們一些關於線性運算的特質。
推薦可以看周老師的線代啟示錄 奇異值分解 (SVD)
我們可以知道一個矩陣可以被看成線性轉換,而矩陣這個線性轉換可以被分解成 3 個矩陣:
繼續閱讀