[CS224n]Word Vectors

为什么用word vectors?

开始时使用one-hot编码,其中一位为1,其余全为0,向量长度和词表等长。

motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]

但是存在以下问题:

  1. 词表长度为百万、千万时,one-hot会极其长,而且只有一位是1。
  2. 任意两个向量都正交(点乘=0),无法衡量两个向量的相似度

所以提出了分布式表示word vectors。

什么是word vectors?

首先分布式表示指使用单词附近的词表示这个单词的含义
使用bank附近的单词表示bank
为每个单词构建一个密集向量,如果两个单词出现的上下文相似,那么其向量也相似。
bank的向量表示

怎样得到word vectors?

常见的有三种思路:

  1. skip-gram
  2. CBOW
  3. GLOVE

第三种在下一讲中讲到了。前两种skip-gram和CBOW原理很相似。 skip-gram以中心词Wt 作为输入,窗口内 Wt 周围的其他词作为label,训练一个通过中心词预测上下文词的模型,而CBOW与之相反,输入上下文词来预测中心词
skip-gram
CBOW
怎么训练呢?
以skip-gram为例,对每个中心词Wt,预测概率之和(似然函数)如下:
L i k e l i h o o o d = L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m j ≠ 0 P ( w t + j ∣ w t ; θ ) Likelihoood = L(\theta) = \prod^{T}_{t=1} \prod_{-m \leq j \leq m \atop j \neq 0} P(w_{t+j} | w_{t} ; \theta) Likelihoood=L(θ)=t=1Tj=0mjmP(wt+jwt;θ)
T是序列总长度,m是窗口的大小,θ是模型的所有参数。
由此目标函数(损失函数)也得到了:
J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m j ≠ 0 log ⁡ P ( w t + j ∣ w t ; θ ) 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) J(θ)=T1logL(θ)=T1t=1Tj=0mjmlogP(wt+jwt;θ)
其中P的计算使用softmax,max是指给定一个序列,放大了最大值的概率,soft则表示也将一部分概率分给其他值,比较平滑。
每个单词w都对应两个向量:
v_w: 当 w 是中心词时
u_w :当 w 是上下文词时
P ( o ∣ c ) = exp ⁡ ( u o T v c ) ∑ w ∈ V exp ⁡ ( u w T v c ) P(o | c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} P(oc)=wVexp(uwTvc)exp(uoTvc)
通过计算u_o与v_c的相似度(点乘)衡量u_o为周围单词的概率。可以这么理解,u_o与v_c越相似,点乘结果越大,那么softmax之后对应的概率也最大,最终达到相似的上下文词,其中心词也比较相似的目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值