BLOG

个人博客,记录学习与生活

Word2Vec

Published July 6, 2020, 2:26 p.m. by kkk

两类架构

于2013年提出,共有两边论文,第一篇论文1从其它研究技术介绍入手,主要提出了两个词向量表示的网络模型,其思想主要继承自NNLM(Feedforward Neural Net Language Model)、RNNLM(Recurrent Neural Net Language Model),利用上下文信息来构建单词的向量表示形式,面向准确性可扩展性,主要提出了两种架构:

  1. CBOW(Coninuous Bag-of-Words),网络输入是上下文单词,输出是当前词,都是One-hot表示形式,输入到隐层时是去各上下文单词向量的平均。即通过上下文来预测当前词。
  2. Skip-gram,网络输入时当前词,输出是上下文单词。通过当前词来预测上下文。

两个网络结构都较为简单,除去输入和输出层,只含有一个隐层,并且隐层都没有激活函数(或者说采用线性激活函数),训练目标都相同,是为了获取从输入到隐层的映射向量,此即词典中各单词的最终向量表示

三项技术

第二篇论文2对于对Word2vec模型(主要是Skip-gram)中的技术细节做了描述,三个技术:

  1. Hierarchical Softmax。 由Morin、Bengio提出3,对于词典中单词数量很大的情况,如果直接采用Softmax需要计算所有的词典向量,复杂度为O(N),采用层次Softmax之后可以优化为O(logN)。 通过构建哈夫曼树,将原来的概率计算变为各节点概率乘积的形式,对于某一单词的概率,只需计算从根节点到该单词节点上的概率乘积即可。可以理解为多个Logistic Regress的叠加,毕竟对于二分类算法LR、SVM,构造多分类的方法就是叠加多个二分类器。 $$ p(w|w_i)=\prod_{j=1}^{L(w)-1}\rho([[n(w,j+1)=ch(n(w,j))]]\cdot {v_{n(w,j)}^\prime}^T v_{w_I}) $$ 公式乍看较为复杂,实质就是从根节点到目标节点上的概率累乘值(不含根节点,根节点概率为1)。$L(w)$是目标节点的高度,所以$L(w)-1$就是从根节点到目标节点的路径,$\rho()$是logistic函数,由于哈夫曼树是二叉树,每个非叶节点都只有左右两个子节点,两个子节点概率值相加就是该节点概率值,$n(w,j)$是距离在此路径上距离目标节点$w$距离为$j$的节点,$ch(n(w,j))$是节点$n(w,j)$的某一固定子节点(固定为左节点或是右节点),$[[x]]$是一个分段函数,当$x$为真时为1,为假时为-1,后面则是输入中心词向量和该词向量的点乘,表示两者间的相似程度。实际上累乘项只有两种情况:$\rho({v_{n(w,j)}^\prime}^T v_{w_I})$、$\rho(-{v_{n(w,j)}^\prime}^T v_{w_I})$,由于logistics函数的性质: $$ \rho(x) + \rho(-x) = \frac{1}{1+e^x} + \frac{1}{1+e^{-x}}=1 $$ 即对于霍夫曼树上的某一非叶结点,要么先左子节点遍历,要么向右子节点遍历,两者概率值相加为1,也就确保所有叶节点的概率值相加也为1,确保了归一化。
  2. Negtive Sampling。 Hierarchical softmax的一个的替代方法(启发式),优化思路是假设数据来自于真样本和负样本,利用Logistic Regression来从负样本中找到正本,思想及推导可见4,通过一个分布函数找到$K$个负样本,然后进行判断(每个样本找$K$个负样本) 具体而言,对于一个单词,输出值为: $$ \log \sigma(v_{c}\cdot v_w) + \sum_{i=1}^K E_{w_i\sim P_n(c)}[\log \sigma(-v_{ci} \cdot v_w)] $$ 此处的分布函数$Pn(c)$为类似形式: $$ \frac{{P_{word(c)}}^{3/4}}{Z} $$ $P_{word(c)}$为unigram分布,按各单词频率加权进行均匀分布
  3. Subsampling of Frequent Words。 NLP相关的优化,考虑到某些常见单词会出现在很多单词的上下文之中,但相关性并不大,可以进行一定的过滤处理,具体如下: $$ P(w_i) = 1 - \sqrt{\frac{t}{f(w_i)}} $$ 其中$f(w_i)$为单词$w_i$的词频(出现频率),$t$为一超参数,论文中说一般取$10^{-5}$附近的数。这个概率是单词的丢弃概率,即对于样本中的词,预处理的时候按此概率进行丢弃。

对于Word2Vec的参数学习、更新过程,包括输出层采用Softmax、Hierarchical Softmax、Negative Sampling三种不同处理时的学习,可参阅5



  1. Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. ICLR Workshop, 2013. 

  2. Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]//Advances in neural information processing systems. 2013: 3111-3119. 

  3. Frederic Morin and Yoshua Bengio. Hierarchical probabilistic neural network language model. In Pro- ceedings of the international workshop on artificial intelligence and statistics, pages 246–252, 2005. 

  4. Goldberg Y, Levy O. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method[J]. arXiv preprint arXiv:1402.3722, 2014. 

  5. Rong X. word2vec parameter learning explained[J]. arXiv preprint arXiv:1411.2738, 2016. 


Share this post
< Pre: TensorFlow使用——模型操作 Pos: [KDD2014]DeepWalk >
No comments
Similar posts
Add a new comment