我對word2vec的理解:使意思相近的詞有距離相近的向量。
為了得到這種詞向量就提出了用這個詞的上下文來解釋它,舉個例子:『愛』和『喜歡』有很大概率出現在相同句子的相同位置,比如說:『我愛你』和『他喜歡你』,『小明愛學習』和『小紅喜歡學習』;那麼這兩個詞通過前面的上下文訓練出來的詞向量距離就是相近的。
skip-gram:通過中心詞來**上下文
cbow:通過上下文來**中心詞
下面用skip-gram來舉例
寫一下公式:
l ik
ehoo
d(θ)
=∏c=
1t∏−
m≤j≤
m,j≠
0pr(
wc+j
∣wc;
θ)likehood(θ) = \prod_^\prod_pr(w_|w_c;θ)
likeho
od(θ
)=c=
1∏t
−m≤j
≤m,j
=0
∏pr
(wc+
j∣w
c;θ
)c=1,2,…t c:表示文字中詞每乙個位置 wc:該位置的詞
第乙個∏
\prod
∏指的是算完第乙個中心詞再算下乙個中心詞;第二個∏
\prod
∏指的是中心詞周圍的詞的概率相乘
舉個栗子:
文字:我 每天 吃飯 睡覺 打 豆豆
以吃飯為例,c=3,設m=1(m看你心情) :∏−m
≤j≤m
,j≠0
pr(w
c+j∣
wc;θ
)\prod_pr(w_|w_c;θ)
∏−m≤j≤
m,j
=0
pr(w
c+j
∣wc
;θ) 就變為∏−1
≤j≤1
,j≠0
pr(w
3+j∣
w3;θ
)\prod_pr(w_|w_3;θ)
∏−1≤j≤
1,j
=0
pr(w
3+j
∣w3
;θ)這裡希望likehood越大越好,loss則是越小越好,所以加了『-』號,為了好計算又加上log,原式變為:
l os
s(θ)
=−1t
logli
keho
od(θ
)=−1
t∑c=
1t∑−
m≤j≤
m,j≠
0logp
r(wc
+j∣w
c;θ)
loss(θ)=-\frac\log=-\frac\sum_^\sum_\log|w_c;θ)}
loss(θ
)=−t
1loglik
ehoo
d(θ)
=−t1
c=1
∑t−
m≤j≤
m,j
=0∑
logpr
(wc+
j∣w
c;θ
)這裡希望loss越小越好,θ是要訓練的引數。
文字:我 每天 吃飯 睡覺
1,將文字當中的詞變為onehot輸入i我=
[1,0
,0,0
]i_=[1,0,0,0]
i我=[1
,0,0
,0],i每天
=[0,
1,0,
0],i_=[0,1,0,0],
i每天=[
0,1,
0,0]
,i_=[0,0,1,0],
,,i_=[0,0,0,1]$
2,設m=1,四個詞都要作為中心詞,這裡以吃飯作為中心詞為例:
『吃飯』作為輸入,在m=1的情況下有『每天』『睡覺』作為輸出,這裡需要兩個需要被訓練的矩陣w4∗
nw_w4∗n,wn∗
4′w'_wn
∗4′
(4是因為文字只有4個詞,n是你定義的詞向量的維度,下面設n=3)
這裡需要訓練w和w』,而w的一行就是乙個詞向量
**』每天『就使p每天
p_p每
天最大;**『睡覺』就使p睡覺
p_p睡
覺最大;這裡一般使用交叉熵損失
這樣我們就可以得到詞向量模型→w
減小模型訓練量的方法:
1,negative sampling(負取樣):改變n個觀察值的權重,而不是所有
2,hierarchical softmax(霍夫曼樹):高頻詞更容易得到訓練
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
word2vec的簡單理解 小白初學
在自然語言處理領域中,本文向量化是文字表示的一種重要方式。在當前階段,對文字的大部分研究都是通過詞向量化實現的,但同時也有一部分研究將句子作為文字處理的基本單元,也就是doc2vec和str2vec技術。詞語表示 在傳統意義上,我們習慣使用one hot編碼來給詞語進行編碼,該編碼的優勢在於簡單,容...
word2vec學習參考
最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...