word2vec 学习总结——模型总结

1、  word2vec 的两种实现方式 (两种模型) 

       word2vec的基本思想是,用目标词 w 和其上下文 context(w) 之间相互预测,在这个过程中训练得到词典中词的向量。因为是相互预测,所以就有两种不同的模型来实现这个算法:

     (1)一种是利用上下文 context(w) 来预测目标词 w 的的CBOW(continuous vag-of-words)模型

     (2)一种是利用目标词 w 来预测它的上下文的词 context(w),叫做skip-gram模型

        两种模型的形式如图所示(左边的是CBOW模型,右边的是skip-gram模型):

                                           

       两种实现方式的不同:

     (1)计算的时间复杂度不同。对于CBOW模型,每滑动一次窗口,预测的是一个中心词,因此,如果文本总共有V个词,那么复杂度是O(V)。对于skip-gram模型,每滑动一次窗口,都需要用中心词去预测窗口中的K个词,即每滑动一次窗口就要进行K词的预测计算,因此计算复杂度为O(KV)。

     (2)词向量的准确度不同。对于CBOW模型,每次用梯度调整参数(在word2vec中,词向量其实也是模型需要训练的一种参数)时,都是用中心词的梯度去调整上下文词,而在skip-gram中,每次会用k个词的梯度去调整模型参数,相对来说,训练的词向量准确度会更好一些。

参考:word2vec模型cbow与skip-gram的比较

2、word2vec 的两种框架         

       针对word2vec的模型实现,又有两种不同的框架:

      (1) 一种是 Hierarchical softmax 框架,这个框架的基础是Huffman 树,可以参考这个:word2vec 学习总结——基础知识。大概的过程是:

step 1:根据语料中的词频建立一颗Huffman 树,树的每个叶子节点对应词典中的一个词。

step 2:对于每一个训练样本 {x=(w_t-1,w_t+1,w_t-2,w_t+2 ),y=w_t},找到Huffman 树的根节点到叶子节点 w_t 的路径 l_w,这个路径上的每一个节点都是一个二分类器。

step 3:输入的 x 的几个词求和后形成新的向量作为输入,然后依次经过路径 l_w 上的每一个非叶子节点,最终到达w_t。

step 4:在这条路径的每一个节点上都会根据子节点的选择产生一个概率值,这些概率相乘之后作为最后的似然值,计算梯度,更新路径上非叶子节点的分类器的参数。

       具体的目标函数、梯度计算、参数更新,可以参考这篇文章:word2vec 中的数学原理详解(四)基于 Hierarchical Softmax 的模型

       (2)另一种是 negative sampling 框架。

         这个框架的基础是负采样,感觉这个框架下的计算跟Hierarchical softmax 框架下的计算非常像,只是在构造目标函数时的方式不一样(感觉这句话好废话),主要的过程如下:

step 1:对于每一个输入的训练样本  {x=(w_t-1,w_t+1,w_t-2,w_t+2 ),y=w_t},把它当做正样本。在词典中采样m个词,和x一起形成负样本

step 2:针对每个目标词(包括正样本和负样本),都有其对应的一个参数 θ,训练样本的 x 与相应的θ相乘,然后经过sigmod计算到对应y的概率值

step 3:第二步中的概率值相乘得到似然值,根据梯度上升更新各个参数 θ,以及输入的词向量。

       具体的负采样怎么做,目标函数、梯度计算、参数更新,可以参考这篇文章:word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型

       与Hierarchical softmax 框架相比,negative sampling 框架不再使用Huffman树,而是采用随机负采样,能大幅度提高性能,同时也能在词向量的质量上有所提高。

 

参考文章:

(1)word2vec 中的数学原理详解:超级详细的word2vec模型的讲解

(2)[NLP] 秒懂词向量Word2vec的本质:从另一种“输入向量”和“输出向量”的角度去理解word2vec,也是很经典的一种理解方式

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值