<center>
<img src = "https://i.imgur.com/dOOvnrN.jpg">
</center>
## Prerequisite
Multilayer Perceptron(多層感知器)是一種前向結構的人工神經網絡,映射一組輸入向量到一組輸出向量。
### Artificial Neural Networks
![](https://hackmd.io/_uploads/SJOsgilkT.png)
Artificial Neural Networks 是一種受到人類大腦運作方式啟發的計算模型。
Artificial Neural Networks 是機器學習和深度學習的基礎,旨在模擬生物神經元之間的信息傳遞和處理過程。
其中,神經元可以表示為一個數學函數,接受多個輸入 $x_1, x_2, \ldots, x_n$,這些輸入通過權重 $w_1, w_2, \ldots, w_n$ 進行加權總和,並經過 activation function $f$ 後產生輸出 $y$。
$$
y = f(w_1x_1 + w_2x_2 + \ldots + w_nx_n)
$$
而 activation function,它決定神經元的輸出,包括Sigmoid函數、ReLU(整流線性單元)函數和Tanh函數,其中 $x$ 表示總輸入。
例如,Sigmoid函數:$f(x) = \frac{1}{1 + e^{-x}}$
### Backpropagation
Backpropagation(反向傳播)是通過計算梯度来更新網路中的參數(weight / bias),以減小模型預測與實際值之間的誤差。
**演算法**
令 $L$ 表示損失函數,$W$ 表示權重,$b$ 表示偏差。對於具有 $N$ 層的神經網絡,第 $n$ 層的輸出可以表示為 $a^{(n)}$,第 $n$ 層的輸入表示為 $z^{(n)}$。
1. 輸入訓練數據和標籤:$(X, Y)$
2. 初始化權重和偏差:對每個層 $n$,初始化 $W^{(n)}$ 和 $b^{(n)}$。
3. 重複以下步驟,直到達到停止條件:
a. 前向傳播:
$$
\begin{align*}
z^{(n)} &= W^{(n)} a^{(n-1)} + b^{(n)} \\
a^{(n)} &= \sigma(z^{(n)})
\end{align*}
$$
其中 $\sigma$ 表示 activation function,通常是 Sigmoid、ReLU 或其他函數。
b. 計算損失:
$$
L = \text{Loss function}(a^{(N)}, Y)
$$
c. 反向傳播:
$$
\begin{align*}
\delta^{(N)} &= \nabla_a L \odot \sigma'(z^{(N)}) \quad \text{(輸出層誤差)} \\
\delta^{(n)} &= (W^{(n+1)})^T \delta^{(n+1)} \odot \sigma'(z^{(n)}) \quad \text{(隱藏層誤差)} \\
\end{align*}
$$
其中 $\nabla_a L$ 表示損失函數相對於輸出的梯度,$\odot$ 表示逐元素乘法。
d. 更新參數:
$$
\begin{align*}
\nabla_{W^{(n)}} L &= \delta^{(n)} (a^{(n-1)})^T \\
\nabla_{b^{(n)}} L &= \delta^{(n)}
\end{align*}
$$
使用梯度下降或其他優化算法來更新權重和偏差:
$$
\begin{align*}
W^{(n)} &\leftarrow W^{(n)} - \alpha \nabla_{W^{(n)}} L \\
b^{(n)} &\leftarrow b^{(n)} - \alpha \nabla_{b^{(n)}} L
\end{align*}
$$
其中 $\alpha$ 表示學習率。
4. 輸出訓練好的神經網絡模型。
### Loss Functions
Loss Functions(損失函數)是機器學習和深度學習中的重要概念,用於衡量模型的預測結果和實際觀測值之間的差異。
其目標是最小化這種差異,以使模型能夠做出更準確的預測。以下是損失函數的數學 latex 表達和解釋:
在機器學習中,我們通常使用一個訓練數據集(通常包含輸入特徵 $X$ 和對應的實際輸出或標籤 $Y$)來訓練模型,而模型的預測輸出(通常用 $y$ 表示)與實際標籤之間的差異可以通過損失函數 $L(y, Y)$ 來衡量。
損失函數的選擇取決於所解決的問題類型,例如分類或回歸。以下是兩個常見的損失函數示例:
1. 均方誤差(Mean Squared Error,簡稱 MSE):
$$
(y, Y) = \frac{1}{n}\sum_{i=1}^{n}(y_i - Y_i)^2
$$
均方誤差用於回歸問題,它衡量了預測值和實際值之間的平方差的平均值。目標是將這個平均差異最小化。
2. 交叉熵損失(Cross-Entropy Loss):
$$
L(y, Y) = -\sum_{i}^{n}(Y_i \log(y_i) + (1 - Y_i) \log(1 - y_i))
$$
交叉熵損失通常用於二元分類問題。它衡量了預測概率分佈和實際二元標籤的差異,目標是最小化這種差異,使預測更接近實際標籤。
### Optimizers
優化器(Optimizers)是深度學習中的關鍵元件,用於調整神經網絡模型的權重,以最小化或最大化損失函數。優化器的目標是尋找模型參數的最佳值,使模型能夠更好地擬合訓練數據,並在測試數據上實現良好的泛化性能。
在深度學習中,我們通常使用一組參數(權重和偏差)來表示神經網絡模型。這些參數會在訓練過程中不斷更新,以最小化損失函數。優化器的主要工作是計算這些參數的梯度,然後根據梯度的方向和大小來更新參數值。
優化器的目標是尋找模型參數 $\theta$ 的最佳值,以最小化或最大化損失函數 $J(\theta)$。這可以表示為以下的最優化問題:
$$
\min_{\theta} J(\theta)
$$
在每一個訓練迭代中,優化器計算損失函數對參數的梯度,即 $ \nabla J(\theta) $,梯度表示了損失函數在當前參數值附近的變化趨勢。優化器根據梯度的方向和大小來更新參數值,以便向損失函數的最小值移動。這個更新過程可以表示為:
$$
\theta \leftarrow \theta - \alpha \nabla J(\theta)
$$
其中,$\alpha$ 是 Learning Rate,它決定了每次更新的步長。學習率越大,參數更新越快,但可能會導致不穩定的訓練過程;學習率越小,參數更新越穩定,但訓練速度較慢。
不同的優化器有不同的策略來計算梯度和調整參數,例如隨機梯度下降(SGD)、Adam、RMSprop等。每種優化器都有其優點和缺點,選擇適合特定任務的優化器是深度學習中的一個重要決策。
## Background
Multilayer Perceptron 是一種人工神經網絡(Artificial Neural Network)的架構。
![](https://hackmd.io/_uploads/ry_zQJzka.png)
MLP 主要用於解決各種機器學習問題,包括分類、回歸、圖像處理和自然語言處理等。
MLP 由多個神經元組成,這些神經元分布在不同的層中,通常包括輸入層、隱藏層和輸出層。以下是 MLP 的主要特點和結構:
1. **輸入層(Input Layer)**:接受輸入數據,例如圖像像素、特徵向量或文本數據。
2. **隱藏層(Hidden Layer)**:中間層,其內部神經元處理輸入數據,並通過權重和激活函數進行信息傳遞。MLP 可以包含多個隱藏層,具體的結構取決於任務和設計。
3. **輸出層(Output Layer)**:最後一層,它生成模型的預測結果。輸出層的數量通常取決於任務的性質,例如二元分類問題可能只有一個輸出神經元,而多類別分類問題可能有多個輸出神經元。
4. **權重(Weights)**:每個神經元之間都有權重,用於調整訊號的強度。
5. **激活函數(Activation Function)**:激活函數用於引入非線性性質,使 MLP 能夠擬合更複雜的數據。
6. **反向傳播(Backpropagation)**:MLP 使用反向傳播算法來訓練模型。
## Reference
歡迎更仔細閱讀以下相關內容以了解本篇知識
- [機器學習- 神經網路(多層感知機 Multilayer perceptron, MLP)運作方式](https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF-%E5%A4%9A%E5%B1%A4%E6%84%9F%E7%9F%A5%E6%A9%9F-multilayer-perceptron-mlp-%E9%81%8B%E4%BD%9C%E6%96%B9%E5%BC%8F-f0e108e8b9af)
- [Artificial Neural Networks (ANN)](https://ebrary.net/98123/economics/artificial_neural_networks)
- [機器/深度學習: 基礎介紹-損失函數(loss function)](https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb)