成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

達觀數據漫談Word2vec之skip-gram模型應用

企業動態
word2vec是Google研究團隊的成果之一,它作為一種主流的獲取分布式詞向量的工具,在自然語言處理、數據挖掘等領域有著廣泛的應用。達觀數據的文本挖掘業務有些地方就使用了該項技術。

[[206899]]

word2vec是Google研究團隊的成果之一,它作為一種主流的獲取分布式詞向量的工具,在自然語言處理、數據挖掘等領域有著廣泛的應用。達觀數據的文本挖掘業務有些地方就使用了該項技術。本文從以下幾個方面簡要介紹Word2vec的skip-gram模型:***部分對比word2vec詞向量和one-hot詞向量,引出word2vec詞向量的優勢所在;第二部分給出skip-gram模型的相關內容;第三部分簡單介紹模型求解時優化方面的內容;第四部分通過例子簡單給出詞向量模型的效果;第五部分作出總結。

1. 優勢

word2vec詞向量與傳統的one-hot詞向量相比,主要有以下兩個優勢。

1.1低維稠密

一般來說分布式詞向量的維度設置成100-500就足夠使用,而one-hot類型的詞向量維度與詞表的大小成正比,是一種高維稀疏的表示方法,這種表示方法導致其在計算上具有比較低效率。

Fig.1. one-hot詞向量

Fig.1. one-hot詞向量

1.2蘊含語義信息

one-hot這種表示方式使得每一個詞映射到高維空間中都是互相正交的,也就是說one-hot向量空間中詞與詞之間沒有任何關聯關系,這顯然與實際情況不符合,因為實際中詞與詞之間有近義、反義等多種關系。Word2vec雖然學習不到反義這種高層次語義信息,但它巧妙的運用了一種思想:“具有相同上下文的詞語包含相似的語義”,使得語義相近的詞在映射到歐式空間后,具有較高的余弦相似度。

  1. simapple,banana=vecapple∙vecbananavecapple∙vecbanana 

Fig.2. word2vec詞向量

Fig.2. word2vec詞向量

2. skip-gram模型

2.1 訓練樣本

怎么把“具有相同上下文的詞語包含相似的語義”這種思想融入模型是很關鍵的一步,在模型中,兩個詞是否出現在一起是通過判斷這兩個詞在上下文中是否出現在一個窗口內。例如,原始樣本“達觀數據是一家做人工智能的公司”在送入模型前會經過圖3所示處理(這里為了繪圖簡單假設窗口為2,一般窗口是設置成5)。

如圖3所示,skip-gram模型的輸入是當前詞,輸出是當前詞的上下文,雖然我們訓練模型的時候喂的是一個個分詞好的句子,但內部其實是使用一個個word pair來訓練。同樣是之前的case“達觀數據是一家做人工智能的公司”,假如窗口改為5,則(達觀數據,人工智能)這個word pair會成為一個訓練樣本。假如再過來一個case“Google是一家人工智能公司”,則(Google,人工智能)也會成為一個訓練樣本。如果用來訓練的語料庫中會產生多個(達觀數據,人工智能)、(Google,人工智能)這種的訓練樣本,則可以推測“達觀數據”和“Google”會有較高的相似度,因為在訓練樣本中這兩個詞具有相同的輸出,推而廣之,也就是說這兩個詞具有相同的上下文。一言以蔽之“假如兩個詞具有相同的輸出,則可反推出作為輸入的兩個詞之間具有較高相似性”,接下來就是如何使用模型來實現上述目標。

Fig.3. 訓練樣本

Fig.3. 訓練樣本

2.2 skip-gram模型

skip-gram模型與自編碼器(Autoencoder)類似,唯一的區別在于自編碼器的輸出等于輸入,而skip-gram模型的輸出是輸入的上下文。那么,作為訓練樣本的word pair應該以什么樣的方式輸入給模型? 答案是one-hot向量,為了得到one-hot向量,必須首先知道訓練語料中包含了多少詞。因此,在訓練之前會首先對語料進行統計,得到詞表。假設詞表長度為10000,詞向量為300維,則skip-gram模型可表示為圖4。

Fig.4. skip-gram 模型

Fig.4. skip-gram 模型

如圖4所示,假設輸入的word pair為(ants, able),則模型擬合的目標是Max Pableants ,同時也需要滿足Min Pother wordsants,這里利用的是對數似然函數作為目標函數。上述表述中Pableants可表示為:

  1. Pableants= softmax( Xants 1×10000∙W10000×300) 
  2. softmaxX= exp(X1×300∙W300×1)i=110000exp(X1×300i∙W300×1) 

根據Pableants和 Pother wordsants,可構建似然函數:

  1. LW= Pableantsy=able∙ Pother wordsantsy=other words 

則:

  1. logLW =y=target wordlogPableants+logPother wordsants 
  2. =i10000y=target wordlogP(wordi|ants) 

將P(wordi|ants)代入有:

  1. logLW= i10000y=target wordlogexp(X1×300∙W300×1)i=110000exp(X1×300i∙W300×1) 

式中*表示如果表達式*為true,則*=1,否則*=0。接下來要做的是***化似然函數,也即:

  1. Max logLW 

要實現上述目標,可利用梯度上升法,首先對參數求偏導:

  1. ∂logLW∂wi=xiy=target word-P(target word|xi;W) 

接下來根據學習率對wi進行更新:

  1. wi= wi+ η∙∂logLW∂wi 

現在問題來了,模型訓練完成后,詞向量在哪呢?隱藏層的參數矩陣W10000×300就包含了所有詞的詞向量,該矩陣的行為詞表長度,列為詞向量維度,矩陣中的每一行表示一個詞的詞向量。由于輸入層Xants 1×10000是one-hot向量,與隱藏層W10000×300點乘后是選中了該矩陣中的一行,如圖5所示,這一行表示的是ants的詞向量,而輸出層是以ants的詞向量為特征,以ants的上下文詞作為類別來訓練softmax分類器。

Fig.5.詞的one-hot向量點乘隱藏層權值矩陣得到該詞的詞向量

Fig.5.詞的one-hot向量點乘隱藏層權值矩陣得到該詞的詞向量

回到上文,為什么說(達觀數據,人工智能)、(Google,人工智能)這種樣本多了之后會得出達觀數據和Google的相似度會比較高?當時解釋的是因為這兩個詞有相同的輸出,更深一步講是因為輸出層參數矩陣W300×10000是所有詞向量共享的。具體來說,模型訓練完成后會達到類似下面的效果: wv達觀數據1×300∙ W300×10000≈wvGoogle1×300∙ W300×10000≈人工智能

由上面可直接看出來wv(達觀數據) ≈wv(Google),其中wv(*)表示*的詞向量,約等于是指兩個向量所指的方向在空間中比較接近。

3. 模型優化

3.1 欠采樣 subsample

圖3中的例子中“是”、“的”這種詞在任何場景中都可能出現,它們并不包含多少語義,而且出現的頻率特別高,如果不加處理會影響詞向量的效果。欠采樣就是為了應對這種現象,它的主要思想是對每個詞都計算一個采樣概率,根據概率值來判斷一個詞是否應該保留。概率計算方法為:

  1. Pword=f(word)0.001+1∙0.001f(word) 

其中f(*)表示*出現的概率,0.001為默認值,具體函數走勢如圖6所示,可以看出,詞語出現的概率越高,其被采樣到的概率就越低。這里有一點IDF的味道,不同的是IDF是為了降低詞的特征權重,欠采樣是為了降低詞的采樣概率。

Fig.6. 欠采樣函數

Fig.6. 欠采樣函數

3.2 負采樣 negative sample

以圖4所示的模型為例,對每一個訓練樣本需要更新的參數個數有三百萬(準確的說是三百萬零三百,由于輸入是one-hot,隱藏層每次只需要更新輸入詞語的詞向量),這還是假設詞表只有一萬的情況下,實際情況會有五十萬甚至更多,這時候參數就達到了億級。訓練過程中要對每個參數計算偏導,然后進行更新,這需要很大的計算資源。

負采樣是加快訓練速度的一種方法,這里的負可以理解為負樣本。針對訓練樣本(ants, able),able這個詞是正樣本,詞表中除able外的所有詞都是負樣本。負采樣是對負樣本進行采樣,不進行負采樣時,對每一個訓練樣本模型需要擬合一個正樣本和九千九百九十九個負樣本。加入負采樣后,只需要從這九千九百九十九個負樣本中挑出來幾個進行擬合,大大節省了計算資源。那么應該挑幾個負樣本,根據什么進行挑呢?Google給出的建議是挑5-20個,怎么挑是根據詞在語料中出現的概率,概率越大越有可能被選中,具體計算公式為:

  1. Pword=f(word)34i=110000f(wordi)34 

其中f(*)表示*出現的概率。

3.3 層次softmax

層次softmax的目的和負采樣一樣,也是為了加快訓練速度,但它相對復雜,沒有負采樣這種來的簡單粗暴。具體來說,使用層次softmax時圖4中的模型輸出層不再是使用one-hot加softmax回歸,而是使用Huffman樹加softmax回歸。在模型訓練的時候首先統計語料中詞語的詞頻,然后根據詞頻來構建Huffman樹,如圖7所示,樹的根節點可理解為輸入詞的詞向量,葉子節點表示詞表中的詞,其它節點沒有什么實際含義,僅起到輔助作用。

Fig.7. Huffman樹

Fig.7. Huffman樹

為什么使用Huffman樹可以加快訓練速度?答案是輸出層不使用one-hot來表示,softmax回歸就不需要對那么多0(也即負樣本)進行擬合,僅僅只需要擬合輸出值在Huffman樹中的一條路徑。假設詞表大小為N,一條路徑上節點的個數可以用log(N)來估計,就是說只需要擬合log(N)次,這給計算量帶來了指數級的減少。此外,由于Huffman編碼是不等長編碼,頻率越高的詞越接近根節點,這也使計算量有所降低。

怎么對樹中的節點進行擬合呢?如圖7所示,假設訓練樣本的輸出詞是w2,則從根節點走到w2經過了nw2,2, n(w2,3)這兩個節點。由于Huffman樹是二叉樹,這意味著只需要判斷向左還是向右就可以從根節點走到w2,判斷向左還是向右其實就是進行二分類。圖7中的例子,“root(input)->left->left->right(w2)”這條路徑的概率可表示為:

  1. Pw2input=Pleftinput∙Pleftinput∙Prightinput  
  2. =logistic(θ1∙Xinput)∙logistic(θ2∙Xinput)∙1-logistic(θ3∙Xinput)  
  3. logisticx= 11+e-x 

其中θi表示路徑中第i個節點的權值向量。注意一點,softmax regression 做二分類的時候就退化為了logistic regression,因此雖然叫層次softmax但公式中其實用的是logistic function。根據上述公式就可構建根據Huffman樹來進行softmax回歸的cost function,進而根據梯度下降對模型進行訓練求解。

4. word2vec應用

Google開源了word2vec源碼,可以很方便的訓練詞向量,這里不再贅述。簡單看個例子:

可以看出,當輸入北京這個詞時,與之相似的詞語有“上海、廣州、杭州、深圳…”,模型幾乎學習到了一線城市的概念,效果還是可以的。

4.1 達觀應用案例

特征降維:特征維度過高的時候,很容易出現特征之間具有較高的相關性。這種情況下可以利用詞向量工具對特征進行聚類,將相關的特征歸到一個維度里面。

特征擴展:針對短文本處理時,一個case往往提不出很多表意較強的特征,導致類別間區分度不強。這種情況下可以利用詞向量工具對主要特征進行擴展,在不損失精度的前提下提高召回。

5. 總結

本文從例子出發,簡單介紹了Word2vec的skip-gram模型,只作拋磚引玉。由于作者水平限制,文中難免有不當之處,歡迎指正。

【本文為51CTO專欄作者“達觀數據”的原創稿件,轉載可通過51CTO專欄獲取聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-11-20 15:12:42

PythonTensorFlowWord2Vec

2018-08-05 07:50:22

自然語言Word2Vec深度學習

2017-08-17 16:50:19

自然語言Word2Vec嵌入

2017-08-04 10:16:52

自然語言處理嵌入機器學習

2023-12-19 17:41:38

AI模型

2023-12-18 14:05:39

Facebook評議

2023-12-12 12:43:36

2017-05-10 16:01:39

推薦系統算法實踐

2017-11-20 16:43:40

高斯混合模型算法K-means

2023-12-17 13:02:10

AI模型

2014-04-29 14:56:07

大數據

2024-07-15 08:13:12

BERT模型嵌入

2017-05-04 09:01:45

達觀數據Docker部署

2021-12-28 17:03:29

數據質量分布式

2017-07-03 15:22:51

達觀數據技術研究

2021-05-10 07:08:41

數據結構緩存

2024-10-09 08:00:00

2017-03-16 20:00:17

Kafka設計原理達觀產品

2017-04-27 18:09:26

item embedd推薦系統算法

2017-04-28 09:18:39

webpackWeb搭建
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久蜜桃网站 | 一本色道久久综合亚洲精品高清 | 午夜精品福利视频 | 中文字幕11页 | 嫩草视频在线免费观看 | av一级久久| 日韩精品一区二区三区在线观看 | www日本在线 | 伊人网在线综合 | 精品免费 | 日本五月婷婷 | 久久成人高清视频 | 国产精品视频久久 | 日韩欧美二区 | www.中文字幕 | 日韩一区二 | 国产精品久久一区二区三区 | 欧美激情欧美激情在线五月 | 国产欧美一区二区三区在线看 | 亚洲一区毛片 | 北条麻妃视频在线观看 | 91精品中文字幕一区二区三区 | 国产一区二区三区色淫影院 | 成人av一区 | 国产91丝袜在线18 | 国产一区精品在线 | 国产专区在线 | 精品国产伦一区二区三区观看方式 | 国产免费一级一级 | 久久久人成影片一区二区三区 | 中文字幕一区在线 | 精品国产一区二区国模嫣然 | 天天综合日日夜夜 | 国产日产精品一区二区三区四区 | www.伊人.com | 91夜夜夜| 国产精品亚洲成在人线 | 国产福利在线 | 日韩一区二区免费视频 | 日韩国产中文字幕 | 国产内谢 |