Word2Vec模型中有CBOW和Skip-Gram两种模式:
CBOW(多到一)是给定上下文来预测输入单词,训练方法为负采样
Skip-Gram(一到多)是给定输入单词来预测上下文,训练方法为哈夫曼树
训练步骤:
1.将输入的文本生成词汇表,统计词频选择前k个构成词汇表 vocab.txt。每个词对应生成one-hot向量,向量的维度是V
2.将输入的文本的每个词生成一个one-hot向量,如果不在词汇表中则向量全为0,保留每个词的原始位置
3.确定词向量的维度N
4.Skip-gram或CBOW的,模型训练
1)确定窗口大小window,对每个词生成2*window个训练样本,(i, i-window),(i, i-window+1),...,(i, i+window-1),(i, i+window)
例如:12345, win = 2, 词 3 . (3, 1) (3, 2) (3, 4) (3, 5) 4个样本。
2)确定batch_size,注意batch_size的大小必须是2*window的整数倍,这确保每个batch包含了一个词汇对应的所有样本
3)训练算法有两种:层次Softmax和Negative Sampling
4)神经网络迭代训练一定次数,得到输入层到隐藏层的参数矩阵,矩阵中每一行的转置即是对应词的词向量
CBOW模型流程,假设 Courpus = { I drik coffee everyday } ,根据 “I”“drink”“everyday”来预测“coffee”