一菲茬、整體思路
獲取詞向量基本上有兩種思路:
1.利用全局統(tǒng)計(jì)信息赶促,進(jìn)行矩陣分解(如LSA)來獲取詞向量妒蔚,這樣獲得的詞向量往往在詞相似性任務(wù)上表現(xiàn)不好疮鲫,表明這是一個(gè)次優(yōu)的向量空間結(jié)構(gòu)蘸劈;
2.利用局部上下文窗口單獨(dú)訓(xùn)練昏苏,但是統(tǒng)計(jì)信息作為有用的先驗(yàn)知識(shí),沒有很好的利用到威沫。
Glove:結(jié)合兩種訓(xùn)練方式贤惯,獲取更好的詞向量
二、基本假設(shè)
詞的共現(xiàn)次數(shù)與其語義的相關(guān)性往往不是嚴(yán)格成比例壹甥,所以直接用共線性來表征詞之間相關(guān)性效果不好救巷,因此,作者通過引入第三個(gè)詞句柠,通過詞之間的差異來刻畫相關(guān)性浦译。差異選擇用兩個(gè)詞與同一個(gè)詞的共現(xiàn)概率的次數(shù)來更好的判斷詞之間的相關(guān)性棒假。比率:
看下面這個(gè)例子:
ice 與solid相關(guān)性高,而steam與solid相關(guān)性弱精盅,對(duì)應(yīng)比例大于1帽哑;ice與gas相關(guān)性弱,steam與gas相關(guān)性高叹俏,對(duì)應(yīng)比例小于1妻枕,ice與steam都與water相關(guān),對(duì)應(yīng)比例約等于1粘驰,ice與steam與fashion都不相關(guān)屡谐,對(duì)應(yīng)比例也是約等于1.
相關(guān)性的規(guī)律:
三、模型
模型的數(shù)學(xué)形式為:
其中wi, wj 與wk分屬不同的兩個(gè)詞向量空間(參考skipgram)蝌数,對(duì)于F函數(shù)愕掏,我們希望他能夠在向量空間內(nèi)預(yù)測(cè)pPik/Pjk這個(gè)比率,由于向量空間的線性結(jié)構(gòu)顶伞,最自然的方式就是用向量的差饵撑,即:
等式的右側(cè)是一個(gè)標(biāo)量,左側(cè)F函數(shù)可以是一個(gè)復(fù)雜函數(shù)唆貌,而我們上面提到我們希望捕捉向量的線性結(jié)構(gòu)滑潘,所以避免使用復(fù)雜函數(shù),首先將參數(shù)做內(nèi)積:
在窗口滑動(dòng)的過程中锨咙,中心詞與上下文詞的角色會(huì)相互轉(zhuǎn)化语卤,但是當(dāng)詞的位置互換后,其相關(guān)性應(yīng)該是保持一致的蓖租,所以粱侣,F(xiàn)函數(shù)需要對(duì)“和”操作與“商”操作上同態(tài)(這里同態(tài)的意思是F函數(shù)在左右兩側(cè)應(yīng)該是一致的,也就是F((wi - wj))=F(wi) / F(wj):
其中:
為了解決 上式4蓖宦,F(xiàn)函數(shù)的形式就是exp(指數(shù)形式),最終求解后:
上式中油猫,等式左側(cè)是對(duì)稱的稠茂,即WiTWj = WjTWi, 而右側(cè)是不對(duì)稱的,即log(pij) != log(Pji). 如果上式的右側(cè)沒有l(wèi)og(xi)則等式的左右就對(duì)稱了情妖,考慮到與k無關(guān)睬关,所以把這一項(xiàng)并入到i的偏差項(xiàng)中,即:
由于上式中有l(wèi)og毡证,所以需要處理0值电爹,同時(shí),對(duì)于低頻與高頻的共線詞都不能過度訓(xùn)練料睛,于是丐箩,優(yōu)化目標(biāo)就變成了:
其中摇邦,權(quán)重函數(shù)f(x)需要滿足:
1, f(0)=0
2, 非減以避免低頻共現(xiàn)過度訓(xùn)練
3屎勘,抑制高頻共現(xiàn)避免過度訓(xùn)練
最后采用的f(x) 形式為:
實(shí)驗(yàn)中他們采用的是xmax=100, a=3/4
四施籍、對(duì)比
與局部窗口方式對(duì)比:
優(yōu)化目標(biāo)使用不同的損失函數(shù),并帶有調(diào)和函數(shù)來降低高頻詞的影響概漱。
語義相似性結(jié)果對(duì)比:
五丑慎、思考
1.相對(duì)與word2vec, Glove引入了詞頻統(tǒng)計(jì)信息,這是很重要的全局信息瓤摧。
2.word2vec的訓(xùn)練次數(shù)與詞頻相關(guān)竿裂,Glove的訓(xùn)練中詞頻是loss的weight,高頻低頻詞的overweight的情況更低照弥。
3.將基于局部窗口的模型中腻异,相同詞進(jìn)行合并,修改對(duì)應(yīng)object:
其中H()為交叉熵产喉,相對(duì)Glove的object:
loss由交叉熵改為最小二乘捂掰,Xi改為f(Xi)函數(shù)進(jìn)行調(diào)和。
4.Glove中的左右詞向量也是兩個(gè)不同的詞向量空間曾沈,與word2vec一樣这嚣,雖然Glove模型上看上去可以使用同一個(gè)詞向量空間做,但是作者說是因?yàn)楦脙?yōu)化且模型更穩(wěn)定塞俱,不同的時(shí)姐帚,最后的結(jié)果是左右詞向量求和(雖然word2vec也可以這么做)
Demo:https://github.com/xv44586/Papers/blob/master/NLP/WordVector/GloveDemo.ipynb
再思考:
1.通常我們都是根據(jù)模型來推導(dǎo)其對(duì)應(yīng)的性質(zhì),而Glove是因?yàn)槠鋺?yīng)該具有的性質(zhì)障涯,來反推模型罐旗,這種方式也給人提供了一種新思路。
2.為什么兩種模型都有兩套詞向量空間(中心詞向量和上下文詞向量)唯蝶?雖然兩個(gè)作者都說是因?yàn)楦脙?yōu)化且模型更穩(wěn)定九秀,那有沒有更合理的理論上的解釋呢?我的理解是:對(duì)于word2vec粘我,模型直接對(duì)概率p(w|context),如skipgram中鼓蜒,直接對(duì)P(w2|w1)進(jìn)行建模,而P(w2|w1)與P(w1|w2)并不一定相等征字,所以需要針對(duì)詞的位置區(qū)分都弹,也就是需要兩套不一樣的詞向量空間;而Glove中匙姜,如上文中公式(6)所示畅厢,模型右側(cè)有一個(gè)與位置有關(guān)的參數(shù),雖然通過引入兩個(gè)bias可以一定程度上消除這個(gè)位置相關(guān)的參數(shù)氮昧,但是這個(gè)參數(shù)并不是均勻分布框杜,所以僅通過bias不能完全解決這個(gè)問題浦楣,而引入兩個(gè)不同的詞向量空間,相當(dāng)于是引入了位置信息霸琴,這樣能更好的解決這個(gè)問題椒振。其最本質(zhì)的原因是在窗口滑動(dòng)過程中,詞位置變化的同時(shí)信息可能是不對(duì)稱的梧乘,即以a為中心詞的窗口中的b在以b為窗口時(shí)澎迎,a可能丟失。
3.對(duì)于上式8选调,存在一個(gè)比較嚴(yán)重的問題夹供,模型為了消去位置相關(guān)參數(shù),將其吸收進(jìn)bias內(nèi)仁堪,而這個(gè)bias的引入哮洽,就導(dǎo)致了一個(gè)嚴(yán)重的問題,即模型不適定弦聂。
即當(dāng)你求得一組解后鸟辅,你可以給這組解加上一個(gè)常數(shù)向量,其還是一組解莺葫。那這個(gè)問題就很嚴(yán)重了匪凉,你無法評(píng)估你得到的解是哪組解。如果加上的是非常大的常數(shù)向量捺檬,那這組詞向量在很多度量上就失去了意義(如余弦距離)