Word2Vec(Efficient Estimation of Word Representations in Vector Space)
本篇論文的整體結(jié)構(gòu)如下:
?
一、對(duì)比模型
?
語(yǔ)言模型基本思想: 句子中一個(gè)詞出現(xiàn)和前面的詞是有關(guān)系的,可以使用前面的詞預(yù)測(cè)下一個(gè)詞
?
NNLM:
輸入層: 將詞映射成向量,相當(dāng)于一個(gè)1*v的one-hot向量乘以一個(gè)v*d的向量得到一個(gè)1*d的向量
隱藏層: 一個(gè)以tanh為激活函數(shù)的全連接層 a = tanh(d+ux),? ?u、d為參數(shù)
輸出層: 一個(gè)全連接層,后面接一個(gè)softmax函數(shù)來(lái)生成概率分布,y = b + wa, 其中y是一個(gè)1*v的向量
P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))
參數(shù)個(gè)數(shù):
? ? ? ?1) 每一個(gè)詞映射為1*D的向量N個(gè)詞concat,參數(shù)個(gè)數(shù)為N*D
? ? ? ?2) 隱藏層大小為H,所以w參數(shù)矩陣大小為N*D*H
? ? ? ?3) 詞表大小為V,所以u(píng)的參數(shù)個(gè)數(shù)為H*V
所以NNLM參數(shù)個(gè)數(shù)Q = N*D + N*D*H + H*V
?
RNNLM:
輸入層: 和NNLM一樣,需要將當(dāng)前步轉(zhuǎn)化為詞向量
隱藏層: 對(duì)輸入和上一個(gè)時(shí)間步的隱藏輸出進(jìn)行全連接層操作:
? ? ? ? ? ? ? ? ? ? ? ? ?s(t) = Uw(t) + ws(t-1) + d
輸出層: 一個(gè)全連接層后面接一個(gè)softmax函數(shù)來(lái)生成概率分布
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? y(t) = b + vs(t)
其中y是一個(gè)1*v的向量,P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))
參數(shù)個(gè)數(shù):
? ? ? ? ?s(t) = Uw(t) + Ws(t-1)? ?
? ? ? ? ?y(t) = Vs(t)? -- softmax --> p(xi|xi-N,.....xi-1)
? ? ? ? ?y = [y1,y2,.....yv] = e^yi/(sum(e^yi))
? ? ? ? ?w(t)表示t時(shí)刻當(dāng)前輸入的單詞詞向量,s(t-1)表示隱藏層的前一層輸出,y(t) 表示輸出的詞的index
? ? ? ? ?w維度是H, s維度是H, W維度是H*H, U維度是H*H, V維度是H*V(V表示詞表大小)
?所以RNNLM 參數(shù)個(gè)數(shù)Q = H*H + H*V
?
評(píng)價(jià)語(yǔ)言模型常用指標(biāo)-困惑度
Loss : L = -1/Tlogp(wi|wi-n+1,.....wi-1)
pp(s) = p(w1,w2,....wt)^(-1/T)
logpp(s) = -1/Tlog(p(w1)p(w2|w1)....(wt/wt-n+1...wt-1))
logpp(s) = -1/T(log(p(w1)) + log(p(w2|w1)) + ...... log(p(wt|wt-n+1.....wt-1)))
logpp(s) = -1/Tsumi=1->Tlogp(wi|wi-n+1....wi-1)
pp(s) = e^Loss
?
上述模型存在的問(wèn)題:
1、僅對(duì)一部分有意義的詞進(jìn)行梯度傳播(如 the,a無(wú)意義)
2、引入先驗(yàn)知識(shí),如詞性等
3、解決一詞多意問(wèn)題
4、加速softmax層
?
二、Word2Vec
?
word2vec基本思想是句子中相近的詞之間是有聯(lián)系的,用詞預(yù)測(cè)詞
skip-gram: 中心詞預(yù)測(cè)周?chē)~
CBOW: 周?chē)~預(yù)測(cè)中心詞
?
Skip-gram:
1、中心詞預(yù)測(cè)周?chē)~
2、中心詞生成2*windowsize個(gè)樣本,中心詞詞向量和周?chē)~做內(nèi)積的方式得到周?chē)~的概率,并進(jìn)行優(yōu)化
訓(xùn)練 W*,W, 詞向量可以為W或者為(W + W*)/2
?
CBOW
1、周?chē)~預(yù)測(cè)中心詞
2、周?chē)~向量求和或者平均 之后和中心詞向量?jī)?nèi)積,進(jìn)行softmax,然后反向優(yōu)化
?
模型復(fù)雜度(模型參數(shù)個(gè)數(shù))
Skip-gram: Q = C(D + D*V) C表示周?chē)~,D表示每個(gè)中心詞D維詞向量
負(fù)采樣:Q = C(D + D*(K+1)) K個(gè)負(fù)樣本,1個(gè)正樣本
CBOW:Q= N*D + D*V 因?yàn)閟um或者avg所以向量維度與詞向量維度一致,不是concat
層次softmax: Q = N*D + D*log2V
負(fù)采樣: Q = N*D + D*(K+1)?
N表示N個(gè)周?chē)~,D表示每一個(gè)詞詞向量維度
?
三、實(shí)驗(yàn)結(jié)果
?
1、任務(wù)描述
2、最大化正確率
? ? ? 數(shù)據(jù)集越大、維度越大,效果越好
3、不同模型間比較
? ? ?與其它人開(kāi)源的詞向量比較,Skip-gram比CBOW稍微慢一些,但是效果較好
4、大規(guī)模并行模型訓(xùn)練
? ? ?詞與詞之間的關(guān)系,給一個(gè)詞五個(gè)句子選擇最合適的句子
5、微軟研究院相關(guān)比賽
6、學(xué)習(xí)到句子間的關(guān)系
?
四、論文小結(jié)
關(guān)鍵點(diǎn):
1、更簡(jiǎn)單的預(yù)測(cè)模型 -- word2vec
2、更快的分類(lèi)方案 -- HS和NEG
創(chuàng)新點(diǎn):
1、使用詞對(duì)的預(yù)測(cè)來(lái)替代語(yǔ)言模型的預(yù)測(cè)
2、使用HS和NEG降低分類(lèi)復(fù)雜度
3、使用subsampling 加快訓(xùn)練
4、新的詞對(duì)推理數(shù)據(jù)集來(lái)評(píng)估詞向量的質(zhì)量
啟發(fā)點(diǎn):
1、大數(shù)據(jù)集上的簡(jiǎn)單模型往往強(qiáng)于小數(shù)據(jù)集上的復(fù)雜模型
2、理解數(shù)據(jù) + 模型應(yīng)用
一些經(jīng)驗(yàn):
超參數(shù)選擇: 利用gensim做word2vec的時(shí)候,詞向量的維度和單詞數(shù)目有沒(méi)有一個(gè)比較好的對(duì)照范圍
1、dim一般在100-500之間選擇
2、初始值詞典大小V的1/4次方V = 10K,dim=100
3、min_count(詞頻出現(xiàn)的最少次數(shù)) 一般在2-10之間選擇
4、時(shí)間比較多,可以用網(wǎng)格搜索grid_search
?
五、相關(guān)復(fù)現(xiàn)代碼
代碼詳見(jiàn):?https://github.com/wangtao666666/NLP/tree/master/Word2Vec
?
總結(jié)
以上是生活随笔為你收集整理的Word2Vec(Efficient Estimation of Word Representations in Vector Space)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不均衡学习
- 下一篇: GloVe:Global Vectors