天天看點

NLP【03】白話glove原理一、前言二、Glove基本思想

上一篇:NLP篇【02】白話Word2vec原理以及層softmax、負采樣的實作

下一篇:NLP【04】tensorflow 實作Wordvec(附代碼詳解)

一、前言

  Glove模型是在Word2vec之後提出來的訓練詞向量的模型,glove可以說是在Wordvec模型基礎上改進而來的模型,是以理論上,glove訓練的詞向量的效果會更好。在應用的時候,我們可以結合glove詞向量和Word2vec詞向量,不過對我們來說,了解glove是如何在wordvec基礎上改進的,才是最重要的,因為這種思想可以運用到改進其他算法模型。

二、Glove基本思想

  GloVe模型的思想方法,主要結合以下兩個算法:

  一個是基于奇異值分解(SVD)的LSA算法,該方法對term-document矩陣(矩陣的每個元素為tf-idf)進行奇異值分解,進而得到term的向量表示和document的向量表示。此處使用的tf-idf主要還是term的全局統計特征。

另一個方法是word2vec算法,該算法可以分為skip-gram 和 continuous bag-of-words(CBOW)兩類,但都是基于局部滑動視窗計算的。即,該方法利用了局部的上下文特征(local context)

LSA和word2vec作為兩大類方法的代表,一個是利用了全局特征的矩陣分解方法,一個是利用局部上下文的方法。

GloVe模型就是将這兩種特征合并到一起的,即使用了語料庫的全局統計(overall statistics)特征,也使用了局部的上下文特征(即滑動視窗)。為了做到這一點GloVe模型引入了Co-occurrence Probabilities Matrix。要計算共現機率矩陣,我們先來計算共現矩陣,共現矩陣是單詞對共現次數的統計表。我們可以通過大量的語料文本來建構一個共現統計矩陣。

例如,有語料如下:

I like deep learning.

I like NLP.

I enjoy flying.

 以窗半徑為1來指定上下文環境,則共現矩陣就應該是:

NLP【03】白話glove原理一、前言二、Glove基本思想

  那麼共現機率矩陣是就是每個值除于每行的和,例如對于第一行就是p(like | I)=2/(1+2)=2/3 ,也就代表着第一個詞出現I ,第二個詞出現 like的機率為2/3。這樣依次計算我們就會得到一個共現機率矩陣。

 根據上一篇所講的word2vec原理,我們知道,對于cbow或者skip-gram,如果視窗size為1,則like相似的詞就是前後各一個詞,而且描述的是否相似,标簽要麼為1要麼為0,和全局出現的情況無關。而Glove是想辦法找到一個算法可以描述這個共現機率矩陣。那麼最後我們來看看它是如何找到某個算法來描述這個共現機率矩陣。

NLP【03】白話glove原理一、前言二、Glove基本思想
NLP【03】白話glove原理一、前言二、Glove基本思想

  模型推導過程 :

NLP【03】白話glove原理一、前言二、Glove基本思想
NLP【03】白話glove原理一、前言二、Glove基本思想
NLP【03】白話glove原理一、前言二、Glove基本思想

繼續閱讀