Supervised Learning 是什麼?監督式學習原理與應用白話解析

一句話說明

監督式學習(Supervised Learning)是一種讓 AI 從「有正確答案的範例」中學習規律的方法,是目前最常見也最實用的機器學習類型。

核心概念:看範例學規律

想像你在教一個小孩辨認水果。你拿出一顆蘋果說「這是蘋果」,拿出一根香蕉說「這是香蕉」,反覆幾十次之後,小孩就能自己辨認沒看過的蘋果和香蕉了。

監督式學習做的就是這件事。你提供一大堆「輸入加正確答案」的配對(這些正確答案就是「標註」或「標籤」),讓模型找出輸入和答案之間的規律。學完之後,模型就能對新的、沒看過的輸入做出預測。

「監督」這個詞的意思就是:學習過程中有「老師」在旁邊告訴你正確答案。

兩種主要任務

監督式學習處理兩大類問題:

分類(Classification):預測輸入屬於哪個類別。

這封信是垃圾郵件還是正常郵件?(二元分類)這張圖是貓、狗、還是鳥?(多類別分類)這筆信用卡交易是正常還是盜刷?(異常偵測也常用分類處理)這個客戶會不會在下個月取消訂閱?(流失預測)

迴歸(Regression):預測一個連續的數值。

這間房子的市場價格是多少?明天的氣溫是幾度?這個客戶下個月的消費金額大約是多少?這支股票明天的收盤價可能是多少?

差別在於:分類的答案是離散的類別(A、B、C),迴歸的答案是連續的數字(25.3、100000)。判斷方法很簡單——如果你要預測的目標是「哪一種」,就是分類;如果是「多少」,就是迴歸。

訓練流程

監督式學習的訓練流程可以拆成五步:

第一步:準備資料。收集大量的「輸入-答案」配對。例如 10 萬封已經標記為「垃圾」或「正常」的電子郵件。資料品質在這個階段就決定了模型的上限——如果標註不準確,後面怎麼調都救不回來。

第二步:特徵工程(Feature Engineering)。把原始資料轉換成模型能理解的數值形式。例如一封 email 的原始文字需要轉成數值向量。常見的特徵工程方法包含:數值標準化(把不同範圍的數值縮放到同一個區間)、類別編碼(把「男/女」轉成 0/1)、文字向量化(TF-IDF、Word2Vec)、時間特徵提取(從日期提取出星期幾、月份、是否假日)。特徵工程的品質直接影響模型表現。在深度學習出現之前,特徵工程是機器學習最花時間的部分。

第三步:拆分資料集。通常把資料拆成三份——訓練集(60-70%)、驗證集(10-20%)和測試集(20%)。訓練集用來學習,驗證集用來在訓練過程中調整超參數和監控是否過擬合,測試集留到最後才用,用來評估模型在沒見過的資料上表現如何。很多初學者犯的錯誤是只拆兩份(訓練和測試),然後用測試集來調參數——這會導致對測試集過擬合,模型在真實世界的表現會比你預期的差。

另一種更嚴謹的做法是交叉驗證(Cross-Validation)。最常用的是 k-fold 交叉驗證:把資料分成 k 份(通常 5 或 10),每次用其中 1 份當驗證集、其他 k-1 份當訓練集,重複 k 次,最後取平均結果。這讓每一筆資料都被驗證過,結果更可靠,但訓練時間也是 k 倍。

第四步:訓練模型。模型看訓練資料,做出預測,然後和正確答案比較。差距越大,模型調整的幅度越大。這個過程重複幾千到幾百萬次。每一次調整的幅度由學習率(Learning Rate)控制——學習率太大,模型震盪不收斂;太小,訓練太慢可能卡在局部最優解。

第五步:評估模型。用測試集評估模型的表現。如果模型在訓練集上表現很好但測試集上很差,代表過擬合(Overfitting)——模型背了答案但沒學會規律。如果訓練集和測試集的表現都不好,代表欠擬合(Underfitting)——模型太簡單,學不到資料中的規律。

評估指標

訓練完模型之後,怎麼知道它好不好?不同任務有不同的評估指標:

分類任務的常見指標:

準確率(Accuracy):預測對的比例。如果有 100 筆資料,模型猜對 90 筆,準確率就是 90%。但準確率在資料不平衡時會誤導你。例如詐騙偵測中 99% 是正常交易、1% 是詐騙,一個什麼都不做、永遠猜「正常」的模型準確率就有 99%。

精確率(Precision):模型說「是」的預測中,真正是的比例。如果模型說 10 筆是詐騙,其中 8 筆真的是詐騙,精確率就是 80%。精確率高代表「模型說是的東西通常真的是」。

召回率(Recall):所有實際是的案例中,模型找到了多少。如果實際有 20 筆詐騙,模型找到 8 筆,召回率就是 40%。召回率高代表「模型不容易漏掉」。

F1 Score:精確率和召回率的調和平均數。當你需要在精確率和召回率之間找平衡時使用。F1 = 2 × (Precision × Recall) / (Precision + Recall)。

AUC-ROC:ROC 曲線下面積。AUC 值介於 0 到 1 之間,0.5 代表隨機猜,1.0 代表預測完美。AUC 的優勢是不受分類門檻(threshold)影響,適合比較不同模型的整體判別能力。

迴歸任務的常見指標:

MAE(Mean Absolute Error):預測值和實際值的平均差距。直觀易懂——MAE 是 5 萬元代表平均偏差 5 萬。

RMSE(Root Mean Squared Error):對大的偏差懲罰更重。如果模型偶爾出現很離譜的預測,RMSE 會比 MAE 高出很多,提醒你注意極端情況。

R-squared(決定係數):模型解釋了多少比例的變異。R² = 0.8 代表模型解釋了 80% 的資料變異,還有 20% 是模型無法解釋的。

一個實際的例子:你在做信用卡詐騙偵測。如果漏掉一筆真正的詐騙(假陰性),銀行可能損失幾萬元。如果把正常交易誤判為詐騙(假陽性),客戶只是被暫時擋住交易。在這個場景下,召回率比精確率重要——寧可多擋幾筆正常交易,也不要漏掉真正的詐騙。

常見演算法比較

演算法 類型 適用場景 優點 缺點 適合的資料量
線性迴歸 迴歸 簡單預測、特徵和目標近似線性關係 簡單、快速、可解釋 無法捕捉非線性關係 少量到中等
邏輯迴歸 分類 二元分類、基準模型 簡單、快速、機率輸出 無法捕捉複雜邊界 少量到中等
決策樹 兩者 需要可解釋性的場景 直觀、可視化、不需特徵縮放 容易過擬合 中等
隨機森林 兩者 表格資料、特徵重要性分析 準確、穩健、不易過擬合 訓練慢、模型大 中等到大量
XGBoost/LightGBM 兩者 結構化資料的競賽和生產環境 準確度高、速度快 需要調參、不直觀 中等到大量
SVM 分類 高維度、小資料集 在高維度表現好 大資料集訓練慢 少量到中等
神經網路 兩者 圖片、文字、語音等非結構化資料 能學複雜模式 需要大量資料和算力 大量

各演算法的進一步說明:

線性迴歸(Linear Regression)是最簡單的迴歸演算法,假設輸入和輸出之間是線性關係。它的數學公式就是 y = ax + b 的多維版本。簡單預測問題和初步探索資料時的好起點。

邏輯迴歸(Logistic Regression)名字裡有「迴歸」,但其實是分類演算法。它用 Sigmoid 函數把線性迴歸的輸出壓縮到 0 和 1 之間,代表某個類別的機率。常用於二元分類,例如判斷是否違約。因為輸出是機率,可解釋性好——你能知道模型有多「確定」。

決策樹(Decision Tree)像流程圖一樣,用一連串的是非題把資料分類。例如「年收入大於 50 萬?是→繼續看年齡,否→判斷為低信用」。容易理解和解釋,但單棵樹的效果有限,而且很容易過擬合——如果讓樹長到很深,它會把訓練資料背下來。

隨機森林(Random Forest)建立很多棵決策樹(通常 100 到 1000 棵),每棵樹只看部分資料和部分特徵,最後讓它們投票決定結果。比單棵決策樹準確得多,也不容易過擬合,是表格式資料上最常用的演算法之一。

梯度提升(Gradient Boosting)和隨機森林不同的地方在於,它的樹是序列建立的——每棵新的樹專門修正前面所有樹犯的錯誤。XGBoost、LightGBM 和 CatBoost 是三個主要的梯度提升實作。XGBoost 在 Kaggle 競賽中非常流行,LightGBM 在大資料集上訓練速度更快,CatBoost 對類別特徵(如地區、職業)的處理更方便。在結構化資料(表格資料)的分類和迴歸任務上,梯度提升通常是表現最好的傳統機器學習演算法。

支援向量機(Support Vector Machine,SVM)的概念是在資料之間找到一個最佳的「分隔邊界」。在二維空間中是一條線,三維空間中是一個平面,更高維度中是一個超平面。SVM 用核函數(Kernel)技巧把資料映射到更高維度的空間,讓原本線性不可分的資料變得可分。SVM 在小資料集和高維度資料上表現好,但在大資料集上訓練時間很長(計算複雜度大約是 O(n²) 到 O(n³))。

神經網路(Neural Network)模仿生物神經元的連接方式,能學習非常複雜的規律。深度學習就是使用很多層的神經網路。圖片辨識、語音辨識、自然語言處理的突破都來自深層神經網路。但神經網路是「大胃王」——需要大量資料和大量算力才能訓練好,且模型內部是黑盒子,難以解釋為什麼做出某個預測。

特徵工程

特徵工程是把原始資料轉換成模型能有效學習的形式。在深度學習普及之前,這是機器學習中最花時間也最需要領域知識的步驟。即使在深度學習時代,好的特徵工程仍然能大幅提升表格資料任務的表現。

常見的特徵工程方法:

數值特徵處理。標準化(Standardization)把特徵的均值調成 0、標準差調成 1。正規化(Normalization)把特徵值縮放到 0 到 1 之間。對數變換(Log Transform)把右偏的分布(例如收入、房價)變得更對稱。對 SVM 和邏輯迴歸這類對特徵尺度敏感的演算法,特徵縮放特別重要。決策樹和隨機森林不受特徵尺度影響,可以跳過這步。

類別特徵處理。One-Hot Encoding 把類別變成多個 0/1 欄位(例如「縣市」變成「是否台北」「是否台中」等欄位)。Label Encoding 把類別映射成數字(但暗示了不存在的順序關係,要小心使用)。Target Encoding 用每個類別對應的目標平均值來取代類別(例如把「台北」替換成台北的平均房價),效果好但有過擬合風險。

衍生特徵。從現有特徵組合或計算出新特徵。例如從「出生年月日」計算「年齡」、從「購買金額」和「購買次數」計算「平均客單價」、從「註冊日期」和「最後登入日期」計算「帳號閒置天數」。好的衍生特徵可能比換演算法的效果還大。

特徵選擇。太多特徵不一定好。不相關的特徵會增加雜訊和訓練時間。常用的方法有:相關係數篩選(和目標相關性太低的特徵移除)、特徵重要性排序(用隨機森林的 feature importance 來挑選重要特徵)、遞迴特徵消除(RFE,逐步移除最不重要的特徵直到表現不再提升)。

處理資料不平衡

在很多真實場景中,正反類別的比例差異很大:詐騙偵測中正常交易佔 99% 以上、製造業中良品佔 99%、罕見疾病診斷中健康個體佔絕大多數。這種資料不平衡會導致模型偏向預測多數類別——永遠猜「正常」就能有 99% 準確率,但這樣的模型毫無用處。

常見的處理方法:

過採樣(Oversampling):增加少數類別的樣本。SMOTE(Synthetic Minority Over-sampling Technique)是最常用的方法——它不是簡單複製少數類別的樣本,而是在少數類別的樣本之間「插值」,生成新的合成樣本。效果比單純複製好,但可能在少數類別的邊界上產生雜訊。

欠採樣(Undersampling):減少多數類別的樣本。簡單有效,但會丟失多數類別的資訊。Random Undersampling 隨機移除多數類別樣本。Tomek Links 移除靠近分類邊界的多數類別樣本,讓邊界更清晰。

類別權重(Class Weights):不改變資料本身,而是讓模型在訓練時對少數類別的錯誤給更高的懲罰。大部分的演算法都支援 class_weight 參數,設成 "balanced" 就會自動根據類別比例調整。這是最簡單的方法,通常可以作為第一個嘗試。

實務上的建議:先試 class_weight="balanced"(最簡單),效果不好再試 SMOTE,還不行再考慮組合方法(先 SMOTE 再 Tomek Links 清理邊界)。不要只看準確率——用 F1 Score 或 AUC-ROC 來評估不平衡資料的模型。

常見錯誤

資料洩漏(Data Leakage)是監督式學習中最常見也最危險的錯誤。資料洩漏是指訓練過程中意外使用了測試時不應該知道的資訊,導致模型在測試中表現很好,但在真實世界中表現很差。

常見的洩漏情境:

用未來的資料預測過去。例如用 12 月的銷售額特徵來預測 11 月的銷售量——在實際預測時你不會有未來的資料。

在拆分資料前做特徵工程。例如用整份資料(包含測試集)計算標準化的均值和標準差。正確做法是只用訓練集計算均值和標準差,然後用這些值去轉換測試集。

目標欄位的衍生特徵。例如用「是否有退貨紀錄」來預測「是否為詐騙訂單」——在實際應用中,你在下單時還不知道會不會退貨。

其他常見錯誤:

沒有打亂資料。如果資料是按時間或類別排序的,拆分後的訓練集和測試集分布可能不一致。在拆分前先隨機打亂資料。但時間序列資料例外——時間序列不能打亂,必須用時間順序拆分,否則就是用未來預測過去。

用測試集調參數。測試集應該只在最後評估一次。如果你用測試集的結果來調整超參數,等於把測試集當成訓練資料的一部分了。正確做法是用驗證集(或交叉驗證)來調參數。

忽略類別不平衡。用準確率來評估不平衡資料集的模型會得到誤導的高分。改用 F1、AUC-ROC 或 Precision-Recall 曲線。

過度調參。花太多時間微調超參數,得到的改善可能只有 0.1%,不如把時間花在特徵工程或收集更多資料上。

標註資料的成本

監督式學習最大的瓶頸是:需要大量標註過的資料。

簡單的標註(這封信是不是垃圾郵件)成本低,非專業人員就能做。外包給標註平台(如 Amazon Mechanical Turk、Scale AI、Labelbox),每筆大約 0.01 到 0.1 美元。1 萬筆簡單標註的成本大約在 100 到 1,000 美元。

專業的標註(這張 X 光片是否有腫瘤)需要領域專家,成本高昂。一張醫療影像的標註成本可能是幾十到幾百元台幣。如果需要幾萬張,成本就非常可觀。法律文件的標註需要律師、程式碼的品質標註需要資深工程師,這些都是高成本的專業標註。

標註品質直接影響模型品質。不同標註者對同一筆資料的判斷可能不一致(inter-annotator agreement),需要多人標註和品質審核機制。常見做法是每筆資料由 3 人標註,取多數決,一致率低於某個門檻的資料交由專家覆審。

降低標註成本的策略:

主動學習(Active Learning):讓模型自己挑選「最有價值」的資料來標註。模型對不確定的資料請人類標註,對有信心的資料自動標註。可以用 20-30% 的標註量達到全部標註 80-90% 的效果。

弱監督(Weak Supervision):用規則、啟發式或 LLM 來自動產生大量品質不高但數量多的標註。例如用 GPT-4 來標記情感分析的訓練資料。缺點是標註品質不如專家,且可能引入 AI 本身的偏見。Snorkel 是一個專門做弱監督的框架。

資料增強(Data Augmentation):對已有的標註資料做變換來產生更多訓練資料。圖片可以旋轉、翻轉、裁切;文字可以做同義詞替換、回翻譯(中文翻英文再翻回中文)。

工具與框架比較

工具 語言 適合場景 優點 缺點 費用
scikit-learn Python 傳統 ML、原型開發 API 統一、文件好、生態豐富 不支援 GPU、大資料慢 免費
XGBoost Python/R/Java 表格資料、生產環境 準確度高、速度快 需要調參經驗 免費
LightGBM Python/R/C++ 大資料集、高效訓練 記憶體效率高、訓練快 小資料集可能過擬合 免費
CatBoost Python/R 含類別特徵的資料 類別特徵處理好、不易過擬合 社群較小 免費
AutoML (Google) Python 自動化模型選擇和調參 不需要 ML 專業知識 成本較高、黑盒 按用量計費
Azure AutoML Python 企業整合 與 Azure 生態整合好 成本較高 按用量計費
H2O AutoML Python/R/Java 自動化 ML 開源版免費、速度快 進階功能需付費版 開源版免費
Amazon SageMaker Python AWS 生態整合 AutoPilot 自動化、彈性算力 成本結構複雜 按用量計費

對於剛開始接觸監督式學習的人,建議從 scikit-learn 入門。它的 API 設計非常統一——所有演算法都用 fit() 訓練、predict() 預測、score() 評估。學會用 scikit-learn 後,轉到 XGBoost 或 LightGBM 只需要改幾行程式碼。

如果完全不想寫程式碼,Google AutoML、Azure AutoML 和 Amazon SageMaker AutoPilot 都提供拖拉式的介面。上傳 CSV 檔案,選擇要預測的欄位,系統自動完成特徵工程、模型選擇、超參數調優。費用依用量而定——Google AutoML Tables 的訓練費用大約每小時 19.32 美元,部署後每預測 1000 筆約 0.05 到 1.8 美元不等。

和其他學習方式的比較

非監督式學習(Unsupervised Learning):沒有正確答案,模型自己發現資料中的結構和規律。常見任務包括分群(Clustering,例如把客戶分成不同族群)和降維(Dimensionality Reduction,例如 PCA 把高維資料壓縮到可視化的 2-3 維)。應用場景:客戶分群(不知道有幾種客戶,讓模型自己分)、異常偵測(找出和大多數資料明顯不同的點)、資料探索(了解資料的結構)。

強化學習(Reinforcement Learning):透過和環境互動,根據獎勵訊號學習最佳策略。例如 AlphaGo 透過下棋的勝負回饋學會圍棋。和監督式學習的差異是:監督式學習每一步都有正確答案,強化學習只有在一連串動作之後才得到回饋。適合序列決策問題——遊戲 AI、機器人控制、推薦系統的排序。

自監督式學習(Self-supervised Learning):把未標註資料轉換成監督式學習的形式。例如 GPT 的預訓練是「給前面的文字,預測下一個詞」——答案從資料本身就能得到,不需要人工標註。BERT 的預訓練是把一些詞遮住,讓模型猜被遮住的詞。自監督式學習是目前大型語言模型和基礎模型(Foundation Model)的核心訓練方式。

遷移學習(Transfer Learning)和監督式學習的關係:遷移學習是把在一個任務上學到的知識轉移到另一個任務上。例如用 ImageNet 上預訓練的圖片辨識模型,微調後用來辨識醫療影像。預訓練階段通常用自監督式學習(大量無標註資料),微調階段用監督式學習(少量標註資料)。這個「預訓練加微調」的範式讓小團隊也能用少量標註資料做出好的模型。

安全與限制

訓練資料的偏見會被學進模型。如果訓練資料中某個族群的信用紀錄較少,模型對該族群的判斷就會比較不準。這在信用評分和履歷篩選等高風險場景中尤其需要注意。Amazon 在 2018 年就因為 AI 招聘工具偏見(從歷史資料學到偏好男性求職者)而放棄了該工具。

標註錯誤會誤導模型。大規模資料集中,一定比例的標註是錯的(通常 5-15%)。少量雜訊模型通常能容忍,但系統性的標註錯誤會導致模型學到錯誤的規律。例如如果標註者傾向把長信件標為垃圾郵件(因為懶得讀完),模型就會學到「長信件是垃圾郵件」這個錯誤的規律。

模型無法處理訓練中沒見過的類別。如果垃圾郵件的手法改變了(例如用 Unicode 替代字元繞過關鍵字偵測),模型可能無法辨認。這就是為什麼模型需要定期用新資料重新訓練。概念漂移(Concept Drift)——資料的分布隨時間改變——是生產環境中監督式學習模型最常見的退化原因。

隱私風險。訓練資料可能包含個人資料(如交易紀錄、醫療影像),需要確保資料收集和使用符合個資法規範。模型本身也可能透過成員推論攻擊(Membership Inference Attack)洩漏訓練資料中是否包含特定個人的資訊。

對抗樣本(Adversarial Examples)。經過精心設計的微小擾動可以讓模型做出完全錯誤的預測。例如在圖片上加入人眼看不出來的雜訊,就能讓模型把熊貓辨認成長臂猿。這在自動駕駛和安全檢測等場景中是潛在的安全威脅。

可解釋性。深度學習模型(如神經網路)的決策過程是黑盒子。在金融信貸審核、醫療診斷等需要解釋「為什麼拒絕」或「為什麼這樣判斷」的場景中,監管機構可能要求模型具有可解釋性。LIME 和 SHAP 是兩個常用的模型解釋工具。

常見問題

ChatGPT 和 Claude 是監督式學習訓練出來的嗎?

部分是。它們的訓練分兩個階段:第一階段的預訓練是自監督式學習(預測下一個 token),第二階段的對齊(RLHF/RLAIF)則使用了監督式學習(SFT,監督式微調)和強化學習。

需要多少資料才能訓練監督式學習模型?

取決於問題的複雜度和演算法。簡單的分類問題(如情感分析),幾百到幾千筆可能就夠。複雜的圖片辨識任務,通常需要幾千到幾萬筆。深度學習模型的參數越多,通常需要越多的資料。經驗法則是:特徵數的 10 倍以上是合理的起點(例如 20 個特徵至少需要 200 筆資料)。

監督式學習和規則引擎(Rule-based)怎麼選?

如果規則明確且固定(例如「金額超過 50 萬就標記」),用規則引擎更簡單可靠。如果規律複雜且難以用人工規則描述(例如垃圾郵件的特徵組合太多),監督式學習更適合。實務中兩者常搭配使用——先用規則處理明確的案例,不確定的再交給模型。

標註資料可以用 AI 自動產生嗎?

可以,這稱為弱監督(Weak Supervision)或用 LLM 標註。例如用 GPT-4 來標記情感分析的訓練資料。缺點是 AI 標註的品質不如專家標註,且可能引入 AI 本身的偏見。適合對精確度要求不極端高的場景。建議的做法是用 AI 標註大部分資料,再由人工抽樣審核 10-20%,確認品質在可接受的範圍。

台灣有什麼公開的標註資料集?

政府開放資料平台(data.gov.tw)有部分可用的資料。中研院的 CKIP 提供中文自然語言處理的標註資料。台大的醫療影像標註資料在學術研究中也有使用。另外,Kaggle 上有不少含台灣資料的公開資料集。Hugging Face 的 Datasets Hub 也有中文的 NLP 資料集。

什麼時候該用深度學習,什麼時候用傳統機器學習?

表格資料(CSV 格式的結構化資料)用 XGBoost 或 LightGBM 通常比深度學習好——訓練快、不需要 GPU、不容易過擬合、結果可解釋。圖片、語音、文字等非結構化資料用深度學習。如果資料量少於 1 萬筆,傳統機器學習通常是更好的選擇。

怎麼處理模型上線後效果變差的問題?

這通常是概念漂移(Concept Drift)——資料的分布隨時間改變了。解法是建立監控機制,持續追蹤模型的預測準確率。當準確率低於某個門檻時,用新的資料重新訓練模型。定期重新訓練的頻率取決於業務變化的速度——詐騙偵測可能每週需要更新,房價預測可能每季更新就夠。

監督式學習的模型可以解釋嗎?

取決於演算法。線性迴歸、邏輯迴歸、決策樹本身就是可解釋的——你可以看到每個特徵的權重或決策規則。隨機森林和 XGBoost 提供特徵重要性排序,告訴你哪些特徵對預測影響最大。神經網路是黑盒子,但可以用 LIME 或 SHAP 做事後解釋——它們會告訴你,對於某一筆預測,哪些特徵把結果推向了哪個方向。

相關文章

參考資料

  • Andrew Ng, "Machine Learning" (Stanford CS229)
  • Scikit-learn Documentation: Supervised Learning
  • 台灣 AI 實驗室公開資源
  • Chen & Guestrin, "XGBoost: A Scalable Tree Boosting System" (2016)
  • Ke et al., "LightGBM: A Highly Efficient Gradient Boosting Decision Tree" (2017)
  • Chawla et al., "SMOTE: Synthetic Minority Over-sampling Technique" (2002)
  • Lundberg & Lee, "A Unified Approach to Interpreting Model Predictions" (SHAP, 2017)