在進入神經網路之前,請先確定大家已經對 Logistic Regression 有一定的瞭解。
首先,我們先來介紹一下感知器。
感知器並沒有什麼特別的,只是一個由多個 logistic regression 輸出的結果所組合而成的。更直觀一點理解,我們可以把每個 feature 都當作一個神經元,每個神經元都有一個權重,我們希望找到一個最適合的權重,得到正確的輸出。
咦?所以類神經網路其實可以說是很多層的邏輯回歸嗎?這樣說其實也可以,不過類神經網路多了一些修改幾名詞,以下讓我們來一一介紹:
現在我們來看一下這張圖:
讓我們來實做一個 sigmoid 函數吧!
首先先看看 sigmoid 定義
$$
\sigma(x) = \frac{1}{e^x}
$$
def sigmoid(x):
return 1 / np.exp(-x)
如果把圖畫出來,大概會長得像這樣:
為什麼需要活化函數呢?因為我們希望讓資料彼此之間不再是線性的關係(不然用普通的邏輯回歸就好了),但是又希望資料能夠保有線性的特性。
而活化函數剛好可以幫助我們做到這件事,在 logistic 當中我們用 sigmoid 當作預測 function,但是在類神經網路當中,我們通常會用 softmax 與 ReLU 來實作,至於為什麼嘛…,大概就是這樣吧...。
$$
softmax = \frac{}{}
$$
$$
f(x)=\begin{cases}
x & \quad \text{if x > 0}\
0 & \quad \text{if x <=0}
\end{cases}
$$
對於輸出來說,我們希望能夠是 0 ~ 1,cross entropy 可以計算彼此的相異性。