返回目錄
A
數據科學的邏輯與實踐:從基礎到高階決策 - 第 6 章
第六章:深度學習與神經網路
發布於 2026-03-06 15:10
# 第六章:深度學習與神經網路
> **前置條件**:已掌握線性模型、決策樹、隨機森林與 SVM,具備基礎機器學習實作經驗。
## 6.1 什麼是深度學習?
- **定義**:深度學習是機器學習的子領域,透過多層非線性變換(稱為 *層*)自動學習輸入資料的抽象表示。
- **核心概念**:
1. **前向傳播**(Feed‑Forward):資料從輸入層經過隱藏層到輸出層。
2. **反向傳播**(Back‑Propagation):利用梯度下降法更新權重。
3. **激活函數**:如 ReLU、sigmoid、tanh 等。
4. **損失函數**:如交叉熵、均方誤差。
- **與傳統機器學習比較**:
| 特徵 | 傳統 ML | 深度學習 |
|------|--------|----------|
| 特徵工程 | 需人工設計 | 自動學習 |
| 計算成本 | 低 | 高 |
| 資料需求 | 少量足夠 | 大量資料需求 |
## 6.2 主要網路結構
| 類型 | 典型架構 | 應用場景 |
|------|----------|-----------|
| **前饋神經網路**(FNN) | 全連接層 + dropout | 迴歸、分類 |
| **卷積神經網路**(CNN) | Conv + Pool + FC | 圖像辨識、物件檢測 |
| **遞歸神經網路**(RNN) | LSTM / GRU | 時序序列、語音 |
| **自注意力/Transformer** | Multi‑Head Attention + Feed‑Forward | NLP、翻譯、生成 |
| **生成對抗網路**(GAN) | Generator + Discriminator | 圖像合成、風格轉換 |
### 6.2.1 卷積神經網路(CNN)
- **核心層**:
- *Convolution Layer*:滑動卷積核提取局部特徵。
- *Pooling Layer*:最大池化或平均池化減少空間維度。
- *Batch Normalization*:加速收斂。
- *Dropout*:防止過擬合。
- **典型模型**:LeNet‑5、AlexNet、VGG、ResNet、EfficientNet。
- **常用參數**:
- *kernel size*(卷積核大小)
- *stride*(滑動步長)
- *padding*(填充)
### 6.2.2 遞歸神經網路(RNN)
- **標準 RNN**:易受梯度消失/爆炸問題。
- **LSTM/GRU**:加入門控機制,解決長距離依賴。
- **Bidirectional RNN**:同時捕捉前向與後向依賴。
### 6.2.3 Transformer
- **核心概念**:
- *Self‑Attention*:每個位置與其他位置關聯權重。
- *Positional Encoding*:補充序列順序資訊。
- **代表模型**:BERT、GPT、Vision Transformer(ViT)。
## 6.3 訓練流程與技巧
### 6.3.1 前向傳播與損失計算
python
import tensorflow as tf
from tensorflow.keras import layers, models
model = models.Sequential([
layers.Conv2D(32, (3,3), activation='relu', input_shape=(224,224,3)),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
### 6.3.2 反向傳播與優化
| 優化器 | 特點 |
|--------|------|
| SGD | 參數簡單,易於調參 |
| Adam | 自適應學習率,收斂快 |
| RMSprop | 適合循序資料 |
### 6.3.3 正則化與泛化
- **Dropout**:
python
layers.Dropout(0.5)
- **Batch Normalization**:
python
layers.BatchNormalization()
- **L1/L2 正則化**:
python
layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l2(0.01))
- **數據增強**(Image / Text):
- 旋轉、翻轉、裁剪、隨機遮擋、混合語句、同義詞替換等。
### 6.3.4 過擬合檢測
- **學習曲線**:訓練/驗證 loss 與 accuracy。
- **Early Stopping**:監控驗證 loss,超過閾值停止。
### 6.3.5 學習率調度
| 方法 | 應用 |
|------|------|
| Step Decay | 每 N epoch 降低學習率 |
| Cosine Annealing | 與 warmup 搭配效果佳 |
| ReduceLROnPlateau | 驗證 loss 無改善時下降 |
## 6.4 高階主題
### 6.4.1 轉移學習(Transfer Learning)
- **使用預訓練模型**:如 ResNet‑50、BERT、GPT。
- **微調(Fine‑Tuning)**:凍結前面層,僅訓練最後幾層。
- **範例**:用 ResNet‑50 在自家資料集上進行圖像分類。
### 6.4.2 注意力機制(Attention)
- **自注意力**:為序列每個位置賦予不同權重。
- **跨模態注意力**:視覺-文字互動,如 VisualBERT。
- **實際效益**:顯著提升 NLP 任務(翻譯、摘要)與多模態學習。
### 6.4.3 生成模型(GAN)
- **架構**:生成器 + 判別器。
- **損失**:原始 GAN 損失、Wasserstein、Least‑Squares。
- **應用**:圖像合成、資料增強、風格轉換。
## 6.5 實務案例
| 案例 | 應用領域 | 使用模型 | 成果 |
|------|----------|----------|------|
| 1 | 零售圖像辨識 | ResNet‑50 | 98% 準確率,提升貨架管理效率 20% |
| 2 | 金融風險預測 | LSTM + 權重衰減 | 12% 減少誤判率 |
| 3 | 文字情感分析 | BERT 微調 | 91% F1 分數,快速部署於客服系統 |
| 4 | 生成合成圖像 | StyleGAN2 | 生成高分辨率人像,應用於虛擬試衣 |
## 6.6 開發環境與工具
| 工具 | 版本 | 主要功能 |
|------|------|-----------|
| TensorFlow | 2.15+ | GPU 加速、Eager Execution |
| PyTorch | 2.2+ | 動態圖、強大模型庫 |
| Keras | 3.0+ | 高階 API、易於搭建 |
| JupyterLab | 4.0+ | 交互式實驗、Notebook 版本控制 |
| Docker | 24+ | 一致環境、可移植容器 |
> **Tip**:在 Kaggle、Google Colab 可即時使用 GPU;若需大型模型,可考慮 AWS Sagemaker 或 GCP AI Platform。
## 6.7 小結
- 深度學習透過多層非線性變換自動學習抽象特徵,適用於圖像、語音、文字等高維資料。
- 主要架構(CNN、RNN、Transformer)各有優勢,選型應依據任務特性。
- 訓練過程需重視正則化、學習率調度與早停策略,以防過擬合並提升泛化能力。
- 轉移學習、注意力機制及生成模型為目前熱門趨勢,能顯著提升效能並縮短開發週期。
- 實務案例證明深度學習能帶來顯著業務價值,並且在多種領域得到廣泛應用。
---
> **下一章**:模型部署與實時決策,將探討如何將訓練好的深度模型轉化為可擴展、可觀測的服務,並在生產環境中持續監控與迭代。