Word Embedding总结

Word Embedding总结

1. 前言

word representation有两种方式

  • 传统方法Knowledge-based representation

  • 词的离散表示corpus-based representation

  • 词的分布式表达word embedding

1.1 Knowledge-based representation

  • 简介

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

  • 调用方法

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

  • 思想

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

  • 限制

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

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

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

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

  • 期望

    找到一个低维向量

1.2.3 Low-dimensional sparse word vector

  • 思想

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


  • 限制

    • 计算量比较大

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

  • 期望

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

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的能力。


其中,

​是target word,

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

例如上图中,​

其实就代表

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

​,共​2m个。

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



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

其中,


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

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

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


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

​ 对应相乘后再相加。如何将想法转换成下图右中的模式呢?请看接下来的例子。

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

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

表示。


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


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


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



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


  • 损失函数和梯度下降前文有讲到,给定一个target word,Loss Function是:

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


整理后得到如下公式。


然后是​ W这边,


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


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

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

  • 层次化softmax

  • 负采样

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


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


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

2.2 Word2Vec Variants


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

2.3 方法比较

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

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

3.Glove

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

出现时,另一个word ​

也出现的概率。公式如下,其中 ​X表示出现的次数。
image

现在假设

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

​ ,将这两个结果相除

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

含义比较接近时,他们的ratio就接近1。当含义不接近时,ratio就会较大或较小。

所以想要了解两个word ​


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

​,经过计算得到ratio值,从而判断 ​ w_i与w_j ​ 之间的关联。
image

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

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

​。

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


两边取 ​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 xx ,就是最有可能对应的结果。

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

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

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

Word Correlation 关联

主要是由人标记出来的关系得分,这种方法其实也存在一些模糊不清的可能。

Extrinsic Evaluation 外在

Subsequent Task

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

Softmax & Cross-Entropy

Softmax

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

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

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

最小,所以会不断地优化,直到找出结果正确时的参数。

Cross-Entropy 交叉熵

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

使用KL-divergence 将公式进行转换。

下面讲解了,实际上这两种loss本质上是一样的。

总结

代码参考:

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容