word2vec原理

前言:word2vec,一个很简单的算法,被网上的一些博客说的太复杂了…,很不利于初学者入门。基于此,写一个简单易懂的word2vec算法原理与大家分享。希望可以帮助到看到这篇博客的你。

目录:
1 模型输入与输出
2 传统的word2vec原理
3 改进的word2vec–引入哈夫曼树

1 模型输入与输出
通过投影层之后,最终的输入是一个向量。输出是要预测的第i个词的概率或概率分布,为了与真实标签(第i个词的概率或概率分布)求损失。
Word2vec训练是用一个大文本(文本中包含了很多句子),可以有多种训练模式,但不管什么模式最终都是要得到一个向量作为最终输入。比如,预测第i个词时用这个词前后k个词为依据(一般以第i个词前后这k个词的平均向量当输入),这种情况就是CBOW模式。当然也有其他方法,比如当预测第i个词以这个词之前的词的情况当依据(用这个词之前的词的平均向量作为最终输入)。或者预测第i个词以上一个词作依据(用上一个词的向量作最终输入)。以什么模式只是影响了最终输入的向量,对输入后的w2v算法框架是没有影响的,用什么模式不是算法推导的主要关注点。
所以,本文只以CBOW模式作为例子讲w2v的原理。

2 传统的word2vec原理
例:比如现在有训练文本为:i am a student i love study and …
在这里插入图片描述

这样,每个样本都可以与真实的概率分布计算得到一个损失,模型的损失函数也就可以表达出来,损失函数中的参数是神经网络中的参数。

3 改进的word2vec–引入哈夫曼树
<1> 为什么要引入哈夫曼树?
传统的w2v算法在进行全连接操作时,参数太多、计算量太大,不利于训练。所以,引入哈夫曼树来提高训练速度。
<2> 构建哈夫曼树
暂时先抛开w2v原理,我们现在只关注如何构建一棵哈夫曼树。
例:现在有8个数,E:2,B:6,F:8,G:16,C:23,H:34,D:35,A:80,构建一棵树使数值越大的数越靠近树的根部。
如图,这就是哈夫曼树(当然,哈夫曼树的生成还有其他方式):
在这里插入图片描述
这样做的好处:在搜索值较大的数所花费的次数就较少。
同理,我们对本领域的原始训练文本中词统计的出现次数,按如上的方式,出现次数越多的词越靠近根部。建成的这棵树叶节点的个数就是训练文本中词的个数。这样,为我们后续改进的算法减少了时间复杂度(如何减少时间复杂度等把改进算法讲完后再讲解),提高了模型的训练速度。
训练文本中的词建好哈夫曼树后如图:
在这里插入图片描述
其中,节点中的数字表示该词在训练文本中出现的次数,黄色的fi表示每一个二分类器,定义往左为”1”,往右为”0”。

<3> 改进后的w2v原理
还是用上述例子:原始训练文本为i am a student i love study and …
预测第i个词的概率,以预测第四个单词”student”为例:
在这里插入图片描述
同理,训练文本中其他的单词的概率也可以求出。然后用极大似然法求得模型的损失函数,得到的损失函数中含有各个分类器fi的参数(即模型参数)。然后优化损失函数,更新参数,求解模型。

注:对哈夫曼树减少模型训练的时间复杂度的解释
因为在训练文本中出现次数较多的词在靠近根部,这些词求概率的计算次数就比较少,计算次数较少的词占大多数,对于所有的词,求所有的词的概率的计算次数也就相对较少。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值