nlp

Glove笔记

Posted by mudux on March 16, 2020

1. Glove介绍

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

2. Glove实现

  Glove的实现主要分为三步:

  • 根据语料库(corpus)构建共现矩阵(co-occurrence matrix)$X$,矩阵中的每一个元素$X_{ij}$代表单词$i$和上下文单词$j$在特定大小的上下文窗口(context window)内共同出现的次数。
  • 构建词向量(word vector)和共现矩阵之间的近似关系

    其中$w_{i}^T,\widetilde{w}_j$是最终要求解的词向量,$b_i,\widetilde{b}_j$分别是两个词向量的bias term。主要这里对每个单词有两个词向量。

  • 构建加权mse损失函数

    这里之所以要加权是因为某些词出现频率很高(frequent co-occurrences),如”the”和”and”,但是它们提供的信息又不多,所以希望能限制它们的作用,所以$f\left(X_{ij}\right)$应该满足如下性质:

    • 这个函数是非递减函数(non-decreasing),即高频词权重还是大于低频词
    • 权重不要过大(overweighted),达到一定程度就不要增加了,即高频词影响也有限
    • 如果两个单词没有共现,$X_{ij}=0$,那么不应该对损失函数有贡献,$f(0)=0$ 作者提出使用

    图形如下:
    2-1

3. Globe推导

  定义变量:

  • $X_{ij}$表示单词$j$在单词$i$的上下文中的次数
  • $X_i$表示单词$i$的上下文中所有单词出现的次数,$X_i=\sum\limits^kX_{ik}$
  • ,表示单词$j$出现在单词$i$的上下文中的概率

  论文给出表格如下: 3-1

  最后一行表示两个概率的比值,使用它观察出两个单词$i$和$j$相对于单词$k$哪个更相关。上图中,ice和solid更相关,$P(solid|ice)/P(solid|steam)$比1大得多。而steam和gas更相关,$P(gas|ice)/P(gas|steam)$远小于1。当都有关或者都不相关时比例接近1。上述推论表示通过概率的比例而不是概率本身去学习词向量可能是更好的方法。
构造函数:

  其中,函数$F$的参数和具体形式未定,参数$w_i,w_j$和$\widetilde{w}_k$是不同向量。
  因为向量空间是线性结构的,所以要表达出两个概率的比例差,最简单的方法是做差。得到:

  公式右侧是一个数值,而左侧都是向量,把左侧转换成向量內积的形式:

  $X$是对称矩阵,即中心词和上下文词都是相对的,做变换$w\leftrightarrow \widetilde{w}_k,X\leftrightarrow X^T$公式应该不变,现在的公式不满足,即

  于是,$F$应该满足同态性(homomorphism)

  注意$F((w_i-w_j)^T\widetilde{w}_k)=F(w_i^T\widetilde{w}_k-w_j^T\widetilde{w}_k)=\frac{F(w_i^T\widetilde{w}_k)}{F(w_j^T\widetilde{w}_k)}$

  显然exp函数满足这个性质,有:

  则:
  可推出:

  显然上式还是不满足对称性,把$\log(X_i)$纳入偏置项$b_i$,为了对称性,加入$\widetilde{b}_k$偏置项,得到:

  以上模型存在一个问题:将共现矩阵每个元素的权重视为一样,所以引入上面的权重函数

  最后进行梯度下降即可求得词向量。

4. Reference

1 GloVe: Global Vectors for Word Representation
2 Stanford cs224n-2019-notes02-wordvecs2
3 Glove project
4 论文分享–>GloVe: Global Vectors for Word Representation
5 GloVe详解