Human language and word meaning
語言是一個低帶寬的信息傳輸方式,相比於5G,這決定了語言的熵會很高。
How do we have usable meaning in a computer?
one-hot的字詞表示:
- 詞語維度是很高的,而且有很多衍生的詞語,接近於無限的維度。
- 詞語之間沒有相似度,即one-hot向量是正交的,相似詞語和不相似詞語之間都是正交關係。
WordNet
一個工具,來獲取詞語的同義詞、hypernyms ( is a relation, eg. panda is a procyonid, ), 缺點:
- 缺少細微差別
- 例如,某些情況下,proficient纔是good的同義詞,即特定的上下文。
- 缺少新詞,難以實時更新:
- 主觀、需要人力創建和修改,不能計算詞語相似度。
分佈式表達
使用詞語周圍的詞語來表示其的意義。
Distributional semantics: A word’s meaning is given by the words that frequently appear close-by 、
使用此種方式訓練神經網絡得到詞向量表達,並將其降維到2D,可視化的效果:
可以看到,are, is, were距離很近,向量相似度較高,而實際也是如此。
那麼,問題來,怎麼訓練詞向量呢?
Word2vec introduction
skip-gram:使用中心詞語,來預測周圍的詞語。
最大化似然,目標是對於正確的上下文的詞語,給出概率最大, θ是參數:
Likelihood=L(θ)=t=1∏Tj̸=0−m≤j≤m∏P(wt+j∣wt;θ)
目標函數,注意加了負號,所以是最小化目標函數 :
J(θ)=−T1logL(θ)=−T1t=1∑Tj̸=0−m≤j≤m∑logP(wt+j∣wt;θ)
那麼如何計算概率P(wi+j∣wt;θ)?
- 對於每個詞語都有兩個向量:
- w作爲中心詞的向量vw
- w作爲上下文的向量uw
- 對於中心詞語c,上下文詞語o:
P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc)
那麼,參數空間爲θ∈R2d∗v,其實就是詞向量。v是單詞個數,v是詞向量維度。 含義是中心詞的詞向量和上下文的詞向量越相似,其概率就越大。那麼想同上下文的詞語,他們的詞向量也就越相似(因爲他們的中心詞向量都和上下文詞向量相似,他們之間也就相似)。
那麼如何通過梯度下降優化呢,
∂vc∂J(θ)=−T1t=1∑Tj̸=0−m≤j≤m∑∂vc∂logP(wt+j∣wt;θ)
其中:
∂vc∂logP(o∣c)=∂vc∂log∑w∈Vexp(uwTvc)exp(uoTvc)=∂vc∂logexp(uoTvc)−∂vc∂log∑w∈Vexp(uwTvc)
對兩項分別求偏導:
第一項:∂vc∂logexp(uoTvc)=uo
第二項複雜一些,需要用到鏈式法則,將log(x)看做一個整體展開:
∂vc∂logw∈V∑exp(uwTvc)=∑w∈Vexp(uwTvc)1∗∂vc∂(x∈V∑exp(uxTvc))=∑w∈Vexp(uwTvc)1∗x∈V∑∂vc∂(exp(uxTvc))=∑w∈Vexp(uwTvc)1∗x∈V∑exp(uxTvc)∂vc∂(uxTvc)=∑w∈Vexp(uwTvc)∑x∈Vexp(uxTvc)ux=x∈V∑P(x∣c)ux
最終:
∂vc∂logP(o∣c)=uo−x∈V∑P(x∣c)ux
理解爲在中心詞c的情況下,預測的上下文單詞和實際上下文單詞向量(uo)的差異,
reference
- http://web.stanford.edu/class/cs224n/
- https://www.bilibili.com/video/av46216519?t=4557