神經網路簡介
## Artificial Neural Network(人工神經網路)概念簡介
人工神經網路(Artificial Neural Network, ANN)是一種模仿生物神經元運作方式的機器學習模型,主要由許多「神經元」組成,並以多層結構學習輸入資料與輸出結果之間的關係。
典型的神經網路包含:
- **輸入層(Input Layer)**:接收特徵資料,例如影像像素、文字特徵等。
- **隱藏層(Hidden Layers)**:透過多層計算學習複雜模式。
- **輸出層(Output Layer)**:產生最終預測結果。
- **權重(Weights)與偏差(Biases)**:模型需要透過訓練學習的參數。
- **激勵函式(Activation Function)**:加入非線性能力,例如 ReLU、Sigmoid、Softmax。
---
## 1. Forward:正向傳遞
正向傳遞是指資料從輸入層開始,依序通過每一層,最後產生預測結果。
流程大致如下:
1. 將輸入資料 \(x\) 放入模型。
2. 每一層利用權重和偏差進行線性計算。
3. 通過啟動函數產生該層的輸出。
4. 將輸出傳給下一層。
5. 最後得到模型預測值 \(y\)。
以分類問題為例,輸出層可能使用 Softmax,得到每個類別的預測機率。
**正向傳遞的目的**是:
利用目前的模型參數,根據輸入資料做出預測。
---
## 2. Loss:計算預測誤差
模型產生預測值後,需要知道預測得好不好,因此會使用 **Loss Function(損失函數)** 比較預測值 \(y\) 與真實答案 \(e\) 之間的差異。
Loss 越小,代表預測通常越接近正確答案。
常見的損失函數包括:
### 回歸問題:均方誤差
適合預測連續數值,例如房價、溫度等。
### 分類問題:交叉熵損失
二元分類常用 Binary Cross Entropy,多分類問題通常使用 Categorical Cross Entropy。
**Loss 的目的**是:
將模型表現轉換成一個可量化的誤差數值,作為後續調整模型參數的依據。
---
## 3. Backward:反向傳遞與反向傳播
反向傳遞,通常稱為 **Backpropagation(反向傳播)**,是從 Loss 開始,反方向逐層計算每個參數對 Loss 的影響程度。
這個影響程度稱為 **梯度(Gradient)**:
梯度代表:
- 梯度較大:這個參數對錯誤影響較大。
- 梯度為正:參數增加可能使 Loss 增加,因此可能需要降低參數。
- 梯度為負:參數增加可能使 Loss 降低,因此可能需要提高參數。
反向傳播主要使用微積分中的 **鏈鎖律(Chain Rule)**,將輸出層的誤差逐層往回傳遞,計算每一層權重與偏差的梯度。
需要注意的是:
- **Backpropagation**:計算梯度。
- **Optimizer(最佳化器)**:利用梯度更新參數。
常見的最佳化器包括:
- SGD
- Momentum
- Adam
- RMSProp
---
## 4. 完整訓練流程
神經網路通常會重複以下流程:
1. **輸入資料**
2. **Forward 正向傳遞**
3. **計算 Loss**
4. **Backward 反向傳播,計算梯度**
5. **Optimizer 更新權重與偏差**
6. 重複多次,直到模型表現足夠好
簡化表示如下:
```text
資料輸入
↓
Forward
↓
得到預測值
↓
計算 Loss
↓
Backward 計算梯度
↓
Optimizer 更新參數
↓
重複訓練
```
---
## 5. 直觀理解
可以把神經網路想像成一位正在練習答題的學生:
- **Forward**:學生根據目前學會的知識回答問題。
- **Loss**:老師比較學生答案與正確答案的差距。
- **Backward**:分析是哪一些知識或判斷造成錯誤。
- **Optimizer 更新**:根據分析結果調整學習方式。
- **反覆訓練**:經過多次練習後,學生的答題能力逐漸提升。
因此,神經網路訓練的核心就是:
> 先做預測,再量化錯誤,接著利用反向傳播找出參數應如何調整,最後透過最佳化器更新參數,使 Loss 逐步降低。
相關學習地圖、教學課程
Python 人工智慧