四、GloVe

  1. 学习词向量的所有无监督方法最终都是基于语料库的单词共现统计,因此这些模型之间存在共性。

  2. 词向量学习算法有两个主要的模型族:

    • 基于全局矩阵分解的方法,如:latent semantic analysis:LSA

      • 优点:能够有效的利用全局的统计信息。
      • 缺点:在单词类比任务(如:国王 vs 王后 类比于男人 vs 女人)中表现相对较差。
    • 基于局部上下文窗口的方法,如:word2vec

      • 优点:在单词类比任务中表现较好。
      • 缺点:因为word2vec 在独立的局部上下文窗口上训练,因此难以利用单词的全局统计信息。
  3. Global Vectors for Word Representation:GloVe 结合了LSA 算法和Word2Vec 算法的优点,既考虑了全局统计信息,又利用了局部上下文。

4.1 原理

  1. 单词-单词 共现矩阵为 四、GloVe - 图1 ,其中 四、GloVe - 图2 表示在整个语料库中单词 四、GloVe - 图3 在单词 四、GloVe - 图4 上下文中出现的次数。 令:

    • 四、GloVe - 图5 ,它表示:单词 四、GloVe - 图6 上下文中出现的所有单词的总数。
    • 四、GloVe - 图7 ,它表示:单词 四、GloVe - 图8 出现在单词 四、GloVe - 图9 的上下文中的概率。
    • 四、GloVe - 图10 ,它表示:单词 四、GloVe - 图11 出现在单词 四、GloVe - 图12 的上下文中的概率,相对于单词 四、GloVe - 图13 出现在单词 四、GloVe - 图14 的上下文中的概率的比值。

    从经验中可以发现以下规律:

     单词 四、GloVe - 图15 和单词 四、GloVe - 图16 相关单词 四、GloVe - 图17 和单词 四、GloVe - 图18 不相关
    单词 四、GloVe - 图19 和单词 四、GloVe - 图20 相关四、GloVe - 图21 趋近于 1四、GloVe - 图22 比较小
    单词 四、GloVe - 图23 和单词 四、GloVe - 图24 不相关四、GloVe - 图25 比较大四、GloVe - 图26 趋近于 1

    因此 四、GloVe - 图27 能够反映单词之间的相关性。

  2. 假设单词 四、GloVe - 图28 的词向量分别为 四、GloVe - 图29

    GloVe 认为:这三个单词的词向量经过某个函数的映射之后等于 四、GloVe - 图30 。即:词向量中包含了共现矩阵的信息。

    假设这个映射函数为 四、GloVe - 图31 ,则有:

    四、GloVe - 图32

    现在的问题是 四、GloVe - 图33 未知,词向量 四、GloVe - 图34 也是未知。如果能够确定 四、GloVe - 图35 ,则可以求解词向量。

  3. 由于 四、GloVe - 图36 映射的是向量空间,而向量空间是一个线性空间。因此从右侧的除法 四、GloVe - 图37 可以联想到对 四、GloVe - 图38四、GloVe - 图39 做减法。即 四、GloVe - 图40 的形式为:

    四、GloVe - 图41

    由于 四、GloVe - 图42四、GloVe - 图43 均为向量,而 四、GloVe - 图44 为标量。因此可以联想到向量的内积。即 四、GloVe - 图45 的形式为:

    四、GloVe - 图46

    上式左边为差的形式,右边为商的形式。因此联想到函数 四、GloVe - 图47 。即 四、GloVe - 图48 的形式为:

    四、GloVe - 图49

    要想使得上式成立,只需要令 四、GloVe - 图50 即可。

    • 向量的内积具有对称性,即 四、GloVe - 图51 。而 四、GloVe - 图52 ,即: 四、GloVe - 图53

      为了解决这个问题,模型引入两个偏置项:

      四、GloVe - 图54

    • 上面的公式仅仅是理想状态,实际上只能要求左右两边尽可能相等。于是设计代价函数为:

      四、GloVe - 图55

      其中 四、GloVe - 图56 均为模型参数。

  4. 根据经验,如果两个词共现的次数越多,则这两个词在代价函数中的影响就应该越大。因此可以设计一个权重来对代价函数中的每一项进行加权,权重为共现次数的函数:

    四、GloVe - 图57

    其中权重函数应该符合三个条件:

    • 四、GloVe - 图58 。即:如果两个词没有共现过,则权重为 0 。

      这是为了确保 四、GloVe - 图59 是有限值。

    • 四、GloVe - 图60 是非递减的。即:两个词共现次数越大,则权重越大。

    • 四、GloVe - 图61 对于较大的 四、GloVe - 图62 不能取太大的值。即:有些单词共现次数非常大(如单词 与其它词的组合) ,但是它们的重要性并不是很大。

    GloVe 论文给出的权重函数 四、GloVe - 图63 为:

    四、GloVe - 图64

    其中:

    • GloVe 论文给出参数 四、GloVe - 图65四、GloVe - 图66 的经验值为:四、GloVe - 图67
    • GloVe 论文指出: 四、GloVe - 图68 对模型的性能影响较小。

    四、GloVe - 图69

  5. 考虑对所有词向量增加一个常量 四、GloVe - 图70,则有:

    四、GloVe - 图71

    四、GloVe - 图72四、GloVe - 图73,则:如果 四、GloVe - 图74Glove 的解,则 四、GloVe - 图75 也是Glove 的解。

    因此假设 四、GloVe - 图76 是一个非常大的值,则会导致几乎所有的词向量都相似。

4.2 应用

  1. GloVe 模型的算法复杂度取决于共现矩阵 四、GloVe - 图77 中的非零元素的个数,最坏的情况下为 四、GloVe - 图78 。由于词汇表的数量通常很庞大,因此 四、GloVe - 图79 会非常大。

    实际上单词共现的次数满足齐普夫定律(Zipf's Law),因此算法复杂度较低,约为 四、GloVe - 图80, 其中 四、GloVe - 图81 为语料库的大小。

    Zipf's Law:如果有一个包含 四、GloVe - 图82 个词的文章,将这些词按其出现的频次递减地排序,那么序号 四、GloVe - 图83 和其出现频次 四、GloVe - 图84 之积 四、GloVe - 图85,将近似地为一个常数,即 四、GloVe - 图86

  2. GloVe 模型评估任务:

    • semantic 任务: 语义任务。如:'雅典'之于'希腊' = '柏林'之于'_'?
    • syntactic 任务:语法任务。如:'dance'之于'dancing' = 'fly'之于'_'?
  3. GloVe 模型性能与语料库大小的关系:

    • 在语法任务中,模型性能随着语料库大小的增长而单调增长。

      这是因为语料库越大,则语法的统计结果越可靠。

    • 在语义任务中,模型性能与语料库绝对大小无关,而与语料库的有效大小有关。

      有效大小指的是语料库中,与目标语义相关的内容的大小。

  4. GloVe 模型超参数选择:

    • 词向量大小:词向量大小越大,则模型性能越好。但是词向量超过 200 维时,维度增加的收益是递减的。

    • 窗口对称性:计算一个单词的上下文时,上下文窗口可以是对称的,也可以是非对称的。

      • 对称窗口:既考虑单词左侧的上下文,又考虑单词右侧的上下文。

      • 非对称窗口:只考虑单词左侧的上下文。

        因为语言的阅读习惯是从左到右,所以只考虑左侧的上下文,不考虑右侧的上下文。

    • 窗口大小:

      • 在语法任务中,选择小的、非对称的窗口时,模型性能更好。

        因为语法是局部的,所以小窗口即可;因为语法是依赖于单词顺序的,所以需要非对称窗口。

      • 对于语义任务,则需要选择更大的窗口。

        因为语义是非局部的。

    四、GloVe - 图87