word2vec堆叠和doc2vec比较以及维度
句子转换成向量方法
1.使用word2vec对每个词进行取平均数
word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通过神经网络学习某个语言模型而产生的中间结果(权重矩阵)。具体来说,“某个语言模型”指的是“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。因此上面图片写word2vec模型实际上是错的,其实是CBOW/Skip-gram 模型,通过这两个预测词汇模型提供词汇训练的方式,损失的计算(利用了相似语境中出现的词语其语义也接近这一思路 例如:i love you 和 i like you 中love和like语义接近),通过这两个模型的损失降低过程,将输入层到隐藏层的权重矩阵(词向量)最优化,最后我们要的就是这个矩阵。 通过分词后计算词向量的平均值
2.通过doc2vec对每个句子向量化
基于上述的Word2Vec的方法,Quoc Le 和Tomas Mikolov又给出了Doc2Vec的训练方法。如下图所示,其原理与Word2Vec非常的相似。分为Distributed Memory (DM) 和Distributed Bag of Words (DBOW),可以看出 Distributed Memory version of Paragraph Vector
(PV-DM)方法与Word2Vec的CBOW方法类似,Bag of Words version of Paragraph Vector (PV-DBOW)与Word2Vec的Skip-gram方法类似。不同的是,给文章也配置了向量,并在训练过程中更新。熟悉了w2v之后,Doc2Vec便非常好理解。具体细节可以看原文《Distributed Representations of Sentences and Documents》
上述两种方法中,根据经验,更推荐第二种,因为根据先验概率来说,对文章也配置了向量,对整体的训练效果更好。
维度选择
我们拥有50,256,300,400,600的维度,维度越多包涵的信息量会就会越多,区分度就会更好,当然,训练的难度和时间也会大大加大。因此,需要在两者之间进行权衡,我们选择了400,维持较多的信息量,也不会训练过长的时间。
网友评论