詞向量學(xué)習(xí)算法 Glove

常見的詞嵌入算法有基于矩陣分解的方法和基于淺層窗口的方法,Glove 結(jié)合了這兩類方法的優(yōu)點(diǎn)生成詞向量∧∏。基于矩陣分解的方法可以有效地利用全局信息沪么,但是在大數(shù)據(jù)集上速度慢硼婿;而基于淺層窗口的方法對于詞匯類比任務(wù)效果較好,訓(xùn)練速度快禽车,但是不能有效利用全局信息寇漫。

1. 詞嵌入算法 Word Embedding

在上一篇文章《詞表征學(xué)習(xí)算法 — Word2Vec》中,主要介紹了詞嵌入算法 Word2Vec殉摔。與傳統(tǒng)的 one-hot 編碼州胳、共現(xiàn)向量相比,詞嵌入算法得到的詞向量維度更低逸月、也可以更好地支持一些下游的任務(wù)栓撞,例如文檔分類,問答系統(tǒng)等碗硬。

本文介紹另一種詞嵌入算法 Glove瓤湘,首先簡述目前主要的兩類詞嵌入算法的優(yōu)缺點(diǎn)。第一類是 Matrix Factorization (矩陣分解) 方法恩尾,例如 LSA弛说;第二類是 Shallow Window-Based (基于淺層窗口) 方法,也稱為基于預(yù)測的方法翰意,例如 Word2Vec木人。Glove 算法結(jié)合了基于統(tǒng)計(jì)和基于淺窗口兩種方法的優(yōu)點(diǎn)

1.1 矩陣分解

基于矩陣分解的 word embedding 算法是一種利用了全局統(tǒng)計(jì)信息的方法,首先需要在語料庫中構(gòu)造出單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣冀偶。下面用一個簡單的例子說明虎囚,假設(shè)語料庫中包含以下三個文檔,則可以構(gòu)造出對應(yīng)的單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣

文檔 1:I have a cat

文檔 2:cat eat fish

文檔 3:I have a apple


單詞共現(xiàn)矩陣與文檔 - 單詞矩陣??

單詞共現(xiàn)矩陣中蔫磨,單詞 “I” 和 單詞 “have” 在兩篇文檔中共同出現(xiàn)淘讥,因此它們的連接權(quán)重為 2;在文檔 - 單詞矩陣中文檔 1 包含一個單詞 “I”堤如,因此為 1蒲列。在實(shí)際構(gòu)造文檔 - 單詞矩陣時則可以使用 tf-idf 作為權(quán)重窒朋。

在得到單詞共現(xiàn)矩陣或者文檔 - 單詞矩陣后可以采用 LSA 算法學(xué)習(xí)得到詞向量,LSA 算法 (潛在語義分析) 主要用于文本話題分析蝗岖,通過對文檔 - 單詞矩陣進(jìn)行分解可以找出文檔與話題侥猩、單詞與話題之間的聯(lián)系 。矩陣?X(M×N) 表示文檔 - 單詞矩陣抵赢,其中包含 M 個文檔和 N 個單詞欺劳。LSA 使用 SVD 分解矩陣?X?,得到兩個低維的矩陣?U(M×k) 和?V(N×k)铅鲤,V?的每一行就是一個單詞的詞向量划提。


SVD 分解文檔 - 單詞矩陣

基于矩陣分解的方法優(yōu)點(diǎn)是:可以有效利用全局統(tǒng)計(jì)信息。缺點(diǎn)是:1. SVD算法的時間復(fù)雜度太大邢享,不適合用于大數(shù)據(jù)集鹏往;2. 主要用于獲取詞匯的相似性,對于詞匯類比任務(wù)的表現(xiàn)沒有基于淺窗口預(yù)測的方法好骇塘。

1.2 基于淺窗口

基于淺窗口的方法也稱為基于預(yù)測的方法伊履,代表算法有 NNLM、Word2Vec 等款违√破伲基于淺窗口的方法通常使用了語料庫的局部信息,在訓(xùn)練的過程中生成一個局部的上下文窗口插爹。通過用上下文單詞預(yù)測中心詞或者用中心詞預(yù)測上下文單詞哄辣,最大化條件概率 P(中心詞|上下文單詞) 或者 P(上下文單詞|中心詞),從而訓(xùn)練得到詞向量递惋。例如在 Word2Vec 的 Skip-Gram 模型中主要是使用中心詞預(yù)測上下文單詞柔滔,最大化 P(上下文單詞|中心詞);而 Word2Vec 中的 CBOW 模型主要是通過上下文單詞預(yù)測中心詞萍虽,最大化 P(中心詞|上下文單詞) 睛廊。上一篇文章介紹了 Word2Vec,因此不贅述了杉编。

基于淺窗口方法的優(yōu)點(diǎn)是:1. 訓(xùn)練的過程中采用了預(yù)測的方式超全,在詞匯類比任務(wù)中的表現(xiàn)更好;2. 訓(xùn)練更快邓馒,能適應(yīng)大數(shù)據(jù)集嘶朱;3. 能夠?qū)W習(xí)到單詞之間除了相似性之外的復(fù)雜模式。缺點(diǎn)是:1. 不能很好的使用全局統(tǒng)計(jì)信息光酣;2. 需要大量的數(shù)據(jù)集疏遏。

可以看到矩陣分解和基于淺窗口的方法都存在一些局限,而 Glove 算法的邏輯就是,結(jié)合了兩類算法的優(yōu)點(diǎn)财异,接下來重點(diǎn)了解 Glove 算法倘零。

2. Glove 單詞共現(xiàn)矩陣與共現(xiàn)概率矩陣

GloVe模型將 LSA 和 Word2Vec 的優(yōu)點(diǎn)結(jié)合在一起,既利用了語料庫的全局統(tǒng)計(jì)信息戳寸,也利用了局部的上下文特征 (滑動窗口)呈驶。Glove 首先需要構(gòu)造單詞共現(xiàn)矩陣,并提出了共現(xiàn)概率矩陣 (Co-occurrence Probabilities Matrix)的概念疫鹊,共現(xiàn)概率矩陣可以通過單詞共現(xiàn)矩陣計(jì)算袖瞻。

2.1 Glove 單詞共現(xiàn)矩陣

Glove 中構(gòu)造單詞共現(xiàn)矩陣時與 LSA 存在一些區(qū)別,需要限定一個上下文窗口拆吆,構(gòu)造的過程如下:

1.構(gòu)造一個 N×N 的空矩陣聋迎,值為0

2.定義一個滑動窗口,大小為 c

3.從語料庫的第1個單詞開始作為中心詞滑動窗口锈拨,中心詞在窗口中心

4.中心詞左右兩邊的單詞有 c-1個砌庄,為上下文單詞

5.統(tǒng)計(jì)中心詞左右的上下文單詞出現(xiàn)的次數(shù)羹唠,添加到矩陣中

6.繼續(xù)滑動窗口

例如給定句子 “I have a cat” 和上下文窗口大小為 3奕枢,則可以構(gòu)造出以下窗口。當(dāng)遍歷到第 3 個窗口 “have a cat” 時佩微,中心詞是 “a”缝彬,此時要在單詞共現(xiàn)矩陣 X?中加上統(tǒng)計(jì)信息。X(a, have) += 1哺眯,X(a, cat) += 1谷浅。注意這種方法構(gòu)造出的單詞共現(xiàn)矩陣 X?是對稱矩陣。在實(shí)際使用的時候奶卓,還可以根據(jù)上下文單詞與中心詞的距離調(diào)整添加到矩陣?X?中的權(quán)重一疯,遠(yuǎn)的詞權(quán)重小,而近的詞權(quán)重大夺姑。


中心詞的上下文窗口

2.2 Glove 共現(xiàn)概率矩陣

統(tǒng)計(jì)出共現(xiàn)矩陣?X?后墩邀,可以使用?Xij 表示單詞 i 和 j 共同出現(xiàn)的次數(shù),而?Xi 為所有?Xij 的和盏浙,Pij =?P(j|i) 表示單詞 j 出現(xiàn)在單詞 i 上下文的概率眉睹。

單詞 j 出現(xiàn)在單詞 i 上下文的概率??

Glove 在上述基礎(chǔ)上提出了共現(xiàn)概率 (Co-occurrence)?的概念,共現(xiàn)概率可以理解為上面條件概率的比例?Ratio废膘。以下是原論文中的例子竹海,給定中心詞 ice (冰) 和 steam (水蒸氣),可以通過不同的上下文單詞 k 與中心詞 ice丐黄、steam 條件概率的比例?Ratio(ice, steam, k) 判斷它們之間的關(guān)系斋配。

上下文單詞 k 與中心詞 ice、steam 條件概率的比例??
條件概率比例 Ratio 的計(jì)算方式??

當(dāng)單詞 k 與 ice 相關(guān)性比較大的時候,例如 k = solid (固體)艰争,Ratio(ice, steam, k) 會比較大十偶;

當(dāng)單詞 k 與 steam 相關(guān)性比較大的時候,如 k = gas (氣體)园细,Ratio(ice, steam, k) 會比較械牖;

當(dāng) k 與 ice猛频、steam 都相關(guān)時狮崩,如 k = water (水),Ratio(ice, steam, k) 的值會接近 1鹿寻;

當(dāng) k 與 ice睦柴、steam 都不相關(guān)時,如 k = fashione (時尚)毡熏,Ratio(ice, steam, k) 的值也會接近 1坦敌;

通過這個比例?Ratio(ice, steam, k) 可以很好地區(qū)分與 ice 相關(guān)的詞 (solid)、與 steam 相關(guān)的詞 (gas) 和一些對于 ice痢法、steam 不是很重要的詞 (water狱窘、fashion)。因此 Glove 使用了一種重要的思想财搁,即給定中心詞 i蘸炸,j 和上下文單詞 k,詞向量的學(xué)習(xí)應(yīng)該與單詞條件概率的比例?Ratio(i, j, k) 相關(guān)尖奔,好的詞向量可以編碼?Ratio(i, j, k) 的相關(guān)信息搭儒。

3. Glove 算法的推導(dǎo)

使用 w(x) 表示單詞 x 的詞向量,w'(x) 表示單詞 x 作為上下文時候的詞向量提茁。則給定中心詞 i淹禾,j 和上下文單詞 k,Glove 希望詞向量可以編碼?Ratio(i, j, k)的信息茴扁,則會存在一種函數(shù) F铃岔,使得下式成立。

上式右側(cè)部分通過單詞共現(xiàn)矩陣計(jì)算丹弱,接下來需要簡化公式德撬。Glove 的作者認(rèn)為,單詞詞向量空間是一個線性結(jié)構(gòu)躲胳,例如?“man” - “women”?的差與?“king” - “queen”?的差很相近蜓洪。因此一種直觀的方法是,通過詞向量的差值簡化公式坯苹。


上式的右側(cè)是一個標(biāo)量隆檀,而左側(cè) F 函數(shù)里面是向量。為了避免函數(shù) F (F可以很復(fù)雜,例如使用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)) 學(xué)習(xí)到一些無用的東西恐仑,混淆 Glove 希望得到的線性結(jié)構(gòu)泉坐,因此進(jìn)一步對公式進(jìn)行簡化,將公式 F 函數(shù)里面的也變?yōu)橐粋€標(biāo)量裳仆。


單詞共現(xiàn)矩陣 X?是一個對稱矩陣腕让,說明中心詞與上下文詞是可以互換位置的,即公式中變換 w(x) 與 w'(x)歧斟、X(i, j) 與?X(j, i)纯丸,公式應(yīng)該不變。但是上面的式子并不滿足這一條件静袖,因此要將上面的公式變成滿足同態(tài)性的觉鼻。


從式子可以看出 F 是指數(shù)函數(shù),即 F = exp队橙,于是上面的公式可以進(jìn)行變換坠陈,得到下面的公式。

注意到上面的式子右側(cè)交換 i 和 k 的位置會改變公式對稱性捐康,為了保證對稱性仇矾,作者進(jìn)行了如下變換,增加了兩個偏置項(xiàng) b(i) 與 b'(k)吹由。

因此最終需要最小化下面的目標(biāo)函數(shù):

目標(biāo)函數(shù)就是平方誤差若未,其中 f(Xij) 表示損失函數(shù)的權(quán)重朱嘴,作者采用了上述公式計(jì)算 f(Xij)倾鲫,保證了:1. 兩個單詞共現(xiàn)次數(shù)越多,損失函數(shù)權(quán)重越大萍嬉;2. 兩單詞共現(xiàn)次數(shù)超過一個閾值時乌昔,權(quán)重不繼續(xù)增大,最大權(quán)重為 1壤追;3. 兩個單詞共現(xiàn)次數(shù)為 0磕道,則權(quán)重為 0。f(Xij) 的圖像如下行冰。

目標(biāo)函數(shù)采用隨機(jī)梯度下降法進(jìn)行優(yōu)化溺蕉,隨機(jī)選取單詞共現(xiàn)矩陣 X?中的非 0 項(xiàng)進(jìn)行優(yōu)化。X?是一個稀疏矩陣悼做,Glove 通常優(yōu)化速度比 Word2Vec 要快疯特,因?yàn)?Word2Vec 中語料庫的每一對 (中心詞、上下文詞) 都是訓(xùn)練樣本肛走,樣本數(shù)量較多漓雅。

4. 總結(jié)

Glove 算法結(jié)合了矩陣分解淺窗口方法的優(yōu)點(diǎn),充分地利用了全局的統(tǒng)計(jì)信息局部上下文窗口的優(yōu)勢。在實(shí)際使用中效果會比 Word2Vec 要好邻吞,而且訓(xùn)練的速度更快组题。

參考文獻(xiàn)

《GloVe : Global Vectors forWord Representation》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抱冷,隨后出現(xiàn)的幾起案子崔列,更是在濱河造成了極大的恐慌,老刑警劉巖旺遮,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峻呕,死亡現(xiàn)場離奇詭異,居然都是意外死亡趣效,警方通過查閱死者的電腦和手機(jī)瘦癌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跷敬,“玉大人讯私,你說我怎么就攤上這事∥骺” “怎么了斤寇?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拥褂。 經(jīng)常有香客問我娘锁,道長,這世上最難降的妖魔是什么饺鹃? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任莫秆,我火速辦了婚禮,結(jié)果婚禮上悔详,老公的妹妹穿的比我還像新娘镊屎。我一直安慰自己,他們只是感情好茄螃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布缝驳。 她就那樣靜靜地躺著,像睡著了一般归苍。 火紅的嫁衣襯著肌膚如雪挪略。 梳的紋絲不亂的頭發(fā)上设塔,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼睹栖。 笑死惑折,一個胖子當(dāng)著我的面吹牛璃哟,可吹牛的內(nèi)容都是我干的采够。 我是一名探鬼主播吗购,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砸狞!你這毒婦竟也來了捻勉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤刀森,失蹤者是張志新(化名)和其女友劉穎踱启,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體研底,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埠偿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了榜晦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冠蒋。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖乾胶,靈堂內(nèi)的尸體忽然破棺而出抖剿,到底是詐尸還是另有隱情,我是刑警寧澤识窿,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布斩郎,位于F島的核電站,受9級特大地震影響喻频,放射性物質(zhì)發(fā)生泄漏缩宜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一甥温、第九天 我趴在偏房一處隱蔽的房頂上張望锻煌。 院中可真熱鬧,春花似錦窿侈、人聲如沸炼幔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肛著,卻和暖如春圆兵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枢贿。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工殉农, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人局荚。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓超凳,卻偏偏與公主長得像愈污,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轮傍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 寫在最前:本篇學(xué)習(xí)筆記是我在DUTIR情感計(jì)算組組會準(zhǔn)備主講過程的一些記錄暂雹,通過閱讀了一些博客以及論文,整理的學(xué)習(xí)...
    Chen_0221閱讀 804評論 0 5
  • 一创夜、詞嵌入背景 詞嵌入(Word Embedding)是一種將文本中的詞轉(zhuǎn)換成數(shù)字向量的方法杭跪,為了使用標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)...
    rosyxiao閱讀 20,861評論 0 15
  • 目前詞向量主要用的技術(shù) word2vec fasttext glove 1 one-host編碼 one-hot編...
    georgeguo閱讀 2,302評論 0 2
  • 一、GloVe模型 基于統(tǒng)計(jì)的詞向量模型以基于SVD分解技術(shù)的LSA模型為代表驰吓,通過構(gòu)建一個共現(xiàn)矩陣得到隱層的語義...
    DataArk閱讀 966評論 0 2
  • 因生辰好友帶我來了念叨很久的鼓浪嶼涧尿。鼓浪嶼國家5A級景區(qū),世界文化遺產(chǎn)檬贰,是廈門最大的一個嶼姑廉,因漲潮水涌,浪擊礁石...
    織愁閱讀 234評論 1 2