Word Embedding总结

Word Embedding总结

1. 前言

word representation有两种方式

  • 传统方法Knowledge-based representation

  • 词的离散表示corpus-based representation

  • 词的分布式表达word embedding

1.1 Knowledge-based representation

  • 简介

Knowledge-based representation根据语言学家们制定的 WordNet ,其中包含了字与字之间的关联。来对文字进行表示。

Word Embedding总结_第1张图片

  • 调用方法

from nltk.corpus import wordnet

  • 局限性

    • 文字会不断地发展

    • 主观性较强,不同的人之间有不同的理解

    • 工作量比较大

    • 字与字之间的相似性很难定义

1.2 Corpus-based representation

1.2.1 Atomic symbols: one-hot representation

  • 定义

    One-Hot编码,又称为一位有效编码,独热编码,将所有需计算的文字组成一个向量,给出一个文字,它在向量中的位置标为1,其余都为0。

  • 限制

    无法捕捉两个word之间的关系,也就是没有办法捕捉语义信息

    例如:car和motorcycle,无论怎样计算相似度都为0。

  • 期望:用另一种方式捕捉真正有关字义的部分。

  • 方法:当car与motorcycle以及它们相邻的单词(neighbor)存在某些关系时,可以认为这两个单词之间具有相关性。即Neighbors,如何确定neighbor的范围呢?

    • 方式1,full document 。full document可以认为在同一篇文章中出现过,文章中的文字之间可以根据文章确定一个相关的主题。

    • 方式2,windows 。windows限定在某个窗口内,可以是几句话或者几个单词之内范围,这种方式可以获得词性等信息。

1.2.2 High-dimensional sparse word vector

Word Embedding总结_第2张图片
  • 思想

    基于neighbour,设置Co-occurrence Matrix共现矩阵

  • 限制

    • 随着文章字数增加矩阵的大小也会迅速增加;

    • 计算量会迅速增加。之前one-hot形式,由于只有一列存在非0数字,所以维度即使再大,计算量也不会增加太多。而现在则不同,每列都有可能有数个非0数字;

    • 大部分的有效信息,集中在少数区域。没有有效地“散开”,所以robustness会比较差

    • 当增加一个word的时候整个矩阵都要更新

  • 期望

    找到一个低维向量

1.2.3 Low-dimensional sparse word vector

  • 思想

    降维dimension reduction,例如通过SVD等,从k维降为r维


    Word Embedding总结_第3张图片
  • 限制

    • 计算量比较大

    • 新增文字后,需要重建矩阵并重新计算矩阵和降维

  • 期望

    • 直接学习出低维向量,而不是从资料中学习到高维矩阵再进行降维

1.2.4 Word Embedding

  • 思想

directly learn low-dimensional word vectors

  • 两种方法

    • word2vec (Mikolov et al. 2013)

      • skip-gram

      • CBOW

    • Glove (Pennington et al., 2014)

  • 优点

    • 任意两个词语之间的相似性很容易计算

    • 可以使用在任何NLP监督任务上作为input,vector包含了语义信息

    • 可以利用NN通过训练更新word representation(word embedding不是固定的,可以根据task微调)

2. Word2Vec

CBOW和Skip-Gram是著名的词嵌入工具word2vec中包含的两种模型,与标准语言模型不同,在上下文

​可以同时取左右两边的​n个字,而标准语言模型中认为,当前词语​仅仅依赖于前文​

2.1 Skip-Gram Model

  • 目标

    给定一个单词

    ​,预测出词汇表中每个词在其上下文中的概率。也就是给定一个word,推算出其周围的word的能力。


    Word Embedding总结_第4张图片

其中,

​是target word,

​是指定窗口大小C ​范围内的其他 word。

例如上图中,​

其实就代表

​ ,窗口大小 C​ 为m ​ 。​

​,共​2m个。

在指定的 word 条件下,指定窗口内其他 word 发生的概率计算公式如下:



根据最大似然估计,应该使得上面的概率结果最大。对上面公式进行取 ​ 后添加负号,得到损失函数的表示公式,目标使损失函数最小。

其中,


​数值越大,越相关,对于同一个word当他是target word的时候和他是context word时表示不一样。模型图如下:
Word Embedding总结_第5张图片
  • 模型结构
    Word Embedding总结_第6张图片

模型的结构很简单,如上图,是一个只有一个隐藏层的神经网络。由于要得到输入的每个word 出现的概率,所以输入层与输出层神经元数需一致。下图中,输入 ​ x和输出层s​数量为10000,隐藏层 h 神经元数为300。

如果对隐藏层权重​ W转换思想,(注意转换的仅仅是我们的思想,实际上没有对隐藏层做任何改变)。 上面的例子中,输入的 ​x 是10000行,后面的隐藏层共300个神经元,所以W ​ 是 10000×300 的矩阵。 实际​


计算的过程,思想其实是像下图左中的样子,W​ 每一列与

​ 对应相乘后再相加。如何将想法转换成下图右中的模式呢?请看接下来的例子。
Word Embedding总结_第7张图片

由于​x是one-hot转换后的,所以在指定的word上是1,其余都是0。这样的话,经过计算后,实际的结果中是把 ​W 相应的一行数据给完整保留下来了,其余的都乘以0后都没了,具体见下图。所以,也可以从行的角度看 W​。

综上所述,​h 的计算结果,其实也就是从 ​W中抽取出来相乘不为0的一行当成结果,可以用向量​

表示。


Word Embedding总结_第8张图片

上面说了隐藏层 ​h,接下来分析输出层s​ 。从 h​ 到​ s之间的系数为W' ​ 。 上面说道​ s输出层共10000个神经元,每个神经元的计算方法如下:


得到 ​ s_j后,还需要做最后的转换才是最终输出的结果。转换公式如下,这也是一般多分类 softmax 的计算方法。


下图就上对上面所讲的,从隐藏层到最后输出概率的一个总结。​ h与W' ​的计算结果,经过公式转换得到最后每个 word 的概率。


Word Embedding总结_第9张图片

如果把计算过程放在整体上看,如下图。


Word Embedding总结_第10张图片
  • 损失函数和梯度下降前文有讲到,给定一个target word,Loss Function是:

    使用梯度下降的方法对损失函数进行优化。从右向左,首先看W'​ 这边。


    Word Embedding总结_第11张图片

整理后得到如下公式。


Word Embedding总结_第12张图片

然后是​ W这边,


Word Embedding总结_第13张图片

整理后得到。把公式进行简化,简化之后得到下图中红色部分的公式。


Word Embedding总结_第14张图片

其中​ j是 输入X ​ 中 words总数量。从上面的公式中可以看出来,计算量和j ​相关。当 ​j 比较大的时候,计算量会非常大。

为了解决计算的问题,有两种常用的方法:层次化softmax(hierarchical softmax )负采样(negative sampling) 。常用的是后者。

  • 层次化softmax

    Word Embedding总结_第15张图片

  • 负采样

    抽样是更为常用的减少计算量的方法。可以有效的减少计算量,而且表现效果并不会下降太多。因为是随机选取,每个被选取到的概率相同。不停的迭代后,可以有效地得到结果。


    Word Embedding总结_第16张图片

一些不常出现的word有时有着一定作用,但在随机抽样中,却很难被抽到。所以有时就需要增加低频词汇出现的概率

Word Embedding总结_第17张图片

下面这个方法是一个比较好的经验。将每个word出现概率加上3/4 ​的指数。比如“is”出现的概率为0.9,那么进行​次方处理后变成了0.92 ,涨了一点。但是看下面的“bombastic”出现概率原来是0.01,处理后变成了0.032,概率涨了3倍多。可以看出,小概率经过处理后增加的比大概率的要高得多。通过这种方法,可以有效地处理小概率时间很难被抽到的问题。

2.2 Word2Vec Variants

Word Embedding总结_第18张图片

Word2Vec 还有一些其他的方式,比如CBOW、LM 。具体方法请看下图,其实LM是最早被提出来的,而Skip-gram是不断完善后的样子,所以现在Skip-gram应用是最广泛的。CBOW和Skip-gram正好相反,Skip-gram是给定一个word,预测窗口内其他words,而CBOW是给定窗口内其他words的概率,预测指定word。

2.3 方法比较

Word Embedding总结_第19张图片

这里主要是count-based和Direct-prediction之间的比较,之前并没有把所有的方法都讲到。 首先说一下,count-based,顾名思义,这个主要是通过统计学的方法进行计算,这种计算是比较快的。但是得到的结果也只是 “words之间是否同时出现”、“word出现频率” 等信息,无法得到word之间更复杂的关系。 Direct-prediction是通过神经网络方法去自动的估计结果。可以考虑到word之间语义相关的更复杂的关系。但是,并没有应用上统计学的信息,在统计信息上面有所欠缺。

  • Glove方法既利用了统计的资讯,还利用了神经网络,在一些数据量比较小的任务上表现很好。

3.Glove

co-occurrence probability,意思是一个word ​

出现时,另一个word ​

也出现的概率。公式如下,其中 ​X表示出现的次数。
Word Embedding总结_第20张图片
image

现在假设

​ 与
​ 都与 word ​ x有关系,可以计算出

​ ,将这两个结果相除

​ ,就得到了ratio。通过下面的例子可以看出,这个公式结果具有一些明显的规律。当

含义比较接近时,他们的ratio就接近1。当含义不接近时,ratio就会较大或较小。
Word Embedding总结_第21张图片

所以想要了解两个word ​


​ 之间的关系,可以通过它们共有的另一个word

​,经过计算得到ratio值,从而判断 ​ w_i与w_j ​ 之间的关联。
Word Embedding总结_第22张图片
image

F 其实就表示​ w_i 与 ​ w_j 之间的差异关系,所以也可以表示为

​ 。 将它们转化成向量表示

​。

如果 w_i​ 与 w_j ​ 比较接近,则结果趋向于1,否则会偏大或者偏小,正好可以通过exp ​的公式可以进行转换。


Word Embedding总结_第23张图片

两边取 ​log 后,进行整理。把​

当成一个常数项,整理进公式。同样也给 w_j ​添加一个常数项。

整理后的损失函数中还添加了

​ ,就相当与把统计相关的数据也添加进来进行优化。在比较小的数据集中,也有较好的表现效果。

Word Vector Evaluation

上面讲了word vector构建的方法,接下来说一下word vector的评估方法。

Intrinsic Evaluation 内在

Word Analogies 类比

首先是单词类比,给定两个相关的words “A”和“B”,例如“man”“woman”。是否能推测出“king”对应的是“queen”? 或者给出“king”与其复数“kings”,是否能推测出“queen”对应的“queens”。
Word Embedding总结_第24张图片

下面是评估公式,找出可以取得最大值的word xx ,就是最有可能对应的结果。
Word Embedding总结_第25张图片

类比可以分成语义上的和语法上的。

首先语义上的, 这种方法存在一些问题: \1. 同一个word在不同句子中可能有不同的意思; \2. 随着时间的改变,word含义有可能会改变。

Word Embedding总结_第26张图片

在语法上,主要是同一个单词的不同形式转换。

Word Correlation 关联

主要是由人标记出来的关系得分,这种方法其实也存在一些模糊不清的可能。
Word Embedding总结_第27张图片

Extrinsic Evaluation 外在

Subsequent Task

之前的评估是直接对word进行的,Extrinsic 是指不直接进行评估,而是通过后面的task看看结果,从而对其进行判断。 这样做有一些优点,首先,可以将两个看似不相干但实际有关联的word联系起来,比如地区名称。还有可以得到words合并后的信息,比如在情感分析方面的应用。
Word Embedding总结_第28张图片

Softmax & Cross-Entropy

Softmax

之前有简单讲过使用softmax进行转换,这里又详细讲解了softmax的定义。 权重​ ​W_y与 x 相乘后得到 f_y​ ,经过exp ​ 转换成 exp(f_y)​。所有的 ​y 都经过这种转换后求和,最后将每个exp(f_y) ​ 除以总和得到最终的结果。
Word Embedding总结_第29张图片

softmax的损失函数整理后会得到如下两项,第一项为 -f_i​ ,第二项为

​。 真实结果是f_i​ ,当预测结果f_j ​ 不正确时,f_i​ 此时会小于 第二项。我们的目的是使得

最小,所以会不断地优化,直到找出结果正确时的参数。
Word Embedding总结_第30张图片

Cross-Entropy 交叉熵

交叉熵用来定义目标与预测结果的概率分布的差异。其中​p 就是one-hot-encode表示的target word,而 ​ q 是预测的概率分布。如果 H(p,q)​ 结果越大,说明两者差异越大;反之,结果越小,说明差异越小。
Word Embedding总结_第31张图片

使用KL-divergence 将公式进行转换。
Word Embedding总结_第32张图片

下面讲解了,实际上这两种loss本质上是一样的。
Word Embedding总结_第33张图片

总结

Word Embedding总结_第34张图片

代码参考:

https://github.com/tensorflow/tensorflow/tree/r0.11/tensorflow/models/embedding

你可能感兴趣的:(Word Embedding总结)