0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹Word2Vec和Glove這兩種最流行的詞嵌入方法背后的直覺(jué)

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-06-25 14:50 ? 次閱讀

NLP的首要問(wèn)題就是尋求恰當(dāng)?shù)奈谋颈硎痉椒?。因?yàn)?,良好的文本表示形式,是后續(xù)進(jìn)一步處理的基礎(chǔ)。近年來(lái),詞嵌入方法越來(lái)越流行,在各種各樣的NLP任務(wù)中得到了廣泛的應(yīng)用。簡(jiǎn)單而言,詞嵌入是通過(guò)無(wú)監(jiān)督方式學(xué)習(xí)單詞的向量表示。本文將首先回顧用向量表示文本的早期模型,并通過(guò)分析其缺陷揭示詞嵌入提出的動(dòng)機(jī),然后介紹Word2Vec和Glove這兩種最流行的詞嵌入方法背后的直覺(jué)。

向量空間模型

用向量來(lái)表示文本這一想法由來(lái)已久。早在1975年,Salton等就提出用向量空間模型來(lái)表示文本,以更好地索引、搜索文檔。

由于向量空間模型最初的應(yīng)用場(chǎng)景是索引、搜索,因此更關(guān)注詞和權(quán)重。由詞的權(quán)重組成向量,并使用這一向量表示整篇文檔。

具體而言,假設(shè)文檔由n個(gè)單詞組成,那么這篇文檔就可以表示為由每個(gè)單詞的權(quán)重組成的n維向量(長(zhǎng)度為n的數(shù)組),[w1, w2, ..., wn]。當(dāng)然,為了降低維度,事先會(huì)移除一些無(wú)關(guān)緊要的詞(例如the、is)。在實(shí)踐中,使用一份停止詞(stop words)列表移除常見(jiàn)的無(wú)關(guān)緊要的單詞。

權(quán)重的計(jì)算有很多方法,最常用的是基于詞頻的方法。具體而言,單詞的權(quán)重由三個(gè)因素決定:

詞頻(Term Frequency,TF)。詞頻的計(jì)算公式為T(mén)F = t / m,其中,t為單詞在文檔出現(xiàn)的次數(shù),m為文檔的長(zhǎng)度(總詞數(shù))。例如,假設(shè)文檔由1000個(gè)單詞組成,其中某個(gè)單詞總共出現(xiàn)了3次,那么這個(gè)單詞的詞頻就等于3/1000.

逆向文檔頻率(Inverse Document Frequency,IDF)。IDF衡量單詞提供的信息量,換句話說(shuō),某個(gè)單詞是否在所有文檔中都很常見(jiàn)/罕見(jiàn)。這背后的直覺(jué)很簡(jiǎn)單。假設(shè)100篇文檔中,有80篇都包含“手機(jī)”這個(gè)單詞,而只有5篇文檔包含“足球”這個(gè)單詞。那么,對(duì)某篇特定文檔而言,如果它同時(shí)包含“足球”和“手機(jī)”這兩個(gè)單詞,這篇文檔更可能是一篇關(guān)于足球的文檔,而不是一篇關(guān)于手機(jī)的文檔,盡管“手機(jī)”的詞頻可能比“足球”高很多。

也就是說(shuō),我們需要設(shè)法加強(qiáng)“足球”的權(quán)重,削弱“手機(jī)”的權(quán)重。一個(gè)很容易想到的辦法是用總文檔數(shù)N除以包含該單詞的文檔數(shù)n,即N/n作為系數(shù)。在上面的例子中,“足球”的系數(shù)為100/5 = 20,“手機(jī)”的系數(shù)為100/80 = 1.25.

不過(guò),這里有一個(gè)問(wèn)題,20和1.25是比較大的數(shù)字,而詞頻的取值范圍小于1,兩者之間的數(shù)量級(jí)差異太大了。說(shuō)不定有一篇文檔主要是關(guān)于手機(jī)的,頻繁提到“手機(jī)”,只提到過(guò)一次“足球”,也因?yàn)橄禂?shù)數(shù)量級(jí)的差距導(dǎo)致被誤判為關(guān)于“足球”的文檔。在實(shí)踐中,文檔的總數(shù)可能非常大,遠(yuǎn)不止100,上述缺陷就更嚴(yán)重了。因此,我們需要“壓縮”一下,比如取個(gè)對(duì)數(shù):log(N/n)。我們看到,取對(duì)數(shù)后,“足球”的系數(shù)為log(20) = 2.996,“手機(jī)”的系數(shù)為log(1.25) = 0.223,好多了。

但是,取了對(duì)數(shù)之后,當(dāng)文檔總數(shù)很多,同時(shí)某個(gè)單詞在幾乎所有文檔中出現(xiàn)的時(shí)候,N/n趨向于1,由對(duì)數(shù)定義可知,log(N/n)趨向于0. 為了應(yīng)對(duì)這個(gè)問(wèn)題,我們可以在取對(duì)數(shù)前額外加1平滑下。所以,最終IDF的計(jì)算公式為:

IDF = log(1 + N/n)

長(zhǎng)度正則化上面TF和IDF的計(jì)算,我們假定文檔長(zhǎng)度差距不大。實(shí)際上,文檔長(zhǎng)度也會(huì)影響TF和IDF的效果。

雖然,在計(jì)算TF的時(shí)候,已經(jīng)除以文檔總詞數(shù)了,也就是已經(jīng)考慮到文檔長(zhǎng)度了。然而這并不能完全消除文檔長(zhǎng)度的影響。讓我們先看IDF(沒(méi)有考慮文檔總詞數(shù))的情形。

對(duì)于IDF而言,長(zhǎng)文檔包含的單詞更多,因此更容易出現(xiàn)各種單詞。因此,IDF相等的情況下,經(jīng)常出現(xiàn)在短文檔中的單詞,信息量比經(jīng)常出現(xiàn)在長(zhǎng)文檔中的單詞要高。例如,假設(shè)100篇文檔中,有2篇提到了“手機(jī)”,有2篇提到了“平板”,那么這兩個(gè)單詞的IDF值均為log(1 + 100/2) = 3.932。然而,假設(shè)提到“手機(jī)”的兩篇文檔各自長(zhǎng)度為10個(gè)單詞(一句話),而提到“平板”的兩篇文檔各自長(zhǎng)度為10000個(gè)單詞(長(zhǎng)篇大論)。那么,很明顯,IDF相等的“手機(jī)”和“平板”,信息量是不同的。在一句話中提到“手機(jī)”,那么這句話和手機(jī)高度相關(guān)的可能性,要比在長(zhǎng)篇大論中偶爾提到“平板”大很多。

IDF之后,再回過(guò)頭來(lái)看TF,就比較清楚了。計(jì)算IDF時(shí),需要考慮有多少文檔出現(xiàn)過(guò)某個(gè)單詞。那么,反過(guò)來(lái)說(shuō),剩下的文檔沒(méi)出現(xiàn)過(guò)這個(gè)單詞,也就是說(shuō),該單詞在那些剩下的文檔中的TF為零。根據(jù)之前對(duì)IDF的分析,我們知道,同樣是TF為零,長(zhǎng)文檔TF為零和短文檔TF為零,意義是不一樣的。從另一方面來(lái)說(shuō),長(zhǎng)度為10單詞的文檔沒(méi)有提到“平板”,長(zhǎng)度為10000單詞的文檔提到兩次“平板”,未必意味著后者就更可能和平板相關(guān)。很可能后者只是一篇偶爾提及平板,主要內(nèi)容和平板完全無(wú)關(guān)的文檔。

1975年Salton等提出基于文檔的向量空間模型,原本是為了優(yōu)化文檔的索引和獲取。當(dāng)?shù)玫交谖臋n的向量表示后,可以計(jì)算所有文檔在整個(gè)向量空間中的密度。文檔越密集、越扎堆,想要通過(guò)特定關(guān)鍵詞檢索,獲取某篇特定文檔就更困難。相反,文檔在向量空間中,彼此的距離越遠(yuǎn),索引系統(tǒng)的效果就越好。然而,這一方法的應(yīng)用顯然并不局限于此。

例如,我們可以通過(guò)計(jì)算文檔向量的接近程度(例如,使用余弦相似度)來(lái)衡量?jī)蓚€(gè)文檔的相似度。之后,相似度可以用于文本分類(lèi)、推薦相似文本等任務(wù)。

圖片來(lái)源:Riclas;許可: CC-BY 3.0

詞向量空間

前面我們介紹了基于文檔的向量空間模型,這一模型主要是基于頻率(詞頻和逆向文檔頻率)構(gòu)建。類(lèi)似地,基于和其他單詞同時(shí)出現(xiàn)的頻率,我們可以構(gòu)建基于單詞的向量空間模型。詞向量空間模型的主要思路是出現(xiàn)在類(lèi)似的上下文環(huán)境中的單詞在語(yǔ)義上很可能相似。例如,假如我們發(fā)現(xiàn),“咖啡”和“喝”經(jīng)常同時(shí)出現(xiàn),另一方面,“茶”和“喝”也經(jīng)常同時(shí)出現(xiàn),那么我們可以推測(cè)“咖啡”和“茶”在語(yǔ)義上應(yīng)該是相似的。

例如,上圖可視化了“路”(road)、“街”(street)以及“咖啡”(coffee)、“茶”(tea)這兩對(duì)詞向量。每個(gè)詞向量有25個(gè)維度(25個(gè)上下文中出現(xiàn)的單詞),灰度表示同時(shí)出現(xiàn)的頻率。從圖中很明顯能看到“路”、“街”的相似性以及“咖啡”、“茶”的相似性。另外,我們也看到,“街”和“咖啡”并不相似。(圖片來(lái)源于Lund等1996年發(fā)表的論文,因年代較早,印刷、掃描的質(zhì)量不高,圖片有點(diǎn)模糊,見(jiàn)諒。)

上面的可視化中,為了便于查看,每個(gè)詞向量?jī)H有25個(gè)維度。實(shí)際上,詞向量的維度對(duì)應(yīng)于整個(gè)語(yǔ)料庫(kù)的詞匯量,因此通常維度高達(dá)上萬(wàn),甚至百萬(wàn)。處理這樣的高維向量無(wú)疑是一項(xiàng)巨大的挑戰(zhàn)。這也正是詞向量空間模型的主要缺陷。

為了降低詞向量的維度,我們需要詞嵌入(Word Embedding)。

詞嵌入

詞嵌入背后的直覺(jué)很簡(jiǎn)單,既然同時(shí)出現(xiàn)的單詞在語(yǔ)義上有聯(lián)系,那么我們可以用某個(gè)模型來(lái)學(xué)習(xí)這些聯(lián)系,然后用這個(gè)模型來(lái)表示單詞。

當(dāng)前最流行的詞嵌入方法是Word2Vec和Glove。下面我們簡(jiǎn)單介紹下這兩種詞嵌入方法的主要思路。

Word2Vec

Word2Vec的網(wǎng)絡(luò)結(jié)構(gòu)很簡(jiǎn)單,包括一個(gè)輸入層、一個(gè)隱藏層、一個(gè)輸出層。其中,輸入層對(duì)應(yīng)某個(gè)(上下文)單詞的獨(dú)熱編碼向量(共有V個(gè)詞匯),輸出層為與輸入單詞同時(shí)出現(xiàn)的單詞的概率分布,換句話說(shuō),詞匯表中的每個(gè)單詞,出現(xiàn)在這一上下文中的概率分別是多少。隱藏層由N個(gè)神經(jīng)元組成。

圖片來(lái)源:Xin Rong arXiv:1411.2738v4

經(jīng)過(guò)訓(xùn)練之后,我們使用輸入層和隱藏層之間的連接權(quán)重矩陣WVxN表示單詞之間的關(guān)系。矩陣W共有V行,每一行都是一個(gè)N維向量,每個(gè)N維向量分別對(duì)應(yīng)一個(gè)單詞。這樣,詞向量的維度就從V降到了N。

我們之前介紹Word2Vec的架構(gòu)的時(shí)候沒(méi)有提及激活函數(shù)?,F(xiàn)在我們回過(guò)頭來(lái)補(bǔ)充一下。由于輸出層需要輸出給定上下文中出現(xiàn)單詞的概率分布,因此順理成章地使用softmax。而Word2Vec的隱藏層不使用激活函數(shù),這看起來(lái)有些離經(jīng)叛道,其實(shí)在這一場(chǎng)景中很合適。因?yàn)樽罱K我們只需要權(quán)重矩陣,并不使用隱藏層的激活函數(shù)。因此,為了簡(jiǎn)化網(wǎng)絡(luò)架構(gòu),Word2Vec的隱藏層不使用激活函數(shù)。當(dāng)然,最后的輸出層也沒(méi)用到,不過(guò)隱藏層和輸出層之間的權(quán)重,以及softmax可不能去掉,否則網(wǎng)絡(luò)就無(wú)法訓(xùn)練了。

當(dāng)然,上面的網(wǎng)絡(luò)架構(gòu)其實(shí)是簡(jiǎn)化過(guò)了的。通常,上下文不止一個(gè)單詞。所以,實(shí)際上Word2Vec的網(wǎng)絡(luò)架構(gòu)要比上面稍微復(fù)雜一點(diǎn)。

圖片來(lái)源:Xin Rong arXiv:1411.2738v4

和上面簡(jiǎn)化過(guò)的架構(gòu)相比,唯一的區(qū)別是現(xiàn)在有多個(gè)上下文單詞了。所以,輸入不再是某個(gè)單詞的獨(dú)熱編碼向量了,而是多個(gè)上下文單詞的平均向量。相應(yīng)地,原本我們僅僅使用輸入層和隱藏層之間的權(quán)重矩陣來(lái)表示單詞,現(xiàn)在則使用該權(quán)重矩陣和平均向量的乘積。

另外,其實(shí)我們也可以把上述的網(wǎng)絡(luò)架構(gòu)翻轉(zhuǎn)過(guò)來(lái),也就是將目標(biāo)單詞作為輸入,可能的上下文作為輸出。

這兩種架構(gòu)都屬于Word2Vec,前者稱(chēng)為CBOW模型,后者稱(chēng)為Skip-Gram模型。

Glove

另一個(gè)流行的詞嵌入方法是Glove。

之前我們提到,Word2Vec的輸出是單詞同時(shí)出現(xiàn)的概率分布。而Glove的主要直覺(jué)是,相比單詞同時(shí)出現(xiàn)的概率,單詞同時(shí)出現(xiàn)的概率的比率能夠更好地區(qū)分單詞。比如,假設(shè)我們要表示“冰”和“蒸汽”這兩個(gè)單詞。對(duì)于和“冰”相關(guān),和“蒸汽”無(wú)關(guān)的單詞,比如“固體”,我們可以期望P冰-固體/P蒸汽-固體較大。類(lèi)似地,對(duì)于和“冰”無(wú)關(guān),和“蒸汽”相關(guān)的單詞,比如“氣體”,我們可以期望P冰-氣體/P蒸汽-氣體較小。相反,對(duì)于像“水”之類(lèi)同時(shí)和“冰”、“蒸汽”相關(guān)的單詞,以及“時(shí)尚”之類(lèi)同時(shí)和“冰”、“蒸汽”無(wú)關(guān)的單詞,我們可以期望P冰-水/P蒸汽-水、P冰-時(shí)尚/P蒸汽-時(shí)尚應(yīng)當(dāng)接近于1。

另一方面,之前我們已經(jīng)提到過(guò),Word2Vec中隱藏層沒(méi)有使用激活函數(shù),這就意味著,隱藏層學(xué)習(xí)的其實(shí)是線性關(guān)系。既然如此,那么,是否有可能使用比神經(jīng)網(wǎng)絡(luò)更簡(jiǎn)單的模型呢?

基于以上兩點(diǎn)想法,Glove提出了一個(gè)加權(quán)最小二乘回歸模型,輸入為單詞-上下文同時(shí)出現(xiàn)頻次矩陣:

其中,f是加權(quán)函數(shù),定義如下:

在某些場(chǎng)景下,Glove的表現(xiàn)優(yōu)于Word2Vec。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 向量
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    11631
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    481

    瀏覽量

    21935

原文標(biāo)題:Word2Vec與Glove:詞嵌入方法的動(dòng)機(jī)和直覺(jué)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析word2vec的安裝和使用方法

    NLP之word2vecword2vec簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-25 10:32

    Gensim的word2vec說(shuō)明是什么

    翻譯word2vec說(shuō)明
    發(fā)表于 04-26 14:37

    word2vec嵌入空間

    word2vec(嵌入空間)
    發(fā)表于 05-08 13:17

    Word2Vec學(xué)習(xí)筆記

    Word2Vec學(xué)習(xí)筆記之基礎(chǔ)篇
    發(fā)表于 07-17 09:27

    word2vec使用說(shuō)明資料分享

    Google的word2vec官網(wǎng):https://code.google.com/p/word2vec/下載下來(lái)的Demo源碼文件共有如下幾個(gè):word2vec – Revision 41
    發(fā)表于 07-02 07:49

    構(gòu)建向量模型相關(guān)資料分享

    向量就是向量; 向量的計(jì)算應(yīng)該有意義, 需要盡可能保留原來(lái)的語(yǔ)言特征, 把語(yǔ)素編碼到連續(xù)的、能反映語(yǔ)素間關(guān)系的連續(xù)的向量空間的操作叫嵌入.(本文包含嘗試和其他實(shí)驗(yàn)的筆記, 篇幅較
    發(fā)表于 09-17 07:17

    請(qǐng)問(wèn)word2vec怎么使用?

    請(qǐng)問(wèn)word2vec怎么使用?
    發(fā)表于 09-23 08:14

    如何對(duì)2013年的Word2Vec算法進(jìn)行增強(qiáng)

    等人介紹的名為“FastText”的單詞嵌入算法,并了解它是如何對(duì)2013年的Word2Vec算法進(jìn)行增強(qiáng)的。詞表示的直覺(jué)假設(shè)我們有下面的單詞,我們想把它們表示成向量,這樣它們就可以用
    發(fā)表于 11-04 12:03

    自制Word2Vec圖書(shū)推薦系統(tǒng),幫你找到最想看的書(shū)!

    最初的Word2Vec Cbow算法使用固定的窗口大小的單詞用作特定目標(biāo)的輸入。比如,如果窗口大小是目標(biāo)左側(cè)和右側(cè)的2個(gè)單詞,那么在這句“The cat in the hat”中,如果目標(biāo)
    的頭像 發(fā)表于 09-25 08:53 ?9543次閱讀
    自制<b class='flag-5'>Word2Vec</b>圖書(shū)推薦系統(tǒng),幫你找到最想看的書(shū)!

    自然語(yǔ)言處理的ELMO使用

    word embedding 是現(xiàn)在自然語(yǔ)言處理中最常用的 word representation 的方法,常用的word embedding 是w
    的頭像 發(fā)表于 05-02 14:32 ?3235次閱讀
    自然語(yǔ)言處理的ELMO使用

    基于單詞貢獻(xiàn)度和Word2Vec向量的文檔表示方法

    針對(duì)現(xiàn)有文檔向量表示方法受噪聲詞語(yǔ)影響和重要詞語(yǔ)語(yǔ)義不完整的問(wèn)題,通過(guò)融合單詞貢獻(xiàn)度與word2vec向量提出一新的文檔表示方法。應(yīng)用數(shù)
    發(fā)表于 04-29 11:03 ?2次下載
    基于單詞貢獻(xiàn)度和<b class='flag-5'>Word2Vec</b><b class='flag-5'>詞</b>向量的文檔表示<b class='flag-5'>方法</b>

    你們了解Word2vec嗎?讀者一篇就夠了

    ://jalammar.github.io/illustrated-bert/ Word2vec是一有效創(chuàng)建嵌入方法,它自2013年以
    的頭像 發(fā)表于 06-23 16:36 ?1737次閱讀
    你們了解<b class='flag-5'>Word2vec</b>嗎?讀者一篇就夠了

    PyTorch教程15.4之預(yù)訓(xùn)練word2vec

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程15.4之預(yù)訓(xùn)練word2vec.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:58 ?0次下載
    PyTorch教程15.4之預(yù)訓(xùn)練<b class='flag-5'>word2vec</b>

    PyTorch教程-15.4. 預(yù)訓(xùn)練word2vec

    15.4. 預(yù)訓(xùn)練word2vec? Colab [火炬]在 Colab 中打開(kāi)筆記本 Colab [mxnet] Open the notebook in Colab Colab
    的頭像 發(fā)表于 06-05 15:44 ?317次閱讀
    PyTorch教程-15.4. 預(yù)訓(xùn)練<b class='flag-5'>word2vec</b>

    論文遭首屆ICLR拒稿、代碼被過(guò)度優(yōu)化,word2vec作者Tomas Mikolov分享背后的故事

    盡管 word2vec 是我被引用最多的論文,但我從未認(rèn)為它是我最有影響力的項(xiàng)目。實(shí)際上,word2vec 代碼最初只是我之前項(xiàng)目 RNNLM 的一個(gè)子集,我感覺(jué) RNNLM 很快就被人們遺忘了。但在我看來(lái),它應(yīng)該和 AlexNet 一樣具有革命性意義。
    的頭像 發(fā)表于 12-18 16:51 ?626次閱讀
    論文遭首屆ICLR拒稿、代碼被過(guò)度優(yōu)化,<b class='flag-5'>word2vec</b>作者Tomas Mikolov分享<b class='flag-5'>背后</b>的故事