美文网首页
02-25:NN/word2vec算法

02-25:NN/word2vec算法

作者: 是黄小胖呀 | 来源:发表于2021-02-25 22:42 被阅读0次

NN/word2vec算法

NN:神经网络

word2vec算法其实是基于训练数据构建一个神经网络

CBOW训练过程

input  onehot V

---W=V*N

hidden N

---w'=N*V

output V个分类上的概率

构建loss:与groud truth中的one hot比较,求loss function的的极小值。

(最后预测输出向量时候,大小是1*V的向量,本质上是个多分类的问题。通过hierarchical softmax的技巧,把V分类的问题变成了log(V)次二分类。

多分类问题的损失函数是:多分类交叉熵)

CBOW:多个预测一个,skip-gram:一个预测多个

CBOW/skip-gram模型结构

word2vec可以分为两部分:模型与通过模型获得的词向量。

word2vec的思路与自编码器(auto-encoder)的思路比较相似。都是先基于训练数据构建一个神经网络。当这个网络训练好以后,我们并不会利用这个训练好的网络处理新任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵——后面我们将会看到这些权重在Word2Vec中实际上就是我们试图去学习的“word vectors”。基于训练数据建模的过程,我们给它一个名字叫“Fake Task”,意味着建模并不是我们最终的目的。

上面提到的这种方法实际上会在无监督特征学习(unsupervised feature learning)中见到,最常见的就是自编码器(auto-encoder):通过在隐层将输入进行编码压缩,继而在输出层将数据解码恢复初始状态,训练完成后,我们会将输出层“砍掉”,仅保留隐层。

所以说:一般我们用『输入向量』,也就是输入层到隐藏层的网络权重作为词向量。

更新20210314:

思考一个问题,为什么负采样可以成立?

负采样计算出来的梯度和极大似然计算出的梯度近似

(1)随即样本数量越多,样本平均值就会有更高的概率接近概率分布的平均值。

这个也是为什么从根本上机器学习尽可能想用比较大的batch size去估计真实的梯度函数的值。

(2)softmax的模型的似然函数最大化估计(MLE)梯度函数的表达式,都需要我们明确的计算 

(3)这也就是说当噪音对真实数据的比例增加,NCE梯度趋近于MLE梯度。

这也就是使用NCE会成功的根本原因。

参考资料

1、小白都能理解的通俗易懂word2vec详解

https://blog.csdn.net/bitcarmanlee/article/details/82291968

2、[NLP] 秒懂词向量Word2vec的本质

https://zhuanlan.zhihu.com/p/26306795

3、word2vec的损失函数

https://zhuanlan.zhihu.com/p/157835184

4、[译] Noise Contrastive Estimation 负采样的理论基础

https://zhuanlan.zhihu.com/p/76568362

相关文章

网友评论

      本文标题:02-25:NN/word2vec算法

      本文链接:https://www.haomeiwen.com/subject/rxjpfltx.html