01-word2vec

Word2Vec介紹

Word2Vec是一個(gè)將單詞轉(zhuǎn)換成向量形式的工具刁俭≈芏#可以把對(duì)文本內(nèi)容的處理簡(jiǎn)化為向量空間中的向量運(yùn)算所禀,計(jì)算出向量空間上的相似度,來(lái)表示文本語(yǔ)義上的相似度屁奏。(Word Embedding是根據(jù)該word在句中的上下文來(lái)決定的)可以提高模型的泛化能力岩榆。


1.在應(yīng)用中充當(dāng)語(yǔ)言模型

2.什么是語(yǔ)言模型?

我說(shuō)的一句話中坟瓢,后一個(gè)詞出現(xiàn)的概率總是和前一個(gè)出現(xiàn)的概率是相關(guān)的勇边。

如 我 = p(w1),今天=p(w2|w1)=“我”出現(xiàn)的情況下折联,“今天”出現(xiàn)的概率

3.存在的問(wèn)題

最后一個(gè)詞的概率粒褒,如果句子過(guò)長(zhǎng)會(huì)導(dǎo)致計(jì)算量過(guò)大,同時(shí)后一個(gè)詞和前一個(gè)詞組合的可能性越多诚镰,那么計(jì)算量也會(huì)增大奕坟。


4.一種解決辦法-N-gram


之前是后一個(gè)詞出現(xiàn)的概率只和前一個(gè)詞有關(guān),這樣會(huì)導(dǎo)致數(shù)據(jù)稀疏和參數(shù)空間太大清笨。

現(xiàn)在在改進(jìn)之后月杉,后一個(gè)詞出現(xiàn)的概率會(huì)和前N個(gè)詞有關(guān)。

4.1例子:下面以 I want Chinese food 為例

如這里統(tǒng)計(jì)了一個(gè)語(yǔ)料庫(kù)抠艾,以1-gram為例苛萎。i 出現(xiàn)的次數(shù)是2533,eat 在i后面出現(xiàn)的次數(shù)是9检号,那么概率為 9 / 2533 ≈ 0.0036.


4.2N-gram模型參數(shù)的量級(jí)

N代表語(yǔ)料庫(kù)詞的個(gè)數(shù)腌歉,n代表是依賴前幾個(gè)詞。通常會(huì)讓n=2或3齐苛。


5.詞向量(word to vector)

人類認(rèn)識(shí)詞翘盖,但是計(jì)算機(jī)認(rèn)識(shí)0和1,那么這時(shí)候就需要使用一種方法(如One-hot編碼)轉(zhuǎn)換這些詞讓計(jì)算機(jī)來(lái)識(shí)別這些詞脸狸。但是這樣的方法過(guò)于簡(jiǎn)單最仑,現(xiàn)在需要的詞向量需要能夠代表存在一種潛在的含義。



向量就是一些值的排列炊甲,可以讓它的值的范圍在-1到1之間泥彤,同時(shí)也可以向量的維度,向量的維度與向量的復(fù)雜程度呈正相關(guān)卿啡。

在語(yǔ)料庫(kù)中吟吝,詞和詞之間是有一定的距離的。

此前提到的詞向量在向量空間生成的時(shí)候要代表一定的含義就是颈娜,意思相似的詞剑逃,他們之間的距離應(yīng)該是相近的浙宜。(即生成的向量空間和真實(shí)的語(yǔ)言越相關(guān),那么計(jì)算機(jī)所生成的語(yǔ)言也會(huì)越相關(guān)蛹磺。or 兩個(gè)詞上下文相似粟瞬,則它們的語(yǔ)義也相似)

6.詞向量在神經(jīng)網(wǎng)絡(luò)模型中的應(yīng)用(2003)

鑒于N-gram等模型的不足,2003年萤捆,Bengio等人發(fā)表了一篇開(kāi)創(chuàng)性的文章:A neural probabilistic language model裙品。在這篇文章里,他們總結(jié)出了一套用神經(jīng)網(wǎng)絡(luò)建立統(tǒng)計(jì)語(yǔ)言模型的框架(Neural Network Language Model俗或,以下簡(jiǎn)稱NNLM)市怎,并首次提出了word embedding的概念(雖然沒(méi)有叫這個(gè)名字),從而奠定了包括word2vec在內(nèi)后續(xù)研究word representation learning的基礎(chǔ)辛慰。




7.Word2Vec:CBOW 含有一定層次的Softmax

Word2Vec實(shí)際上是兩種不同的方法:Continuous Bag of Words (CBOW)Skip-gram区匠。CBOW的目標(biāo)是根據(jù)上下文來(lái)預(yù)測(cè)當(dāng)前詞語(yǔ)的概率。Skip-gram剛好相反:根據(jù)當(dāng)前詞語(yǔ)來(lái)預(yù)測(cè)上下文的概率(如下圖所示)帅腌。這兩種方法都利用人工神經(jīng)網(wǎng)絡(luò)作為它們的分類算法驰弄。起初,每個(gè)單詞都是一個(gè)隨機(jī) N 維向量狞膘。經(jīng)過(guò)訓(xùn)練之后揩懒,該算法利用 CBOW 或者 Skip-gram 的方法獲得了每個(gè)單詞的最優(yōu)向量

7.1CBOW簡(jiǎn)介


預(yù)測(cè)的概率值越大越好挽封。

7.2為什么要用Hierarchical Softmax模型已球?

因?yàn)镃BOW最后OUTPUT得到的詞向量維度太高,此時(shí)利用Hierarchical Softmax模型作為CBOW的輸出層OUTPUT辅愿,來(lái)解決高緯度問(wèn)題并保證詞向量都完備沒(méi)有丟失智亮。它利用哈夫曼樹(shù)構(gòu)造多個(gè)二分類,讓詞向量達(dá)成了這種分層的思想点待。


取一個(gè)適當(dāng)大小的窗口當(dāng)做語(yǔ)境(上下文)阔蛉,輸入層讀入窗口內(nèi)的詞,將它們的向量(K維癞埠,初始隨機(jī))加和在一起状原,形成隱藏層K個(gè)節(jié)點(diǎn)。輸出層是一個(gè)巨大的二叉樹(shù)苗踪,葉節(jié)點(diǎn)代表語(yǔ)料里所有的詞(語(yǔ)料含有V個(gè)獨(dú)立的詞颠区,則二叉樹(shù)有|V|個(gè)葉節(jié)點(diǎn))。而這整顆二叉樹(shù)構(gòu)建的算法就是Huffman樹(shù)通铲。這樣毕莱,對(duì)于葉節(jié)點(diǎn)的每一個(gè)詞,就會(huì)有一個(gè)全局唯一的編碼,形如"010011"朋截,不妨記左子樹(shù)為1蛹稍,右子樹(shù)為0。接下來(lái)部服,隱層的每一個(gè)節(jié)點(diǎn)都會(huì)跟二叉樹(shù)的內(nèi)節(jié)點(diǎn)有連邊唆姐,于是 對(duì)于二叉樹(shù)的每一個(gè)內(nèi)節(jié)點(diǎn)都會(huì)有K條連邊,每條邊上也會(huì)有權(quán)值廓八。

7.3哈夫曼樹(shù)


構(gòu)造目的和帶權(quán)路徑最短:讓不同的節(jié)點(diǎn)能夠有優(yōu)先級(jí)厦酬,如高頻使用的單詞讓它們的帶權(quán)路徑長(zhǎng)度盡量小。

7.3.1哈夫曼樹(shù)的構(gòu)造以及哈夫曼編碼


權(quán)重小的節(jié)點(diǎn)置于左邊瘫想;哈夫曼編碼左為0,右為1昌讲,則D的哈夫曼編碼為0国夜,A的哈夫曼編碼為111。

Hierarchical Softmax 就是利用這種分層的思想短绸,將優(yōu)先級(jí)更高的向量放在前面车吹。

7.4CBOW模型

7.4.1Logistic回歸模型


其實(shí)Softmax就是一個(gè)多分類的邏輯回歸,由多個(gè)邏輯回歸組合在一起醋闭。

7.5CBOW原理

7.6CBOW參數(shù)含義約定

7.7CBOW求解實(shí)例


右為正例窄驹。左為負(fù)例。將剛才CBOW的θ數(shù)量級(jí)壓縮成log級(jí)別证逻,都?jí)嚎s到了非葉子節(jié)點(diǎn)上乐埠。形成了四條決策路徑,四個(gè)sigmoid囚企。

7.7CBOW求解目標(biāo)函數(shù)


根據(jù)上面的實(shí)例和約定好的參數(shù)含義丈咐,利用最大似然函數(shù)得到目標(biāo)函數(shù),這里用到log函數(shù)的公式對(duì)目標(biāo)函數(shù)進(jìn)行了展開(kāi)龙宏。目標(biāo)函數(shù)的目標(biāo)讓其中的概率p值越大越好棵逊。

7.8CBOW梯度上升求解最優(yōu)參數(shù)

既然要讓目標(biāo)函數(shù)得到最大值(極值),那么就是一個(gè)梯度上升的問(wèn)題银酗。

對(duì)函數(shù)進(jìn)行求導(dǎo)辆影,那么導(dǎo)數(shù)點(diǎn)為極值點(diǎn)。η為學(xué)習(xí)率黍特, x_w為投影層向量

似然函數(shù)是由很多的θ參數(shù)決定的蛙讥,那么似然函數(shù)對(duì)它求偏導(dǎo)即可解決θ的更新問(wèn)題。



x_w參數(shù)對(duì)于目標(biāo)函數(shù)也有一定影響衅澈,那么也可以對(duì)x_w投影層詞向量進(jìn)行更新键菱,同理,似然函數(shù)對(duì)齊求偏導(dǎo)。



Google出品的word2vec经备,它認(rèn)為每個(gè)詞向量v(w)都與和向量X_w是相關(guān)的拭抬,那么直接將X_w的更新量整個(gè)應(yīng)用到每個(gè)單詞的詞向量上去。好處是所有的詞向量更新會(huì)有整體的趨勢(shì)侵蒙,分配的空間是類似的造虎,保證屬于上下文的邏輯。

即沿著最大最好的優(yōu)化目標(biāo)纷闺,提出梯度上升的解決方案算凿,用這種方案不斷的優(yōu)化更新θ和X_w,最終得到每個(gè)詞的詞向量v(w)犁功。

7.8總結(jié)

對(duì)于語(yǔ)料庫(kù)中的某個(gè)詞w_t氓轰,對(duì)應(yīng)著二叉樹(shù)的某個(gè)葉子節(jié)點(diǎn),因此它必然有一個(gè)二進(jìn)制編碼浸卦,如"010011"署鸡。在訓(xùn)練階段,當(dāng)給定上下文限嫌,要預(yù)測(cè)后 面的詞w_t的時(shí)候靴庆,我們就從二叉樹(shù)的根節(jié)點(diǎn)開(kāi)始遍歷,這里的目標(biāo)就是預(yù)測(cè)這個(gè)詞的二進(jìn)制編號(hào)的每一位怒医。

即對(duì)于給定的上下文炉抒,我們的目標(biāo)是使得預(yù)測(cè)詞的二 進(jìn)制編碼概率最大。形象地說(shuō)稚叹,我們希望在根節(jié)點(diǎn)焰薄,詞向量和與根節(jié)點(diǎn)相連經(jīng)過(guò) logistic 計(jì)算得到 bit=1 的概率盡量接近 0,在第二層扒袖,希望其 bit=1 的概率盡量接近1蛤奥,這么一直下去,我們把一路上計(jì)算得到的概率相乘僚稿,即得到目標(biāo)詞w_t在當(dāng)前網(wǎng)絡(luò)下的概率P(w_t)凡桥,那么對(duì)于當(dāng)前這個(gè) sample的殘差就是1-P(w_t),于是就可以使用梯度下降法訓(xùn)練這個(gè)網(wǎng)絡(luò)得到所有的參數(shù)值了蚀同。顯而易見(jiàn)缅刽,按照目標(biāo)詞的二進(jìn)制編碼計(jì)算到最后的概率 值就是歸一化的。

Hierarchical Softmax用Huffman編碼構(gòu)造二叉樹(shù)蠢络,其實(shí)借助了分類問(wèn)題中衰猛,使用一連串二分類近似多分類的思想。例如我們是把所有的詞都作為輸出刹孔,那么“桔 子”啡省、“汽車”都是混在一起。給定w_t的上下文,先讓模型判斷w_t是不是名詞卦睹,再判斷是不是食物名畦戒,再判斷是不是水果,再判斷是不是“桔子”结序。

但是在訓(xùn)練過(guò)程中障斋,模型會(huì)賦予這些抽象的中間結(jié)點(diǎn)一個(gè)合適的向量,這個(gè)向量代表了它對(duì)應(yīng)的所有子結(jié)點(diǎn)徐鹤。因?yàn)檎嬲膯卧~公用了這些抽象結(jié)點(diǎn)的向量垃环,所 以Hierarchical Softmax方法和原始問(wèn)題并不是等價(jià)的,但是這種近似并不會(huì)顯著帶來(lái)性能上的損失同時(shí)又使得模型的求解規(guī)模顯著上升返敬。

沒(méi)有使用這種二叉樹(shù)遂庄,而是直接從隱層直接計(jì)算每一個(gè)輸出的概率——即傳統(tǒng)的Softmax,就需要對(duì)|V|中的每一 個(gè)詞都算一遍劲赠,這個(gè)過(guò)程時(shí)間復(fù)雜 度是O(|V|)的涧团。而使用了二叉樹(shù)(如Word2vec中的Huffman樹(shù)),其時(shí)間復(fù)雜度就降到了O(log2(|V|))经磅,速度大大地加快了。

現(xiàn)在這些詞向量已經(jīng)捕捉到上下文的信息钮追。我們可以利用基本代數(shù)公式來(lái)發(fā)現(xiàn)單詞之間的關(guān)系(比如预厌,“國(guó)王”-“男人”+“女人”=“王后”)。這些詞向量可 以代替詞袋用來(lái)預(yù)測(cè)未知數(shù)據(jù)的情感狀況元媚。該模型的優(yōu)點(diǎn)在于不僅考慮了語(yǔ)境信息還壓縮了數(shù)據(jù)規(guī)模(通常情況下轧叽,詞匯量規(guī)模大約在300個(gè)單詞左右而不是之前 模型的100000個(gè)單詞)。因?yàn)樯窠?jīng)網(wǎng)絡(luò)可以替我們提取出這些特征的信息刊棕,所以我們僅需要做很少的手動(dòng)工作炭晒。但是由于文本的長(zhǎng)度各異,我們可能需要利用 所有詞向量的平均值作為分類算法的輸入值甥角,從而對(duì)整個(gè)文本文檔進(jìn)行分類處理网严。

然而,即使上述模型對(duì)詞向量進(jìn)行平均處理嗤无,我們?nèi)匀缓雎粤藛卧~之間的排列順序?qū)η楦蟹治龅挠绊懻鹗<瓷鲜龅膚ord2vec只是基于詞的維度進(jìn)行"語(yǔ)義分析"的,而并不具有上下文的"語(yǔ)義分析"能力当犯。

同時(shí)垢村,Word2Vec是對(duì)于每個(gè)local context window單獨(dú)訓(xùn)練,沒(méi)有利用包含全局共現(xiàn)矩陣global co-currence中的統(tǒng)計(jì)信息嚎卫;它對(duì)多義詞無(wú)法很好的表示和處理嘉栓,因?yàn)槭褂昧宋ㄒ坏脑~向量。

8.用負(fù)采樣模型Negative Sampling來(lái)分類,進(jìn)而訓(xùn)練word2vec的網(wǎng)絡(luò)模型

利用Hierarchical Softmax 分層來(lái)訓(xùn)練Word2Vec中的參數(shù)侵佃,······可能有些啰嗦和計(jì)算量過(guò)大麻昼,現(xiàn)在用另一種方法。

比如有一個(gè)句子 我今天想打___.

給定上下文的語(yǔ)境下去預(yù)測(cè)詞趣钱,給定正樣本是 球涌献, 負(fù)樣本是除球之外的詞,比如 人首有、動(dòng)物燕垃、氣球等等。



假設(shè)output映射出了10w個(gè)詞向量井联,規(guī)定一個(gè)詞向量為正樣本卜壕,那么負(fù)樣本就會(huì)有很多,那么我們?cè)撊绾芜x擇恰當(dāng)?shù)呢?fù)樣本烙常?




得到似然目標(biāo)函數(shù)轴捎。

利用似然函數(shù)對(duì)θ和X_w參數(shù)進(jìn)行求偏導(dǎo).



最終得到了優(yōu)化好的v(w),此時(shí)就是我們想要的詞向量。

9.Skip-gram和CBOW使用場(chǎng)景

根據(jù)樣本量的大小蚕脏,如果數(shù)據(jù)量大的話使用Skip-gram侦副,反之使用CBOW。


10.工具


Python 使用gensim即可驼鞭。

11.實(shí)戰(zhàn):word2vec工具訓(xùn)練中文模型

Python的話可用jieba完成分詞秦驯,生成分詞文件wiki.zh.text.seg,然后接著用word2vec工具訓(xùn)練挣棕。

https://www.zybuluo.com/hanxiaoyang/note/472184

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末译隘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洛心,更是在濱河造成了極大的恐慌固耘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件词身,死亡現(xiàn)場(chǎng)離奇詭異厅目,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)法严,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門璧瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渐夸,你說(shuō)我怎么就攤上這事嗤锉。” “怎么了墓塌?”我有些...
    開(kāi)封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵瘟忱,是天一觀的道長(zhǎng)奥额。 經(jīng)常有香客問(wèn)我,道長(zhǎng)访诱,這世上最難降的妖魔是什么垫挨? 我笑而不...
    開(kāi)封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮触菜,結(jié)果婚禮上九榔,老公的妹妹穿的比我還像新娘。我一直安慰自己涡相,他們只是感情好哲泊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著催蝗,像睡著了一般切威。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丙号,一...
    開(kāi)封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天先朦,我揣著相機(jī)與錄音,去河邊找鬼犬缨。 笑死喳魏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怀薛。 我是一名探鬼主播刺彩,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乾戏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起三热,我...
    開(kāi)封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鼓择,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后就漾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呐能,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年抑堡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摆出。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡首妖,死狀恐怖偎漫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情有缆,我是刑警寧澤象踊,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布温亲,位于F島的核電站,受9級(jí)特大地震影響杯矩,放射性物質(zhì)發(fā)生泄漏栈虚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一史隆、第九天 我趴在偏房一處隱蔽的房頂上張望魂务。 院中可真熱鬧,春花似錦泌射、人聲如沸粘姜。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)相艇。三九已至,卻和暖如春纯陨,著一層夾襖步出監(jiān)牢的瞬間坛芽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工翼抠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咙轩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓阴颖,卻偏偏與公主長(zhǎng)得像活喊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子量愧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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