CS224N lecture2 Word Vectors and Word Senses

1. 什么是Glove

到目前为止,我们已经研究了两种主要的方法来查找单词嵌入。第一组基于计数,并依赖于矩阵分解(例如LSA,HAL)。尽管这些方法有效地利用了全局统计信息,但它们主要用于捕获单词的相似性,并且在诸如单词比喻等任务上做得很差,表明次优向量空间结构。另一组方法是基于浅窗口的(例如, skip-gram和CBOW模型),它们通过在局部上下文窗口中进行预测来学习单词嵌入。这些模型展示了捕获单词相似度以外的复杂语言模式的能力,但是无法利用全局共现统计信息。

相比之下,GloVe由加权最小二乘模型组成,该模型对全局单词-单词共现计数进行训练,从而有效地利用了统计信息。该模型产生具有有意义子结构的词向量空间。它显示了词类比任务的最新性能,并且在几个词相似性任务上的表现优于其他当前方法。

GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。

1.1 GloVe是如何实现的?

GloVe的实现分为以下三步:

根据语料库(corpus)构建一个共现矩阵(Co-ocurrence Matrix)(X)(什么是共现矩阵?),矩阵中的每一个元素(X_{ij})代表单词(i)和上下文单词(j)在特定大小的上下文窗口(context window)内共同出现的次数。一般而言,这个次数的最小单位是1,但是GloVe不这么认为:它根据两个单词在上下文窗口的距离(d),提出了一个衰减函数(decreasing weighting):(decay = 1/d)用于计算权重,也就是说距离越远的两个单词所占总计数(total count)的权重越小。
In all cases we use a decreasing weighting function, so that word pairs that are d words apart contribute 1/d to the total count.

构建词向量(Word Vector)和共现矩阵(Co-ocurrence Matrix)之间的近似关系,论文的作者提出以下的公式可以近似地表达两者之间的关系:
w i T w j ~ + b i + b j ~ = log ⁡ ( X i j ) (1) w_{i}^{T}\tilde{w_{j}} + b_i + \tilde{b_j} = \log(X_{ij}) \tag{1} wiTwj~+bi+bj~=log(Xij)(1)
其中, w i T w_{i}^{T} wiT w j ~ \tilde{w_{j}} wj~是我们最终要求解的词向量; b i b_i bi b j ~ \tilde{b_j} bj~分别是两个词向量的bias term。
当然你对这个公式一定有非常多的疑问,比如它到底是怎么来的,为什么要使用这个公式,为什么要构造两个词向量 w i T w_{i}^{T} wiT w j ~ \tilde{w_{j}} wj~?下文我们会详细介绍。
有了公式1之后我们就可以构造它的loss function了:
J = ∑ i , j = 1 V f ( X i j ) ( w i T w j ~ + b i + b j ~ – log ⁡ ( X i j ) ) 2 (2) J = \sum_{i,j=1}^{V} f(X_{ij})(w_{i}^{T}\tilde{w_{j}} + b_i + \tilde{b_j} – \log(X_{ij}) )^2 \tag{2} J=i,j=1Vf(Xij)(wiTwj~+bi+bj~log(Xij))2(2)
这个loss function的基本形式就是最简单的mean square loss,只不过在此基础上加了一个权重函数 f ( X i j ) f(X_{ij}) f(Xij),那么这个函数起了什么作用,为什么要添加这个函数呢?我们知道在一个语料库中,肯定存在很多单词他们在一起出现的次数是很多的(frequent co-occurrences),那么我们希望:
1.这些单词的权重要大于那些很少在一起出现的单词(rare co-occurrences),所以这个函数要是非递减函数(non-decreasing);
2.但我们也不希望这个权重过大(overweighted),当到达一定程度之后应该不再增加;
3.如果两个单词没有在一起出现,也就是(X_{ij}=0),那么他们应该不参与到loss function的计算当中去,也就是(f(x))要满足(f(0)=0)
满足以上两个条件的函数有很多,作者采用了如下形式的分段函数:
在这里插入图片描述
这篇论文中的所有实验, α \alpha α的取值都是0.75,而 x m a x x_{max} xmax取值都是100。以上就是GloVe的实现细节,那么GloVe是如何训练的呢?

1.2 Glove与LSA、word2vec的比较

LSA(Latent Semantic Analysis)是一种比较早的count-based的词向量表征工具,它也是基于co-occurance matrix的,只不过采用了基于奇异值分解(SVD)的矩阵分解技术对大矩阵进行降维,而我们知道SVD的复杂度是很高的,所以它的计算代价比较大。还有一点是它对所有单词的统计权重都是一致的。而这些缺点在GloVe中被一一克服了。而word2vec最大的缺点则是没有充分利用所有的语料,所以GloVe其实是把两者的优点结合了起来。从这篇论文给出的实验结果来看,GloVe的性能是远超LSA和word2vec的,但网上也有人说GloVe和word2vec实际表现其实差不多。

2. 什么是 word embedding

Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,其中该函数是injective(就是我们所说的单射函数,每个Y只有唯一的X对应,反之亦然)和structure-preserving (结构保存,比如在X所属的空间上X1 < X2,那么映射后在Y所属空间上同理 Y1 < Y2)。那么对于word embedding,就是将单词word映射到另外一个空间,其中这个映射具有injective和structure-preserving的特点。

通俗的翻译可以认为是单词嵌入,就是把X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中。

word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。

推广开来,还有image embedding, video embedding, 都是一种将源数据映射到另外一个空间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值