CS224N學(xué)習(xí)筆記(二)—— Word2Vec

一野瘦、如何表示一個(gè)詞語(yǔ)的意思

在計(jì)算機(jī)中如何表示一個(gè)詞的意思

過(guò)去幾個(gè)世紀(jì)里一直用的是分類詞典停巷。計(jì)算語(yǔ)言學(xué)中常見(jiàn)的方式是WordNet那樣的詞庫(kù)。比如NLTK中可以通過(guò)WordNet查詢熊貓的上位詞就可以得到“食肉動(dòng)物”“動(dòng)物”之類的上位詞。也可以查詢“good”的同義詞——“just”(品格好)射窒、“ripe”(熟了)。

panda的上位詞将塑,來(lái)自于NLTK中wordnet接口的演示
good的同義詞集
語(yǔ)義詞典存在的問(wèn)題
  • 這種discrete representation雖然是種語(yǔ)言學(xué)資源脉顿,但丟失了韻味。比如這些同義詞的意思實(shí)際上還是有微妙的差別:adept点寥、expert艾疟、good、practiced、proficient蔽莱、skillful

  • 會(huì)錯(cuò)過(guò)一些新詞弟疆,幾乎不可能做到及時(shí)更新: wicked, badass, nifty, crack, ace, wizard, genius, ninjia

  • 有一定的主觀傾向

  • 需要大量的人力物力

  • 很難用來(lái)計(jì)算兩個(gè)詞語(yǔ)的相似度

One-hot Representation

無(wú)論是規(guī)則學(xué)派,還是統(tǒng)計(jì)學(xué)派盗冷,絕大多數(shù)NLP學(xué)家都將詞語(yǔ)作為最小單位怠苔。事實(shí)上,詞語(yǔ)只是詞表長(zhǎng)度的one-hot向量仪糖,這是一種localist representation(大概是借用localist“局部”的意項(xiàng))柑司。

使用One-hot 表示,就會(huì)導(dǎo)致在不同的語(yǔ)料中锅劝,詞表大小不同攒驰。例如Google的1TB語(yǔ)料詞匯量是1300萬(wàn),做One-hot后的向量就太長(zhǎng)了故爵。

而且使用One-hot 表示會(huì)導(dǎo)致任意兩個(gè)詞之間都是孤立的玻粪,光從這兩個(gè)向量中看不出兩個(gè)詞是否有關(guān)系,比如king和queen诬垂。而one-hot向量是正交的奶段,無(wú)法通過(guò)任何運(yùn)算得到相似度。

One-hot后的兩個(gè)詞
Distributional similarity based representations

語(yǔ)言學(xué)家J. R. Firth提出剥纷,通過(guò)一個(gè)單詞的上下文可以得到它的意思痹籍。J. R. Firth甚至建議,如果你能把單詞放到正確的上下文中去晦鞋,才說(shuō)明你掌握了它的意義蹲缠。

使用共現(xiàn)矩陣(Co-occurrence matrix)使用上下文來(lái)表示單詞。

基于窗口的共現(xiàn)矩陣的一個(gè)簡(jiǎn)單例子:

  • 窗口長(zhǎng)度是1(一般是5-10)
  • 對(duì)稱(左右內(nèi)容無(wú)關(guān))

語(yǔ)料樣例

  • I like deep learning.
  • I like NLP.
  • I enjoy flying
共現(xiàn)矩陣

現(xiàn)在悠垛,我們可以用矩陣的行向量來(lái)計(jì)算word之間的相似度了线定。

然而, 這種定義方式得到的詞向量的維度等于詞典的大小确买。這意味著斤讥,我們需要大量的空間來(lái)存儲(chǔ)這些高維的詞向量。同時(shí)湾趾,伴隨著高維向量出現(xiàn)的數(shù)據(jù)稀疏性問(wèn)題芭商,也使得基于這些詞向量的機(jī)器學(xué)習(xí)模型的訓(xùn)練變得異常困難。

簡(jiǎn)單來(lái)說(shuō)搀缠,co-occurrence矩陣定義的詞向量在一定程度上緩解了one-hot向量相似度為0的問(wèn)題铛楣,但沒(méi)有解決數(shù)據(jù)稀疏性和維度災(zāi)難的問(wèn)題。

解決方案:

1艺普、SVD分解:低維詞向量的間接學(xué)習(xí)
既然基于co-occurrence矩陣得到的離散詞向量存在著高維和稀疏性的問(wèn)題簸州,一個(gè)自然而然的解決思路是對(duì)原始詞向量進(jìn)行降維鉴竭,從而得到一個(gè)稠密的連續(xù)詞向量。然而岸浑,高昂的計(jì)算復(fù)雜度(O(mn2))是SVD算法的性能瓶頸搏存。這對(duì)于現(xiàn)在動(dòng)輒上百萬(wàn)甚至上億數(shù)據(jù)量的語(yǔ)料庫(kù)而言,是一筆巨大的計(jì)算開(kāi)銷矢洲。更不用說(shuō)每一個(gè)新詞的加入都需要在一個(gè)新的矩陣上重新運(yùn)行一遍SVD分解祭埂。此外,后面我們會(huì)看到兵钮,SVD算法和其他Deep Learning模型本質(zhì)上是屬于兩類不同的學(xué)習(xí)算法。

2舌界、word2vec:低維詞向量的直接學(xué)習(xí)
word2vec模型背后的基本思想是對(duì)出現(xiàn)在上下文環(huán)境里的詞進(jìn)行預(yù)測(cè)掘譬。對(duì)于每一條輸入文本,我們選取一個(gè)上下文窗口和一個(gè)中心詞呻拌,并基于這個(gè)中心詞去預(yù)測(cè)窗口里其他詞出現(xiàn)的概率葱轩。因此,word2vec模型可以方便地從新增語(yǔ)料中學(xué)習(xí)到新增詞的向量表達(dá)藐握,是一種高效的在線學(xué)習(xí)算法(online learning)靴拱。

二、word2vec

word2vec的主要思路:通過(guò)單詞和上下文彼此預(yù)測(cè)

兩個(gè)算法:

  • Skip-grams (SG):預(yù)測(cè)上下文
  • Continuous Bag of Words (CBOW):預(yù)測(cè)目標(biāo)單詞

兩種稍微高效一些的訓(xùn)練方法:

  • Hierarchical softmax
  • Negative sampling

1. Skip-grams原理和網(wǎng)絡(luò)結(jié)構(gòu)

Word2Vec模型中猾普,主要有Skip-Gram和CBOW兩種模型袜炕,從直觀上理解,Skip-Gram是給定input word來(lái)預(yù)測(cè)上下文初家。而CBOW是給定上下文偎窘,來(lái)預(yù)測(cè)input word。

Word2Vec模型實(shí)際上分為了兩個(gè)部分溜在,第一部分為建立模型陌知,第二部分是通過(guò)模型獲取嵌入詞向量。

Word2Vec的整個(gè)建模過(guò)程實(shí)際上與自編碼器(auto-encoder)的思想很相似掖肋,即先基于訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)仆葡,當(dāng)這個(gè)模型訓(xùn)練好以后,我們并不會(huì)用這個(gè)訓(xùn)練好的模型處理新的任務(wù)志笼,我們真正需要的是這個(gè)模型通過(guò)訓(xùn)練數(shù)據(jù)所學(xué)得的參數(shù)沿盅,例如隱層的權(quán)重矩陣——后面我們將會(huì)看到這些權(quán)重在Word2Vec中實(shí)際上就是我們?cè)噲D去學(xué)習(xí)的“word vectors”。

Skip-grams過(guò)程

假如我們有一個(gè)句子“The dog barked at the mailman”纫溃。

  1. 首先我們選句子中間的一個(gè)詞作為我們的輸入詞嗡呼,例如我們選取“dog”作為input word;

  2. 有了input word以后皇耗,我們?cè)俣x一個(gè)叫做skip_window的參數(shù)南窗,它代表著我們從當(dāng)前input word的一側(cè)(左邊或右邊)選取詞的數(shù)量。如果我們?cè)O(shè)置skip_window=2,那么我們最終獲得窗口中的詞(包括input word在內(nèi))就是['The', 'dog'万伤,'barked', 'at']窒悔。skip_window=2代表著選取左input word左側(cè)2個(gè)詞和右側(cè)2個(gè)詞進(jìn)入我們的窗口,所以整個(gè)窗口大小span=2x2=4敌买。另一個(gè)參數(shù)叫num_skips简珠,它代表著我們從整個(gè)窗口中選取多少個(gè)不同的詞作為我們的output word,當(dāng)skip_window=2虹钮,num_skips=2時(shí)聋庵,我們將會(huì)得到兩組 (input word, output word) 形式的訓(xùn)練數(shù)據(jù),即 ('dog', 'barked')芙粱,('dog', 'the')祭玉。

  3. 神經(jīng)網(wǎng)絡(luò)基于這些訓(xùn)練數(shù)據(jù)將會(huì)輸出一個(gè)概率分布,這個(gè)概率代表著我們的詞典中的每個(gè)詞作為input word的output word的可能性春畔。這句話有點(diǎn)繞脱货,我們來(lái)看個(gè)例子。第二步中我們?cè)谠O(shè)置skip_window和num_skips=2的情況下獲得了兩組訓(xùn)練數(shù)據(jù)律姨。假如我們先拿一組數(shù)據(jù) ('dog', 'barked') 來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)振峻,那么模型通過(guò)學(xué)習(xí)這個(gè)訓(xùn)練樣本,會(huì)告訴我們?cè)~匯表中每個(gè)單詞當(dāng)'dog'作為input word時(shí)择份,其作為output word的可能性扣孟。

也就是說(shuō)模型的輸出概率代表著到我們?cè)~典中每個(gè)詞有多大可能性跟input word同時(shí)出現(xiàn)。例如:如果我們向神經(jīng)網(wǎng)絡(luò)模型中輸入一個(gè)單詞“Soviet“荣赶,那么最終模型的輸出概率中哈打,像“Union”, ”Russia“這種相關(guān)詞的概率將遠(yuǎn)高于像”watermelon“讯壶,”kangaroo“非相關(guān)詞的概率料仗。因?yàn)椤盪nion“,”Russia“在文本中更大可能在”Soviet“的窗口中出現(xiàn)伏蚊。

我們將通過(guò)給神經(jīng)網(wǎng)絡(luò)輸入文本中成對(duì)的單詞來(lái)訓(xùn)練它完成上面所說(shuō)的概率計(jì)算立轧。下面的圖中給出了一些我們訓(xùn)練樣本的例子。我們選定句子“The quick brown fox jumps over lazy dog”躏吊,設(shè)定我們的窗口大小為2(window_size=2)氛改,也就是說(shuō)我們僅選輸入詞前后各兩個(gè)詞和輸入詞進(jìn)行組合。下圖中比伏,藍(lán)色代表input word胜卤,方框內(nèi)代表位于窗口內(nèi)的單詞。

網(wǎng)絡(luò)結(jié)構(gòu)

我們的模型將會(huì)從每對(duì)單詞出現(xiàn)的次數(shù)中習(xí)得統(tǒng)計(jì)結(jié)果赁项。例如葛躏,我們的神經(jīng)網(wǎng)絡(luò)可能會(huì)得到更多類似(“Soviet“澈段,”Union“)這樣的訓(xùn)練樣本對(duì),而對(duì)于(”Soviet“舰攒,”Sasquatch“)這樣的組合卻看到的很少败富。因此,當(dāng)我們的模型完成訓(xùn)練后摩窃,給定一個(gè)單詞”Soviet“作為輸入兽叮,輸出的結(jié)果中”Union“或者”Russia“要比”Sasquatch“被賦予更高的概率。

PS:input word和output word都會(huì)被我們進(jìn)行one-hot編碼猾愿。仔細(xì)想一下鹦聪,我們的輸入被one-hot編碼以后大多數(shù)維度上都是0(實(shí)際上僅有一個(gè)位置為1),所以這個(gè)向量相當(dāng)稀疏蒂秘,那么會(huì)造成什么結(jié)果呢泽本。如果我們將一個(gè)1 x 10000的向量和10000 x 300的矩陣相乘,它會(huì)消耗相當(dāng)大的計(jì)算資源材彪,為了高效計(jì)算,它僅僅會(huì)選擇矩陣中對(duì)應(yīng)的向量中維度值為1的索引行:


2. Skip-grams訓(xùn)練和negative sampling

由上部分可知琴儿,Word2Vec模型是一個(gè)超級(jí)大的神經(jīng)網(wǎng)絡(luò)(權(quán)重矩陣規(guī)模非常大)段化。例如:我們擁有10000個(gè)單詞的詞匯表,我們?nèi)绻肭度?00維的詞向量造成,那么我們的輸入-隱層權(quán)重矩陣和隱層-輸出層的權(quán)重矩陣都會(huì)有 10000 x 300 = 300萬(wàn)個(gè)權(quán)重显熏,在如此龐大的神經(jīng)網(wǎng)絡(luò)中進(jìn)行梯度下降是相當(dāng)慢的。更糟糕的是晒屎,你需要大量的訓(xùn)練數(shù)據(jù)來(lái)調(diào)整這些權(quán)重并且避免過(guò)擬合喘蟆。百萬(wàn)數(shù)量級(jí)的權(quán)重矩陣和億萬(wàn)數(shù)量級(jí)的訓(xùn)練樣本意味著訓(xùn)練這個(gè)模型將會(huì)是個(gè)災(zāi)難

解決方案:
  • 將常見(jiàn)的單詞組合(word pairs)或者詞組作為單個(gè)“words”來(lái)處理
  • 對(duì)高頻次單詞進(jìn)行抽樣來(lái)減少訓(xùn)練樣本的個(gè)數(shù)
  • 對(duì)優(yōu)化目標(biāo)采用“negative sampling”方法,這樣每個(gè)訓(xùn)練樣本的訓(xùn)練只會(huì)更新一小部分的模型權(quán)重鼓鲁,從而降低計(jì)算負(fù)擔(dān)
Word pairs and "phases"

一些單詞組合(或者詞組)的含義和拆開(kāi)以后具有完全不同的意義蕴轨。比如“Boston Globe”是一種報(bào)刊的名字,而單獨(dú)的“Boston”和“Globe”這樣單個(gè)的單詞卻表達(dá)不出這樣的含義骇吭。因此橙弱,在文章中只要出現(xiàn)“Boston Globe”,我們就應(yīng)該把它作為一個(gè)單獨(dú)的詞來(lái)生成其詞向量燥狰,而不是將其拆開(kāi)棘脐。同樣的例子還有“New York”,“United Stated”等龙致。

在Google發(fā)布的模型中蛀缝,它本身的訓(xùn)練樣本中有來(lái)自Google News數(shù)據(jù)集中的1000億的單詞,但是除了單個(gè)單詞以外目代,單詞組合(或詞組)又有3百萬(wàn)之多屈梁。

對(duì)高頻詞抽樣

在上一部分中嗤练,對(duì)于原始文本為“The quick brown fox jumps over the laze dog”,如果使用大小為2的窗口俘闯,那么我們可以得到圖中展示的那些訓(xùn)練樣本潭苞。


但是對(duì)于“the”這種常用高頻單詞,這樣的處理方式會(huì)存在下面兩個(gè)問(wèn)題:

  1. 當(dāng)我們得到成對(duì)的單詞訓(xùn)練樣本時(shí)真朗,("fox", "the") 這樣的訓(xùn)練樣本并不會(huì)給我們提供關(guān)于“fox”更多的語(yǔ)義信息此疹,因?yàn)椤皌he”在每個(gè)單詞的上下文中幾乎都會(huì)出現(xiàn)

  2. 由于在文本中“the”這樣的常用詞出現(xiàn)概率很大,因此我們將會(huì)有大量的(”the“遮婶,...)這樣的訓(xùn)練樣本蝗碎,而這些樣本數(shù)量遠(yuǎn)遠(yuǎn)超過(guò)了我們學(xué)習(xí)“the”這個(gè)詞向量所需的訓(xùn)練樣本數(shù)

Word2Vec通過(guò)“抽樣”模式來(lái)解決這種高頻詞問(wèn)題。它的基本思想如下:對(duì)于我們?cè)谟?xùn)練原始文本中遇到的每一個(gè)單詞旗扑,它們都有一定概率被我們從文本中刪掉蹦骑,而這個(gè)被刪除的概率與單詞的頻率有關(guān)。

ωi 是一個(gè)單詞臀防,Z(ωi) 是 ωi 這個(gè)單詞在所有語(yǔ)料中出現(xiàn)的頻次眠菇,例如:如果單詞“peanut”在10億規(guī)模大小的語(yǔ)料中出現(xiàn)了1000次,那么 Z(peanut) = 1000/1000000000 = 1e - 6袱衷。

P(ωi) 代表著保留某個(gè)單詞的概率:

negative sampling

訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)意味著要輸入訓(xùn)練樣本并且不斷調(diào)整神經(jīng)元的權(quán)重捎废,從而不斷提高對(duì)目標(biāo)的準(zhǔn)確預(yù)測(cè)。每當(dāng)神經(jīng)網(wǎng)絡(luò)經(jīng)過(guò)一個(gè)訓(xùn)練樣本的訓(xùn)練致燥,它的權(quán)重就會(huì)進(jìn)行一次調(diào)整登疗。

所以,詞典的大小決定了我們的Skip-Gram神經(jīng)網(wǎng)絡(luò)將會(huì)擁有大規(guī)模的權(quán)重矩陣嫌蚤,所有的這些權(quán)重需要通過(guò)數(shù)以億計(jì)的訓(xùn)練樣本來(lái)進(jìn)行調(diào)整辐益,這是非常消耗計(jì)算資源的,并且實(shí)際中訓(xùn)練起來(lái)會(huì)非常慢脱吱。

負(fù)采樣(negative sampling)解決了這個(gè)問(wèn)題智政,它是用來(lái)提高訓(xùn)練速度并且改善所得到詞向量的質(zhì)量的一種方法。不同于原本每個(gè)訓(xùn)練樣本更新所有的權(quán)重箱蝠,負(fù)采樣每次讓一個(gè)訓(xùn)練樣本僅僅更新一小部分的權(quán)重女仰,這樣就會(huì)降低梯度下降過(guò)程中的計(jì)算量。

當(dāng)我們用訓(xùn)練樣本 ( input word: "fox"抡锈,output word: "quick") 來(lái)訓(xùn)練我們的神經(jīng)網(wǎng)絡(luò)時(shí)疾忍,“ fox”和“quick”都是經(jīng)過(guò)one-hot編碼的。如果我們的詞典大小為10000時(shí)床三,在輸出層一罩,我們期望對(duì)應(yīng)“quick”單詞的那個(gè)神經(jīng)元結(jié)點(diǎn)輸出1,其余9999個(gè)都應(yīng)該輸出0撇簿。在這里聂渊,這9999個(gè)我們期望輸出為0的神經(jīng)元結(jié)點(diǎn)所對(duì)應(yīng)的單詞我們稱為“negative” word差购。

當(dāng)使用負(fù)采樣時(shí),我們將隨機(jī)選擇一小部分的negative words(比如選5個(gè)negative words)來(lái)更新對(duì)應(yīng)的權(quán)重汉嗽。我們也會(huì)對(duì)我們的“positive” word進(jìn)行權(quán)重更新(在我們上面的例子中欲逃,這個(gè)單詞指的是”quick“)。

PS: 在論文中饼暑,作者指出指出對(duì)于小規(guī)模數(shù)據(jù)集稳析,選擇5-20個(gè)negative words會(huì)比較好,對(duì)于大規(guī)模數(shù)據(jù)集可以僅選擇2-5個(gè)negative words弓叛。

我們使用“一元模型分布(unigram distribution)”來(lái)選擇“negative words”彰居。個(gè)單詞被選作negative sample的概率跟它出現(xiàn)的頻次有關(guān),出現(xiàn)頻次越高的單詞越容易被選作negative words撰筷。

每個(gè)單詞被選為“negative words”的概率計(jì)算公式:

其中 f(ωi)代表著單詞出現(xiàn)的頻次陈惰,而公式中開(kāi)3/4的根號(hào)完全是基于經(jīng)驗(yàn)的。

在代碼負(fù)采樣的代碼實(shí)現(xiàn)中毕籽,unigram table有一個(gè)包含了一億個(gè)元素的數(shù)組抬闯,這個(gè)數(shù)組是由詞匯表中每個(gè)單詞的索引號(hào)填充的,并且這個(gè)數(shù)組中有重復(fù)关筒,也就是說(shuō)有些單詞會(huì)出現(xiàn)多次溶握。那么每個(gè)單詞的索引在這個(gè)數(shù)組中出現(xiàn)的次數(shù)該如何決定呢,有公式平委,也就是說(shuō)計(jì)算出的負(fù)采樣概率*1億=單詞在表中出現(xiàn)的次數(shù)奈虾。

有了這張表以后夺谁,每次去我們進(jìn)行負(fù)采樣時(shí)廉赔,只需要在0-1億范圍內(nèi)生成一個(gè)隨機(jī)數(shù),然后選擇表中索引號(hào)為這個(gè)隨機(jī)數(shù)的那個(gè)單詞作為我們的negative word即可匾鸥。一個(gè)單詞的負(fù)采樣概率越大蜡塌,那么它在這個(gè)表中出現(xiàn)的次數(shù)就越多,它被選中的概率就越大勿负。


3. Hierarchical Softmax

霍夫曼樹(shù)

輸入:權(quán)值為(w1,w2,...wn)的n個(gè)節(jié)點(diǎn)

輸出:對(duì)應(yīng)的霍夫曼樹(shù)

  1. 將(w1,w2,...wn)看做是有n棵樹(shù)的森林馏艾,每個(gè)樹(shù)僅有一個(gè)節(jié)點(diǎn)

  2. 在森林中選擇根節(jié)點(diǎn)權(quán)值最小的兩棵樹(shù)進(jìn)行合并,得到一個(gè)新的樹(shù)奴愉,這兩顆樹(shù)分布作為新樹(shù)的左右子樹(shù)琅摩。新樹(shù)的根節(jié)點(diǎn)權(quán)重為左右子樹(shù)的根節(jié)點(diǎn)權(quán)重之和

  3. 將之前的根節(jié)點(diǎn)權(quán)值最小的兩棵樹(shù)從森林刪除,并把新樹(shù)加入森林

  4. 重復(fù)步驟 2 和 3 直到森林里只有一棵樹(shù)為止

下面我們用一個(gè)具體的例子來(lái)說(shuō)明霍夫曼樹(shù)建立的過(guò)程锭硼,我們有(a房资,b,c檀头,d轰异,e岖沛,f)共6個(gè)節(jié)點(diǎn),節(jié)點(diǎn)的權(quán)值分布是(16搭独,4婴削,8,6牙肝,20唉俗,3)。
首先是最小的b和f合并惊奇,得到的新樹(shù)根節(jié)點(diǎn)權(quán)重是7.此時(shí)森林里5棵樹(shù)互躬,根節(jié)點(diǎn)權(quán)重分別是16,8颂郎,6吼渡,20,7乓序。此時(shí)根節(jié)點(diǎn)權(quán)重最小的6寺酪,7合并,得到新子樹(shù)替劈,依次類推寄雀,最終得到下面的霍夫曼樹(shù)。

霍夫曼樹(shù)

那么霍夫曼樹(shù)有什么好處呢陨献?一般得到霍夫曼樹(shù)后我們會(huì)對(duì)葉子節(jié)點(diǎn)進(jìn)行霍夫曼編碼盒犹,由于權(quán)重高的葉子節(jié)點(diǎn)越靠近根節(jié)點(diǎn),而權(quán)重低的葉子節(jié)點(diǎn)會(huì)遠(yuǎn)離根節(jié)點(diǎn)眨业,這樣我們的高權(quán)重節(jié)點(diǎn)編碼值較短急膀,而低權(quán)重值編碼值較長(zhǎng)。這保證的樹(shù)的帶權(quán)路徑最短龄捡,也符合我們的信息論卓嫂,即我們希望越常用的詞擁有更短的編碼。如何編碼呢聘殖?一般對(duì)于一個(gè)霍夫曼樹(shù)的節(jié)點(diǎn)(根節(jié)點(diǎn)除外)晨雳,可以約定左子樹(shù)編碼為0,右子樹(shù)編碼為1奸腺。如上圖餐禁,則可以得到c的編碼是00。

在word2vec中突照,約定編碼方式和上面的例子相反帮非,即約定左子樹(shù)編碼為1,右子樹(shù)編碼為0绷旗,同時(shí)約定左子樹(shù)的權(quán)重不小于右子樹(shù)的權(quán)重喜鼓。

更多原理可參考:霍夫曼樹(shù)原理

Hierarchical Softmax過(guò)程

為了避免要計(jì)算所有詞的softmax概率副砍,word2vec采樣了霍夫曼樹(shù)來(lái)代替從隱藏層到輸出softmax層的映射。

霍夫曼樹(shù)的建立:

  • 根據(jù)標(biāo)簽(label)和頻率建立霍夫曼樹(shù)(label出現(xiàn)的頻率越高庄岖,Huffman樹(shù)的路徑越短)
  • Huffman樹(shù)中每一葉子結(jié)點(diǎn)代表一個(gè)label
霍夫曼樹(shù)

如上圖所示:

注意:此時(shí)的theta是一個(gè)待定系數(shù)豁翎,它是由推導(dǎo)最大似然之后求解得到迭代式子。


三隅忿、word2vec數(shù)學(xué)推導(dǎo)

word2vec的主要思路:

  • 預(yù)測(cè)一個(gè)窗口長(zhǎng)度為c的窗口內(nèi)每個(gè)單詞的周邊單詞概率
  • 目標(biāo)函數(shù):對(duì)于一個(gè)中心詞心剥,最大化周邊任意單詞的log概率

一個(gè)詞出現(xiàn)在另一個(gè)詞的上下文語(yǔ)境里的條件概率可以表示為:

其中:v_wOv_wI 是分別是 wOwI 的詞向量表示

這兩個(gè)矩陣都含有V個(gè)詞向量,也就是說(shuō)同一個(gè)詞有兩個(gè)詞向量背桐,哪個(gè)作為最終的优烧、提供給其他應(yīng)用使用的embeddings呢?有兩種策略链峭,要么加起來(lái)畦娄,要么拼接起來(lái)。W中的向量叫input vector弊仪,W'中的向量叫output vector熙卡。

接下去就是推導(dǎo)梯度下降的過(guò)程:

使用Hierarchical SoftmaxNegative Sampling的推導(dǎo)參考

參考

  1. CS224n筆記2 詞的向量表示:word2vec
  2. 斯坦福大學(xué)深度學(xué)習(xí)與自然語(yǔ)言處理第二講:詞向量
  3. (Stanford CS224d) Deep Learning and NLP課程筆記(三):GloVe與模型的評(píng)估
  4. http://www.cnblogs.com/pinard/p/7249903.html
  5. https://blog.csdn.net/yinkun6514/article/details/79218736
  6. https://www.leiphone.com/news/201706/PamWKpfRFEI42McI.html
  7. cs224n
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市励饵,隨后出現(xiàn)的幾起案子驳癌,更是在濱河造成了極大的恐慌,老刑警劉巖役听,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颓鲜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡典予,警方通過(guò)查閱死者的電腦和手機(jī)甜滨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)熙参,“玉大人艳吠,你說(shuō)我怎么就攤上這事麦备∧跻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵凛篙,是天一觀的道長(zhǎng)黍匾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)呛梆,這世上最難降的妖魔是什么锐涯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮填物,結(jié)果婚禮上纹腌,老公的妹妹穿的比我還像新娘霎终。我一直安慰自己,他們只是感情好升薯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布莱褒。 她就那樣靜靜地躺著,像睡著了一般涎劈。 火紅的嫁衣襯著肌膚如雪广凸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天蛛枚,我揣著相機(jī)與錄音谅海,去河邊找鬼。 笑死蹦浦,一個(gè)胖子當(dāng)著我的面吹牛扭吁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盲镶,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼智末,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了徒河?” 一聲冷哼從身側(cè)響起系馆,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顽照,沒(méi)想到半個(gè)月后由蘑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡代兵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年尼酿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片植影。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裳擎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出思币,到底是詐尸還是另有隱情鹿响,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布谷饿,位于F島的核電站惶我,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏博投。R本人自食惡果不足惜绸贡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狰右。 院中可真熱鬧孕豹,春花似錦、人聲如沸防泵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筷厘,卻和暖如春鸣峭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酥艳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工摊溶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人充石。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓莫换,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親骤铃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拉岁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359