介紹
lsa是基於滑動視窗的共現矩陣(co-occurence)以及svd的方法,通過svd來對共現矩陣進行降維,從而獲得低維度的詞向量。
實現:假設window長度為1
語料庫中包含三個句子:
① i like deep learning.
② i like nlp.
③ i enjoy flying.
通過滑動視窗可得到如下共現矩陣:
共現矩陣已經可以看成是乙個包含詞向量的矩陣,但是維度太高,並且具有稀疏性。因此通過svd降維,獲取矩陣奇異向量。在這裡,獲得的左奇異向量或者右奇異向量均可表示為詞向量。
優點:① 訓練速度快。(對於較小的共現矩陣)
② 只需要遍歷一次語料庫,因此可以有效利用統計資訊。
缺點:① 主要捕獲的詞之間的相似性。
② 對於計數大的詞往往得到不成比例的重要性。
介紹skip-gram通過中心詞來**周圍的詞,cbow則是剛好相反,通過周圍的詞來**中心的詞。cbow對小型資料庫比較合適,而skip-gram在大型語料中表現更好。這裡只介紹一下skip-gram。
skip-gram是對語料庫中每乙個視窗,在某個中心詞下,對周圍詞的概率分布進行**,主要的任務是**周圍詞彙,但我們更關注其產生的附加產物—詞向量。
實現loss函式為:
j (θ
)=−1
t∑t=
1t∑j
=−mm
p(wt
+j∣w
t;θ)
j(\theta)=-\frac \sum^t_\sum^_p(w_|w_t;\theta)
j(θ)=−
t1∑
t=1t
∑j=
−mm
p(wt
+j∣
wt;
θ)m為視窗大小。
p (w
t+j∣
wt;θ
)=p(
o∣c)
=exp
(uot
∗vc)
∑w=1
vexp
(uwt
∗vc)
p(w_|w_t;\theta)=p(o|c)=\frac^vexp(u_w^t*v_c)}
p(wt+j
∣wt
;θ)
=p(o
∣c)=
∑w=1
vex
p(uw
t∗v
c)e
xp(u
ot∗
vc)
v為詞庫大小
模型結構
負取樣
由於softmax函式往往需要乙個很大的計算量,因此可以通過負取樣加速。
負取樣loss函式:
其中優點:① 對於下游任務會有更好的表現
② 可以捕獲更複雜的特徵,不只是詞的相似性。
缺點:①會縮放語料庫的尺寸。
②需要遍歷每乙個單一視窗,因此不能有效利用統計資訊。
介紹glove綜合了count-based與direct-prediction的優點,既有全域性統計資訊,也包含了概率模型。
實現loss函式:
f函式用於約束出現次數非常大的單詞產生的損失(α在3/4時效果最好):
05詞向量表示理論篇
語料庫 李杏 喜歡 喝 奶茶 詩雅 也 喜歡 喝 奶茶 李杏 同樣 喜歡 喝 果汁 詞典 one hot 表示 李杏 1,0,0,0,0,0,0,0 喜歡 0,1,0,0,0,0,0,0 果汁 0,0,0,0,0,0,0,1 注意 詞典包含8個單詞,每個單詞有唯一索引 在詞典中的順序和在句子中的順序...
cs224d 詞向量表示
1.1 word meaning的兩種定義 definition meaning 單詞的含義指代了客觀存在的具體事物,如眼鏡。distributional similarity meaning 上下文代表了單詞的含義,如下 distributional similarity meaning也是wor...
字的向量表示
得到乙個字的向量表示,能夠保留字之間共現次數相關的資訊。先得到乙個語料庫的詞庫,然後計算乙個字左邊視窗內和其共同出現的次數的數量,值與距離相反。每個字會對映到乙個整數index,這個index就對映到向量的index。比如 these 對映到index 10,則在 are 這個字的向量表示裡vec ...