1 中心点
在这篇文章中,提出了几个Skip-gram 模型的扩展。在训练过程中对频繁词进行二次采样可以显著地加速(约2倍-10倍),并提高较低频率词表示的准确性。
提出了一种简化的噪声对比估计(NCE)变体来训练 Skip-gram 模型,与之前工作中使用的更复杂的分层 Softmax 相比,该模型有更快的训练速度和更好的频繁词的向量表示
2 介绍
单词表示,不能很好表示不是单个单词组成的习语短语。例如,“波士顿环球报”是一份报纸,所以它不是“波士顿”和“环球报”意思的自然组合。
因此,使用向量表示整个短语使 Skip-gram 模型更具表现力。
最后,我们发现了 Skip-gram 模型的另一个有趣的性质。我们发现,简单的向量加法通常可以产生有意义的结果。例如,vec(“俄罗斯”) + vec(“河”)接近vec(“伏尔加河”),vec(“德国”) + vec(“首都”)靠近vec(“柏林”)。
这种构成性表明,通过对单词矢量表示进行基本的数学运算,可以获得不明显的语言理解程度。
Skip-gram
Skip-gram 模型的训练目标是:在句子或文档中,找到对预测周围单词有用的单词表示。
给定训练单词序列 w 1 , w 2 , w 3 , w T w_1, w_2, w_3, w_T w1,w2,w3,wT,Skip-gram 模型的目标是最大化平均对数概率
1 T ∑ t = 1 T ∑ − c ≤ j ≤ c , j ≠ 0 log p ( w t + j ∣ w t ) \frac{1}{T} \sum_{t=1}^{T} \sum_{-c \leq j \leq c, j \neq 0} \log p\left(w_{t+j} \mid w_{t}\right) T1t=1∑T−c≤j≤c,j=0∑logp(wt+j∣wt) 其中,c 是训练的上下文大小;
Skip-gram 用 softmax 函数定义 p ( w t + j ∣ w t ) p(w_{t+j}|w_t) p(wt+j∣wt)
p ( w O ∣ w I ) = exp ( v w O ′ τ w I ) ∑ w = 1 W exp ( v w ′ v w I ) p\left(w_{O} \mid w_{I}\right)=\frac{\exp \left(v_{w_{O}}^{\prime} \tau_{w_{I}}\right)}{\sum_{w=1}^{W} \exp \left(v_{w}^{\prime} v_{w_{I}}\right)} p(wO∣wI)=∑w=1Wexp(vw′vwI)exp(vwO′τwI) v w v_w vw 和 v w ′ v'_w vw′ 分别是 w w w 的输入和输出向量表示, W W W 是词典中单词数。
不过概率和 W W W 有关,计算复杂度有 1 0 5 − 1 0 7 10^5 -10^7 105−107
分层Softmax
与完全 SoftMax 近似且高效计算的是分层 SoftMax,计算复杂度为 l o g 2 ( W ) log_2(W) log2(W)
分层 SoftMax 使用输出层的二叉树表示,以 W 单词作为其叶子,并且每个节点显式地表示其子节点的相对概率。这些定义了为单词分配概率的随机漫游。
分层 SoftMax 定义 p ( w O ∣ w I ) p(w_O|w_I) p(wO∣wI) 为:
p ( w ∣ w I ) = ∏ j = 1 L ( w ) − 1 σ ( ⟦ n ( w , j + 1 ) = ch ( n ( w , j ) ) ⟧ ⋅ v n ( w , j ) ′ T v w I ) p\left(w \mid w_{I}\right)=\prod_{j=1}^{L(w)-1} \sigma\left(\llbracket n(w, j+1)=\operatorname{ch}(n(w, j)) \rrbracket \cdot {v'_{n(w, j)}}^T v_{w_{I}}\right) p(w∣wI)=j=1∏L(w)−1σ([[n(w,j+1)=ch(n(w,j))]]⋅vn(w,j)′TvwI) 其中, n ( w , j ) n(w, j) n(w,j) 是从根到 w 的路径上的第 j j j 个结点;
L ( w ) L(w) L(w) 是这条路径的长度;这样 n ( w , 1 ) = r o o t n(w,1)=root n(w,1)=root, n ( w , L ( w ) ) = w n(w, L(w))=w n(w,L(w))=w
c h ( n ) ch(n) ch(n) 是 n 的任意一个固定子结点
⟦ x ⟧ \llbracket x \rrbracket [[x]] 为 1 如果 x 为真,否则为 -1
σ ( x ) = 1 / ( 1 + e x p ( − x ) ) \sigma(x)=1/(1+exp(-x)) σ(x)=1/(1+exp(−x))
现在计算概率的计算复杂度为 L ( w O ) L(w_O) L(wO),平均不超过 l o g W logW logW
分层 SoftMax 使用的树的结构对性能有相当大的影响。文章使用了二进制霍夫曼树,将短码分配给频繁出现的单词
负采样
分层 Softmax 的另一种替代方法是噪声对比估计(NCE)。它假设一个好的模型应该能够通过 Logistic 回归来区分数据和噪声。
Skip-gram 模型只关心学习高质量的向量表示,所以只要向量表示保持其质量,我们就可以自由地简化 NCE。我们根据目标定义负抽样(NEG):
log σ ( v w O ′ T v w I ) + ∑ i = 1 k E w i ∼ P n ( w ) [ log σ ( − v w i ′ T v w I ) ] \log \sigma\left({v'_{w_O}}^T v_{w_I}\right)+\sum_{i=1}^{k} \mathbb{E}_{w_{i} \sim P_{n}(w)}\left[\log \sigma\left(-{v'_{w_i}}^Tv_{w_{I}}\right)\right] logσ(vwO′TvwI)+i=1∑kEwi∼Pn(w)[logσ(−vwi′TvwI)]
频繁词子采样
有一些词会频繁出现(如 in、the、a) 等,提供的信息会很少
针对稀有词和频繁词之间的不平衡,我们采用了一种简单的二次抽样方法:一定概率丢弃训练集中的每个词 w i w_i wi
P ( w i ) = 1 − t f ( w i ) P\left(w_{i}\right)=1-\sqrt{\frac{t}{f\left(w_{i}\right)}} P(wi)=1−f(wi)t 其中, f ( w i ) f(w_i) f(wi) 是单词 w i w_i wi 的频率;
t t t 是被选择的阈值,一般为 1 0 − 5 10^{-5} 10−5
频率大于 t t t 的单词进行积极的子采样。这个公式是启发式的,但在实践中效果很好。
3 结果
Skip-gram 的线性使其向量更适合于这种线性类比推理。
标准 S 型递归神经网络表明非线性模型也偏向单词表示的线性结构