为啥word2vec的向量是静态的?

大家会经常听到说w2v产出的向量是静态的,而像elmo或者bert是动态的,可以解决一词多义的问题,原因是elmo或者bert在预测的时候,是会根据输入重新走一遍模型,所以elmo或者bert又称之为预训练模型(PTM)。

今天我听到有人问:如果我在用word2vec的时候,我也把输入重新走一遍word2vec,那不同的上下文中的同一个词得到的embedding也是不一样的?

结论是:即使word2vec在预测的时候重新走一遍模型,得到的embedding还是固定的。这是由word2vec模型结构决定。

我们可以看一下word2vec的模型过程,参考word2vec详解-基础 - 知乎

 等模型训练好之后,W和W’就固定了。那对于一个词来说,不论任何时候,是训练的时候还是重新走一遍预测的时候,它的向量都是固定的,都是W*x(即图中I*D)。一般来说x是one-hot编码,所以W*x其实就是查字典操作(look-up),取对应的词的词向量,是固定的,与上下文无关的。

那我们看看为啥bert可以做到动态的?

关键在于bert在计算每个词向量的时候,不是简单的查字典,而是会跟其他词进行一个交互的,最后在此交互基础上,得到自己的词向量表达(通过self attention的q、k、v)。这种方式,它是可以结合上下文的语境的。所以当我们在预测,重新走一遍模型的时候,不同的句子,上下文不同,经过self-attention之后,得到的词向量也是不同的,从而可以解决一词多义的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值