词向量表示

分类

一、Count-based

1. LSA

介绍

LSA是基于滑动窗口的共现矩阵(co-occurence)以及SVD的方法,通过SVD来对共现矩阵进行降维,从而获得低维度的词向量。

实现:

假设window长度为1

语料库中包含三个句子:
① I like deep learning.
② I like NLP.
③ I enjoy flying.

通过滑动窗口可得到如下共现矩阵:
词向量表示_第1张图片
共现矩阵已经可以看成是一个包含词向量的矩阵,但是维度太高,并且具有稀疏性。因此通过SVD降维,获取矩阵奇异向量。在这里,获得的左奇异向量或者右奇异向量均可表示为词向量。

优缺点

优点:
① 训练速度快。(对于较小的共现矩阵)
② 只需要遍历一次语料库,因此可以有效利用统计信息。
缺点:
① 主要捕获的词之间的相似性。
② 对于计数大的词往往得到不成比例的重要性。

二、Direct-Prediction

1. word2vec——Skip-gram、CBOW

介绍

Skip-gram通过中心词来预测周围的词,CBOW则是刚好相反,通过周围的词来预测中心的词。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。这里只介绍一下Skip-gram。
Skip-gram是对语料库中每一个窗口,在某个中心词下,对周围词的概率分布进行预测,主要的任务是预测周围词汇,但我们更关注其产生的附加产物—词向量。

实现

Loss函数为:
J ( θ ) = − 1 T ∑ t = 1 T ∑ j = − m m p ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T} \sum^T_{t=1}\sum^{m}_{j=-m}p(w_{t+j}|w_t;\theta) J(θ)=T1t=1Tj=mmp(wt+jwt;θ)
m为窗口大小。
p ( w t + j ∣ w t ; θ ) = p ( o ∣ c ) = e x p ( u o T ∗ v c ) ∑ w = 1 V e x p ( u w T ∗ v c ) p(w_{t+j}|w_t;\theta)=p(o|c)=\frac{exp(u_o^T*v_c)}{\sum_{w=1}^Vexp(u_w^T*v_c)} p(wt+jwt;θ)=p(oc)=w=1Vexp(uwTvc)exp(uoTvc)
V为词库大小

模型结构
词向量表示_第2张图片
负采样
由于Softmax函数往往需要一个很大的计算量,因此可以通过负采样加速。
负采样Loss函数:
在这里插入图片描述
在这里插入图片描述
其中
在这里插入图片描述

优缺点

优点:
① 对于下游任务会有更好的表现
② 可以捕获更复杂的特征,不只是词的相似性。
缺点:
①会缩放语料库的尺寸。
②需要遍历每一个单一窗口,因此不能有效利用统计信息。

三、GloVe

介绍

GloVe综合了Count-based与Direct-Prediction的优点,既有全局统计信息,也包含了概率模型。

实现

Loss函数:
词向量表示_第3张图片
f函数用于约束出现次数非常大的单词产生的损失(α在3/4时效果最好):
在这里插入图片描述

你可能感兴趣的:(词向量)