Glove 原理詳細(xì)解讀

本文主要對《GloVe: Global Vectors for Word Representation》進(jìn)行解讀元扔。

盡管word2vector在學(xué)習(xí)詞與詞間的關(guān)系上有了大進(jìn)步渣蜗,但是它有很明顯的缺點(diǎn):只能利用一定窗長的上下文環(huán)境,即利用局部信息,沒法利用整個語料庫的全局信息漓概。鑒于此萎攒,GloVe誕生了饲帅,它的全稱是global vector,很明顯它是要改進(jìn)word2vector丽啡,利用語料庫的全局信息谋右。

1.共現(xiàn)概率

什么是共現(xiàn)

單詞i出現(xiàn)在單詞j的環(huán)境中(論文給的環(huán)境是以為中心的左右10個單詞區(qū)間)叫共現(xiàn)补箍。

什么是共現(xiàn)矩陣改执?

共現(xiàn)矩陣是單詞對共現(xiàn)次數(shù)的統(tǒng)計(jì)表。我們可以通過大量的語料文本來構(gòu)建一個共現(xiàn)統(tǒng)計(jì)矩陣坑雅。

例如辈挂,有語料如下:

I like deep learning.

I like NLP.

I enjoy flying.

以窗半徑為1來指定上下文環(huán)境,則共現(xiàn)矩陣就應(yīng)該是:

圖1 共現(xiàn)矩陣

X01:它表示like出現(xiàn)在I的環(huán)境(I like區(qū)間)中的次數(shù)(在整個語料庫中的總計(jì)次數(shù))裹粤,此處應(yīng)當(dāng)為2次呢岗,故第一行第二列應(yīng)當(dāng)填2。還應(yīng)當(dāng)發(fā)現(xiàn)蛹尝,這個共現(xiàn)矩陣它是對稱陣后豫,因?yàn)閘ike出現(xiàn)在I的環(huán)境中,那么必然I也會出現(xiàn)在like的環(huán)境中突那,所以X10= 2挫酿。


共現(xiàn)矩陣有以下3個特點(diǎn):

·統(tǒng)計(jì)的是單詞對在給定環(huán)境中的共現(xiàn)次數(shù);所以它在一定程度上能表達(dá)詞間的關(guān)系愕难。

·共現(xiàn)頻次計(jì)數(shù)是針對整個語料庫而不是一句或一段文檔早龟,具有全局統(tǒng)計(jì)特征。

·共現(xiàn)矩陣它是對稱的猫缭。


共現(xiàn)矩陣的生成步驟:

·首先構(gòu)建一個空矩陣葱弟,大小為V×V,即詞匯表×詞匯表猜丹,值全為0芝加。矩陣中的元素坐標(biāo)記為(i,j)

·確定一個滑動窗口的大小(例如取半徑為m)

·從語料庫的第一個單詞開始射窒,以1的步長滑動該窗口藏杖,因?yàn)槭前凑照Z料庫的順序開始的,所以中心詞為到達(dá)的那個單詞即i脉顿。

·上下文環(huán)境是指在滑動窗口中并在中心單詞i兩邊的單詞蝌麸。

·若窗口左右無單詞,一般出現(xiàn)在語料庫的首尾艾疟,則空著来吩,不需要統(tǒng)計(jì)敢辩。

·在窗口內(nèi),統(tǒng)計(jì)上下文環(huán)境中單詞出現(xiàn)的次數(shù)弟疆,并將該值累計(jì)到(i,j)位置上责鳍。

·不斷滑動窗口進(jìn)行統(tǒng)計(jì)即可得到共現(xiàn)矩陣。


什么是叫共現(xiàn)概率兽间?

定義X為共現(xiàn)矩陣历葛,共現(xiàn)矩陣的元素X_{ij}為詞j出現(xiàn)在詞i環(huán)境的次數(shù),令X_i\sum\nolimits_{k}X _ik嘀略,為任意詞出現(xiàn)在i的環(huán)境的次數(shù)(即共現(xiàn)矩陣第i行的和)恤溶,那么:

P_{ij}=P(j|i)=\frac{X_{ij}}{X_i}

為詞j出現(xiàn)在詞環(huán)境中的概率(這里以頻率計(jì)算概率),這一概率被稱為詞i和詞j的共現(xiàn)概率帜羊。共現(xiàn)概率是指在給定的環(huán)境下出現(xiàn)(共現(xiàn))某一個詞的概率咒程。注意:在給定語料庫的情況下,我們是可以事先計(jì)算出任意一對單詞的共現(xiàn)概率的讼育。

2.共現(xiàn)概率比

? ? ?接下來闡述為啥作者要提共現(xiàn)概率和共現(xiàn)概率比這一概念帐姻。下面是論文中給的一組數(shù)據(jù):

先看一下第一行數(shù)據(jù),以ice為中心詞的環(huán)境中出現(xiàn)solid固體的概率是大于gas奶段、fashion而且小于water的饥瓷,這是很合理的,對吧痹籍,因?yàn)楝F(xiàn)實(shí)語言使用習(xí)慣就是這樣的呢铆。同理可以解釋第二行數(shù)據(jù)。我們來重點(diǎn)考慮第三行數(shù)據(jù):共現(xiàn)概率比蹲缠。我們把共現(xiàn)概率相比棺克,我們發(fā)現(xiàn):

1.看第三行第一列:當(dāng)ice的語境下共現(xiàn)solid的概率應(yīng)該很大,當(dāng)stream的語境下共現(xiàn)solid的概率應(yīng)當(dāng)很小线定,那么比值就>1娜谊。

2.看第三行第二列:當(dāng)ice的語境下共現(xiàn)gas的概率應(yīng)該很小,當(dāng)stream的語境下共現(xiàn)gas的概率應(yīng)當(dāng)很大斤讥,那么比值就<1纱皆。

3.看第三行第三列:當(dāng)ice的語境下共現(xiàn)water的概率應(yīng)該很大,當(dāng)stream的語境下共現(xiàn)water的概率也應(yīng)當(dāng)很大周偎,那么比值就近似=1抹剩。

4.看第三行第四列:當(dāng)ice的語境下共現(xiàn)fashion的概率應(yīng)該很小,當(dāng)stream的語境下共現(xiàn)fashion的概率也應(yīng)當(dāng)很小蓉坎,那么比值也是近似=1。

因?yàn)樽髡甙l(fā)現(xiàn)用共現(xiàn)概率比也可以很好的體現(xiàn)3個單詞間的關(guān)聯(lián)(因?yàn)楣铂F(xiàn)概率比符合常理)胡嘿,所以glove作者就大膽猜想蛉艾,如果能將3個單詞的詞向量經(jīng)過某種計(jì)算可以表達(dá)共現(xiàn)概率比就好了(glove思想)。如果可以的話,那么這樣的詞向量就與共現(xiàn)矩陣有著一致性勿侯,可以體現(xiàn)詞間的關(guān)系拓瞪。

3.Glove優(yōu)化目標(biāo)

想要表達(dá)共現(xiàn)概率比,這里涉及到的有三個詞即i,j,k,它們對應(yīng)的詞向量用v_i,v_j,\tilde{x}_k表示助琐,那么我們需要找到一個映射f,使得:f(v_i,v_j, \tilde{v}_k )=\frac{P_{ik}}{P_{jk}} ,等式的右邊的比值可以通過統(tǒng)計(jì)得到祭埂。這個比值可以作為標(biāo)簽,我們需要設(shè)計(jì)一個模型通過訓(xùn)練的方式讓映射值逼近這個確定的共現(xiàn)概率比兵钮。很明顯這是個回歸問題蛆橡,我們可以用均方誤差作為loss。當(dāng)然掘譬,設(shè)計(jì)這個函數(shù)或者這個模型當(dāng)然有很多途徑泰演,我們來看看作者是怎么設(shè)計(jì)的。

下面將從如何構(gòu)造f(v_i,v_j, \tilde{v}_k )=\frac{P_{ik}}{P_{jk}} 展開討論葱轩,首先聲明以下的內(nèi)容更多的是體現(xiàn)作者構(gòu)造模型的思路睦焕,不是嚴(yán)格的數(shù)學(xué)證明。

為了讓f(v_i,v_j, \tilde{x}_k )=\frac{P_{ik}}{P_{jk}} 左右兩邊相等靴拱,很容易想到用兩者的均方差做代價函數(shù):

J=\sum_{i,j,k}^V (\frac {P_{ik}}{P_{jk}}- f(v_i,v_j,\tilde{v}_k )))^2

但是里面含有3個單詞垃喊,這意味這要在V*V*V的復(fù)雜度上計(jì)算,太復(fù)雜了袜炕。

為了簡化計(jì)算缔御,作者是這樣思考的:

1. 為了考慮單詞i和單詞j之間的關(guān)系,那么v_{i} -v_{j}是一個合理的選擇

2.\frac{P_{ik}}{P_{jk}} 是標(biāo)量妇蛀,而v_i,v_j,\tilde{v}_k 均為向量耕突,為了將向量轉(zhuǎn)為標(biāo)量,可以將兩個向量做內(nèi)積评架,于是有了(v_i-v_j)^T\tilde{v}_k

3.?接著眷茁,作者在(v_i-v_j)^T\tilde{v}_k外面加了指數(shù)運(yùn)算exp(),得到:

f(v_i,v_j,\tilde{v}_k) =exp((v_i-v_j)^T\tilde{v}_k)

即:f(v_i,v_j,\tilde{v}_k) =\frac{P_{ik}}{P_{jk}} =exp((v_i-v_j)^T\tilde{v}_k)

即:\frac{P_{ik}}{P_{jk}} =exp(v_i^T\tilde{v}_k-v_j^T\tilde{v}_k)

即:\frac{P_{ik}}{P_{jk}} =\frac{exp(v_i^T\tilde{v}_k)}{exp(v_j^T\tilde{v}_k)}

這樣纵诞,便可以發(fā)現(xiàn)簡化方法了:只需要上式分子對應(yīng)相等上祈,分母對應(yīng)相等即可。

即:P_{ik} =exp(v_i^T\tilde{v}_k)并且P_{jk} =exp(v_j^T\tilde{v}_k)

考慮到P_{ik} =exp(v_i^T\tilde{v}_k)P_{jk} =exp(v_j^T\tilde{v}_k)形式是相同的浙芙,于是進(jìn)行統(tǒng)一考慮登刺,即:

P_{ij} =exp(v_i^T\tilde{v}_j)

本來我們追求的是:f(v_i,v_j, \tilde{v}_k )=\frac{P_{ik}}{P_{jk}}

現(xiàn)在只需要追求:P_{ij} =exp(v_i^T\tilde{v}_j)

兩邊取對數(shù):log(P_{ij}) = v_i^T\tilde{v}_j

那么代價函數(shù)可簡化為:J=\sum_{ij}^V(log(P_{ij})-v_i^T\tilde{v}_j)^2

現(xiàn)在只需要在V*V的復(fù)雜度上進(jìn)行計(jì)算。

4.仔細(xì)觀察log(P_{ij}) = v_i^T\tilde{v}_jlog(P_{ji}) = v_j^T\tilde{v}_i可以發(fā)現(xiàn):log(P_{ij})不等于log(P_{ji})但是v_i^T\tilde{v}_jv_j^T\tilde{v}_i是相等的嗡呼。即等式左側(cè)不具有對稱性而右側(cè)有對稱性纸俭。這在數(shù)學(xué)上出現(xiàn)問題,有可能會導(dǎo)致模型無法訓(xùn)練優(yōu)化南窗。

為了解決這個問題將log(P_{ij}) = v_i^T\tilde{v}_j中的log(P_{ij})按照條件概率展開揍很,即為:?log(P_{ij}) = log(\frac{X_{ij}}{X_i} )=log(X_{ij})-log(Xi)= v_i^T\tilde{v}_j

將其變?yōu)椋?img class="math-inline" src="https://math.jianshu.com/math?formula=log(X_%7Bij%7D)%3Dv_i%5ET%5Ctilde%7Bv%7D_j%2Bb_i%2B%5Ctilde%7Bb%7D%20_j" alt="log(X_{ij})=v_i^T\tilde{v}_j+b_i+\tilde郎楼 _j" mathimg="1">

即添加一個偏置項(xiàng)\tilde _j窒悔,將log(X_i)吸收到偏置項(xiàng)b_i中呜袁。

于是代價函數(shù)變成了:?J=\sum_{ij}^V (v_i^T\tilde{v}_j+b_i+\tilde _j-log(X_{ij}))^2

5.在代價函數(shù)中添加權(quán)重項(xiàng)简珠,于是代價函數(shù)進(jìn)一步進(jìn)化為:

J=\sum_{ij}^V f(X_{ij})(v_i^T\tilde{v}_j+b_i+\tilde阶界 _j-log(X_{ij}))^2

f(X_{ij})是怎樣的呢?有什么作用呢聋庵?為什么要添加權(quán)重函數(shù)膘融?

我們知道在一個語料庫中,肯定存在很多單詞他們在一起出現(xiàn)的次數(shù)是很多的珍策,那么我們希望:

1.這些單詞的權(quán)重須大于那些很少在一起出現(xiàn)的單詞托启,所以這個函數(shù)要是非遞減函數(shù);

2.但我們也不希望這個權(quán)重過大攘宙,當(dāng)?shù)竭_(dá)一定程度之后應(yīng)該不再增加屯耸;

3.如果兩個單詞沒有在一起出現(xiàn),也就是X_{ij}=0蹭劈,那么他們應(yīng)該不參與到loss function的計(jì)算當(dāng)中去疗绣,也就是f(x)要滿足f(0)=0

滿足以上條件的函數(shù)有很多,作者采用了如下形式的分段函數(shù):

函數(shù)圖像:

這篇glove論文中的所有實(shí)驗(yàn)铺韧,的取值都是\alpha 為0.75多矮,而x_{max}為100

也就是說詞對共現(xiàn)次數(shù)越多的,有更大的權(quán)重將被懲罰得更厲害些哈打;次數(shù)少塔逃,有更小的懲罰權(quán)重,這樣就可以使得不常共現(xiàn)的詞對對結(jié)果的貢獻(xiàn)不會太小料仗,而不會過分偏向于常共現(xiàn)的詞對湾盗。

那么總結(jié)下,glove的優(yōu)化目標(biāo)為:J=\sum_{ij}^V f(X_{ij})(v_i^T\tilde{v}_j+b_i+\tilde立轧 _j-log(X_{ij}))^2


Question&Answer

Question1: GloVe是如何訓(xùn)練的?

Answer1: 雖然很多人聲稱GloVe是一種無監(jiān)督的學(xué)習(xí)方式(因?yàn)樗_實(shí)不需要人工標(biāo)注label)格粪,但其實(shí)它還是有l(wèi)abel的,這個label就是優(yōu)化目標(biāo)中的log(X_{ij})氛改。而優(yōu)化目標(biāo)中的v_i,\tilde{v}_i就是要不斷更新/學(xué)習(xí)的參數(shù)帐萎,所以本質(zhì)上它的訓(xùn)練方式跟監(jiān)督學(xué)習(xí)的訓(xùn)練方法沒什么不一樣,都是基于梯度下降的胜卤。具體地疆导,這篇論文里的實(shí)驗(yàn)是這么做的:采用了AdaGrad的梯度下降算法,對矩陣中的所有非零元素進(jìn)行隨機(jī)采樣瑰艘,學(xué)習(xí)率(learning rate)設(shè)為0.05是鬼,在vector size小于300的情況下迭代了50次肤舞,其他大小的vectors上迭代了100次紫新,直至收斂均蜜。最終學(xué)習(xí)得到的是兩個vector是v_i,\tilde{v}_i,因?yàn)閄是對稱的,所以從原理上講v_i,\tilde{v}_i也是對稱的芒率,他們唯一的區(qū)別是初始化的值不一樣囤耳,而導(dǎo)致最終的值不一樣。所以這兩者其實(shí)是等價的偶芍,都可以當(dāng)成最終的結(jié)果來使用充择。但是為了提高魯棒性,最終會選擇兩者之和作為最終的vector(兩者的初始化不同相當(dāng)于加了不同的隨機(jī)噪聲匪蟀,所以能提高魯棒性)椎麦。


三千多字,碼字不易材彪,如果大家發(fā)現(xiàn)我有地方寫得不對或者有疑問的观挎,麻煩評論,我會回復(fù)并改正段化。對于重要問題嘁捷,我會持續(xù)更新至Question&Answer。

參考

Pennington J , Socher R , Manning C . Glove: Global Vectors for Word Representation[C]// Conference on Empirical Methods in Natural Language Processing. 2014.

CS224N Winter 2019

Glove模型---詞向量模型

GloVe詳解

詳解GloVe詞向量模型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末显熏,一起剝皮案震驚了整個濱河市雄嚣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喘蟆,老刑警劉巖缓升,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蕴轨,居然都是意外死亡港谊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門尺棋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來封锉,“玉大人,你說我怎么就攤上這事膘螟〕筛#” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵荆残,是天一觀的道長奴艾。 經(jīng)常有香客問我,道長内斯,這世上最難降的妖魔是什么蕴潦? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任像啼,我火速辦了婚禮,結(jié)果婚禮上潭苞,老公的妹妹穿的比我還像新娘忽冻。我一直安慰自己,他們只是感情好此疹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布僧诚。 她就那樣靜靜地躺著,像睡著了一般蝗碎。 火紅的嫁衣襯著肌膚如雪湖笨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天蹦骑,我揣著相機(jī)與錄音慈省,去河邊找鬼。 笑死眠菇,一個胖子當(dāng)著我的面吹牛边败,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琼锋,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼放闺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缕坎?” 一聲冷哼從身側(cè)響起怖侦,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谜叹,沒想到半個月后匾寝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荷腊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年艳悔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片女仰。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡猜年,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疾忍,到底是詐尸還是另有隱情乔外,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布一罩,位于F島的核電站杨幼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜差购,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一四瘫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欲逃,春花似錦找蜜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撵孤。三九已至迈着,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間邪码,已是汗流浹背裕菠。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闭专,地道東北人奴潘。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像影钉,于是被迫代替她去往敵國和親画髓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355