word2vec简介

简单总结一下这两天对word2vec的理解,方便以后忘记的时候查看。

简单的word2vec我理解是一个三层的神经网络,第一层是输入层,第二层是一个词表,可以通过输入词向量查表获得转换后的词向量,最后一层是输出层。

这里写图片描述

词向量可以用one-hot编码,缺点是维度太多,而且相关联词之间向量之间没有任何关联。通过词表可以转换成稠密的词向量表示,并且关联较大词的词向量距离较近,关联较少的词的向量距离远。转换后的词向量,在经过一层神经网络,转换成one-hot编码格式输出。经过损失函数比如softmax就可以计算预测值和真是值之间的损失函数。
但是当词量较大,训练样本较多的情况下,这样的训练是非常耗资源的,所以需要进行优化,NCE(Noise Contrastive Estimation)就是解决这个问题,经过转换,输出层不在计算全部的输出值,而是通过负采样的方式,计算一部分输出值,然后通过简化后的loss函数优化模型。词表层由于是one-hot查表的方式,计算量比较小。

矩阵方式理解word2vec模型。
Input[batch_size, vocabulary_size] * dic[vocabulary_size, embedding_size] * output[embedding_size, vocabulary_size]

参考:

  1. https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
  2. http://proceedings.mlr.press/v9/gutmann10a/gutmann10a.pdf
  3. https://arxiv.org/pdf/1410.8251v1.pdf
  4. https://www.tensorflow.org/tutorials/word2vec
  5. http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/word2vec.html

猜你喜欢

转载自blog.csdn.net/witsmakemen/article/details/79604634