CS224N 2019 笔记 Week 1

在文字的使用上,存在着大量的Synonyms(同义词),比如good、great、marvelous。把这些Synonyms归位同一类,会导致细节的损失。人们从一大堆words中选择word是一个很主观的行为,对词汇的相似性作出准确的定义是非常难的。
通常在NLP中,会将每一个word作为独立的个体,使用one-hot编码对word进行编码,有多少words就有多少长度的编码(对英语来说,speech有20k的words,翻译系统有50k的words),one-hot编码的缺点中在于不能体现出word与word的关联性,因为两个word之间one-hot编码的乘积为0。
要找到一种方法,可以通过点乘两个向量的方法来体现两个word的关联性。Word2Vec使用了Distributional Similarity(分布相似性),通过观察一个句子中某个word上下文的word来得到这个word的值,并且编码为Distributed Representation。

Distributional Similarity是一个关于词汇语义的理论。
Distributed Representation是一种编码方式与one-hot相反。

Word2Vec

有两种常见的算法:

  • Skip-Grams:通过中心词(center word)预测周围的词(context word)。
  • Continuous Bag of Words(CBOW):通过周围的词预测中心词。

这里介绍没有经过优化的Skip-Grams。

Skip-Gram

定义一个模型,根据一个word W t W_t Wt来预测上下文context:
P ( c o n t e x t ∣ W t ) = . . . P(context|W_t)= ... P(contextWt)=...
这个模型的损失函数为:
J = 1 − P ( W − t ∣ W t ) J=1-P(W_{-t}|Wt) J=1P(WtWt)
这里的 W − t W_{-t} Wt W t W_t Wt周围的words。

注意这里实际上并没有上文和下文的区别, W t W_t Wt前面的word和后面的word对于 W t W_t Wt的意义是相同的。

模型架构

目标函数

θ \theta θ是训练参数,目标就是Maximum Likelihood:
(equation1) max ⁡ J ′ ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( W t + j ∣ W t ; θ ) \max J'(\theta)=\prod_{t=1}^T\prod_{-m\leq j \leq m,j\neq0}P(W_{t+j}|W_{t};\theta) \tag{equation1} maxJ(θ)=t=1Tmjm,j̸=0P(Wt+jWt;θ)(equation1)
这里可以对1式通过添加log对连乘进行优化,使之在计算机上计算更加方便(连乘会导致精度不够):
e q u a t i o n 1 ≃ max ⁡ log ⁡ ∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( W t + j ∣ W t ; θ ) = max ⁡ ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 log ⁡ P ( W t + j ∣ W t ; θ ) ≃ max ⁡ 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 log ⁡ P ( W t + j ∣ W t ; θ ) = min ⁡ − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 log ⁡ P ( W t + j ∣ W t ; θ ) \begin{aligned} equation1 \simeq & \max \log_{} \prod_{t=1}^T\prod_{-m\leq j \leq m,j\neq0}P(W_{t+j}|W_{t};\theta)\\ =& \max \sum_{t=1}^T\sum_{-m\leq j \leq m,j\neq0}\log_{}P(W_{t+j}|W_{t};\theta)\\ \simeq & \max \frac{1}{T} \sum_{t=1}^T\sum_{-m\leq j \leq m,j\neq0}\log_{}P(W_{t+j}|W_{t};\theta)\\ =& \min - \frac{1}{T} \sum_{t=1}^T\sum_{-m\leq j \leq m,j\neq0}\log_{}P(W_{t+j}|W_{t};\theta) \end{aligned} equation1==maxlogt=1Tmjm,j̸=0P(Wt+jWt;θ)maxt=1Tmjm,j̸=0logP(Wt+jWt;θ)maxT1t=1Tmjm,j̸=0logP(Wt+jWt;θ)minT1t=1Tmjm,j̸=0logP(Wt+jWt;θ)
所以目标转化为Minimum Average Negative Log Likelihood:
(euqation2) min ⁡ J ( θ ) = min ⁡ − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 log ⁡ P ( W t + j ∣ W t ; θ ) \min J(\theta) = \min - \frac{1}{T} \sum_{t=1}^T\sum_{-m\leq j \leq m,j\neq0}\log_{}P(W_{t+j}|W_{t};\theta) \tag{euqation2} minJ(θ)=minT1t=1Tmjm,j̸=0logP(Wt+jWt;θ)(euqation2)
定义P为:
P ( o ∣ c ) = exp ⁡ ( u o T v c ) ∑ i = 1 V exp ⁡ ( u i T v c ) P(o|c)= \frac{\exp(u_o^T v_c)}{\sum_{i=1}^{V}\exp(u_i^T v_c)} P(oc)=i=1Vexp(uiTvc)exp(uoTvc)
这里的 θ \theta θ是由 u u u v v v这些向量组成的。
这里的 o o o c c c是word在对应one-hot编码的index, u o u_o uo表示上下文向量, v c v_c vc表示中心词向量。 u o T v c u_o^T v_c uoTvc的乘积越大,表示这两个字的相关性越高。

优化目标函数

重新表示2式中的 P P P
J ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 log ⁡ exp ⁡ ( u o T v c ) ∑ i = 1 V exp ⁡ ( u i T v c ) J(\theta) = -\frac{1}{T} \sum_{t=1}^T\sum_{-m\leq j \leq m,j\neq0}\log_{}\frac{\exp(u_o^T v_c)}{\sum_{i=1}^{V}\exp(u_i^T v_c)} J(θ)=T1t=1Tmjm,j̸=0logi=1Vexp(uiTvc)exp(uoTvc)

计算 ∂ ∂ v c \frac{\partial}{\partial v_c} vc

把log那一部分提取出来,对 v c v_c vc做偏微分:
(equation3) ∂ ∂ v c log ⁡ exp ⁡ ( u o T v c ) ∑ i = 1 V exp ⁡ ( u i T v c ) = ∂ ∂ v c log ⁡ exp ⁡ ( u o T v c ) − ∂ ∂ v c log ⁡ ∑ i = 1 V exp ⁡ ( u i T v c ) \begin{aligned} \frac{\partial}{\partial v_c} \log_{} \frac{\exp(u_o^T v_c)}{\sum_{i=1}^{V} \exp(u_i^T v_c)} = \frac{\partial}{\partial v_c}\log_{}\exp(u_o^Tv_c) - \frac{\partial}{\partial v_c}\log_{}\sum_{i=1}^{V}\exp(u_i^T v_c) \end{aligned}\tag{equation3} vclogi=1Vexp(uiTvc)exp(uoTvc)=vclogexp(uoTvc)vclogi=1Vexp(uiTvc)(equation3)
把3式分成两个部分处理:
e q u a t i o n 3 = e q u a t i o n 4 − e q u i a t i o n 5 e q u a t i o n 4 = ∂ ∂ v c log ⁡ exp ⁡ ( u o T c c ) = ∂ ∂ v c u o T v c = u o e q u a t i o n 5 = ∂ ∂ v c log ⁡ ∑ i = 1 V exp ⁡ ( u i T v c ) = 1 ∑ i = 1 V exp ⁡ ( u i T v c ) ∂ ∂ v c ∑ x = 1 V exp ⁡ ( u x T v c ) = 1 ∑ i = 1 V exp ⁡ ( u i T v c ) ∑ x = 1 V exp ⁡ ( u x T v c ) ∂ ∂ v c u x T v c = 1 ∑ i = 1 V exp ⁡ ( u i T v c ) ∑ x = 1 V exp ⁡ ( u x T v c ) u x = ∑ x = 1 V exp ⁡ ( u x T v c ) ∑ i = 1 V exp ⁡ ( u i T v c ) u x = ∑ x = 1 V P ( x ∣ c ) u x \begin{aligned} equation3 =& equation4 - equiation5\\ equation 4 =& \frac{\partial}{\partial v_c} \log_{}\exp(u_o^Tc_c)\\ =& \frac{\partial}{\partial v_c} u_o^T v_c\\ =& u_o\\ equation 5 =& \frac{\partial}{\partial v_c} \log_{} \sum_{i=1}^{V} \exp(u_i^T v_c)\\ =& \frac{1}{\sum_{i=1}^{V} \exp(u_i^T v_c)} \frac{\partial}{\partial v_c} \sum_{x=1}^{V} \exp(u_x^T v_c)\\ =& \frac{1}{\sum_{i=1}^{V} \exp(u_i^T v_c)} \sum_{x=1}^{V} \exp(u_x^T v_c) \frac{\partial}{\partial v_c} u_x^T v_c\\ =& \frac{1}{\sum_{i=1}^{V} \exp(u_i^T v_c)} \sum_{x=1}^{V} \exp(u_x^T v_c) u_x\\ =& \sum_{x=1}^{V} \frac{\exp(u_x^T v_c)}{\sum_{i=1}^{V} \exp(u_i^T v_c)} u_x\\ =& \sum_{x=1}^{V} P(x|c) u_x \end{aligned} equation3=equation4===equation5======equation4equiation5vclogexp(uoTcc)vcuoTvcuovclogi=1Vexp(uiTvc)i=1Vexp(uiTvc)1vcx=1Vexp(uxTvc)i=1Vexp(uiTvc)1x=1Vexp(uxTvc)vcuxTvci=1Vexp(uiTvc)1x=1Vexp(uxTvc)uxx=1Vi=1Vexp(uiTvc)exp(uxTvc)uxx=1VP(xc)ux
综合4、5式,
e q u a t i o n 3 = u o − ∑ x = 1 V P ( x ∣ c ) u x equation3 = u_o - \sum_{x=1}^{V} P(x|c) u_x equation3=uox=1VP(xc)ux
前面一项代表的是输出的context vector,后面一项代表的是对于center word来说的每一个可能出现的context vector的加权期望。

计算 ∂ ∂ u o \frac{\partial}{\partial u_o} uo

和上面一样:
∂ ∂ u o log ⁡ exp ⁡ ( u o T v c ) ∑ i = 1 V exp ⁡ ( u i T v c ) = ∂ ∂ u o log ⁡ exp ⁡ ( u o T v c ) − ∂ ∂ u o ∑ i = 1 V log ⁡ exp ⁡ ( u i T v c ) = ∂ ∂ u o u o T v c − ∂ ∂ u o ∑ i = 1 V log ⁡ exp ⁡ ( u i T v c ) = v c − 1 ∑ i = 1 V exp ⁡ ( u i T v c ) ∑ x = 1 V ∂ ∂ u o exp ⁡ ( u x T v c ) = v c − exp ⁡ ( u o T v c ) v c ∑ i = 1 V exp ⁡ ( u i T v c ) \begin{aligned} \frac{\partial}{\partial u_o} \log{} \frac{\exp(u_o^T v_c)} {\sum_{i=1}^{V} \exp(u_i^T v_c)} =& \frac{\partial}{\partial u_o} \log{}\exp(u_o^T v_c) - \frac{\partial}{\partial u_o}\sum_{i=1}^{V} \log{}\exp(u_i^T v_c) \\ =& \frac{\partial}{\partial u_o} u_o^T v_c - \frac{\partial}{\partial u_o}\sum_{i=1}^{V}\log{} \exp(u_i^T v_c) \\ =& v_c - \frac{1}{\sum_{i=1}^{V}\exp(u_i^T v_c)}\sum_{x=1}^{V}\frac{\partial}{\partial u_o}\exp(u_x^T v_c)\\ =& v_c - \frac{\exp(u_o^T v_c)v_c}{\sum_{i=1}^{V}\exp(u_i^Tv_c)} \end{aligned} uologi=1Vexp(uiTvc)exp(uoTvc)====uologexp(uoTvc)uoi=1Vlogexp(uiTvc)uouoTvcuoi=1Vlogexp(uiTvc)vci=1Vexp(uiTvc)1x=1Vuoexp(uxTvc)vci=1Vexp(uiTvc)exp(uoTvc)vc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值