連續詞袋模型(Continuous Bag of Words)是什麼?

Word2Vec 中根據上下文詞預測目標詞的神經網路架構,是 CBOW 的完整名稱。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Continuous Bag of Words
主題標籤
自然語言處理、詞向量、Word2Vec
考點定位
非 iPAS 核心術語
最後更新
2026/07/30
連續詞袋模型(Continuous Bag of Words)是什麼? 自然語言處理詞向量
術語快查

搜尋意圖: 如果你在找「連續詞袋模型 是什麼」或「連續詞袋模型 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: Word2Vec 中根據上下文詞預測目標詞的神經網路架構,是 CBOW 的完整名稱。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

Word2Vec 中根據上下文詞預測目標詞的神經網路架構,是 CBOW 的完整名稱。

連續詞袋模型(CBOW, Continuous Bag of Words)是 Tomas Mikolov 等人於 2013 年在 Word2Vec 論文中提出的兩種主要架構之一。與其對偶的 Skip-gram 相反,CBOW 的方向是根據前後上下文預測中心詞,這在直覺上更符合自然語言的閱讀方式。

核心架構與訓練過程

CBOW 的神經網路架構異常簡單,只有三層:

  1. 輸入層:包含上下文詞(通常是目標詞前後各 c 個詞,窗口大小 2c+1)的獨熱編碼向量,維度均為 |V|(詞表大小)。

  2. 隱層:單層隱層,寬度為 d(嵌入維度,如 100、300)。輸入層到隱層的權重矩陣 W(|V| × d)就是我們要學習的詞向量。所有上下文詞的獨熱向量與 W 相乘後取平均,得到隱層激活值。

  3. 輸出層:將隱層激活投影回詞表大小 |V|,通過 Softmax 生成各詞的條件機率 P(target_word | context)。損失函數是交叉熵(目標詞的機率應最大化)。

簡單數學表達:

  • 隱層 h = (1/2c) Σ W x_context (上下文向量平均)
  • 輸出 y = Softmax(W' h + b)
  • 損失 = -log P(target | context)

為什麼取平均而不是連接?

CBOW 對上下文詞的處理是取平均而非連接(concatenation)。這個設計看似簡陋,卻有深層原因:若連接所有上下文詞向量,隱層寬度會隨上下文窗口大小 2c 倍增;取平均則使隱層固定寬度,參數量與窗口大小無關。這種「位置不變性」設計使得 CBOW 能處理任意長度的上下文(儘管通常固定窗口),且大幅減少參數量,加速訓練。

訓練技巧與優化

負採樣(Negative Sampling)

Compute Softmax 的計算成本是 O(|V|)(詞表大小),對百萬量級詞表極為昂貴。Mikolov 提出「負採樣」技巧:不是優化整個詞表的 Softmax,而是將問題轉化為二元分類。

  • 正樣本:真實的 (context, target) 詞對
  • 負樣本:隨機採樣的 k 個「假」詞對(上下文仍是真實的,但目標詞隨機選取)

CBOW 模型學會區分真實詞對和隨機詞對。負採樣大幅降低每步計算複雜度從 O(|V|) 到 O(k)(k 通常 5–20),使大規模訓練成為可能。

分層 Softmax(Hierarchical Softmax)

另一個優化方式是用霍夫曼樹而非負採樣。詞表被組織成一棵二叉樹,每個詞對應樹上的一條路徑。預測詞的機率分解為沿路徑的多個二元分類機率乘積。這樣計算複雜度變為 O(log |V|),但實務中負採樣通常更快。

上下文窗口與動態窗口

CBOW 的標準做法是固定窗口大小(如左右各 5 詞)。但詞距對語義的重要性不同:相鄰詞(如「快速奔跑」)比距離遠的詞提供更多語義信息。改進做法是「動態窗口」:隨機選擇窗口大小(如 1–5),使模型對各距離的詞都有適應。這能輕微提升性能。

CBOW vs. Skip-gram:何時選擇 CBOW?

CBOW 的主要優勢:

  • 訓練速度快(同樣迭代次數,CBOW 比 Skip-gram 快 2–3 倍),因為每個訓練樣本只涉及一個目標詞。
  • 在高頻詞上性能好,因為高頻詞有更多訓練樣本。
  • 所需記憶體少。

Skip-gram 的優勢:

  • 在低頻詞和詞類比任務上表現更好,因為每個詞被用作目標詞多次,獲得更多梯度信號。
  • 對詞義的捕捉更精細。

選擇啟發式:若語料非常大(數十億詞以上)且時間緊張,先嚐試 CBOW;若精度要求高或語料相對小,優先 Skip-gram。

CBOW 的語義性質

CBOW 學到的詞向量同樣具有類比能力。經驗表明,CBOW 向量空間也滿足「king - man + woman ≈ queen」式的向量運算,儘管性能略遜 Skip-gram。這說明詞向量的語義結構不僅來自選擇目標詞的方向(Skip-gram),也來自預測目標詞的方向(CBOW)。

與現代 NLP 的關聯

CBOW 的核心思想(使用上下文預測詞)在 BERT、RoBERTa 等現代模型中得到延續和深化。BERT 的遮罩語言建模(Masked Language Modeling, MLM)可視為 CBOW 的高級版本:遮罩句子中的某些詞,利用完整的上下文(不只相鄰詞,而是整句)預測被遮罩詞。BERT 使用 Transformer 替代簡單的平均池化,擁有更強大的上下文編碼能力,但底層思想與 CBOW 一脈相承。

常見問題

CBOW 為什麼對上下文詞取平均而不是連接?

如果連接所有上下文詞向量(如左 5 個 + 右 5 個 = 10 個詞向量連接),隱層寬度會擴展到 10 × d,其中 d 是每個詞向量的維度。若 d=300,隱層就變成 3000 維,參數量爆炸。取平均(只有 d 維)的設計保持隱層寬度恆定,大幅減少參數量和計算成本,是 CBOW 高效的關鍵。這個設計也有語義上的合理性:上下文中各詞對目標詞的貢獻可視為「民主化」的平等投票,平均聚合這個想法。

負採樣是什麼?為什麼要用它而不是完整的 Softmax?

完整的 Softmax 要求計算目標詞相對於詞表中所有詞的機率,複雜度是 O(|V|)(詞表大小)。若詞表有 100 萬個詞,每次梯度更新都要計算 100 萬個輸出,極為昂貴。負採樣巧妙地把問題轉化為二元分類:模型學會區分真實的 (上下文, 目標詞) 對與隨機組合的假對。每次訓練只涉及 1 個正樣本 + k 個負樣本(k 通常 5–20),複雜度降至 O(k),訓練速度快數十倍。這是一個優雅的近似:理論上負採樣略低於精確 Softmax,但實務性能幾乎相同,是值得的 trade-off。

CBOW 的詞向量和 Skip-gram 的詞向量有區別嗎?

有小幅區別,但足以在應用中觀察到。CBOW 訓練的詞向量對高頻詞優化更充分,對低頻詞的表示相對較弱。Skip-gram 因為每個詞都被多次用作預測目標,反覆接收梯度,所以對各頻率詞都有較均勻的優化。在詞類比任務(如「Paris - France」類比)上,Skip-gram 通常準確度 1–3% 更高。然而在文本分類等下游應用中,兩者的實際性能差異往往不超過 1%。選擇上更多考慮計算預算而非精度差異。