1.Word2Vec是什么?
Word2Vec是用一个浅层神经网络将稀疏的词向量映射成为稠密向量的过程。
2.Word2Vec注重的不是模型,而是模型的参数。
word2vec的思路与自编码器(auto-encoder)的思路比较相似,都是先基于训练数据构建一个神经网络。当这个网络训练好以后,我们并不会利用这个训练好的网络处理新任务,我们真正需要的是这个模型通过训练数据所学得的参数。
3.Word2Vec的CBOW模型和Skip-gram模型
3.1 CBOW(Continuous Bag-of-Words Model)模型
CBOW模型是根据中心词的前C个或者后C个连续背景词来计算中心词出现的概率。
其具体流程为:
词向量最简单的方式是1-of-N的one-hot方式,在上图中:
(1)Input layer输入层:是上下文单词的one hot。假设单词向量空间的维度为V,即整个词库语料大小为V,上下文单词窗口的大小为C。
(2)图中W为权值共享矩阵,假设最终词向量是N维,则W的大小为 V * N,并将赋值初始化。
(3)假设语料中有一句话”我爱你”。如果我们现在以”爱”这个词为中心词,令C=2,则其上下文为”我”,”你”。模型把”我” “你”的onehot形式作为输入,其大小为1*V。C个1*V大小的向量分别跟同一个V * N大小的权值共享矩阵W相乘,得到的是C个1*N大小的隐层hidden layer。
(4)C个1*N大小的hidden layer取平均,得到一个1*N大小的向量,即图中的Hidden layer。
(5)输出权重矩阵W’为N*V,并对其进行相应的初始化工作。
(6)将得到的Hidden layer向量 1*N与输出矩阵W’相乘,再用softmax处理,得到1*V的向量,此向量的每一维代表语料中的一个单词。概率中最大的index所代表的单词为预测出的中心词。
(7)求loss function的的极小值。
其具体步骤可总结为下图:
3.2Skip-gram模型
Skip-gram模型是根据某中心词,然后分别计算它前后出现几个背景词的各个概率。
具体例子参照文章一文详解 Word2vec 之 Skip-Gram 模型(结构篇)
3.3CBOW模型与Skip-gram模型的比较
总体来讲:CBOW模型比Skip-gram模型的比快,但Skip-gram模型比CBOW模型准确。
具体分析参照文章cbow 与 skip-gram的比较
4.模型训练速度的提升方法Hierarchical Softmax和Negative Sampling
特别需要注意的参数:
(1)sg : {0, 1}, 可选;训练模型: 1表示skip-gram; 0表示CBOW.
(2)hs : {0, 1},如果为1, 将用hierarchical softmax 训练模型.如果为0, 并且`negative`不为0,则将采样负采样训练模型。
参考文章:
https://yq.aliyun.com/articles/176904
https://zhuanlan.zhihu.com/p/37477611
https://www.cnblogs.com/pinard/p/7249903.html
https://www.cnblogs.com/pinard/p/7243513.html