聊天視窗

數據科學的邏輯與實踐:從基礎到高階決策 - 第 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)各有優勢,選型應依據任務特性。 - 訓練過程需重視正則化、學習率調度與早停策略,以防過擬合並提升泛化能力。 - 轉移學習、注意力機制及生成模型為目前熱門趨勢,能顯著提升效能並縮短開發週期。 - 實務案例證明深度學習能帶來顯著業務價值,並且在多種領域得到廣泛應用。 --- > **下一章**:模型部署與實時決策,將探討如何將訓練好的深度模型轉化為可擴展、可觀測的服務,並在生產環境中持續監控與迭代。