word2vec是如何得到词向量的?

word2vec是如何得到词向量的?

最近在做文本的聚类,有老师傅推荐了word2vec,说是可以得到类似[0.792, −0.177, −0.107, 0.109, −0.542, ..…显示全部 ​

关注者

844

被浏览

125,647

关注问题​写回答

​邀请回答

​好问题 11

​1 条评论

​分享

登录一下,更多精彩内容等你发现

贡献精彩回答,参与评论互动

登录

查看全部 21 个回答

阿北

阿北

微软程序员,算法专家。公众号:Hello阿北

12 人赞同了该回答

word2vec有两种训练模型:CBOW模型和Skip-gram模型。CBOW模型根据上下文的词来预测中心词,而Skip-gram模型正好相反,根据中心词来预测上下文的词。

这里以CBOW模型来说明如何得到词向量。(Skip-gram训练过程原理类似)

假设我们现在的词典D={我,喜欢,到处,旅游}。在一次模型训练中,中心词为"喜欢",窗口大小为2,则上下文为"我"、"到处"、"旅游"。

 

CBOW模型训练过程

结合视频演示,CBOW的训练过程如下:

Step 1. 得到上下文词的onehot向量作为输入,同时得到预期的输出onehot向量(这个用来最后计算损失函数)。

Step 2. 输入层每个词的onehot与权重矩阵W相乘,得到对应的向量。(其实这就是对应词的词向量,矩阵的参数是网络通过训练得到的)。

Step 3. 将得到的三个向量相加求平均,作为输出层的输入。

Step 4. 将向量与输出层的权重矩阵U相乘,得到输出向量。

Step 5. 将softmax作用于输出向量,得到每个词的概率分布。

Step 6. 通过损失度量函数(如交叉熵),计算网络的输出概率分布与预期输出onehot向量的之间损失值。通过这个损失值进行反向传播,更新网络参数。

经过上述步骤的多次迭代后,矩阵W就是词向量矩阵,每个词通过onehot查询词向量矩阵就能得到其对应的词向量。

在实际应用中,word2vec会采用层次softmax和负采样方法优化训练过程,具体可参考:word2vec 中的数学原理详解

编辑于 2020-05-23

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI周红伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值