赞
踩
一句话,word2vec就是用一个一层的神经网络(CBOW的本质)把one-hot形式的词向量映射到分布式形式的词向量,为了加快训练速度,用了Hierarchical softmax,negative sampling 等trick。
Word2vec总共有两种类型--CBoW模型、Skip-gram模型,每种类型有两个优化算法--层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling),总共4种
CBoW模型(Continuous Bag-of-Words Model),是一种根据上下文的词语预测当前词语的出现概率的模型:
其中w(t)代表当前词语位于句子的位置t,同理定义其他记号。在窗口内(上图为窗口大小为5),除了当前词语之外的其他词语共同构成上下文。
其学习目标是最大化对数似然函数:
其中,w表示语料库C中任意一个词。
输入层是上下文的词语的词向量(什么!我们不是在训练词向量吗?不不不,我们是在训练CBOW模型,词向量只是个副产品,确切来说,是CBOW模型的一个参数。训练开始的时候,词向量是个随机值,随着训练的进行不断被更新)。
投影层/隐层对其求和,所谓求和,就是简单的向量加法。
输出层输出最可能的w。由于语料库中词汇量是固定的|C|个,所以上述过程其实可以看做一个多分类问题。给定特征,从|C|个分类中挑一个。
对于神经网络模型多分类,最朴素的做法是softmax回归:
softmax回归需要对语料库中每个词语(类)都计算一遍输出概率并进行归一化,在几十万词汇量的语料上无疑是令人头疼的。
然而,直接对词典里的V个词计算相似度并归一化,显然是一件极其耗时的impossible mission。为此,Mikolov引入了两种优化算法:层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)。
层次Softmax的方法最早由Bengio在05年引入到语言模型中。它的基本思想是将复杂的归一化概率分解为一系列条件概率乘积的形式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。