深入研究_Word2Vec兩種模型(CBOW , Skip-Gram)


 Word2Vec(詞向量)

一般在分析影像或語音普遍都是針對密集且高維度的資料集,比方RGB三通道,聲音波型。
所有需要的資訊都存儲於raw data中,可能是一維或者二維的。


而換作在自然語言問題處理方面,會先進行分詞,給每一個詞一個編號,比方
'貓' 的編號是120 , '狗'則是340等等。
比方 '女生' 的編號是1230, '女王'的編號是 2329。
而這些編號並沒有規律,更相互無關連。
我們無法從編號中得到詞和詞之間的相關性,此外詞資料十分稀疏並不密集。

比方以下這句
How are you ?

How : 234
Are:  7
you : 987


因此Google 在2013 年由 Tomas Mikolov 等人有提出了一個研究論文

介紹到關於word2vector的核心思想,可將一個詞轉為向量形式來表達。

比方以下向量幾乎平行距離又很相近,相近詞就較鄰近。

國家和首都

詞性相近詞距離較近(現在進行式和過去式)



兩種模型(CBOW , Skip-Gram)


連續詞袋模型(CBOW, Continuous bag-of-word Model)
根據詞的上下文詞彙來預測目標詞彙,例如上下文詞彙是"今天早餐吃..."
要預測的目標詞彙就可能是 "蛋餅"、"漢堡"、"燒餅油條"之類的。


Skip-Gram模型
剛好和CBOW相反過來,其透過目標詞彙來預測上下文。
比方目標詞彙是 "早餐" 則其上下文就有可能出現 "今天" 或是有 "吃麵包" 等等。



就上述兩種模型之訓練,當然也是透過神經網路,可能會想到透過softmax來做為輸出層進行網路訓練。這方法是可行的,只不過透過softmax作為輸出層運算量將會十分龐大。

假如我們已知上下文,需訓練模型來預測詞彙,此時總共有將近50000個詞彙,那每一次訓練都需要計算輸出層的50000個概率值。



則是更深層探討如何解決這兩種模型於計算softmax時會因為詞彙庫太大,導致計算複雜度偏高的問題。

為了降低複雜度,提高運算效率,論文作者提出了層次softmax以及負採樣的方式去解決(負採樣會比層次softmax用的更多些)。

所以訓練Word2vec模型通常會選擇用噪聲對比估計(Noise Contrastive Estimation , NCE)。
NCE使用的方法則是將上下文h 對應正確的目標詞彙標記成正樣本(D=1),之後再抽取一些錯誤的詞彙作為負樣本(D=0)。然後最大化目標函數的值。












Ref:
https://devopedia.org/word2vec
https://www.analyticsvidhya.com/blog/2021/07/word2vec-for-word-embeddings-a-beginners-guide/
https://tengyuanchang.medium.com/%E8%AE%93%E9%9B%BB%E8%85%A6%E8%81%BD%E6%87%82%E4%BA%BA%E8%A9%B1-%E7%90%86%E8%A7%A3-nlp-%E9%87%8D%E8%A6%81%E6%8A%80%E8%A1%93-word2vec-%E7%9A%84-skip-gram-%E6%A8%A1%E5%9E%8B-73d0239ad698

Noise Contrastive Estimation
https://zhuanlan.zhihu.com/p/76568362
https://cedar.buffalo.edu/~srihari/CSE676/18.6%20Noise%20Contrastive%20Estimation.pdf

如何理解word2vec中的NCE
https://blog.csdn.net/xxzhix/article/details/89364471

Noise-Contrastive Estimation - CLEARLY EXPLAINED!
https://www.youtube.com/watch?app=desktop&v=68dJCDyzB0A&ab_channel=KapilSachdeva

論文筆記之Distributed Representations of Words and Phrases and their Compositionality
https://blog.csdn.net/MR_kdcon/article/details/123171180

挖掘網路世界的文字寶藏  -文字探勘與民意調查結合應用


留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header