斯坦福CS224n課程筆記1-introduction and Word vectors 2019

Human language and word meaning

語言是一個低帶寬的信息傳輸方式,相比於5G,這決定了語言的熵會很高。

How do we have usable meaning in a computer?

one-hot的字詞表示:

  1. 詞語維度是很高的,而且有很多衍生的詞語,接近於無限的維度。
  2. 詞語之間沒有相似度,即one-hot向量是正交的,相似詞語和不相似詞語之間都是正交關係。

WordNet

一個工具,來獲取詞語的同義詞、hypernyms ( is a relation, eg. panda is a procyonid, ), 缺點:

  1. 缺少細微差別
    1. 例如,某些情況下,proficient纔是good的同義詞,即特定的上下文。
  2. 缺少新詞,難以實時更新:
  3. 主觀、需要人力創建和修改,不能計算詞語相似度。

分佈式表達

使用詞語周圍的詞語來表示其的意義。

Distributional semantics: A word’s meaning is given by the words that frequently appear close-by 、

使用此種方式訓練神經網絡得到詞向量表達,並將其降維到2D,可視化的效果:

可以看到,are, is, were距離很近,向量相似度較高,而實際也是如此。

在這裏插入圖片描述

那麼,問題來,怎麼訓練詞向量呢?

Word2vec introduction

在這裏插入圖片描述

skip-gram:使用中心詞語,來預測周圍的詞語。

最大化似然,目標是對於正確的上下文的詞語,給出概率最大, θ\theta是參數:
Likelihood=L(θ)=t=1Tmjmj0P(wt+jwt;θ) Likelihood = L(\theta) = \prod_{t=1}^{T} \prod_{-m \leq j \leq m \atop j \neq 0} P\left(w_{t+j} | w_{t} ; \theta\right)
目標函數,注意加了負號,所以是最小化目標函數 :
J(θ)=1TlogL(θ)=1Tt=1Tmjmj0logP(wt+jwt;θ) J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m \atop j \neq 0} \log P\left(w_{t+j} | w_{t} ; \theta\right)
那麼如何計算概率P(wi+jwt;θ)P(w_{i+j}|w_t;\theta)?

  1. 對於每個詞語都有兩個向量:
    • w作爲中心詞的向量vwv_w
    • w作爲上下文的向量uwu_w
  2. 對於中心詞語c,上下文詞語o:

P(oc)=exp(uoTvc)wVexp(uwTvc) P(o | c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}

那麼,參數空間爲θR2dv\theta \in R^{2d*v},其實就是詞向量。v是單詞個數,v是詞向量維度。 含義是中心詞的詞向量和上下文的詞向量越相似,其概率就越大。那麼想同上下文的詞語,他們的詞向量也就越相似(因爲他們的中心詞向量都和上下文詞向量相似,他們之間也就相似)。

那麼如何通過梯度下降優化呢,
vcJ(θ)=1Tt=1Tmjmj0vclogP(wt+jwt;θ) \frac{\partial}{\partial v_{c}} J(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m \atop j \neq 0} \frac{\partial}{\partial v_{c}} \log P\left(w_{t+j} | w_{t} ; \theta\right)
其中:
vclogP(oc)=vclogexp(uoTvc)wVexp(uwTvc)=vclogexp(uoTvc)vclogwVexp(uwTvc) \begin{array}{c}{\frac{\partial}{\partial v_{c}} \log P(o | c)=\frac{\partial}{\partial v_{c}} \log \frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}} \\ {=\frac{\partial}{\partial v_{c}} \operatorname{logexp}\left(u_{o}^{T} v_{c}\right)-\frac{\partial}{\partial v_{c}} \log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}\end{array}
對兩項分別求偏導:

第一項:vclogexp(uoTvc)=uo\frac{\partial}{\partial v_{c}} \operatorname{logexp}\left(u_{o}^{T} v_{c}\right)=u_{o}

第二項複雜一些,需要用到鏈式法則,將log(x)看做一個整體展開:
vclogwVexp(uwTvc)=1wVexp(uwTvc)vc(xVexp(uxTvc))=1wVexp(uwTvc)xVvc(exp(uxTvc))=1wVexp(uwTvc)xVexp(uxTvc)vc(uxTvc)=xVexp(uxTvc)uxwVexp(uwTvc)=xVP(xc)ux \frac{\partial}{\partial v_{c}} \log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right) = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \frac{\partial}{\partial v_{c}} ( \sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right)) \\ = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \sum_{x \in V} \frac{\partial}{\partial v_{c}} ( \exp \left(u_{x}^{T} v_{c}\right) ) \\ = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right) \frac{\partial}{\partial v_{c}} ( u_{x}^{T} v_{c} ) \\ = \frac{\sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right) u_{x}}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} \\ = \sum_{x \in V} P(x | c) u_{x}
最終:
vclogP(oc)=uoxVP(xc)ux \frac{\partial}{\partial v_{c}} \log P(o | c) = u_o - \sum_{x \in V} P(x | c) u_{x}
理解爲在中心詞c的情況下,預測的上下文單詞和實際上下文單詞向量(uou_o)的差異,

reference

  1. http://web.stanford.edu/class/cs224n/
  2. https://www.bilibili.com/video/av46216519?t=4557
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章