生活例子理解:
CBOW(Continuous Bag of Words): 想象一下,你在一个餐厅点餐。当你看到菜单上的各种菜肴时,你可能会根据菜单上的描述和图片来猜测某个菜肴的味道。这里,菜单上的描述和图片就是上下文信息,而你想要猜测的菜肴就是中心单词。CBOW模型就像你一样,通过分析上下文信息(菜肴的描述和图片)来预测中心单词(菜肴的味道)。
Skip-Gram: 再想象一下,你是一个厨师,你在制作一道菜肴。当你的菜肴做好后,你想要描述它的味道。你可能会说:“这道菜味道鲜美,口感浓郁,非常适合搭配米饭。”这里,你描述的菜肴就是中心单词,而你用来描述它的词汇(如“味道鲜美”、“口感浓郁”)就是上下文信息。Skip-Gram模型就像厨师一样,通过分析中心单词(菜肴的味道)来预测上下文信息(菜肴的描述)。
总结来说,CBOW和Skip-Gram模型都旨在学习单词的分布式表示,即词向量。它们的主要区别在于输入和输出单词的方式不同。CBOW通过预测中心单词的上下文单词来学习词汇之间的关系,而Skip-Gram通过预测上下文单词的中心单词来学习词汇之间的关系。
CBOW与Skip-Gram区别:
CBOW(Continuous Bag of Words):
● 原理:CBOW模型通过计算中心单词的上下文单词的加权平均来预测中心单词。它假设上下文单词能够提供关于中心单词的信息,从而学习单词之间的关系。
● 计算过程:CBOW首先将上下文单词的词向量输入到神经网络中,通过神经网络的计算,得到一个上下文向量,然后使用这个上下文向量来预测中心单词。
● 适用场景:CBOW适用于那些上下文信息比较丰富、中心单词比较难于预测的情况。
Skip-Gram:
● 原理:Skip-Gram模型通过计算上下文单词的加权平均来预测中心单词。它假设中心单词能够提供关于上下文单词的信息,从而学习单词之间的关系。
● 计算过程:Skip-Gram首先将中心单词的词向量输入到神经网络中,通过神经网络的计算,得到一个上下文向量,然后使用这个上下文向量来预测上下文单词。
● 适用场景:Skip-Gram适用于那些中心单词信息比较丰富、上下文单词比较难于预测的情况。
原理:
Word2Vec模型使用的是神经网络,但它与传统的全连接神经网络不同,它采用了一种特殊的结构,即CBOW(Continuous Bag of Words)和Skip-Gram。这两种结构都是为了解决单词的分布式表示而设计的,即学习单词的词向量表示。
CBOW(Continuous Bag of Words):
CBOW模型通过计算中心单词的上下文单词的加权平均来预测中心单词。具体计算过程如下:
- 输入层:将中心单词的上下文单词的词向量作为输入。
- 嵌入层:上下文单词的词向量被输入到嵌入层,其中每个单词都映射到一个固定维度的向量。
- 平均池化层:将嵌入层的输出向量(即上下文单词的词向量)进行平均池化,得到一个平均向量。
- 隐藏层:平均向量被输入到隐藏层,隐藏层包含多个神经元,可以学习到上下文单词和中心单词之间的关系。
- 输出层:隐藏层的输出被输入到输出层,输出层包含一个神经元,用于预测中心单词的概率。
在训练过程中,网络会不断调整隐藏层和输出层之间的权重,以便更好地预测中心单词的概率。通过这种方式,CBOW模型可以学习到词汇之间的关系,并将每个词汇映射到一个固定大小的向量。
Skip-Gram:
Skip-Gram模型通过计算上下文单词的加权平均来预测中心单词。具体计算过程如下: - 输入层:将上下文单词的词向量作为输入。
- 嵌入层:上下文单词的词向量被输入到嵌入层,其中每个单词都映射到一个固定维度的向量。
- 隐藏层:嵌入层的输出向量(即上下文单词的词向量)被输入到隐藏层,隐藏层包含多个神经元,可以学习到上下文单词和中心单词之间的关系。
- 输出层:隐藏层的输出被输入到输出层,输出层包含一个神经元,用于预测中心单词的概率。
在训练过程中,网络会不断调整隐藏层和输出层之间的权重,以便更好地预测中心单词的概率。通过这种方式,Skip-Gram模型可以学习到词汇之间的关系,并将每个词汇映射到一个固定大小的向量。
这两种结构都旨在学习单词的分布式表示,即词向量。它们的主要区别在于输入和输出单词的方式不同。CBOW通过预测中心单词的上下文单词来学习词汇之间的关系,而Skip-Gram通过预测上下文单词的中心单词来学习词汇之间的关系。
个人理解:
在Word2Vec的CBOW模型中,预测矩阵并不是初始化设定的一个值,而是通过神经网络的训练过程自动学习得到的。预测矩阵的大小取决于词向量的维度和词汇表的大小。
具体来说,在CBOW模型中,我们首先将窗口中词的one-hot编码与变换矩阵相乘,然后将这些乘积相加,得到一个上下文向量。这个上下文向量代表了窗口中词的组合信息。
接下来,我们将这个上下文向量与预测矩阵相乘,以预测目标词。预测矩阵是一个二维数组,其中包含了神经网络的参数。这个矩阵的大小取决于词向量的维度和词汇表的大小。例如,如果词向量维度为5,词汇表中有10个单词,那么预测矩阵的大小可能是5x10。
将上下文向量与预测矩阵相乘后,我们得到一个预测向量。这个预测向量是一个长度为词汇表大小的向量,其中每个元素表示预测模型认为该单词出现的概率。为了得到概率分布,我们需要对预测向量进行softmax归一化,使得所有概率值之和为1。
最后,我们选择概率最大的词作为预测结果。这个预测结果是基于神经网络的训练过程自动学习得到的预测矩阵,它能够捕捉单词的语义信息,并为各种NLP任务提供强大的工具。
因此,预测矩阵并不是通过one-hot编码与变换矩阵运算得到的值与预测矩阵相乘得到的概率值,而是通过神经网络的训练过程自动学习得到的。预测矩阵的作用是生成一个概率分布,其中每个单词的概率对应于预测矩阵中的一个元素。
整体理解:
CBOW模型:
- 选择窗口:从训练文本中选择一个窗口,窗口的大小决定了预测的上下文范围。
- one-hot编码:将窗口中的每个词转换为one-hot编码。
- 变换矩阵:有一个变换矩阵,它是一个二维数组,包含神经网络的参数。
- 乘法和加法:将one-hot编码的窗口词与变换矩阵相乘,然后将这些乘积相加,得到一个上下文向量。
- 预测矩阵:还有一个预测矩阵,它也是一个二维数组,包含神经网络的参数。
- 预测:将上下文向量与预测矩阵相乘,得到一个预测向量。这个预测向量是一个长度为词汇表大小的向量,其中每个元素表示预测模型认为该单词出现的概率。为了得到概率分布,我们需要对预测向量进行softmax归一化,使得所有概率值之和为1。最后,我们选择概率最大的词作为预测结果。
Skip-Gram模型: - 选择窗口:从训练文本中选择一个窗口,窗口的大小决定了预测的上下文范围。
- one-hot编码:将窗口中的每个词转换为one-hot编码。
- 变换矩阵:有一个变换矩阵,它是一个二维数组,包含神经网络的参数。
- 乘法和加法:将one-hot编码的窗口词与变换矩阵相乘,然后将这些乘积相加,得到一个上下文向量。
- 预测矩阵:还有一个预测矩阵,它也是一个二维数组,包含神经网络的参数。
- 预测:将上下文向量与预测矩阵相乘,得到一个预测向量。这个预测向量是一个长度为词汇表大小的向量,其中每个元素表示预测模型认为该单词出现的概率。为了得到概率分布,我们需要对预测向量进行softmax归一化,使得所有概率值之和为1。最后,我们选择概率最大的词作为预测结果。
在CBOW模型中,我们使用上下文单词的one-hot编码与变换矩阵相乘,然后将这些乘积相加,得到一个上下文向量。这个上下文向量代表了窗口中词的组合信息。接下来,我们将这个上下文向量与预测矩阵相乘,以预测中心单词。
在Skip-Gram模型中,我们使用中心单词的one-hot编码与变换矩阵相乘,然后将这些乘积相加,得到一个上下文向量。这个上下文向量代表了中心单词的信息。接下来,我们将这个上下文向量与预测矩阵相乘,以预测与中心单词相关的其他词。
因此,在CBOW模型中,预测矩阵用于预测中心单词,而在Skip-Gram模型中,预测矩阵用于预测与中心单词相关的其他词