---
title: "分布外偵測（Out-of-Distribution Detection (OOD)）"
slug: out-of-distribution-detection-ood
language: zh-TW
source: https://aiterms.tw/learning/what-is-out-of-distribution-detection-ood
updated_at: 2026-07-30
tags: [模型可靠性, 不確定性估計, 分布偏移, 深度學習, 安全AI]
ipas_term: false
type: deep-dive
---

# 分布外偵測 是什麼？

> 識別模型在推論時遇到的輸入是否來自訓練資料分布之外的技術，以防止模型在未知情境下給出不可靠的預測。

分布外偵測（Out-of-Distribution Detection，OOD Detection）是機器學習可靠性（Reliability）與安全性（Safety）領域中的重要研究方向，在自動駕駛、醫療診斷、金融風控等高風險應用中尤為關鍵。

問題背景

標準的機器學習假設：訓練資料與測試資料來自相同的資料分布（Independent and Identically Distributed, i.i.d.）。然而在現實部署中，這個假設往往不成立：使用者可能輸入訓練時從未見過的資料類型（如：一個訓練於室內貓狗辨識的分類器，突然收到一張卡車圖片）。標準分類模型不會「拒絕回答」，而是依然輸出最高信心度的類別預測，但這個預測毫無可信度。若模型用於自動駕駛決策或醫療診斷，這種「看似自信的錯誤」可能造成嚴重後果。

核心概念：In-Distribution vs. Out-of-Distribution

- In-Distribution（ID）樣本：來自訓練資料分布的正常輸入，模型應對其做出可靠預測。
- Out-of-Distribution（OOD）樣本：來自訓練分布之外的輸入，包括：全新類別（Semantic Shift）、不同領域的資料（Domain Shift）、損毀或有噪音的資料（Covariate Shift）、對抗樣本（Adversarial Examples）等。

OOD 偵測的目標是在推論時為每個輸入計算一個「In-Distribution 分數」，分數高的認為是 ID 樣本（正常預測），分數低的判定為 OOD 樣本（拒絕預測或提示人工審查）。

主要偵測方法

一、基於信心分數的方法

- 最大 Softmax 機率（MSP，Maximum Softmax Probability）：Dan Hendrycks & Kevin Gimpel 於 2017 年提出的基準方法，直接用分類器輸出的最大 Softmax 機率作為 ID 分數。ID 樣本的最大 Softmax 機率通常較高，OOD 樣本通常較低。方法簡單，無需修改模型，但效果有限：Softmax 輸出會被「過度自信」問題扭曲，OOD 樣本的 Softmax 輸出有時仍然很高。

- ODIN（Out-of-DIstribution detector for Neural Networks）：在 MSP 基礎上加入溫度縮放（Temperature Scaling，放大 Softmax 的分辨力）和輸入擾動（Input Perturbation，在輸入上加入使 ID 樣本分數升高的小擾動），顯著提升 MSP 的偵測能力，無需重新訓練。

- Energy-based Score（能量分數）：使用 Softmax 前的 logits 計算自由能（Free Energy），能量低的是 ID 樣本，能量高的是 OOD 樣本，比 Softmax 機率更具理論基礎。

二、基於特徵空間的方法

- Mahalanobis Distance：計算輸入樣本在特徵空間中與各類別訓練樣本高斯分布的馬氏距離，距離所有類別中心都很遠的樣本為 OOD。

- KNN-based（近鄰距離）：基於訓練樣本在特徵空間中的 K 近鄰距離，若測試樣本的最近鄰距離過大，判定為 OOD。

三、基於模型設計的方法

- 貝葉斯深度學習（Bayesian Deep Learning）：使用 MC Dropout 或 Deep Ensemble，估計預測的不確定性（Uncertainty）。高不確定性可作為 OOD 的指示信號。
- Normalizing Flow：訓練一個可計算精確概率密度的生成模型，對 OOD 樣本估計出低似然值。
- Outlier Exposure：在訓練時加入已知的 OOD 樣本（Outlier Data），引導模型對這些樣本輸出低信心，提高 OOD 偵測能力。

四、大型語言模型中的 OOD 挑戰

在 LLM 時代，OOD 問題以新的形式出現：幻覺（Hallucination）可以視為一種「知識 OOD」：模型被問到訓練資料中未涵蓋或衝突的事實，卻依然自信地給出錯誤答案。幻覺偵測（Hallucination Detection）和不確定性估計（Uncertainty Quantification）是 LLM 可靠性研究的核心問題。

評估指標

OOD 偵測通常用以下指標評估（不使用 Accuracy，因為 ID/OOD 的比例在真實部署中未知）：
- AUROC（ROC 曲線下面積）：衡量在不同閾值下區分 ID 與 OOD 的整體能力。
- FPR@TPR95：在真正例率（TPR）= 95% 時的假正例率，衡量「高召回率時的誤報成本」。
- AUPR（PR 曲線下面積）：分別對 ID 和 OOD 為正類計算。

與相關概念的區別

- Domain Shift vs. OOD：Domain Shift 指訓練資料與部署資料的特徵分布不同（但類別標籤仍有意義）；OOD 更強調語意上的「全新類別」或完全不同的任務場景。
- Anomaly Detection vs. OOD Detection：異常偵測通常在無監督設定下，只有正常樣本可用；OOD 偵測通常有一個訓練好的分類模型，目標是在分類基礎上加上「不確定性感知」能力。兩者思路有重疊，但應用場景和評估設定不同。

## 常見問題

### 為什麼神經網路對 OOD 樣本也會輸出高信心度？

這是神經網路（尤其是 Softmax 分類器）的一個已知問題，稱為「過度自信」（Overconfidence）。Softmax 函數的數學性質決定了它的輸出是相對機率：只要某個類別的 logit 比其他類別稍高，Softmax 就會輸出接近 1 的機率，無論絕對數值大小。換句話說，Softmax 本質上在比較哪個類別「最像」，而不是在衡量輸入「有多像任何已知類別」。當輸入是 OOD 樣本時，模型雖然「不認識」，但仍會強制把它分配給最接近的已知類別並輸出高機率。解決方案包括溫度縮放（降低 logits 的尖銳程度）、能量分數（不依賴 Softmax 歸一化）和貝葉斯不確定性估計。

### OOD 偵測在實際產品中如何部署？

在產品部署中，OOD 偵測通常作為模型推論流水線的一個額外層次加入。具體做法因場景而異：低風險應用（如推薦系統）可能只記錄 OOD 事件供後續分析；中風險應用（如智慧客服）可在偵測到 OOD 輸入時自動轉接人工；高風險應用（如醫療診斷輔助）則在 OOD 時直接拒絕輸出並要求醫師複核。技術實現上，最輕量的方式是在模型輸出後計算能量分數或最大 Softmax 機率，設定閾值進行判斷；更完善的方案是維護訓練集的特徵表示索引（如 FAISS 近鄰搜尋），對新輸入做特徵距離計算。部署後需持續監控 OOD 率，異常升高可能代表輸入資料分布發生了 Concept Drift。

### OOD Detection 和異常偵測（Anomaly Detection）有什麼不同？

兩者目標相似（找出「不正常」的樣本），但設定不同。異常偵測（Anomaly Detection）通常是無監督任務：訓練時只有正常樣本，沒有標注哪些是異常，模型學習正常資料的分布，把偏離分布的樣本標記為異常。典型應用是工業設備的異常感測器讀值、金融欺詐偵測。OOD Detection 則通常是在一個訓練好的監督分類模型之上加入不確定性偵測能力：模型知道 K 個類別是什麼，目標是識別「第 K+1 類（完全陌生）」或「輸入破損」的情況。在技術方法上有交集（如 Isolation Forest、Autoencoder 重建誤差既用於異常偵測也用於 OOD），但評估協定、應用場景和模型假設有所不同。

---

深度解說頁：https://aiterms.tw/learning/what-is-out-of-distribution-detection-ood
快查頁：https://aiterms.tw/terms/out-of-distribution-detection-ood
最後更新：2026/07/30