1. 程式人生 > >word2vec中CBOW和Skip-Gram訓練模型的原理

word2vec中CBOW和Skip-Gram訓練模型的原理

前言

word2vec如何將corpus(語料庫)的one-hot向量(模型的輸入)轉換成低維詞向量(模型的中間產物,更具體來說是輸入權重矩陣),真真切切感受到向量的變化,暫不涉及加速演算法。

CBOW模型根據中心詞W(t)周圍的詞來預測中心詞:


Skip-gram模型則根據中心詞W(t)來預測周圍詞:


CBOW模型的理解

假設我們現在的Corpus是這一個簡單的只有四個單詞的document:

{I drink coffee everyday}

我們選coffee作為中心詞,window size設為2

也就是說,我們要根據單詞"I","drink"和"everyday"來預測一個單詞,並且我們希望這個單詞是coffee。

輸入層:上下文單詞的onehot1*4維*3個詞

輸出層:1*4維的向量(概率表示





任何一個單詞的one-hot表示乘以這個矩陣都將得到自己的word embedding。

SKip-Gram模型

首先,我們建立一個10000個詞的詞典,輸入的單詞就是一個的10000維one-hot向量,而網路的輸出也是一樣 10,000維的向量,代表每個詞預測的概率



模型小trick

Negative Sampling