Word2Vec模型中纽谒,主要有Skip-Gram和CBOW兩種模型做院,從直觀上理解沉填,Skip-Gram是給定input word來預(yù)測上下文市框。而CBOW是給定上下文霞扬,來預(yù)測input word。
Skip-Gram的實(shí)現(xiàn)邏輯類似于自編碼器,模型的輸出不是最終結(jié)果喻圃,隱層構(gòu)成的向量才是所要的vector萤彩。
以句子The quick brown fox jumps over the lazy dog為例,實(shí)現(xiàn)過程為
1 選定詞語fox作為input-word
2 定義skip-window作為input-word的上下文范圍级及,如skip-window=2乒疏,fox的上下文為quick,brown, jumps, over饮焦,組成的樣本對(duì)(fox,quick),(fox,brown), (fox,jumps), (fox,over)怕吴。定義窗口中選取的樣本對(duì)個(gè)數(shù)num-skips,如果num-skips=2县踢,skip-window=2转绷,則從四組樣本中隨機(jī)選取兩組作為樣本。
3 對(duì)樣本word進(jìn)行編碼硼啤,如one-hot編碼议经。
4 定義網(wǎng)絡(luò)。假設(shè)總詞匯量是5000谴返,則輸入維度設(shè)為5000維煞肾,輸出維度同樣是5000維,表示每一個(gè)單詞的概率嗓袱。隱層可以設(shè)置為100(在Python的gensim包中封裝的Word2Vec接口默認(rèn)的詞向量大小為100籍救, window_size為5)。
6 訓(xùn)練得到網(wǎng)絡(luò)參數(shù)渠抹,把輸出層去掉蝙昙,隱層作為輸出層,輸入單詞梧却,即可得到對(duì)應(yīng)向量奇颠。?
直觀上理解,如果兩個(gè)不同的單詞有著非常相似的“上下文”(也就是窗口單詞很相似放航,比如“Kitty climbed the tree”和“Cat climbed the tree”)烈拒,那么通過我們的模型訓(xùn)練,這兩個(gè)單詞的嵌入向量將非常相似广鳍。