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 型递归神经网络表明非线性模型也偏向单词表示的线性结构