閱讀720 返回首頁    go 阿裏雲 go 技術社區[雲棲]


不可思議的Word2Vec係列一數學原理

對於了解深度學習、自然語言處理NLP的讀者來說,Word2Vec可以說是家喻戶曉的工具,盡管不是每一個人都用到了它,但應該大家都會聽說過它——Google出品的高效率的獲取詞向量的工具。

I. Word2Vec不可思議?

大多數人都是將Word2Vec作為詞向量的等價名詞,也就是說,純粹作為一個用來獲取詞向量的工具,關心模型本身的讀者並不多。可能是因為模型過於簡化了,所以大家覺得這樣簡化的模型肯定很不準確,所以沒法用,但它的副產品詞向量的質量反而還不錯。沒錯,如果是作為語言模型來說,Word2Vec實在是太粗糙了。

但是,為什麼要將它作為語言模型來看呢?拋開語言模型的思維約束,隻看模型本身,我們就會發現,Word2Vec的兩個模型 —— CBOW和Skip-Gram —— 實際上大有用途,,而很多基本的NLP任務,都是建立在這個關係之上,如等。這幾篇文章就是希望能夠拋磚引玉,通過介紹Word2Vec模型本身,以及幾個看上去“不可思議”的用法,來提供一些研究此類問題的新思路。

說到Word2Vec的“不可思議”,在Word2Vec發布之初,可能最讓人驚訝的是它的特性,即諸如 king-man ≈ queen-woman 的線性特性,而發布者Mikolov認為這個特性意味著Word2Vec所生成的詞向量具有了語義推理能力,而正是因為這個特性,加上Google的光環,讓Word2Vec迅速火了起來。但很遺憾,我們自己去訓練詞向量的時候,其實很難複現這個結果出來,甚至也沒有任何合理的依據表明一份好的詞向量應該滿足這個Word Analogy特性。不同的是,這裏筆者介紹的若幹個用途,,讀者甚至在小語料中訓練一個Word2Vec模型,然後也能取到類似的結果。

II. 數學原理:網絡資源

有心想了解這個係列的讀者,有必要了解一下Word2Vec的數學原理。當然,Word2Vec出來已經有好幾年了,介紹它的文章數不勝數,這裏我推薦peghoty大神的係列博客:
https://blog.csdn.net/itplus/article/details/37969519
另外,本博客的《詞向量與Embedding究竟是怎麼回事?》也有助於我們理解Word2Vec的原理。

為了方便讀者閱讀,我還收集了兩個對應的PDF文件:
word2vector中的數學原理詳解.pdf
Deep Learning 實戰之 word2vec.pdf
其中第一個就是推薦的peghoty大神的係列博客的PDF版本。當然,英文好的話,可以直接看Word2Vec的原始論文:

[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. In Proceedings of Workshop at ICLR, 2013.

[2] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. Distributed Representations of Words and Phrases and their Compositionality. In Proceedings of NIPS, 2013.

但個人感覺,原始論文並沒有中文解釋得清晰。

III. 數學原理:簡單解釋

簡單來說,Word2Vec就是“”,所以嚴格來講,它有四個備選的模型。

兩個訓練方案分別是CBOW和Skip-Gram,如圖所示
Word2Vec的兩個模型.png
用通俗的語言來說,就是“周圍詞疊加起來預測當前詞”(P(wt|Context)P(wt|Context))和“當前詞分別來預測周圍詞”(P(wothers|wt)P(wothers|wt)),也就是條件概率建模問題了;兩個提速手段,分別是層次Softmax和負樣本采樣。層次Softmax是對Softmax的簡化,直接將預測概率的效率從

最後更新:2017-09-17 22:34:35

  上一篇:go  不可思議的Word2Vec係列二訓練好的模型
  下一篇:go  如何給視頻加邊框