word2vec原理学习

1.word2vec模型

https://zhuanlan.zhihu.com/p/27234078 讲的非常好!

word2vec原理学习

 这里说到了上面的这个结论,我的理解是,学习到的kitten和cat在空间中会更接近吗?难道只能通过和其他词的平行四边形才ok??

嗯,后面说了,训练的嵌入向量也会非常地相似。

skip的当前单词预测上下文的意思是,有一个window,控制生成的训练样本,inputword是当前词,那么outputword就是它附近的词,这样的词对来组成训练数据。训练完最终要的是隐层的嵌入矩阵。

负采样是什么:通过这篇文章我的理解是,如果vocab是10000,那么在更新一个词对时,就需要更新其他9999个单词,这样更新参数量会非常大,而负采样,会在每次学习一个样本时只更新模型的部分参数,比如负采样了5个单词,那么共更新6个神经元的,如果嵌入向量大小为300,那么这样就会大大减少更新次数,而负采样的单词是基于单词的频率的,频率越高,被采概率越大。

2.负采样

2020-3-14更新————————————

那么负采样在代码中具体实现是怎么样的呢?怪不得我每次想起来负采样印象都不深刻,就是因为没有代码来支撑啊!

是将不是负样本的那些词向量固定?还是说dropout了?

https://www.cnblogs.com/pinard/p/7249903.html 原来还有基于负采样的skip和cbow模型,和原始的是有差别的,这个给出了推导计算过程。

https://medium.com/towardsdatascience/word2vec-negative-sampling-made-easy-7a1a647e07a4 这个也给出了基于负采样的实现,看来是个大块头,我一时解决不了。