目录
[1 什么是word2vec?](#1 什么是word2vec?)
[2 模型结构](#2 模型结构)
[2.1 CBOW(连续的词袋模型)](#2.1 CBOW(连续的词袋模型))
[2.1.1 网络结构](#2.1.1 网络结构)
[2.1.2 代码](#2.1.2 代码)
[2.1.3 运行结果](#2.1.3 运行结果)
[2.2 Skip-gram(跳字模型)](#2.2 Skip-gram(跳字模型))
[2.2.1 网络结构](#2.2.1 网络结构)
[2.2.2 代码](#2.2.2 代码)
[2.2.3 运行结果](#2.2.3 运行结果)
本人为小白,欢迎补充!
1 什么是word2vec?
Word2Vec 是一个用于将单词表示为向量的算法,是由 Google 的研究人员在 2013 年开发的。它基于神经网络模型,通过训练大量的语料库数据来学习单词之间的语义和语法关系。它通过学习大量文本语料库中的单词上下文信息,将每个单词映射到一个连续的向量空间中。Word2Vec 可以生成高维空间中的向量表示,使得具有相似含义的单词在向量空间中距离较近,从而可以实现对单词的语义相似性分析和文本挖掘任务。它被广泛应用于自然语言处理和机器学习领域,包括词义相似度计算、文本分类、情感分析等任务。这样的向量表示具有许多有用的性质,例如可以计算单词之间的相似度、执行词语的聚类等。
2 模型结构
Word2Vec 有两种主要的结构:CBOW(Continuous Bag-of-Words)和 Skip-gram。无论是 CBOW 还是 Skip-gram,Word2Vec 使用神经网络进行训练。训练过程中,模型通过最大化目标函数(例如,使用负对数似然函数)来调整单词的向量表示,以便在语义上相似的单词在向量空间中更加靠近。最终,Word2Vec 生成了一个具有语义信息的单词向量空间,可以用于各种自然语言处理任务。
2.1 CBOW(连续的词袋模型)
CBOW(Continuous Bag-of-Words)模型的目标是根据上下文单词来预测当前单词。
在CBOW模型中,首先将上下文单词的向量表示作为输入,通过一个隐藏层进行线性组合,然后通过一个输出层进行softmax操作,以预测当前单词的概率分布。
具体来说,CBOW模型将上下文单词的向量表示进行求和或平均,得到一个综合的表示,然后将该表示传递给隐藏层。隐藏层的神经元通过线性组合和非线性激活函数(通常是sigmoid或ReLU)将该综合表示转换为一个新的向量表示。最后,输出层使用softmax函数将隐藏层的输出转换为当前单词的概率分布。
CBOW模型适用于小型语料库和频繁出现的单词,因为它能够较好地捕捉常见单词的上下文信息,并生成相应的单词向量表示。
2.1.1 网络结构
CBOW网络结构由输入层、隐藏层和输出层组成。
- 输入层:输入层接收上下文单词的独热编码作为输入。每个单词都被编码为一个长度为词汇量大小的向量,其中只有一个元素为1,其余元素都为0。
- 隐藏层:隐藏层的节点数是根据设计的网络规模确定的。每个隐藏层节点都与输入层的所有节点连接,并且使用全连接的权重矩阵进行加权求和。隐藏层可以将输入的上下文单词的向量表示组合成一个更高维度的向量表示。
- 输出层:输出层是一个softmax分类器,它根据隐藏层的向量表示预测中心单词的概率。输出层的节点数等于词汇量大小,每个节点表示一个单词。通过softmax函数将隐藏层的向量表示映射为一个概率分布。
CBOW网络的训练目标是最大化预测中心单词的概率。通过反向传播算法,根据预测概率和实际标签之间的误差,可以更新权重矩阵和隐藏层的向量表示,以使得预测结果更接近实际标签。整个训练过程可以使用随机梯度下降等优化算法进行迭代更新。
2.1.2 代码
(待更新)
2.1.3 运行结果
(待更新)
2.2 Skip-gram(跳字模型)
Skip-gram(跳字模型)的目标与CBOW模型不同,它是根据当前单词预测上下文单词。
在Skip-gram模型中,对于给定的一个单词,它的上下文单词作为输入,而当前单词则是要预测的目标。具体来说,Skip-gram模型通过将当前单词的向量表示传递给隐藏层,然后通过输出层生成与目标单词相对应的上下文单词的概率分布。
Skip-gram模型使用了层级softmax或负采样的方法来处理大型词汇表,因为计算一个单词的概率分布需要对所有的词汇表进行遍历,这在大型词汇表中是非常耗时的。
Skip-gram模型适用于大型语料库和罕见单词,因为它能够更好地捕捉罕见单词的上下文信息,并生成相应的单词向量表示。
2.2.1 网络结构
Skip-gram网络结构也由输入层、隐藏层和输出层组成。
- 输入层:输入层接收中心单词的独热编码作为输入。每个单词都被编码为一个长度为词汇量大小的向量,其中只有一个元素为1,其余元素都为0。
- 隐藏层:隐藏层的节点数是根据设计的网络规模确定的。每个隐藏层节点都与输入层的所有节点连接,并且使用全连接的权重矩阵进行加权求和。隐藏层可以将输入的中心单词的向量表示映射为一个更低维度的向量表示。
- 输出层:输出层是一个softmax分类器,它根据隐藏层的向量表示预测上下文单词的概率。输出层的节点数等于词汇量大小,每个节点表示一个单词。同样,通过softmax函数将隐藏层的向量表示映射为一个概率分布。
Skip-gram网络的训练目标是最大化预测上下文单词的概率。与CBOW不同,Skip-gram算法通过中心单词来预测上下文单词,因此训练样本是中心单词与其周围的上下文单词对。通过反向传播算法,根据预测概率和实际标签之间的误差,可以更新权重矩阵和隐藏层的向量表示,以使得预测结果更接近实际标签。整个训练过程可以使用随机梯度下降等优化算法进行迭代更新。
2.2.2 代码
(待更新)
2.2.3 运行结果
(待更新)