AI 是什麼?
很多人探討 AI 會追隨前人的探討,去探討什麼是智慧?或是什麼樣的是強人工智慧?
當然我也做過一樣的事情,只是今天我想從比較 技術層面、比較 務實 的角度切入這一大類技術。
從比較技術層面跟務實的角度切入,就表示我想討論的是現今人工智慧的實作層面,也就是 AI 是怎麼被做出來的?(how),並非討論 AI 是什麼?(what)
AI 是什麼? 這議題會牽涉到什麼是智慧?而智慧這種事情連人類自身都說不清楚,有的人從哲學層面討論智慧,動物有動物的智慧,人類有人類的智慧,憑什麼說人類的『智慧』才稱為智慧?有的人從生物角度切入, 從大腦的結構與神經元的連結,到神經元的觸發,這一系列的科學探索,或許我們未來可以回答智慧是什麼?但目前仍舊是一個大謎團。
我今天要談的都不是這些,我要談的是深度學習的核心,不!是機器學習的核心… 嗯…等等,所以那是什麼?
繼續閱讀今天我們來談談 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 個矩陣:
繼續閱讀在前一篇講完了 deep learning 的意義之後我們來更具體一點講 multi-layer perceptron (MLP)。
最簡單的版本莫過於 linear MLP,不過不太會有人去用他,其實只是每層 layer 的 activation function 都是採用 identity。你可以想像他是有很多的線性轉換所疊起來的模型。
繼續閱讀目前我們 machine learning 的技術已經發展了非常久的時間,我們有非常多的模型可以幫我們做預測,包含像是 regression、classification、clustering、semi-supervised learning、reinforcement learning。這些都可以幫助我們去做出預測,或是從資料當中去挖掘知識跟資訊。這些模型需要數學與統計作為基礎。
當你使用這些模型之後你會發現,你輸入的資料會大大的影響整個 performance,像是你給的 feature 不夠好,模型的表現就變得很糟糕,或是模型要預測的資訊根本不在這些 data 當中,那麼模型根本就預測不出來,所以玩過 machine learning 的人就會知道 feature engineering 的重要性。
繼續閱讀