「CBOW (Continuous Bag-of-Words)」是 Word2Vec 中用來生成詞向量的兩種主要模型架構之一(另一種是 Skip-gram)。CBOW 模型通過周圍詞語(上下文)來預測目標詞語。
你可以將 CBOW 模型想像成一個完形填空遊戲。模型會看到句子中目標詞語周圍的詞語,然後嘗試預測中間缺失的那個詞語。通過大量這樣的預測任務,模型就能夠學習到詞語的向量表示。CBOW 模型的工作原理:
- 輸入上下文詞語 (Input Context Words): 對於給定的目標詞語,CBOW 模型會以它周圍的幾個詞語作為輸入。這些周圍的詞語被稱為上下文詞語,上下文窗口的大小(即目標詞語周圍要考慮多少個詞語)是一個可以調整的超參數。例如,如果上下文窗口大小為 2,那麼對於目標詞語 "dog" 在句子 "The quick brown fox jumps over the lazy dog." 中,輸入的上下文詞語就是 "quick", "brown", "jumps", "over"。
- One-hot Encoding 輸入詞語: 輸入的每一個上下文詞語都會被轉換成 one-hot encoding 向量。這個向量的長度等於詞彙表的大小,並且只有對應於該詞語的索引位置上的值為 1,其餘位置上的值為 0。
- 詞向量查找 (Word Embedding Lookup): 每個 one-hot encoding 的輸入向量都會乘以一個共享的權重矩陣(輸入嵌入矩陣)。這個權重矩陣的每一行代表一個詞語的詞向量。相乘的結果就是該輸入詞語的詞向量。
- 取平均 (Average Embedding): 模型會將所有上下文詞語的詞向量進行平均化,得到一個固定長度的向量,這個向量代表了上下文的整體信息。
- 通過隱藏層 (Hidden Layer): 這個平均後的上下文向量可以選擇性地通過一個隱藏層進行進一步的非線性轉換。
- 輸出層 (Output Layer): 隱藏層(或直接是平均後的上下文向量)會被送到一個輸出層。輸出層是一個 Softmax 層,它輸出的也是一個長度等於詞彙表大小的概率分布向量。這個概率分布表示的是對於給定的上下文,詞彙表中每個詞語作為目標詞語的可能性。
- 預測目標詞語: 模型訓練的目標是使得輸出概率分布中對應於實際目標詞語的概率最大化。
CBOW 模型的訓練過程:
CBOW 模型通常使用大量的文本數據進行訓練。對於訓練數據中的每一個詞語,模型都會以它周圍的詞語作為輸入,並嘗試預測該詞語。模型通過反向傳播算法不斷調整輸入嵌入矩陣和輸出權重矩陣中的參數,使得預測結果越來越接近真實的目標詞語。最終,輸入嵌入矩陣中的每一行就代表了對應詞語的學習到的詞向量。
CBOW 模型的主要特點和優點:
- 速度較快: 相對於 Skip-gram 模型,CBOW 模型通常訓練速度更快,因為它需要預測一個目標詞語,而不是多個上下文詞語。
- 擅長捕捉上下文信息: CBOW 模型直接利用周圍詞語的信息來預測目標詞語,因此在捕捉上下文語義方面表現良好。
- 對於頻繁詞語的表示可能更好: CBOW 模型通過平均周圍詞語的向量來預測目標詞語,這可能使得對於頻繁出現的詞語,其學習到的表示更加穩定。
總結來說,CBOW 模型是 Word2Vec 中一種重要的詞向量生成方法,它通過利用詞語的上下文信息來預測目標詞語,從而學習到詞語的低維向量表示。這些詞向量能夠捕捉到詞語之間的語義關係,並被廣泛應用於各種 NLP 任務中。



















