Word Embedding 和 Word2Vec详细笔记(未完待更)

一.单词的向量化表示

1.one-hot

比如有一个1000个词汇的词典,每一个单词可以表示为一个1000*1维大小的向量,其中一个位置为1,其余为0,并且每个单词的1的位置互斥。
在这里插入图片描述

不过这种表示方式存在很多问题:

  • 任意两个词之间都是孤立的,根本无法表示出在语义层面上词语词之间的相关信息
  • 如果词典非常大,那么每个单词的维度都是巨大的,这样会造成计算上的困难
  • 其得到的特征是离散稀疏的,得到的向量过于稀疏,导致计算和存储的效率不高

2. distributed representation

它的思路是通过训练,将每个词都映射到一个较短的词向量上来,这些词向量就构成了向量空间。这个词的维度一般需要我们在训练时自己来指定。代表性的就是词嵌入(Word Embedding)。

一个单词“king”的词嵌入(在维基百科上训练的GloVe向量):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 ,-0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234, -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

假如第一个维度代表富有程度,范围为0-100,越靠近0代表越穷,越靠近100代表越富有,然后把这个维度映射到-1到1的范围。这里面的每个维度的含义是通过学习出来的,具体的含义是不明确的.

将这些含义用颜色来表示程度,如下示例:
在这里插入图片描述
可以看到“woman”和“girl”在很多地方是相似的,“man”和“boy”也是一样。
这样一来,相似单词的向量会映射到类似的空间。可以通过计算余弦相似度来计算两个向量的相似度。计算的结果越接近于1代表越相似。
在这里插入图片描述
在这里插入图片描述

二.神经网络语言模型

通过神经网络训练语言模型可以得到词向量,神经网络语言模型大致如下:

a) Neural Network Language Model ,NNLM
b) Log-Bilinear Language Model, LBL
c) Recurrent Neural Network based Language Model,RNNLM
d) Collobert 和 Weston 在2008 年提出的 C&W 模型
e) Mikolov 等人提出了 CBOW( ContinuousBagof-Words)和 Skip-gram 模型

三. Word Embedding

  • Word Embedding是词的一种表示方式,属于Distributed Representation中的一类

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

词嵌入的方法包括人工神经网络、对词语同现矩阵降维、概率模型以及单词所在上下文的显式表示等。常见的如:word2vec(Google), GloVe, wordRank,FastText(Facebook)。

词嵌入将文本通过一个低维向量来表达,不像 one-hot 那么长。语意相似的词在向量空间上也会比较相近。Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量。
在这里插入图片描述

四. Word2Vec

1. 和词嵌入的关系

Word2vec 是 Word Embedding 的方法之一。

2. 和 CBOW、Skip-gram的关系

CBOW、Skip-gram等神经网络语言模型是逻辑上的方法,Word2Vec是实现CBOW、Skip-gram的工具。Word2Vec利用CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model)两种训练模式可以实现词嵌入。

3. CBOW

CBOW(Continuous Bag-of-Word Model)又称连续词袋模型,是一个三层神经网络,通过上下文来预测中间那个词。
在这里插入图片描述
在这里插入图片描述
注:gensim 和 google的 word2vec 里面并没有用到onehot encoder,而是初始化的时候直接为每个词随机生成一个N维的向量,并且把这个N维向量作为模型参数学习

4. Skip-gram

Skip-gram只是逆转了CBOW的因果关系而已,即已知当前词语,预测上下文。
在这里插入图片描述
在这里插入图片描述

4.1 模型数据准备

对一段文本设置滑动窗口,这里以5举例,中间的not设为输入,左右两个词为我们学习预测的目标。
在这里插入图片描述
在这里插入图片描述

4.2 训练过程

从数据集中的第一个样本开始。我们将特征输入到未经训练的模型,让它预测一个可能的相邻单词。然后将计算出的向量和目标做差得到loss,然后反向更新参数矩阵.
在这里插入图片描述

四.负采样(以Skip-gram为例)

考虑到模型第三层为softmax激活,softmax公式如下:
在这里插入图片描述
对于Skip-gram而言,当我们将需要在数据集中为每个训练样本都做一遍需要的计算是巨大的。
我们转换一下形式:
将其切换到一个提取输入与输出单词的模型,并输出一个表明它们是否相似的分数(0表示“不相似”,1表示“相似”)。
在这里插入图片描述
在这里插入图片描述
这样我们的计算就变成了逻辑回归模型,计算程度大大减少。
我们的数据就变为了这样:
在这里插入图片描述
但是如果这样拿到网络里去训练,因为所有的输入数据都是相似的,准确性是百分百了。为了解决这个问题,我们引入负样本。负样本的单词从词汇表中随机抽取单词。
在这里插入图片描述

五.Hierarchical Softmax(以CBOW为例)

对于网络的激活层softmax,如果词典过大比如10w,那么softmax的计算将是灾难级的。为了避免一次计算这么多,采用分层softmax的方式可以有效减轻计算量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在word2vec中,约定编码方式左子树编码为1(代表负类),右子树编码为0(代表正类),同时约定左子树的权重不小于右子树的权重。简而言之,就是将一个节点分类时,分到左边就是负类,分到右边就是正类。
Huffman树中每一叶子结点代表一个词向量,非叶结点中存储的是中间向量,对应于神经网络中隐含层的参数,与输入一起决定分类结果。

下面引用softmax中的数学原理中的例子解释:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考:
https://blog.csdn.net/weixin_40444270/article/details/109434553
https://blog.csdn.net/yu5064/article/details/79601683
https://blog.csdn.net/lilong117194/article/details/81979522
https://blog.csdn.net/u014595019/article/details/51884529
https://blog.csdn.net/longxinchen_ml/article/details/89077048
https://www.cnblogs.com/peghoty/p/3857839.html
https://zhuanlan.zhihu.com/p/84301849
https://blog.csdn.net/qq_38890412/article/details/107658406

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值