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