在 ChatGPT 之前,AI 是怎麼做出決策的?

October 15, 2025

拆解分類器核心概念、分類 vs. 回歸差異,以及訓練與推論在現代模型生命週期的角色。

分類器與資料流的示意圖

分類器與資料流的示意圖

2025 年 10 月 15 日 · 閱讀時間約 7 分鐘

身處在 ChatGPT 帶來的 AI 狂熱(FOMO, Hype, Mania)中,這股商業脅持技術的浪潮,正以前所未有的速度席捲各行各業。從產品設計、商業決策,到日常生活的微小選擇,「AI 加持」彷彿能解決人類所有遇到瓶頸的問題。然而,喧囂的市場往往忽略了本質。

回顧歷史,人工智慧的發展絕非一蹴可幾。自 1956 年達特茅斯會議首次提出「AI」概念以來,這項技術歷經數次高潮與寒冬——從符號主義、機器學習(Machine Learning),到深度學習(Deep Learning)、ChatGPT 這些 AI 代名詞的興起,每一次的迭代都重新定義了人們對「智慧」的想像。即便技術名稱與方法不斷演變,AI 的底層本質始終如一:資料與模型,是它的雙驅動引擎。

本篇會循著三個問題往下走:先拆解分類器的核心概念與日常案例,再釐清分類與回歸的差異,最後從訓練與推論的角度初談現代模型的生命流程,讓一些名詞提前出現,雖打破歷史發展的順序,但希望透過這樣的節奏,讓讀者對於 AI 有一個最基礎的認識。

打開分類器的黑盒,分類器是什麼?

分類器就是一種「對應關係」,把「輸入資料」對應到「離散類別」的函數。它觀察輸入特徵(Features),使用既定的決策邏輯判斷「這筆資料屬於哪個類別」。

最有名的應用:

  • iPhone 的 Face ID 會把臉部影像二分法,分類成「主人」或「陌生人」,決定裝置是否解鎖。
  • Tesla FSD(Full Self-Driving)透過鏡頭影像進行多類別分類,辨識「行人」、「汽車」、「號誌燈」,好讓車輛能感知真實世界的環境。

分類還是回歸?

在實務中,多數任務的核心都是讓模型學會判斷答案。學術上,這類任務屬於監督式學習(Supervised Learning),也就是透過已知的「問題與答案」資料來訓練模型,預測未來結果。

要讓機器理解問題,第一步是確認答案的型態:若答案是離散類別,屬於分類(Classification)問題。若答案是連續數值,則是回歸(Regression)問題。

問題型態典型任務結果型態例子
分類(Classification)判別資料落在哪個類別離散紅綠燈號誌(紅/黃/綠)、腫瘤是否為惡性
回歸(Regression)預測連續數值實數或區間值未來房價、氣溫曲線、股票收盤價

想把回歸問題改寫成分類題也很常見,例如把房價區間切成「高/中/低」三類,再交由分類器處理。

模型 Model 中,甚麼是 Training、甚麼是 Inference?

架構示意圖如下所示。

模型架構示意圖

  • Training(訓練):模型讀取大量「特徵+標籤」的組合,調整參數讓預測更接近真實答案。
  • Inference(推論):模型接收尚未看過的資料,只靠訓練好的參數產生預測結果。

了解這兩個階段,有助於區分「模型在學習」和「模型在回答」。

常見術語

Feature(特徵)

  1. 特徵是可量化的資料描述,是模型用來理解世界的依據。

  2. 特徵可以是連續訊號在數位空間的投影

    • 例如,一張彩色影像可攤平成一個 (1024 × 1024 × 3) 的張量,每個元素代表紅、綠、藍三個通道的像素亮度。這 3,145,728 個像素值 就是影像的特徵。
  3. 特徵也可以是壓縮後的高維向量

    • 例如,聲音訊號可以透過梅爾頻譜(Mel-spectrogram)轉換為一個 128 維的向量,用以表示聲音的頻率特性。
  4. 特徵也可以是離散符號在向量空間的投影

    • 例如,文字可透過詞向量(word embedding)表示為一個 300 維向量,讓模型能理解語意關係。
  5. 簡單來說,特徵就是模型的輸入資料,是所有預測、分類與決策的起點。

Label(標籤)

標籤就是人類賦予的答案。

標籤示意圖

例:以 Google 驗證當作範例,請人類幫忙標註哪裡有斑馬線,就是在幫 Google 建立資料的標籤,讓他們的模型可以知道答案。

Logit

模型輸出的線性組合結果。輸入 softmax 函數後,可以表達機率分佈。
例:假設這筆資料的 logits 為 [1.01, 0.56],差距 0.45,顯示模型更偏向類別 0。

Loss Function(損失函數)

衡量模型預測與真實標籤差異的函數,也決定訓練時要「往哪裡修正」參數。
例:交叉熵損失約 0.49,若未來調整後降到 0.1,就代表預測和真實答案更接近。

Backpropagation(反向傳播)

從損失函數出發沿著模型反向傳遞誤差,計算每個參數的梯度,搭配優化器(如梯度下降)更新權重,模型才能越學越準。
例:梯度運算得到 grad_b ≈ [-0.39, 0.39],代表第一個偏差需要往上調,第二個偏差則往下調。

下面用 NumPy 寫一個最小可運行的「線性分類器(邏輯迴歸)」範例,串起 Forward → Loss → Backprop → Update 的整個流程。程式會生成一個簡單的二分類資料集,訓練後回報訓練集準確率。

import numpy as np

# --- Inputs ---------------------------------------------------------------
# 1) 一筆資料,包含三個特徵(feature 向量)
X = np.array([[0.2, 1.1, -0.3]])

# 2) 正確標籤:0 表示「不是主人」、1 表示「主人」
y = np.array([0])

# 3) 線性分類器的初始權重與偏差(可學參數)
W = np.array([[1.2, -0.7],
              [0.5,  0.9],
              [-0.4, 0.3]])
b = np.array([0.1, -0.2])

# --- Forward pass ---------------------------------------------------------
# Step A: 計算 logits(線性組合 XW + b)
logits = X @ W + b                # ≈ [[1.01, 0.56]]

# Step B: 使用 softmax 把 logits 轉為各類別機率
exp_logits = np.exp(logits - logits.max(axis=1, keepdims=True))  # 數值穩定技巧
probs = exp_logits / exp_logits.sum(axis=1, keepdims=True)       # ≈ [[0.61, 0.39]]

# Step C: Cross Entropy Loss - 衡量預測與真實標籤的差距指標
true_probs = probs[np.arange(len(y)), y]
loss = -np.log(true_probs).mean()  # ≈ 0.49

print("Logits:\n", logits)
print("Probabilities:\n", probs)
print("Loss:", loss)

# --- Backward pass --------------------------------------------------------
# Step D: ∂Loss/∂logits(softmax + cross-entropy 的 closed-form)
grad_logits = probs.copy()            # ≈ [[0.61, 0.39]]
grad_logits[np.arange(len(y)), y] -= 1  # ≈ [[-0.39, 0.39]]
grad_logits /= len(y)                 # ≈ [[-0.39, 0.39]](batch=1)

# Step E: 透過 Chain Rule,反向把梯度傳回權重與偏差 (Backpropagation)
grad_W = X.T @ grad_logits            # ≈ [[-0.0779, 0.0779], [-0.4283, 0.4283], [0.1168, -0.1168]]
grad_b = grad_logits.sum(axis=0)      # ≈ [-0.39, 0.39]

print("Grad W:\n", grad_W)
print("Grad b:", grad_b)

# --- Parameter update -----------------------------------------------------
# Step F: 以梯度下降 (Gradient Descent) 更新參數(W ← W - η · 梯度)
learning_rate = 0.1
W -= learning_rate * grad_W          # ≈ [[1.208, -0.708], ...]
b -= learning_rate * grad_b          # ≈ [0.139, -0.239]

print("Updated W:\n", W)
print("Updated b:", b)

經過一次 Forward Pass: Inference(前向傳遞)、Loss(損失計算)與 Backward Pass: Backpropagation(反向傳遞)的流程後,模型參數中的權重(weights)與偏差(bias)就會被更新。接著,這些新的參數會在下一輪訓練中再次參與運算,讓分類器的表現逐步提升。透過不斷迭代這個過程,最終我們便能得到一個訓練完成的模型。此時,在實際應用階段,就只需要進行 Inference,模型便能根據輸入資料進行推論並輸出預測結果。

小結

本篇文章初步介紹了分類與回歸問題的基本分野,並且先行跳過歷史脈絡,直接一窺訓練(Training)與推論(Inference)在整個模型生命週期中的核心角色。透過這些基礎概念的鋪陳,我們已經建立起理解機器學習任務的第一層視角。

下一篇預告:《從薛西弗斯到普羅米修斯:AI 決策的進化與解放》

在進入大算力與深度學習驅動的時代之前,AI 的發展像是薛西弗斯的宿命——科學家跟工程師們不斷用規則與傳統機器學習推動智慧之石,卻始終被資料稀缺、算力有限和模型表現的天花板所束縛。

接下來的文章,我們將回到這段艱難卻關鍵的歷史現場,看看從 rule-based 系統、決策樹(Decision Tree)到支持向量機(SVM)等方法,如何一步步奠定了 AI 的基礎,並理解為何它們終究無法突破所謂的「工人智慧」極限。

而當 GPU 伺服器叢集、大模型(Large Models)與大數據(Big Data)登場後,一切都改變了:AI 不再只是推石上山,而是如同普羅米修斯偷火一般,點燃了智慧的火種。這正是我們今日所見到大語言模型時代的起點。


延伸閱讀

  1. 想了解更多程式實作,推薦 Andrej Karpathy 的課程——Neural Networks: Zero to Hero
  2. 想了解更多理論,推薦李弘毅教授的課程——一堂課搞懂生成式人工智慧的技術突破與未來發展

Tags