詞表征學(xué)習(xí)算法 — Word2Vec

Word2Vec 是 google 在2013年提出的詞向量模型,通過 Word2Vec 可以用數(shù)值向量表示單詞,且在向量空間中可以很好地衡量兩個單詞的相似性。

1.? 詞向量

讓計算機理解人類的語言是一件很 Cool 的事情,而首先要做的就是將單詞表示成一個數(shù)值向量(稱為詞向量),以方便計算機處理。比較直觀的做法有one-hot 編碼和共現(xiàn)矩陣等。

1.1 one-hot 編碼

one-hot 編碼,首先構(gòu)造一個容量為 N 的詞匯表,每個單詞可以用一個 N 維的詞向量表示,詞向量中只有單詞在詞匯表的索引處取值為 1,其余為 0。

one-hot 編碼主要的缺點是:當(dāng)詞匯表的容量變大時,詞向量的特征空間會變得很大;另外 one-hot 編碼不能區(qū)分單詞之間的相似度。

one-hot 詞向量

1.2 共現(xiàn)矩陣

還是剛剛的詞匯表,假設(shè)現(xiàn)在語料庫中只有三個句子 “I have a cat”、“cat eat fish”、“I have a apple”,則可以構(gòu)造出單詞間的共現(xiàn)矩陣?A。例如 “I” 和 “have” 在兩個句子中共同出現(xiàn)過,因此在?A?中的權(quán)重為 2;而 “I” 和 “cat“ 只在一個句子中共現(xiàn),?A?中權(quán)重為 1 。

矩陣?A?的每一行就代表了一個單詞的詞向量,與 one-hot 編碼類似,使用共現(xiàn)矩陣的詞向量的維度也非常大。也可以使用 SVD (奇異值分解) 對?A進(jìn)行分解,從而得到更低維度的詞向量,但是 SVD 算法的時間復(fù)雜度較高,對 n×n 的矩陣進(jìn)行 SVD 分解的復(fù)雜度為 O(n^3) 。

單詞共現(xiàn)矩陣

2. Word2Vec

Word2Vec 模型

Word2Vec 是一種淺層神經(jīng)網(wǎng)絡(luò),包含輸入層?x,隱藏層?h和輸出層?o。輸入層、輸出層的維度為 N? (詞匯表的大小),隱藏層維度為 D (詞向量的維度)。輸入層與隱藏層之間的網(wǎng)絡(luò)權(quán)重矩陣為?V(N×D),輸入層與隱藏層之間的網(wǎng)絡(luò)權(quán)重矩陣為?V'(N×D)

Word2Vec 簡要公式

Word2Vec 輸入層?x?接收單詞 a 的 one-hot 編碼,輸出層?o?計算出所有單詞出現(xiàn)在單詞 a 上下文的概率,概率用 softmax 計算。Word2Vec 在語料庫中訓(xùn)練,使單詞出現(xiàn)的條件概率盡可能符合語料庫中的分布。訓(xùn)練完后,神經(jīng)網(wǎng)絡(luò)的權(quán)重向量矩陣?V就是最終的詞向量矩陣,而?V'?是詞作為預(yù)測輸出時的向量矩陣。

詞向量矩陣和預(yù)測輸出的向量矩陣

Word2Vec 有兩種模型 CBOW 和 Skip-Gram,兩種模型的區(qū)別在于 CBOW 使用上下文詞預(yù)測中心詞,而 Skip-Gram 使用中心詞預(yù)測其上下文單詞。圖為 Word2Vec 論文中的 CBOW 和 Skip-Gram 模型圖,接下來介紹 Skip-Gram 和 CBOW。

CBOW 和 Skip-Gram

2.1 CBOW

注意下面的描述中?w(x) 表示第 x 個單詞,v(x) 表示第 x 個單詞對應(yīng)的詞向量, v'(x) 表示預(yù)測輸出時對應(yīng)第 x 個單詞的權(quán)重向量

給定一個句子 [w(1), w(2), w(3), ..., w(T)],對于任意一個單詞 w(t),其上下文單詞包括 [w(t-c), ..., w(t-1), w(t+1), ..., w(t+c)],c 為上下文窗口的大小。

中心詞與上下文單詞

CBOW 希望通過上下文單詞 [w(t-c), ..., w(t-1), w(t+1), ..., w(t+c)] 預(yù)測中心詞是 w(t) 的概率,因此輸入到神經(jīng)元的有 2c 個 one-hot 編碼。實際上是把上下文單詞 [w(t-c), ..., w(t-1), w(t+1), ..., w(t+c)] 對應(yīng)的詞向量的均值傳入神經(jīng)網(wǎng)絡(luò)的隱藏層?h(如下公式),然后計算輸出單詞 w(t) 的概率。

CBOW 隱藏層的計算

因此對于一個句子 [w(1), w(2), w(3), ..., w(T)],CBOW 需要最大化以下目標(biāo)函數(shù),其中概率使用 softmax 計算:

CBOW 的目標(biāo)函數(shù)

2.2 Skip-Gram

Skip-Gram 與 CBOW 不同,給定一個句子 [w(1), w(2), w(3), ..., w(T)],對于任意一個中心詞 w(t),需要計算上下文單詞的 [w(t-c), ..., w(t-1), w(t+1), ..., w(t+c)] 的概率。因此需要最大化以下目標(biāo)函數(shù):

Skip-Gram 目標(biāo)函數(shù)

3. 優(yōu)化方法

優(yōu)化 CBOW 和 Skip-Gram 都需要計算 softmax,其中需要在所有單詞上進(jìn)行求和,效率低下,一般可以采用兩種優(yōu)化方法:Hierarchical softmax 和 Negative sampling。

3.1 Hierarchical softmax

對于一個 N 分類問題,softmax 可以求出每一個類的概率,并且 N 個類的概率之和為1。Hierarchical softmax 簡化了 softmax 的計算,采用二叉樹結(jié)構(gòu) (可以使用霍夫曼樹優(yōu)化),把一個 N 分類問題轉(zhuǎn)換成 log N 個二分類問題。

Hierarchical softmax

其中 n 表示節(jié)點,n(w, j) 表示從根節(jié)點到單詞 w 路徑上的第 j 個節(jié)點,n(w, 1) 表示從根節(jié)點,L(w) 表示從根節(jié)點到單詞 w 的路徑長度。

輸入單詞的詞向量為 v(x),則到達(dá)某一節(jié)點 n(w, j) 后往左子樹走和往右子樹走的概率分別為:

Hierarchical softmax 在某個節(jié)點走向左右子節(jié)點的概率

而通過單詞 v(x) 觀察到其上下文單詞 w 的概率可以如下計算:

Hierarchical softmax 從根節(jié)點到目標(biāo)單詞 w 葉節(jié)點的概率

3.2 Negative sampling

Negative sampling 是負(fù)采樣算法,給定訓(xùn)練樣本單詞 x 和 x 的上下文單詞 pos。負(fù)采樣算法將 pos 作為 x 的正樣本,然后從詞匯表中隨機采樣 k 個單詞 neg 構(gòu)成負(fù)樣本,然后最大化通過 x 觀察到 pos 的概率,最小化通過 x 觀察到負(fù)樣本 neg 的概率。需要最大化如下目標(biāo)函數(shù):

負(fù)采樣算法目標(biāo)函數(shù)

每個單詞被采樣作為負(fù)樣本的概率如下:

負(fù)樣本概率

4. 總結(jié)

Word2Vec 的優(yōu)點:模型簡單;訓(xùn)練速度快;訓(xùn)練中會考慮單詞的上下文。

Word2Vec 的缺點:上下文窗口較小,也沒有使用全局的單詞共現(xiàn)信息;每個單詞的詞向量是固定的,無法解決一詞多義的問題。

參考文獻(xiàn)

《Distributed Representations of Sentences and Documents》

《Efficient estimation of word representations in vector space》

《word2vec Parameter Learning Explained》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容