# 神經網路與深度學習基礎

::: tip 前言
**神經網路是 AI 革命的引擎。** 從 ChatGPT 的語言理解到自動駕駛的圖像辨識，背後都是神經網路在工作。它不是魔法，而是一套精巧的數學框架——透過大量資料「學習」出輸入到輸出的對映關係。理解它的基本原理，能幫你更好地使用和除錯 AI 工具。
:::

**這篇文章會帶你學什麼？**

學完這章後，你將獲得：

- **核心概念**：理解神經元、層、前向傳播、反向傳播的基本原理
- **網路類型**：了解 CNN、RNN、Transformer 等主流架構的特點和適用場景
- **訓練過程**：明白模型是如何從資料中「學習」的
- **關鍵技巧**：掌握過擬合、學習率、正則化等實用概念
- **發展脈絡**：了解從感知機到大語言模型的演進歷程

| 章節 | 內容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 從神經元到網路 | 感知機、激活函數、前向傳播 |
| **第 2 章** | 網路如何學習 | 損失函數、梯度下降、反向傳播 |
| **第 3 章** | 主流網路架構 | CNN、RNN、Transformer |
| **第 4 章** | 訓練的藝術 | 過擬合、正則化、超參數調優 |
| **第 5 章** | 發展歷程與前沿 | 從感知機到 GPT |

---

## 1. 從神經元到網路

### 單個神經元

神經網路的最小單元是**神經元**（Neuron）。它模擬了生物神經元的工作方式：接收多個輸入訊號，加權求和，透過激活函數產生輸出。

```
輸入 x1 ──→ ×w1 ──┐
輸入 x2 ──→ ×w2 ──┼──→ Σ(加權求和) + b(偏置) ──→ f(激活函數) ──→ 輸出
輸入 x3 ──→ ×w3 ──┘
```

數學表達：**y = f(w₁x₁ + w₂x₂ + w₃x₃ + b)**

<NeuronDemo />

### 激活函數：需要非線性的動機

如果沒有激活函數，無論多少層神經元疊加，最終都等價於一個線性變換（矩陣乘法）。激活函數引入**非線性**，讓網路能學習複雜的模式。

| 激活函數 | 公式 | 特點 | 常用場景 |
|---------|------|------|---------|
| ReLU | max(0, x) | 簡單高效，訓練快 | 隱藏層的預設選擇 |
| Sigmoid | 1/(1+e⁻ˣ) | 輸出 0~1 | 二分類輸出層 |
| Tanh | (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) | 輸出 -1~1 | RNN 中常用 |
| Softmax | eˣᵢ/Σeˣⱼ | 輸出機率分佈 | 多分類輸出層 |

### 從神經元到網路

把多個神經元組織成**層**，多個層串聯起來，就構成了神經網路：

```
輸入層          隱藏層1        隱藏層2        輸出層
(特徵)         (提取低級特徵)   (提取高級特徵)   (預測結果)

 x1 ──→  [○ ○ ○ ○] ──→ [○ ○ ○] ──→  [○ ○]
 x2 ──→  [○ ○ ○ ○] ──→ [○ ○ ○] ──→  貓/狗
 x3 ──→  [○ ○ ○ ○] ──→ [○ ○ ○]
```

| 概念 | 說明 |
|------|------|
| 輸入層 | 接收原始資料（圖片像素、文字向量等） |
| 隱藏層 | 中間處理層，層數越多網路越「深」（深度學習的「深」） |
| 輸出層 | 產生最終預測（分類機率、迴歸值等） |
| 前向傳播 | 資料從輸入層逐層流向輸出層的過程 |

::: tip 為什麼叫「深度」學習？
傳統機器學習通常只有 1-2 層。當隱藏層數量增加到幾十甚至上百層時，就叫「深度」學習。更深的網路能學習更抽象的特徵：第一層學邊緣，第二層學紋理，第三層學部件，更深的層學到「這是一隻貓」。
:::

---

## 2. 網路學習機制

神經網路的「學習」本質上是一個**最佳化問題**：找到一組權重（w）和偏置（b），使得網路的預測盡可能接近真實答案。

### 訓練三步曲

```
1. 前向傳播：輸入資料，得到預測結果
2. 計算損失：用損失函數衡量預測與真實值的差距
3. 反向傳播：根據損失，計算每個權重的梯度，更新權重
   ↓
重複以上步驟，直到損失足夠小
```

### 損失函數：衡量「錯得有多離譜」

損失函數（Loss Function）量化了預測值和真實值之間的差距。訓練的目標就是最小化損失。

| 損失函數 | 公式簡述 | 適用場景 |
|---------|---------|---------|
| MSE（均方誤差） | 預測值與真實值差的平方的均值 | 迴歸問題 |
| Cross-Entropy（交叉熵） | -Σ y·log(ŷ) | 分類問題 |
| Binary Cross-Entropy | 交叉熵的二分類版本 | 二分類問題 |

### 梯度下降：找到最低點

想像你站在一座山上，蒙著眼睛要走到最低點。你能做的就是**摸一下腳下的坡度，然後往下坡方向走一步**。這就是梯度下降。

```
損失值
  ↑
  │    ╱╲
  │   ╱  ╲      ← 目前位置
  │  ╱    ╲    ↙ 沿梯度方向下降
  │ ╱      ╲╱   ← 局部最小值
  │╱            ╲╱  ← 全域最小值
  └──────────────→ 權重值
```

| 概念 | 說明 |
|------|------|
| 梯度 | 損失函數對每個權重的偏導數，指示「往哪個方向調整能減少損失」 |
| 學習率 | 每一步走多遠。太大會跳過最低點，太小會收斂太慢 |
| 批次大小 | 每次用多少樣本計算梯度。全量太慢，單樣本太抖，小批次（mini-batch）是折衷 |

### 反向傳播：鏈式法則的勝利

反向傳播（Backpropagation）是計算梯度的高效演算法。它利用微積分的**鏈式法則**，從輸出層開始，逐層向後計算每個權重對損失的貢獻。

```
前向傳播：輸入 → 隱藏層1 → 隱藏層2 → 輸出 → 損失
反向傳播：損失 → 輸出 → 隱藏層2 → 隱藏層1 → 更新所有權重
```

::: tip 直覺理解反向傳播
把神經網路想像成一條流水線。產品（預測）出了問題（損失大），你需要從最後一道工序開始往回查，看每道工序（每層權重）對最終問題貢獻了多少，然後按貢獻大小調整。貢獻大的多調，貢獻小的少調。
:::

---

## 3. 主流網路架構

不同類型的資料需要不同的網路架構。選對架構，事半功倍。

<NetworkLayersDemo />

### 3.1 CNN（卷積神經網路）

CNN 是處理圖像的王者。核心思想：用小的卷積核在圖像上滑動，提取局部特徵。

```
輸入圖像 → [卷積層→激活→池化] × N → 全連接層 → 輸出
  28×28      提取邊緣/紋理/形狀        分類結果
```

| 特點 | 說明 |
|------|------|
| 局部連接 | 每個神經元只看一小塊區域，而非整張圖 |
| 參數共享 | 同一個卷積核在整張圖上複用，大幅減少參數 |
| 平移不變性 | 貓在圖片左邊還是右邊，都能辨識 |
| 層級特徵 | 淺層學邊緣，深層學語義 |

代表模型：LeNet、AlexNet、VGG、ResNet、EfficientNet

### 3.2 RNN（循環神經網路）

RNN 專為**序列資料**設計。它的隱藏狀態會傳遞到下一個時間步，讓網路具有「記憶」能力。

```
時間步 t1    時間步 t2    時間步 t3
 "我"  ──→   "喜歡"  ──→  "貓"
  ↓           ↓           ↓
 [h1]  ──→  [h2]   ──→  [h3] ──→ 輸出
  ↑           ↑           ↑
 隱藏狀態在時間步之間傳遞（記憶）
```

| 變體 | 解決的問題 | 核心機制 |
|------|-----------|---------|
| 原始 RNN | 基礎序列建模 | 簡單循環連接 |
| LSTM | 長序列梯度消失 | 遺忘門、輸入門、輸出門 |
| GRU | LSTM 參數太多 | 簡化為重置門和更新門 |
| 雙向 RNN | 只能看到過去 | 同時從前往後和從後往前處理 |

::: tip LSTM 的門控機制
LSTM 的精妙之處在於三個「門」：**遺忘門**決定丟棄哪些舊記憶，**輸入門**決定存入哪些新資訊，**輸出門**決定輸出哪些內容。就像你讀一本書，會選擇性地記住重要情節、忘掉無關細節。
:::

### 3.3 Transformer：注意力就是一切

2017 年 Google 發表的 "Attention Is All You Need" 論文提出了 Transformer，徹底改變了 AI 領域。它用**自注意力機制**替代了循環結構，是 GPT、BERT、Claude 等大模型的基礎。

```
輸入序列 → 嵌入 + 位置編碼 → [多頭注意力 → 前饋網路] × N → 輸出
                                    ↑
                          每個詞都能「看到」所有其他詞
```

| 優勢 | 說明 |
|------|------|
| 並列計算 | 不像 RNN 必須逐步處理，Transformer 可以並列處理整個序列 |
| 長距離依賴 | 任意兩個位置之間直接建立聯繫，不受距離限制 |
| 可擴展性 | 模型越大、資料越多，效果越好（Scaling Law） |

**自注意力的直覺**：讀「小貓坐在墊子上，因為**它**很累」這句話時，「它」需要關注「小貓」才能理解含義。自注意力讓模型學會這種關聯——為序列中的每對詞計算一個「相關性分數」。

<NetworkArchitectureDemo />

## 4. 訓練的藝術

有了好的架構還不夠，訓練過程中有很多「坑」需要避開。

### 4.1 過擬合 vs 欠擬合

| 問題 | 表現 | 原因 | 解決方案 |
|------|------|------|---------|
| 過擬合 | 訓練集表現好，測試集表現差 | 模型太複雜，「背答案」而非學規律 | 正則化、Dropout、資料增強、早停 |
| 欠擬合 | 訓練集和測試集都表現差 | 模型太簡單，學不到規律 | 增加模型容量、訓練更久、更好的特徵 |

```
誤差
  ↑
  │ ╲  訓練誤差          測試誤差  ╱
  │  ╲                          ╱
  │   ╲─────────────────╱
  │    欠擬合 ← 最佳點 → 過擬合
  └──────────────────────────→ 模型複雜度
```

### 4.2 關鍵超參數

超參數是訓練前需要人為設定的參數（不是模型自己學的）：

| 超參數 | 作用 | 常見範圍 | 調優建議 |
|--------|------|---------|---------|
| 學習率 | 每步更新的幅度 | 1e-5 ~ 1e-1 | 最重要的超參數，通常從 1e-3 開始 |
| 批次大小 | 每次訓練用多少樣本 | 16 ~ 512 | 越大訓練越穩定，但需要更多顯示記憶體 |
| 訓練輪數（Epoch） | 遍歷整個資料集的次數 | 10 ~ 100+ | 配合早停法，驗證集不再提升就停 |
| 最佳化器 | 梯度更新策略 | Adam、SGD | Adam 是預設選擇，SGD+動量適合精調 |

### 4.3 正則化技巧

防止過擬合的常用手段：

| 技巧 | 原理 | 使用方式 |
|------|------|---------|
| Dropout | 訓練時隨機關閉部分神經元 | 通常 p=0.1~0.5 |
| 權重衰減 | 在損失函數中加入權重大小的懲罰 | L2 正則化，λ=1e-4 |
| 資料增強 | 對訓練資料做隨機變換（翻轉、裁剪、旋轉） | 圖像任務必備 |
| 早停法 | 驗證集損失不再下降時停止訓練 | patience=5~10 |
| Batch Normalization | 標準化每層的輸入分佈 | 加速收斂，有輕微正則化效果 |

::: tip 訓練的經驗法則
1. 先用小資料集跑通整個流程，確認程式碼沒 bug
2. 從已有的預訓練模型開始微調，而非從零訓練
3. 學習率是最值得花時間調的超參數
4. 如果訓練損失不下降，先檢查資料和程式碼，再懷疑模型
:::

---

## 5. 發展歷程與前沿

神經網路的發展經歷了幾次「寒冬」和「復興」，每次突破都源於關鍵的技術創新。

| 年代 | 里程碑 | 關鍵突破 |
|------|--------|---------|
| 1958 | 感知機（Perceptron） | 第一個神經網路模型，只能處理線性問題 |
| 1986 | 反向傳播演算法 | 讓多層網路的訓練成為可能 |
| 1998 | LeNet（CNN） | 卷積網路在手寫數字辨識上大獲成功 |
| 2012 | AlexNet | 深度 CNN 在 ImageNet 上碾壓傳統方法，深度學習爆發 |
| 2014 | GAN（生成對抗網路） | 兩個網路對抗訓練，能生成逼真圖像 |
| 2017 | Transformer | "Attention Is All You Need"，注意力機制取代 RNN |
| 2018 | BERT | 預訓練+微調範式，NLP 全面突破 |
| 2020 | GPT-3 | 1750 億參數，展示了大模型的湧現能力 |
| 2022 | ChatGPT | RLHF 對齊技術，AI 進入大眾視野 |
| 2023+ | 多模態大模型 | GPT-4V、Claude 等，同時理解文字和圖像 |

### 當前趨勢

| 方向 | 說明 |
|------|------|
| 大模型（LLM） | 參數量從億級到兆級，湧現出推理、程式設計等能力 |
| 多模態 | 同一個模型處理文字、圖像、音訊、影片 |
| 高效微調 | LoRA、QLoRA 等技術讓普通開發者也能微調大模型 |
| AI Agent | 讓大模型使用工具、規劃任務、自主完成複雜目標 |
| 小模型蒸餾 | 用大模型的知識訓練小模型，在端側部署 |

::: tip 對開發者的啟示
你不需要從零訓練神經網路。現代 AI 開發更多是**呼叫 API**（如 OpenAI、Claude API）或**微調預訓練模型**（如用 Hugging Face）。但理解底層原理能幫你更好地選擇模型、設計 prompt、診斷問題。
:::

---

## 總結

| 核心概念 | 一句話總結 |
|---------|-----------|
| 神經元 | 加權求和 + 激活函數，網路的最小計算單元 |
| 前向傳播 | 資料從輸入層逐層流向輸出層，產生預測 |
| 反向傳播 | 從損失出發，逐層計算梯度，更新權重 |
| CNN | 卷積核提取局部特徵，圖像處理的首選 |
| RNN/LSTM | 循環連接保持記憶，處理序列資料 |
| Transformer | 自注意力並列處理，大模型的基礎架構 |
| 過擬合 | 模型「背答案」，用正則化、Dropout 等手段防止 |
| 遷移學習 | 站在巨人肩膀上，用預訓練模型微調解決新問題 |

---

## 延伸閱讀

- [3Blue1Brown - 神經網路系列影片](https://www.3blue1brown.com/topics/neural-networks) — 最直觀的視覺化講解
- [Stanford CS231n](http://cs231n.stanford.edu/) — 經典的卷積神經網路課程
- [The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) — 圖解 Transformer 架構
- [Neural Networks and Deep Learning](http://neuralnetworksanddeeplearning.com/) — 免費線上教材
- [Hugging Face 課程](https://huggingface.co/learn) — 動手實作 Transformer 和大模型