1.Word2vec

Distributional Hypothesis是说,上下文环境相似的两个词有着相近的语义word2vec算法也是基于Distributional的假设。

语言模型:在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP 中经常出现的『语言模型』(language model),这个模型的目的,就是判断 (x,y) 这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。

word2vec:将词语从高维稀疏向量表示转为低维稠密向量,word2vec是用一个一层的神经网络(即CBOW)把one-hot形式的稀疏词向量映射称为一个n维(n一般为几百)的稠密向量的过程。为了加快模型训练速度,其中的tricks包括Hierarchical softmax,negative sampling, Huffman Tree等。

Word2vec目的:它的最终目的,不是要把语言模型f训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量

Skip-gram 和 CBOW 模型

上面我们提到了语言模型

  • 如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』,一般使用中心词向量作为词的表征向量
  • 而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』,一般用背景词向量作为词的表征量

如果将Skip-gram模型的前向计算过程写成数学形式,我们得到:

 

𝑝(𝑤𝑜|𝑤𝑖)=𝑒𝑈𝑜𝑉𝑖𝑗𝑒𝑈𝑗𝑉𝑖p(wo|wi)=eUo⋅Vi∑jeUj⋅Vi

 

其中,𝑉𝑖Vi是Embedding层矩阵里的列向量,也被称为𝑤𝑖wi的input vector。𝑈𝑗Uj是softmax层矩阵里的行向量,也被称为𝑤𝑖wi的output vector。

因此,Skip-gram模型的本质是计算输入word的input vector与目标word的output vector之间的余弦相似度,并进行softmax归一化。我们要学习的模型参数正是这两类词向量。

Skip-gram 模型

 

 

CBOW 模型,更 Skip-gram 的模型并联不同,这里是输入变成了多个单词,所以要对输入处理下(一般是求和然后平均),输出的 cost function 不变

 

3.3. Word2vec 的训练trick

为什么要用训练技巧呢? 如我们刚提到的,Word2vec 本质上是一个语言模型,它的输出节点数是 V 个,对应了 V 个词语,本质上是一个多分类问题,但实际当中,词语的个数非常非常多,会给计算造成很大困难,所以需要用技巧来加速训练。

 

这里我总结了一下这两个 trick 的本质,有助于大家更好地理解,在此也不做过多展开,有兴趣的同学可以深入阅读参考资料1.~7.

hierarchical softmax

层次softmax,本质是把 N 分类问题变成 log(N)次二分类。层次Softmax是一个很巧妙的模型。它通过构造一颗二叉树,我们就将原始大小为V的字典D转换成了一颗深度为logV的二叉树。树的叶子节点与原始字典里的word一一对应,将目标概率的计算复杂度从最初的V降低到了logV 的量级。不过付出的代价是人为增强了词与词之间的耦合性。例如,一个word出现的条件概率的变化,会影响到其路径上所有非叶节点的概率变化,间接地对其他word出现的条件概率带来不同程度的影响。因此,构造一颗有意义的二叉树就显得十分重要。实践证明,在实际的应用中,基于Huffman编码的二叉树可以满足大部分应用场景的需求。

  • negative sampling
    • 本质是预测总体类别的一个子集。由于训练词向量模型的目标不是为了得到一个多么精准的语言模型,而是为了获得它的副产物——词向量。所以要做到的不是在几万几十万个token中艰难计算softmax获得最优的那个词(就是预测的对于给定词的下一词),而只需能做到在几个词中找到对的那个词就行,这几个词包括一个正例(即直接给定的下一词),和随机产生的噪声词(采样抽取的几个负例),就是说训练一个sigmoid二分类器,只要模型能够从中找出正确的词就认为完成任务。 

 参考链接:https://blog.csdn.net/bitcarmanlee/article/details/82291968

https://zhuanlan.zhihu.com/p/26306795

https://www.cnblogs.com/guoyaohua/p/9240336.html

posted @ 2020-05-02 15:32  ditingz  阅读(186)  评论(0编辑  收藏  举报