在训练word2vec的时候,会介绍到两种模型优化方式:
- Hierarchical Softmax
- Negative Sampling
由于softmax在实际训练过程中需要构建一棵树,在比较少出现的类别对应的节点比较深,实际工程也比较麻烦,所以目前很多模型优化方法都采用负采样的方式,今天我们就简单介绍这种方法。
以word2vec为例子,已知中心词w为我们预测的词语,对应上下文的信息context(w)则为2c长度的词语,我们希望通过context(w)来预测w。
我们随机采样n个和w不相等的负样本,这些负样本和w共同组成一组训练样本,对于正例,我们希望最大化概率:
对于负例,我们希望最小化概率
统一用最大化形式表示得到
我们假设正例用i=0表示,则上述公式可以表示为:
然后对\theta求导
对x求导
然然后采用梯度下降法可以进行的学习。
在word2vec中,这里学习到的w表示的是context(w)的平均向量之和,如果继续采用链式法则,可以得到每个词向量的解,这里的\theta表示每个词类别的逻辑回归分类参数。
负采样的训练方式在训练word2vec的时候非常高效,相当于原来一个大的softmax分类改成多个逻辑回归,提高训练的效率。
负采样这个训练方式一般在改进的word2vec方法中都有用到,另外在softmax面临多个分类的时候也可以用到(例如大家熟悉的fasttext)
我会在后续经典论文解读中介绍用到negative sampling的相关论文
网友评论