神經網路與深度學習
前言
神經網路是 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)
激活函數:為什麼需要非線性?
如果沒有激活函數,無論多少層神經元疊加,最終都等價於一個線性變換(矩陣乘法)。激活函數引入非線性,讓網路能學習複雜的模式。
| 激活函數 | 公式 | 特點 | 常用場景 |
|---|---|---|---|
| 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 ──→ [○ ○ ○ ○] ──→ [○ ○ ○]| 概念 | 說明 |
|---|---|
| 輸入層 | 接收原始資料(圖片像素、文字向量等) |
| 隱藏層 | 中間處理層,層數越多網路越「深」(深度學習的「深」) |
| 輸出層 | 產生最終預測(分類機率、迴歸值等) |
| 前向傳播 | 資料從輸入層逐層流向輸出層的過程 |
為什麼叫「深度」學習?
傳統機器學習通常只有 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 → 更新所有權重直覺理解反向傳播
把神經網路想像成一條流水線。產品(預測)出了問題(損失大),你需要從最後一道工序開始往回查,看每道工序(每層權重)對最終問題貢獻了多少,然後按貢獻大小調整。貢獻大的多調,貢獻小的少調。
3. 主流網路架構
不同類型的資料需要不同的網路架構。選對架構,事半功倍。
units (number of neurons)activationDense(128, activation="relu")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 | 只能看到過去 | 同時從前往後和從後往前處理 |
LSTM 的門控機制
LSTM 的精妙之處在於三個「門」:遺忘門決定丟棄哪些舊記憶,輸入門決定存入哪些新資訊,輸出門決定輸出哪些內容。就像你讀一本書,會選擇性地記住重要情節、忘掉無關細節。
3.3 Transformer:注意力就是一切
2017 年 Google 發表的 "Attention Is All You Need" 論文提出了 Transformer,徹底改變了 AI 領域。它用自注意力機制替代了循環結構,是 GPT、BERT、Claude 等大模型的基礎。
輸入序列 → 嵌入 + 位置編碼 → [多頭注意力 → 前饋網路] × N → 輸出
↑
每個詞都能「看到」所有其他詞| 優勢 | 說明 |
|---|---|
| 並列計算 | 不像 RNN 必須逐步處理,Transformer 可以並列處理整個序列 |
| 長距離依賴 | 任意兩個位置之間直接建立聯繫,不受距離限制 |
| 可擴展性 | 模型越大、資料越多,效果越好(Scaling Law) |
自注意力的直覺:讀「小貓坐在墊子上,因為它很累」這句話時,「它」需要關注「小貓」才能理解含義。自注意力讓模型學會這種關聯——為序列中的每對詞計算一個「相關性分數」。
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 | 標準化每層的輸入分佈 | 加速收斂,有輕微正則化效果 |
訓練的經驗法則
- 先用小資料集跑通整個流程,確認程式碼沒 bug
- 從已有的預訓練模型開始微調,而非從零訓練
- 學習率是最值得花時間調的超參數
- 如果訓練損失不下降,先檢查資料和程式碼,再懷疑模型
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 | 讓大模型使用工具、規劃任務、自主完成複雜目標 |
| 小模型蒸餾 | 用大模型的知識訓練小模型,在端側部署 |
對開發者的啟示
你不需要從零訓練神經網路。現代 AI 開發更多是呼叫 API(如 OpenAI、Claude API)或微調預訓練模型(如用 Hugging Face)。但理解底層原理能幫你更好地選擇模型、設計 prompt、診斷問題。
總結
| 核心概念 | 一句話總結 |
|---|---|
| 神經元 | 加權求和 + 激活函數,網路的最小計算單元 |
| 前向傳播 | 資料從輸入層逐層流向輸出層,產生預測 |
| 反向傳播 | 從損失出發,逐層計算梯度,更新權重 |
| CNN | 卷積核提取局部特徵,圖像處理的首選 |
| RNN/LSTM | 循環連接保持記憶,處理序列資料 |
| Transformer | 自注意力並列處理,大模型的基礎架構 |
| 過擬合 | 模型「背答案」,用正則化、Dropout 等手段防止 |
| 遷移學習 | 站在巨人肩膀上,用預訓練模型微調解決新問題 |
延伸閱讀
- 3Blue1Brown - 神經網路系列影片 — 最直觀的視覺化講解
- Stanford CS231n — 經典的卷積神經網路課程
- The Illustrated Transformer — 圖解 Transformer 架構
- Neural Networks and Deep Learning — 免費線上教材
- Hugging Face 課程 — 動手實作 Transformer 和大模型