glove中文词向量_Summary系列glove模型解读
一、Glove模型簡介
語義文本向量表示可以應用在信息抽取,文檔分類,問答系統,NER(Named Entity Recognition)和語義解析等領域中,大都需要計算單詞或者文本之間的距離或者相似度,因此,能夠表達語義的文本的向量表示非常重要。
單詞的語義向量生成主要有兩種方式:(1)LSA(term-document)、HAL(term-term)等矩陣分解方法利用全局統計信息生成詞向量;(2)skip-gram、CBOW等詞向量利用語言模型的局部信息生成詞向量,在詞類比( king -queen = man-woman)方面具有獨特優勢。
作者的想法是將以上兩種方式的優點結合,提出了全局對數雙線性回歸模型。該模型采用LSA類似想法利用單詞與單詞的共現矩陣獲取全局統計信息,但只使用非零數據;另一方面采用和skip和cbow一樣的詞向量方式進行訓練。
二、相關工作
1、矩陣分解方法(全局信息)
LSA(term-document)、HAL(term-term)。
HAL方法的主要缺點是最常出現的單詞在相似性度量中占據了不合理的分量,比如與the、and協同出現的單詞,其相似性通常會比較高。論文中提到的解決方法有 positive pointwise mu-tual information (PPMI)和 Hellinger PCA (HPCA) 。
2、詞向量方法(局部信息)
Mikolov在2013年提出的skip-gram、CBOW方法采用語言模型,依據一個局部窗口中的單詞都是相關的這個思想來訓練詞向量,在詞類比任務上具有非常優秀的表現。這種方法沒有使用全局統計信息,比如單詞A和單詞B經常在一起出現,那么就應該給予更大的權重,而該模型則是對所有的訓練語料都給予相同的權重。
三、Glove建模過程
1、公式的推理過程。
定義好相關符號:
代表單詞間協同出現次數(word-word co-occurrence counts )的矩陣。 表示單詞 在單詞 上下文環境中出現的次數。 表示所有在單詞 上下文環境中出現單詞的次數之和。 表示單詞 在單詞 上下文中出現的概率。對于冰(ice)與水蒸汽(steam),作者希望訓練得到的詞向量具有如下特性:
(1)與冰具有相似屬性單詞,如固體(solid),要求
值很大(2)與水蒸氣具有相似屬性單詞,如固體(solid),要求
值很小;(3)與冰、水蒸氣不相關單詞,如時尚(fashion),要求
值接近1;給定單詞
的詞向量, ,有如下等式:現在需要解決的問題是函數
怎么構造,作者做了一些合理的假設選擇函數 。首先要考慮單詞
之間的關系,作者希望在線性空間中考察兩個向量的相似性,不失線性地考察,因此選擇 。其次等式右邊是個標量,那么式子左邊也應該是個標量,現在輸入為向量
和 ,那內積應該是合理的選擇,于是變量應該為 。然后作者又往公式的外面套了一層指數運算exp,最終得到
,為什么是指數運算呢?套上之后,我們的目標是讓以下公式盡可能地成立:本來我們需要求
,現在通過分子分母相對應,我們只需要讓 。只需要N?N的復雜度上進行計算,而不是N?N?N,大大減少了復雜度。然后兩邊取log后,得到在這里我們發現等式左邊是可以交換位置的,可是右邊的
并不等于 。為此,將等式6改寫為:添了一個偏差項b,并將log(Xi)吸收到偏差項bi中。到這里我們就可以寫出損失函數,
作者進行了進一步的優化,考慮到語料庫中經常協同出現的單詞具有更為密切的聯系,作者提出來加權損失函數。
權重函數要滿足如下特性:
(1) 考慮連續性,
時, 趨近于0;(2)
非遞減,這樣 很小時就不會有過大的權重;(3) 當
很大時,f(x)不會過大,這樣高頻詞不會占有過重的權值;作者選擇的滿足以上要求的函數,如下:
是經驗值,是從Mikolov(2013年)的論文中直接拿來用的。2、與skip以及cbow的關系
我們知道這兩個模型的損失函數如下,
是一個softmax函數:全局的目標函數可以寫成:
對于大量的預料計算求和非常消耗資源,為了提高計算效率,可以把提前把那些有相同值的詞分組,目標函數改寫為按照詞典來統計。
由于之前定義
和,代入方程(12)中得到: 是交叉熵, 是之前定義的 。然而交叉熵對于長尾分布表現不好,并且分布 需要做歸一化操作,求和操作會成為計算的瓶頸。因此,文章又提出了一種不需要歸一化的衡量距離的方式,也就是最小二乘法。其中
都不需要歸一化操作。但是還存在一個問題,就是往往取值較大,會加重優化過程的計算復雜性,解決方式是,使用log來代替。同時引入權重函數,得到:這里的公式與我們最開始推導出來的公式非常相似。從這里可以看出,skip-gram模型與這篇論文提出模型差異,本質上是度量概率分布采用的方法不一致。前者使用的是交叉熵損失,后者使用的是加權平方誤差損失。
3、復雜度估算
模型的復雜度 為
,在詞典V很大時,復雜度遠遠高于skip-gram的復雜度 , C 是語料庫的大小。所以需要對矩陣X做一些限制,比如只取共現次數非0的詞等。具體的實現方式是假設詞i和詞j共現的次數 用詞頻排名 的冪律函數來表示,語料庫詞的總數正比于次數共現次數矩陣元素的加和,
用調和級數來表示冪律求和部分,接下來就是如何確定k了,
是詞頻排序最大值,同時與非0詞頻矩陣X的個數相等,也就是等于方程(17)中r的最大值。因為矩陣X中的元素都是詞頻大于或等于1的,即 ,根據方程(17)因此,總是能夠找到一個k使得
,所以 ,代入方程(18)得到根據調和基數展開式
把方程(19)展開得到
是黎曼 函數,在X非常大時,可以看出 與 的關系取決與 是否 > 1,來決定是 和 誰占比更大,O(1)常數項不用考慮。因此,Glove模型的復雜度小于等于skip-gram模型的復雜度。如果
, 的復雜度= ,遠遠好于 的復雜度。四、實驗結果
4.1 word analogy任務
在詞語類比任務中,我們看到Glove算法在大多數情況下取得了更好的指標。在semantic subset/語義子集、syntactic subset/句法子集上均表現更佳,具體如下(此任務可以測試向量空間的子結構):
4.2 word similarity任務
本文用多個模型在一系列word similarity任務上進行測試,結論是:Glove優于其他模型。詳細數據如下:
4.3 NER任務
在此任務中基于CoNLL-03數據集訓練模型,并在多個數據集(CoNLL-03、ACE、MUC7)上進行測試,結果顯示Glove表現最佳。
五、參考文獻
1、官方代碼:https://nlp.stanford.edu/projects/glove/。
2、paper原文:https://www.aclweb.org/anthology/D14-1162.pdf。
3、好文參考:理解GloVe模型(Global vectors for word representation)
總結
以上是生活随笔為你收集整理的glove中文词向量_Summary系列glove模型解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4539(状压dp)
- 下一篇: 微博的html,微博输入html