我们知道可以通过向量的简单算术运算来表示词间的语法、语义规律,如king-queen=man-woman等。虽然对如何学习到这种规律仍不清楚,但Jeffrey提出了对数双线性回归模型来利用全局统计信息和局部上下文信息更好地学习到这种规律。同时,为了高效训练,只在共现矩阵的非0位置进行训练。
以下仅列出关键步骤推导,想了解更具体的,原文的推导很严谨细致,可以去看看。
(一)基于共现矩阵概率比值的loss
我们知道概率比值的定义如下(上一篇已经说过):
F
(
w
i
,
w
j
,
w
~
k
)
=
P
i
k
P
j
k
F(w_i,w_j,\widetilde{w}_k)=\frac{P_{ik}}{P_{jk}}
F(wi,wj,w
k)=PjkPik
这样表达我们可以更直观看到两个词的差异:
F
(
w
i
−
w
j
,
w
~
k
)
=
P
i
k
P
j
k
F(w_i-w_j,\widetilde{w}_k)=\frac{P_{ik}}{P_{jk}}
F(wi−wj,w
k)=PjkPik
通过内积把向量转为标量,使左右等式一致:
F
(
(
w
i
−
w
j
)
T
w
~
k
)
=
P
i
k
P
j
k
F((w_i-w_j)^T\widetilde{w}_k)=\frac{P_{ik}}{P_{jk}}
F((wi−wj)Tw
k)=PjkPik
为了优化,令F=exp(),展开求解可得:
e
x
p
(
w
i
T
w
k
~
)
e
x
p
(
w
j
T
w
k
~
)
=
P
i
k
P
j
k
\frac{exp(w_i^T\tilde{w_{k}})}{exp(w_j^T\tilde{w_{k}})}=\frac{P_{ik}}{P_{jk}}
exp(wjTwk~)exp(wiTwk~)=PjkPik
又
因
为
P
i
k
=
X
i
k
X
i
,
所
以
w
i
T
w
k
~
=
l
o
g
(
X
i
j
)
−
l
o
g
(
X
i
)
又因为P_{ik}=\frac{X_{ik}}{X_i} ,所以w_i^T\tilde{w_{k}}=log(X_{ij})-log(X_i)
又因为Pik=XiXik,所以wiTwk~=log(Xij)−log(Xi)
上述式子左边的式子符合交换律,但右边不符合,我们需要引入两个偏执项令左右完全等价,即:
w
i
T
w
k
~
+
b
i
+
b
j
=
l
o
g
(
x
i
k
)
w_i^T\tilde{w_{k}}+b_i+b_j = log(x_{ik})
wiTwk~+bi+bj=log(xik)
词对出现次数越多,那么这两个词在loss里影响越大。所以loss:
J
=
∑
i
,
j
=
1
V
f
(
x
i
j
)
(
w
i
T
w
k
~
+
b
i
+
b
j
−
l
o
g
(
x
i
k
)
)
2
J = \sum_{i,j=1}^Vf(x_{ij})(w_i^T\tilde{w_{k}}+b_i+b_j - log(x_{ik}))^2
J=i,j=1∑Vf(xij)(wiTwk~+bi+bj−log(xik))2
这里
(
w
i
T
w
k
~
+
b
i
+
b
j
−
l
o
g
(
x
i
k
)
)
2
(w_i^T\tilde{w_{k}}+b_i+b_j - log(x_{ik}))^2
(wiTwk~+bi+bj−log(xik))2是平方差形式,即让预测概率和实际概率越接近越好,这项就越小。
(平方差和交叉熵都可用于评价两分布)
而
f
(
x
i
j
)
f(x_{ij})
f(xij)可以理解为权重,需要满足:
1、
x
i
j
=
0
x_{ij}=0
xij=0时,
f
=
0
f=0
f=0:即共现次数为0的,不参加训练。
2、是个非减函数,因为共现次数越多,权重越大。
3、不能无限大,以防高频无用词的影响。
f
(
x
)
=
{
(
x
x
m
a
x
)
a
,
if
x
<
x
m
a
x
1
,
otherwise
f(x)=\left\{ \begin{array}{c} (\frac{x}{x_{max}})^a,&\text{if $x<x_{max}$} \\ 1, & \text{otherwise} \end{array} \right.
f(x)={(xmaxx)a,1,if x<xmaxotherwise
其中a是个恒大于0的数。
(二)训练步骤
1、生成term-term共现矩阵。
2、去除共现为0的。
3、生成训练集训练。
(三)复杂度
推导有些复杂,就不列出了。
O
(
g
l
o
v
e
)
=
O
(
∣
C
∣
0.8
)
,
O
(
w
o
r
d
2
v
e
c
)
=
O
(
∣
C
∣
)
O(glove)=O(|C|^{0.8}),O(word2vec)=O(|C|)
O(glove)=O(∣C∣0.8),O(word2vec)=O(∣C∣)
(四)参数选择
1、维度选择:一般200维,往后提升效率会越来越慢。
2、窗口选择:
(1)语法任务非对称窗口优于对称窗口,窗口大小选4,因为语法信息一般取决于即时上下文和词序。
(2)语义任务窗口选4,往后提升效率会越来越慢。
3、语料选择:语法任务数据集越大效果越好,语义上维基百科数据更好(仅1.6B)(这是因为维基百科数据实时更新,且百科内容都是相关词在一起)。
4、训练轮次:skip-gram、CBOW一次就ok,GloVe越多越好,但3-6轮后提升效率越来越慢。
(五)成果
1、词对推理任务取得当前最好结果,75%准确率。其中语义81.9%,语法69.3%。
2、在五个词相似度任务,42B数据集上glove均取得最佳,且效果优于CBOW在100B数据集的效果。
3、命名实体识别任务,除了测试集低于HPCA0.4个百分点,其他评价指标均高于当前所有模型。