Word2Vec
前言
本文是对论文Distributed Representations of Words and Phrases and their Compositionality的介绍,其中涉及到的技巧和方法既适用于skip-gram模型也适用于cbow模型。
Skip-gram模型
模型介绍
给定词序列 w1,w2,...,wi−c,...,wi−1,wi,wi+1...,wi+c,...,wT :skip-gram模型的目标是得到 wi 的词向量表示 vwi,i=1,2,...,T ,而该词向量 vwi 可以用于对周围的词 wi−c,...,wi−1,wi+1...,wi+c 进行预测。
skip-gram模型的目标是最大化平均对数似然概率:
skip-gram的基本模型使用softmax函数对
由于 ▽log p(wO|wI) 的 计算开销与 W 成比例,而
层级softmax
对(2)式计算的一个替代方法是使用层级softmax,该方法的优点是我们不需要像(2)式一样对
W
个节点值进行估计来得到概率值,而只需要对
在层级softmax函数中,我们使用一棵二叉树来对输出层进行表示,
W
个词作为叶子节点,而每个内部节点表示从该节点到两个孩子节点的概率。所以,最终通过随机游走来得到每一个词出现的概率。
我们可以从根节点出发,选择一条合适的路径到达每一个叶子节点。假设
层级softmax定义
可以证明 ∑Ww=1p(w|wI)=1 。这表明, ▽log p(wO|wI) 的计算开销与 logL(wO) 成正比,平均不大于 logW 。在skip-gram模型中,每一个词有两个向量表示 vw 和 v′w ,而在层级softmax中,每个词只有一个表示 vw ,而对树中的每一个内部节点 n 有一个向量表示
负采样
除了层级softmax方法外,还可以使用NCE方法,该方法指出,一个好的模型应该可以区分数据和噪声。
对NCE进行简化,定义负采样:
subsample
由于一些常用词提供的信息量很少,比如the,a等,所以训练时,每一个训练集中的词 wi 以 P(wi) 的概率被忽略: