Word2Vec的CBOW与Skip-gram模型如何构建训练数据集?
Word2Vec中CBOW与Skip-gram的训练数据及网络输入差异
我之前对CBOW和Skip-gram构建训练数据集的理解存在错误——如果按我之前的理解,两者训练数据集会完全相同,且在网络架构一致的情况下生成的词向量也会完全一致,这和实际情况不符。下面是两者正确的训练数据构造及网络输入逻辑:
CBOW模型
- 核心逻辑:用上下文词的向量(求和或取平均)作为输入,预测中心词
- 训练样本构造:假设窗口大小为2,给定句子
[词1, 词2, 词3, 词4, 词5]- 针对中心词
词3,输入是上下文的[词1, 词2, 词4, 词5],目标是词3,这构成一个训练样本
- 针对中心词
- 网络输入流程:将上下文每个词的one-hot向量输入嵌入层,得到对应词向量后做求和/平均,再传入输出层,预测中心词的概率分布
Skip-gram模型
- 核心逻辑:用中心词的向量作为输入,预测周围的每个上下文词
- 训练样本构造:同样窗口大小为2,句子
[词1, 词2, 词3, 词4, 词5]- 针对中心词
词3,会拆分成4个独立训练样本:- 输入
词3,目标词1 - 输入
词3,目标词2 - 输入
词3,目标词4 - 输入
词3,目标词5
- 输入
- 每个中心词与单个上下文词的配对,都是一个独立训练样本
- 针对中心词
- 网络输入流程:将中心词的one-hot向量输入嵌入层,得到词向量后传入输出层,预测单个上下文词的概率分布
两者的核心差异在于:CBOW是「多上下文词→一个中心词」的样本结构,Skip-gram是「一个中心词→每个上下文词」的拆分样本结构,输入和目标完全反转,因此即使基础网络架构类似,训练目标和样本分布的不同会导致最终生成的词向量存在明显差异。
内容的提问来源于stack exchange,提问作者Erik Zsolt Varga
相关产品推荐
相关产品推荐

