---
title: "負樣本抽樣（Negative Sampling）"
slug: negative-sampling
language: zh-TW
source: https://aiterms.tw/learning/what-is-negative-sampling
updated_at: 2026-07-04
tags: [機器學習, 自然語言處理, 推薦系統, 最佳化, source:ipas]
ipas_term: true
type: deep-dive
---

# 負樣本抽樣 是什麼？

> 一種最佳化技術，用於在訓練模型時高效選擇負例，尤其在推薦系統和NLP中。

## 核心概念
負樣本抽樣（Negative Sampling）是一種在機器學習中，特別是在處理大規模分類或排序任務時，用於提高訓練效率和模型效能的技術。其核心思想是，在許多任務中，正樣本（即我們感興趣的目標對）的數量相對於所有可能的負樣本（即非目標對）而言是極其稀疏的。如果我們在訓練時考慮所有可能的負樣本，計算成本將會非常高昂，甚至不可行。負樣本抽樣的目標是從海量的負樣本中，有策略地選取一小部分「有代表性」或「有挑戰性」的負樣本來進行訓練，而不是遍歷所有負樣本。這樣做既能顯著減少計算量，又能讓模型有效地學習區分正負樣本的能力。這種方法在自然語言處理的詞嵌入（如Word2Vec）和推薦系統中得到了廣泛應用。

## 運作原理
負樣本抽樣的運作原理通常涉及以下幾個步驟：
1.  **定義正樣本**：首先，明確什麼是「正樣本」。例如，在詞嵌入中，如果上下文詞 $c$ 與中心詞 $w$ 共同出現在一個窗口內，則 $(w, c)$ 構成一個正樣本對。在推薦系統中，如果用戶 $u$ 與物品 $i$ 之間存在互動（如點擊、購買），則 $(u, i)$ 構成一個正樣本對。
2.  **定義負樣本空間**：所有不構成正樣本的對，都屬於負樣本空間。這個空間通常非常巨大。
3.  **抽樣負樣本**：對於每個正樣本，我們從負樣本空間中隨機抽取 $k$ 個負樣本。這個 $k$ 值是一個超參數，通常在5到20之間。抽樣的策略是關鍵：
    *   **隨機抽樣**：最簡單的方法是從所有非正樣本中均勻隨機抽樣。
    *   **基於頻率的抽樣**：在Word2Vec中，負樣本是根據詞彙表中詞語的頻率分佈來抽取的，通常採用 $P(w) \propto f(w)^{3/4}$ 的加權分佈。這種方法傾向於抽取頻率較高的詞作為負樣本，因為這些詞更容易與正樣本混淆，從而提供更有價值的學習信號。
    *   **硬負樣本抽樣（Hard Negative Mining）**：這是一種更進階的策略，旨在選擇那些模型當前難以區分、容易預測為正樣本的負樣本。這些「硬」負樣本能更有效地推動模型學習邊界。例如，可以基於模型當前的預測分數來選擇那些分數較高的負樣本。
4.  **模型訓練**：對於每個正樣本及其抽樣出的 $k$ 個負樣本，模型會被訓練來最大化正樣本的機率，同時最小化負樣本的機率。這通常透過二元交叉熵損失函數來實現。例如，在Word2Vec的Skip-gram模型中，目標是最大化 $\log \sigma(v_c^T v_w) + \sum_{j=1}^k \log \sigma(-v_{c_j}^T v_w)$，其中 $v_w$ 是中心詞向量，$v_c$ 是上下文詞向量，$v_{c_j}$ 是第 $j$ 個負樣本詞向量，$\sigma$ 是sigmoid函數。

## 實際應用
負樣本抽樣在多個機器學習領域中發揮著關鍵作用：
*   **自然語言處理（NLP）**：
    *   **詞嵌入（Word Embeddings）**：Word2Vec模型（尤其是Skip-gram模型）是負樣本抽樣最著名的應用之一。它使用負樣本抽樣來高效地訓練詞向量，使得相似的詞在向量空間中距離相近。
    *   **知識圖譜嵌入**：在學習知識圖譜中實體和關係的嵌入時，負樣本抽樣用於構建訓練對，區分真實的三元組（頭實體、關係、尾實體）和虛假的三元組。
*   **推薦系統**：
    *   **隱式回饋推薦**：在基於隱式回饋（如用戶點擊、瀏覽、購買但沒有明確評分）的推薦系統中，用戶沒有互動的物品被視為潛在的負樣本。負樣本抽樣用於從海量未互動物品中選取一部分作為負例，訓練協同過濾或深度學習推薦模型，如BPR（Bayesian Personalized Ranking）和各種神經協同過濾模型。
    *   **排序模型**：在推薦列表的排序階段，負樣本抽樣用於訓練學習排序（Learning-to-Rank）模型，以區分用戶會點擊的物品和不會點擊的物品。
*   **電腦視覺**：
    *   **目標檢測**：在訓練目標檢測器時，一個圖像中可能只有少數幾個正樣本（包含目標的區域），而大部分區域都是負樣本（不包含目標的背景）。負樣本抽樣（尤其是硬負樣本抽樣）用於選擇那些容易被誤判為目標的背景區域，以提高檢測器的性能。
*   **圖神經網路（Graph Neural Networks）**：在學習節點嵌入或邊預測任務時，負樣本抽樣用於構建訓練對，區分圖中存在的邊和不存在的邊。

## 常見誤區
使用負樣本抽樣時，需要注意以下幾個常見誤區：
*   **負樣本數量選擇不當**：選擇過少的負樣本可能導致模型學習不足，無法有效區分正負樣本；選擇過多的負樣本則會增加計算成本，抵消抽樣帶來的效率提升。最佳的 $k$ 值通常需要透過實驗來確定，並可能因任務和資料集而異。
*   **抽樣策略不佳**：簡單的均勻隨機抽樣可能效率不高，因為它可能抽取到大量容易區分或無用的負樣本。未能採用更有效的抽樣策略（如基於頻率的抽樣或硬負樣本抽樣），可能導致模型收斂速度慢或最終效能不佳。
*   **將所有未互動視為負樣本**：在推薦系統等隱式回饋場景中，用戶未互動的物品不一定都是真正的負樣本，有些可能是用戶尚未發現但會喜歡的物品（潛在正樣本）。將這些潛在正樣本錯誤地標記為負樣本進行訓練，可能會引入雜訊並損害模型效能。
*   **忽略負樣本的動態性**：在某些應用中，負樣本的「硬度」是動態變化的。模型在訓練過程中會不斷改進，之前被認為是硬負樣本的例子可能變得容易區分。未能動態調整抽樣策略，可能導致訓練效率下降。

## 與相關技術的比較
負樣本抽樣與其他處理大規模負例或稀疏資料的技術有著密切的關係：
*   **與全量Softmax（Full Softmax）**：
    *   **負樣本抽樣**：將多分類問題轉化為一系列二元分類問題，只對正樣本和少量負樣本進行計算，極大地降低了計算複雜度，尤其適用於詞彙量或物品數量巨大的情況。
    *   **全量Softmax**：需要計算所有類別的機率，並進行歸一化。對於具有數十萬甚至數百萬類別的問題，計算成本極高，是負樣本抽樣旨在解決的核心問題。
*   **與分層Softmax（Hierarchical Softmax）**：
    *   **負樣本抽樣**：透過隨機抽樣負例來簡化計算。
    *   **分層Softmax**：將所有類別組織成一棵二元樹（如霍夫曼樹），將多分類問題轉化為沿著樹路徑的一系列二元分類問題。計算複雜度從 $O(N)$ 降至 $O(\log N)$（其中 $N$ 是類別數）。分層Softmax在計算上比全量Softmax高效，但其性能受樹結構影響，且在某些情況下，負樣本抽樣可能更靈活或表現更好。
*   **與在線硬負樣本抽樣（Online Hard Negative Mining, OHNM）**：
    *   **負樣本抽樣**：通常在每個batch中隨機或基於預設分佈抽取負樣本。
    *   **OHNM**：在每個訓練迭代中，根據模型當前的預測結果，動態選擇那些預測錯誤或預測分數較高的負樣本作為「硬負樣本」進行訓練。這種方法能更有效地引導模型學習，特別是在目標檢測等任務中表現出色。
*   **與對比學習（Contrastive Learning）**：
    *   **負樣本抽樣**：是許多對比學習方法的內置組件。對比學習的目標是讓相似的樣本在嵌入空間中距離接近，不相似的樣本距離遠離。這通常透過構建正樣本對和負樣本對來實現，其中負樣本對的選擇就涉及到負樣本抽樣。
總之，負樣本抽樣是一種實用且高效的技術，它透過巧妙地處理負例，使得在大型稀疏數據集上的訓練變得可行和高效。

## iPAS 考試出題分析

屬於未分類考範圍。

## 常見問題

### 負樣本抽樣為何能提高訓練效率？

負樣本抽樣能顯著提高訓練效率，主要是因為它將多分類問題（例如，從數十萬個詞彙中預測下一個詞）轉化為一系列二元分類問題。在沒有負樣本抽樣的情況下，模型需要計算每個潛在負例的機率，並進行歸一化，這在類別數量巨大時會導致極高的計算成本。通過負樣本抽樣，我們只需要對一個正樣本和少量（通常是5-20個）隨機選取的負樣本進行計算和梯度更新。這將計算複雜度從與類別總數成正比降低到與抽樣的負樣本數量成正比，從而極大地減少了每次迭代的計算量，使得在大型詞彙表或物品集合上的訓練變得可行。

### 如何選擇負樣本的數量？

選擇負樣本的數量 $k$ 是一個重要的超參數，它需要在訓練效率和模型效能之間取得平衡。通常，對於較小的資料集，可以選擇較大的 $k$ 值（例如15-20），以提供足夠的負例信號。對於較大的資料集，較小的 $k$ 值（例如5-10）可能就足夠了，因為資料量本身已經提供了豐富的資訊。過少的負樣本可能導致模型學習不足，無法有效區分正負樣本；而過多的負樣本則會增加計算成本，抵消抽樣帶來的效率提升。最佳的 $k$ 值通常需要透過實驗和交叉驗證來確定，並可能因具體的任務、模型架構和資料分佈而異。

### 負樣本抽樣在推薦系統中有何應用？

負樣本抽樣在推薦系統中扮演著關鍵角色，尤其是在處理隱式回饋數據時。在隱式回饋場景中，用戶的點擊、購買等行為被視為正樣本，而用戶未互動的物品則構成海量的潛在負樣本。由於不可能將所有未互動的物品都作為負例進行訓練，負樣本抽樣被用來從這些未互動物品中選取一小部分作為負例。例如，在BPR（Bayesian Personalized Ranking）等排序模型中，對於每個用戶-正物品對，都會抽樣一個用戶未互動的物品作為負物品，然後模型被訓練以確保正物品的預測分數高於負物品。這種方法使得推薦模型能夠高效地學習用戶的偏好，並區分用戶可能喜歡和不喜歡的物品。

---

深度解說頁：https://aiterms.tw/learning/what-is-negative-sampling
快查頁：https://aiterms.tw/terms/negative-sampling
最後更新：2026/07/04