自然语言处理:CBOW(哈夫曼树)与Skip-Gram模型

gensim库中的word2vev中模型主要使用了CBOW(哈夫曼树)与Skip-Gram模型。CBOW表示基于上下文来预测目标词,即输入是2c个上下文词(c表示窗口大小),输出是目标词的概率;Skip-Gram则是恰恰相反,输入是当前的目标词,输出则是上下文词的概率。
在确定了输入输出之后,其实训练的方式也就很明显了,(例如CBOW)输入层经过隐藏层最后softmax输出所有词的概率,然后反向传播梯度下降decrease loss。但这其中有一个很大的问题:从隐藏层到输出的softmax层的计算量很大,因为要计算所有词的softmax概率,再去找概率最大的值。这样的性能显然是对于一个embedding操作来讲是得不偿失的,因此,word2vec对这里做了很精妙的优化,本文首先来介绍基于哈夫曼树的word2vec。
在这里插入图片描述
由哈夫曼树的建树规则不难知道,每个叶子节点代表一个目标词,同时每个目标词也有一条路径代表了其编码规则。在word2vec中,我们采用逻辑回归的方法,规定沿着左子树走,那么就是负类(霍夫曼树编码1),沿着右子树走,那么就是正类(夫曼树编码0)。判别正类和负类的方法是使用sigmoid函数,对于n1-n2-n3-n4这条路径来讲,神经网络训练的目标就是要让走这条路径的可能性最大,这里我们可以先给出似然函数:
在这里插入图片描述
这里的似然函数其实就是对每一步的sigmoid求积,而我们的目标就是让这个概率最大,即通过最大似然的方式来优化这个函数。为了给出其一般过程,我们首先做一些定义:
在这里插入图片描述
以以下这一案例来进行讲解:str=“我喜欢观看世界足球”,目标词W为足球,目的是优化这个概率函数,求得适当的权重。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
CBOW模型流程举例
假设我们现在的Corpus是这一个简单的只有四个单词的document:{I drink coffee everyday}我们选coffee作为中心词,window size设为2也就是说,我们要根据单词"I","drink"和"everyday"来预测一个单词,并且我们希望这个单词是coffee。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值