免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Word2Vec在Tensorflow上的版本以及與Gensim之間的運(yùn)行對(duì)比

接昨天的博客,這篇隨筆將會(huì)對(duì)本人運(yùn)行Word2Vec算法時(shí)在Gensim以及Tensorflow的不同版本下的運(yùn)行結(jié)果對(duì)比。在運(yùn)行中,參數(shù)的調(diào)節(jié)以及迭代的決定本人并沒(méi)有很好的經(jīng)驗(yàn),所以希望在展出運(yùn)行的參數(shù)以及結(jié)果的同時(shí)大家可以批評(píng)指正,多謝大家的支持!

 

對(duì)比背景:

對(duì)比實(shí)驗(yàn)所運(yùn)用的corpus全部都是可免費(fèi)下載的text8.txt。下載點(diǎn)這里。在訓(xùn)練時(shí),word embedding的維度被調(diào)節(jié)為200,除了word2vec_basic.py版本的step size為600001外,其余均為15個(gè)epoches。 運(yùn)行結(jié)果除basic版本外其他的均運(yùn)用了Mikolov所公開(kāi)的questions-words.txt文件來(lái)計(jì)算其精確度。該精確度計(jì)算文件的格式為每行四個(gè)詞,在計(jì)算精度時(shí),系統(tǒng)選取前三個(gè)詞的向量,計(jì)算詞2-詞1+詞3所得的向量并通過(guò)cosine similarity的方式搜尋最接近的詞,并選取top N個(gè)(N為自定義量,一般要么1要么4)來(lái)查看questions-words里每行的第四個(gè)詞是否存在于這top N個(gè)詞之中。另外,在運(yùn)行結(jié)束后,我也根據(jù)Mikolov論文中的提示運(yùn)用了幾個(gè)常見(jiàn)的向量算數(shù)測(cè)試來(lái)測(cè)驗(yàn)各模型的準(zhǔn)確度。我所運(yùn)用的測(cè)試為:

  1. France, Paris, Beijing, China 或者 France, Paris, Rome, Greece

  2. man, king, woman, queen

  3. slow, slowly, quick, quickly

  等等......

 

對(duì)比結(jié)果:

TensorFlow框架:

1. Word2Vec_basic.py:

word2vec_baisc.py是Tensorflow官方版本的Sentence Embedding概念闡述的示例的代碼。該代碼用最簡(jiǎn)單的方式實(shí)現(xiàn)了Word2Vec中的部分主要功能,即Skip-Gram模型以及Negative Samping加速分類(lèi)算法。在設(shè)定word embedding維度為200以及num step為600001后,運(yùn)行結(jié)果如下:

由上圖可見(jiàn),詞向量是randomly init的,所以他認(rèn)為six跟conjuring或者analogies相近。另外,在剛init的時(shí)機(jī),loss數(shù)是302.11。在20萬(wàn)此迭代后,average loss為4.96。此時(shí)的nearest測(cè)試結(jié)果如下:

我們可見(jiàn)此時(shí),跟six相近的詞為seven, five, four和eight, 并且與has相似的有had, have等。這個(gè)結(jié)果已經(jīng)初步證明系統(tǒng)已經(jīng)學(xué)習(xí)到了一些特征,但是有的詞例如history,所對(duì)應(yīng)的詞是reginae,這個(gè)連含義都不清楚的詞和明顯跟history的意義不相關(guān)。所以可見(jiàn)系統(tǒng)并不完善,只是簡(jiǎn)單的詞兒比較容易先學(xué)到。另外,從20萬(wàn)個(gè)到第40萬(wàn)step,我們發(fā)現(xiàn)loss降低的并不明顯。在訓(xùn)練的最后,結(jié)果展示如下:

history跟culture的北美的環(huán)境里有些許相似的成分,所以可見(jiàn)系統(tǒng)窮時(shí)變得更加的好了。同時(shí),i本身作為羅馬數(shù)字的一面(即ii)和作為我的一面(即we)也被很好的展現(xiàn)了出來(lái)。這個(gè)結(jié)果是encouraging的,因?yàn)橄到y(tǒng)其實(shí)變得更好了。但是一直到60萬(wàn)step, loss還停留在4.52左右,于20萬(wàn)的4.96區(qū)別不大,由此可見(jiàn)學(xué)習(xí)進(jìn)入smoothing區(qū)域。

但系統(tǒng)到底在詞義以及詞性上的結(jié)果到底如何呢?我們通過(guò)以下一些實(shí)驗(yàn)為大家證明。具體的代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Testing final embedding
input_dictionary = dict([(v,k) for (k,v) in reverse_dictionary.iteritems()])
#找尋france, paris和rome的word index
test_word_idx_a = input_dictionary.get('france')
test_word_idx_b = input_dictionary.get('paris')
test_word_idx_c = input_dictionary.get('rome')
#在final_embeddings(也就是我們系統(tǒng)學(xué)到的embedding)里尋找上述詞
a = final_embeddings[test_word_idx_a,:]
b = final_embeddings[test_word_idx_b,:]
c = final_embeddings[test_word_idx_c,:]
#通過(guò)algebra的方式尋找預(yù)測(cè)詞
ans = c + (a - b)
similarity = final_embeddings.dot(ans)
print similarity.shape
print similarity[0:10]
#選取最近的4個(gè)詞展示出來(lái)
top_k = 4
nearest = (-similarity).argsort()[0:top_k+1]
print nearest
for k in xrange(top_k+1):
    close_word = reverse_dictionary[nearest[k]]
    print(close_word)

 所得結(jié)果如下:

當(dāng)輸入a = france, b = paris, c = rome時(shí),系統(tǒng)回答我詞匯近似于[rome, france, thibetanus, mnras, schwaben]。 當(dāng)輸入為a = king, b = man, c = woman時(shí),系統(tǒng)回答為[king, woman, philip, mayr, eulemur]。這里的結(jié)果并不理想。訓(xùn)練時(shí)間上,60萬(wàn)個(gè)step時(shí)間并不是很長(zhǎng),也不短,之前沒(méi)注意記時(shí)間,但是運(yùn)算時(shí)間大體在1小時(shí)左右。

 

2. Word2Vec_Optimized.py:

這個(gè)模型是Tensorflow對(duì)word embedding的加強(qiáng)式示例,其默認(rèn)迭代數(shù)為15次,運(yùn)行結(jié)果如下:

15 epoches之后的正確率為36.7%。 在設(shè)定迭代數(shù)量為50次后,該結(jié)果為39%, 迭代數(shù)為100時(shí),accuracy也沒(méi)超過(guò)40%,停留在39.7%。 當(dāng)運(yùn)行了200次迭代后,總算達(dá)到了40%,雖然耗時(shí)為大約7小時(shí)。至于系統(tǒng)于一些基礎(chǔ)問(wèn)題上的運(yùn)行結(jié)果,我們對(duì)15詞迭代的結(jié)果進(jìn)行了測(cè)試,結(jié)果如下:

從以上簡(jiǎn)單的測(cè)試中,我們已經(jīng)發(fā)現(xiàn)其效果一般,但比較basic版本還是要好很多的。其中,有名的king, man, queen, woman問(wèn)題系統(tǒng)并沒(méi)有回答正確。

 

Gensim的Word2Vec:

Gensim是一個(gè)很常用的深度學(xué)習(xí)topic modeling工具。在編寫(xiě),運(yùn)用方式以及效果上肯定會(huì)優(yōu)于Tensorflow的版本。Gensim的Word2Vec系統(tǒng)在網(wǎng)上有許多教程,這里提供一下兩個(gè)供大家參考,解釋的均很不錯(cuò),基本屬于可以直接運(yùn)用的類(lèi)型:1)http://rare-technologies.com/word2vec-tutorial/ 2)http://www.open-open.com/lib/view/open1420687622546.html

系統(tǒng)的運(yùn)行結(jié)果如下:

在運(yùn)行時(shí),我們把word_embedding的size設(shè)為128, 運(yùn)行迭代15次。訓(xùn)練完成模型后,對(duì)模型用questions-words.txt文件進(jìn)行評(píng)測(cè):

這份不僅我們觀察到其效果如何,我們更是直觀的了解了gensim的系統(tǒng)在哪些地方表現(xiàn)的不錯(cuò),哪里有不足。比如在family這個(gè)大類(lèi)中,所出現(xiàn)的問(wèn)題為[grandfather grandmother grandpa grandma],系統(tǒng)在這方面正確率頗高,為82%,但是在預(yù)測(cè)省內(nèi)的都市時(shí),效果卻僅達(dá)到18.1%。 這個(gè)直觀的系統(tǒng)讓我們快速了解了word2vec的學(xué)習(xí)效率以及學(xué)習(xí)優(yōu)缺點(diǎn),但是對(duì)于我們常用的問(wèn)題會(huì)做的如何呢?測(cè)試結(jié)果如下:

由此可見(jiàn),系統(tǒng)答對(duì)了我們?cè)儐?wèn)的全部問(wèn)題,雖然問(wèn)題基數(shù)很小,但對(duì)比之前的系統(tǒng),說(shuō)明gensim做的可以很好,也能更好!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
word2vec之Skip-Gram模型的tensorflow實(shí)現(xiàn)
使用TensorFlow和Keras構(gòu)建AI語(yǔ)言翻譯
機(jī)器學(xué)習(xí)中的嵌入:釋放表征的威力
NLP文本向量化(含Python代碼)
gensim:用Word2Vec進(jìn)行文本分析
NLP之詞向量:利用word2vec對(duì)20類(lèi)新聞文本數(shù)據(jù)集進(jìn)行詞向量訓(xùn)練、測(cè)試(某個(gè)單詞的相關(guān)詞匯)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服