@author: Panverson
背景和誕生
在word2vec誕生之前蚂踊,利用機器學習方法解決自然語言處理問題使脱货,一般都是用one-hot編碼(可以翻譯成“獨熱編碼”)去表征詞語城须。one-hot編碼是一種稀疏矩陣碘菜,計算時會帶來很多麻煩凹蜈,因為:
- 向量的維度會隨著句子的詞的數(shù)量類型增大而增大;
- 任意兩個詞之間都是孤立的忍啸,無法表示語義層面上詞匯之間的相關信息.
PS:當然踪区,在深度學習中涉及到矩陣相乘,有人會說one-hot編碼算起來十分麻煩(有多少單詞這個矩陣就有多少維數(shù))吊骤。事實上缎岗,one-hot編碼算起來一點也不麻煩,因為它是稀疏的白粉,矩陣中只有一個數(shù)字是1传泊,其他都是0。學過線代的都知道鸭巴,這種相乘的計算其實是很方便的眷细。
one-hot計算示意
傳統(tǒng)的獨熱表示僅僅將詞符號化,不包含任何語義信息鹃祖。如何將語義融入到詞表示中溪椎?Harris 在 1954 年提出的“分布假說”為這一設想提供了理論基礎:上下文相似的詞,其語義也相似恬口。Firth 在 1957年對分布假說進行了進一步闡述和明確:詞的語義由其上下文決定校读。
所以我們可以將我們的任務拆解成兩部分:
- 選擇一種方式描述上下文;
- 選擇一種“模型”刻畫某個詞(即“目標詞”)與其上下文之間的關系祖能。
什么意思呢歉秫?可以這么理解:
以CBOW模型為例,如果有一個句子“我今天聽了周杰倫的歌”养铸,在訓練的時候雁芙,將“我今天聽了周杰倫的”作為輸入轧膘,預測出最后一個詞是“歌”。
分布式表示的較大優(yōu)點在于它具有非常強大的表征能力兔甘,比如n維向量每維k個值谎碍,可以表征k的n次方個概念。下圖的神經(jīng)網(wǎng)絡語言模型(NNLM)采用的就是文本分布式表示洞焙。而詞向量(word embedding)是訓練該語言模型的一個附加產(chǎn)物蟆淀,即圖中的矩陣C。
這個時候闽晦,word2vec就誕生了扳碍。其實,word2vec是詞嵌入(word embedding)的一種方式仙蛉。它將上文提到的one-hot的兩個缺點解決了:
- 將vector每一個元素由整形改為浮點型笋敞,變?yōu)檎麄€實數(shù)范圍的表示。將原來稀疏的巨大維度壓縮嵌入到一個更小維度的空間荠瘪。
-
矩陣的每個維度都代表一定的語義夯巷。
例如:
對于訓練好的幾個詞語,可能是這樣的:
word2vec
可以得出這個結論:
Man - King = Woman - Queen
這就是word2vec的神奇所在哀墓。這個特性意味著Word2Vec所生成的詞向量具有了語義推理能力趁餐。
但很遺憾,我們自己去訓練詞向量的時候篮绰,其實很難復現(xiàn)這個結果出來(需要的計算資源實在是太龐大了)后雷。幸運的是,對于小型的預料庫吠各,還是有一定的效果的臀突。
兩種模型
兩個訓練方案分別是CBOW和Skip-Gram,如圖所示
其中贾漏,CBOW通過上下文來預測當前詞候学;而Skip-gram通過當前詞預測上下文。至于原理纵散,咱們下次再說梳码。
參考資料
博客:
蘇劍林. (2017, Apr 02). 《【不可思議的Word2Vec】 1.數(shù)學原理 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/4299
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.