阅读笔记——GloVe

文章目录

  • 1. 来源
  • 2. 介绍
  • 3. 入门(代码下载)
  • 4. 下载预先训练好的词向量
    • 4.1 预先训练好的词向量
    • 4.2 用于预处理Twitter数据的Ruby[脚本](https://nlp.stanford.edu/projects/glove/preprocess-twitter.rb)
  • 5. Giting GloVe
  • 6. 强调
    • 6.1 Nearest neighbors
    • 6.2 线性子结构
  • 7. 训练
  • 8. 模型概述
  • 9. 形象化
  • 10. 发行史
  • 11. 探讨

1. 来源

GloVe来自斯坦福的一篇论文

2. 介绍

Glove是一种无监督学习算法,用于获取单词的向量表示。对来自语料库的聚集的全局词-词共现统计信息进行训练,得到的表示形式展现了词向量空间有趣的线性子结构。

3. 入门(代码下载)

  1. 下载最新的代码
  2. 解压缩文件:解压缩Glove-master.zip
    阅读笔记——GloVe_第1张图片
  3. 编译源代码:cd GloVe-master&&make
  4. 运行demo脚本:./demo.sh
  5. 参阅所包含的README以了解更多细节。

4. 下载预先训练好的词向量

4.1 预先训练好的词向量

  1. 这个数据提供在Public Domain Dedication and License,版本1.0,全文在pddl找到.
  2. 维基百科2014 + Gigaword 5 (6B tokens, 400K vocab,uncased,50d, 100d, 200d和300d vectors, 822 MB下载):gloves .6B.zip
  3. Common Crawl (42B tokens, 190万vocab,uncased,300d vectors, 1.75 GB下载):gloves .42B.300d.zip
  4. Common Crawl (840B tokens, 2.2M vocab, cased, 300d vectors, 2.03 GB download): glove.840B.300d.zip
  5. Twitter (2B tweets, 27B tokens, 1.2M vocab, uncased, 25d, 50d, 100d, & 200d vectors, 1.42 GB download): glove.twitter.27B.zip

4.2 用于预处理Twitter数据的Ruby脚本

5. Giting GloVe

Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. GloVe: Global Vectors for Word Representation. [pdf]

6. 强调

6.1 Nearest neighbors

两个词向量之间的欧式距离(或余弦相似度)为测量对应词的语言或语义相似度提供了一种有效的方法。有时候,根据这个度量标准,最近邻结构揭示了罕见但相关的词汇,这些词汇不属于普通人的词汇。例如,以下是与目标词frog最接近的单词:
0. frog

  1. frogs
  2. toad
  3. litoria
  4. leptodactylidae
  5. rana
  6. lizard
  7. eleutherodactylus
    阅读笔记——GloVe_第2张图片

6.2 线性子结构

用于最近邻评估的相似性度量产生一个标量,量化两个词的相关性。这种简单性可能会有问题,因为两个给定的单词几乎总是表现出比单个数字所能捕捉到的更复杂的关系。例如,男人和女人可能被认为是相似的,因为这两个词都描述了人类;另一方面,这两个词通常被认为是相反的,因为它们突出了人类之间的主要差异。

为了从数量上捕捉区分男女所必需的细微差别,一个模型有必要将不止一个数字与字词组合联系起来。两个词向量之间的向量差是扩大鉴别数集的一个自然而简单的候选。GloVe的设计是为了使这种矢量差异尽可能多地捕捉两个词并置所指定的含义。

区分男人和女人的基本概念,即性或性别,可以用其他各种词对,如国王和王后或兄弟和姐妹来等效地加以说明。为了从数学上表述这个观察结果,我们可以预期男女、国王和王后以及兄弟姐妹的矢量差异可能都大致相等。这个属性和其他有趣的模式可以在下面的可视化中观察到。
阅读笔记——GloVe_第3张图片

7. 训练

GloVe模型是在一个全局词-词共现矩阵的非零条目上训练的,该矩阵列出了单词在给定语料库中相互共现的频率。填充这个矩阵需要一次遍历整个语料库来收集统计信息。对于大型语料库,这种传递在计算上可能很昂贵,但它是一次性的预先成本。随后的训练迭代速度要快得多,因为非零矩阵条目的数量通常要比语料库中的单词总数小得多。

8. 模型概述

GloVe本质上是一个带加权最小二乘目标的对数双线性模型。该模型的主要直觉是一个简单的观察,即单词-单词共现概率的比率有可能编码某种形式的含义。例如,考虑目标词ice和steam与词汇表中各种探测词的共现概率。以下是来自60亿单词语料库的一些实际概率:
阅读笔记——GloVe_第4张图片
正如人们所预料的那样,冰与固体的共存比与气体的共存更频繁,而蒸汽与气体的共存比与固体的共存更频繁。这两个词经常以它们共有的属性water来共现,但都很少与不相关的词fashion共现。只有在概率比率中,来自非歧视性词语(如水和时尚)的噪音才会被抵消,所以大值(远大于1)与冰的特性非常相关,而小值(远小于1)与蒸汽的特性非常相关。通过这种方式,概率比率编码了一些与热力学相抽象概念相关联的粗略意义形式。

GloVe的训练目标是学习单词向量,使它们的点积等于单词共现概率的对数。由于比率的对数等于对数的差,这个目标将共现概率的比率(对数)与词向量空间中的向量差联系起来。因为这些比率可以编码某种形式的意义,这些信息也被编码为矢量差异。由于这个原因,得到的单词向量在单词类比任务中执行得非常好,例如word2vec包中检查的那些任务。

9. 形象化

GloVe产生具有显着带状结构的词向量:
阅读笔记——GloVe_第5张图片

水平波段是由于模型中的乘法相互作用是按分量发生的这一事实造成的。虽然点积会产生附加的相互作用,但一般来说,个体维度交叉授粉的空间很小。

随着单词频率的增加,水平条带变得更加明显。事实上,作为词频的函数,有明显的长期趋势,而且它们不太可能有语言来源。这个特性并不是手套独有的——事实上,我还不知道有什么词向量学习模型可以避免这个问题。

垂直频带,如单词230k-233k附近的频带,是由于碰巧具有相似频率的相关单词(通常是数字)的局部密度。

10. 发行史

  1. GloVev.1.2:代码中的小bug修复(内存,一个一个关闭,错误)。Eval代码现在也可以在Python和Octave中使用。最大数据文件的UTF-8编码固定。由拉塞尔·斯图尔特和克里斯托弗·曼宁准备。2015年10月。
  2. GloVev.1.0:原始版本。杰弗里·彭宁顿准备的。2014年8月。

11. 探讨

  1. GitHub:手套在GitHub上。对于bug报告和补丁,你最好使用GitHub问题和Pull requests特性。
  2. Google Group:The Google Group全局向量可以用于关于GloVe的问题和一般讨论。

你可能感兴趣的:(阅读笔记)