Word2Vec

Word2Vec

one-hot 编码将词符号化,不包含任何语义信息。而且词的独热表示是高维的,
需要赋予词语义信息和降低维度问题如何解决?

word2vec是Google研究团队里的Tomas Mikolov等人于2013年的《Distributed Representations ofWords and Phrases and their Compositionality》以及后续的《Efficient Estimation of Word Representations in Vector Space》两篇文章中提出的一种高效训练词向量的模型,基本出发点是上下文相似的两个词,它们的词向量也应该相似。

在这里插入图片描述

word2vec主要包含两个模型:

  • 连续词袋模型(CBOW,continuous bag of words)
  • 跳字模型(skip-gram)。
    CBOW是根据上下问预测目标词来训练词向量
    Skip-gram是根据目标词去训练和预测目标词周围的词向量
    在这里插入图片描述


### CBOW模型
  1. 输入层(Input layer):目标单词上下文的单词(这里显示三个),每个单词用ont-hot编码表示,为[1 * V]大小的矩阵,V表示词汇大小;
  2. 所有的ont-hot矩阵乘以输入权重矩阵W,W是[V * N]大小的共享矩阵,N是指输出的词的向量维数;
  3. 将相乘得到的向量 ([1 * V] 的ont-hot矩阵乘上[V * N]的共享矩阵W) 相加,然后求平均作为隐层向量h, 大小为[1 * N];
  4. 将隐层向量h乘以输出权重矩阵W’,W’是[N * V]大小的共享矩阵;
  5. 相乘得到向量y,大小为[1 * V],然后利用softmax激活函数处理向量y,得到V-dim概率分布;
  6. 由于输入的是ont-hot编码,即每个维度都代表着一个单词,那么V-dim概率分布中,概率最大的index所指代的那个单词为预测出的中间词。
  7. 将结果与真实标签的ont-hot做比较,误差越小越好,这里的误差函数,即loss function一般选交叉熵代价函数。
    在这里插入图片描述
    CBOW生成词向量的全过程。如果我们只是想提取每个单词的向量,那么只需要得到向量y就可以了,但训练过程中要去做预测并计算误差,去求得输入权重矩阵W和输出权重矩阵W’。

比如文本序列“the”、 “man”、“loves”、“his”和“son”里,以“loves”作为中心词,且背景窗口大小为 2 时,连续词袋模型关心的是,给定背景词“the”、“man”、“his”和“son”生成中心词“loves”的条件概率:P(loves∣the,man,his,son)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

理解方式2

在这里插入图片描述
在这里插入图片描述



Skip-gram模型

Skip-gram和CBOW相反,由中心词去预测周围词的概率。
在这里插入图片描述

Skip-gram模型基于语料库构建词汇表(语料库就是句子集合,所以单词会重复,但是词汇表没有重复),把单词表示成向量之后,skip-gram就构建了这么一个语言模型,一个单词出现在一个句子中,那么这个单词就是和它的上下文有联系的,
可以构建一个神经网络,它的输入就是一个单词的向量,输出就是词汇表中各个单词是前后文的单词的概率,一般来说,这个神经网络包含一个输入层、线性隐层(不含激活函数)、输出层(softmax函数)。通过训练我们的模型,我们就能得到一个能够通过一个词预测它的前后文的语言模型。
在这里插入图片描述

跳字模型假设基于某个词来生成它在文本序列周围的词。举个例子,假设文本序列是“the”、“man”、“loves”、“his”和“son”。以“loves”作为中心词,设背景窗口大小为 2。跳字模型所关心的是,给定中心词“loves”,生成与它距离不超过 2 个词的背景词“the”、“man”、“his”和“son”的条件概率,即P(the,man,his,son∣loves)
假设给定中心词的情况下,背景词的生成是相互独立的,那么上式可以改写成:
P(the∣loves)⋅P(man∣loves)⋅P(his∣loves)⋅P(son∣loves)
在这里插入图片描述
Skip-gram隐层的激活函数其实是线性的,相当于没做任何处理(这也是 Word2vec 简化之前语言模型的独到之处)。
跳字模型的参数是每个词所对应的中心词向量和背景词向量。训练中我们通过最大化似然函数来学习模型参数,即最大似然估计。最大似然估计是将文本序列中的所有条件概率连乘,然后求使该乘积最大化的参数。这等价于最小化以下损失函数:
在这里插入图片描述
使用随机梯度下降,那么在每一次迭代里我们随机采样一个较短的子序列来计算有关该子序列的损失,然后计算梯度来更新模型参数。
在这里插入图片描述
微分计算后得到中心词词向量Vc的梯度
在这里插入图片描述



优缺点

优点

  1. 有着NNLM拥有的优点
  2. 相比NNLM,减少了模型参数量,大规模训练成为可能
  3. 考虑了上下文,效果比NNLM好

缺点

  1. 由于每个词的embedding在训练后就固定了,对于一词多义无法解决




参考

原文链接:https://blog.csdn.net/v_JULY_v/article/details/102708459
原文链接:https://blog.csdn.net/jesseyule/article/details/99974501
原文链接:https://www.pianshen.com/article/6780283075/
https://www.pianshen.com/article/730775751/
https://blog.csdn.net/fengzhou_/article/details/106022559
https://zhuanlan.zhihu.com/p/136247620
https://zhuanlan.zhihu.com/p/51648662
https://www.cnblogs.com/peghoty/p/3857839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值