「Skip-gram」是 Word2Vec 中用來生成詞向量的另一種主要模型架構(與 CBOW 相對)。與 CBOW 通過周圍詞語預測目標詞語不同,Skip-gram 模型的作用是通過目標詞語來預測其周圍的上下文詞語。
你可以將 Skip-gram 模型想像成,給你一個詞語,模型會嘗試預測這個詞語附近可能會出現哪些其他詞語。通過大量這樣的預測任務,模型也能夠學習到詞語的向量表示。Skip-gram 模型的工作原理:
- 輸入目標詞語 (Input Target Word): 對於訓練數據中的每一個詞語,Skip-gram 模型會將其作為輸入(即目標詞語)。
- One-hot Encoding 輸入詞語: 輸入的目標詞語會被轉換成 one-hot encoding 向量,其長度等於詞彙表的大小,只有對應於該詞語的索引位置上的值為 1。
- 詞向量查找 (Word Embedding Lookup): 這個 one-hot encoding 的輸入向量會乘以一個權重矩陣(輸入嵌入矩陣)。這個權重矩陣的每一行代表一個詞語的詞向量,相乘的結果就是該輸入詞語的詞向量。
- 通過隱藏層 (Hidden Layer): 目標詞語的詞向量可以選擇性地通過一個隱藏層進行進一步的非線性轉換。
- 輸出層 (Output Layer): 隱藏層(或直接是目標詞語的詞向量)會被送到一個輸出層。對於目標詞語上下文窗口中的每一個詞語,輸出層都會有一個獨立的 Softmax 單元。每個 Softmax 單元輸出的都是一個長度等於詞彙表大小的概率分布向量,表示詞彙表中每個詞語作為目標詞語周圍詞語的可能性。
- 預測上下文詞語: 模型訓練的目標是使得對於輸入的目標詞語,其上下文窗口中實際出現的詞語的概率最大化。例如,如果目標詞語是 "dog",而上下文窗口大小為 2,且周圍的詞語是 "the", "quick", "lazy", "brown",那麼模型會嘗試最大化輸出層中對應於 "the", "quick", "lazy", "brown" 這些詞語的概率。
Skip-gram 模型的訓練過程:
Skip-gram 模型同樣使用大量的文本數據進行訓練。對於訓練數據中的每一個詞語,模型都會將其作為目標詞語,並嘗試預測其周圍上下文窗口中的詞語。模型通過反向傳播算法不斷調整輸入嵌入矩陣和輸出權重矩陣中的參數,使得預測結果越來越接近真實的上下文詞語。最終,輸入嵌入矩陣中的每一行就代表了對應詞語的學習到的詞向量。
Skip-gram 模型的主要特點和優點:
- 擅長捕捉罕見詞語的表示: 相對於 CBOW 模型,Skip-gram 模型對於訓練集中出現次數較少的詞語也能夠產生較好的詞向量表示。這是因為在 Skip-gram 模型中,每個目標詞語都會被用來預測其周圍的上下文詞語,即使目標詞語出現次數不多,但只要其周圍的上下文詞語比較常見,也能夠為學習其詞向量提供足夠的信息。
- 對於大型語料庫效果更好: 在大型語料庫上訓練時,Skip-gram 模型通常能產生更高質量的詞向量。
總結來說,Skip-gram 模型是 Word2Vec 中另一種重要的詞向量生成方法,它通過利用目標詞語來預測其周圍的上下文詞語,從而學習到詞語的低維向量表示。它在處理罕見詞語和大型語料庫方面通常表現更好,並被廣泛應用於各種 NLP 任務中。
















