Count based vs direct prediction
基于计数方法可以有效利用统计信息,并且捕获单词间的相似度,但是在单词的分析方面表现欠佳.
基于上下文窗口预测的方法如Skip-gram、CBOW等可以学习到单词相似度之外的复杂语义模式,但是无法很好利用共现统计信息.
Encoding meaning in vector differences
Glove 想要结合Count based 和 direct prediction的优势即既可以利用统计信息又可以很好的理解单词,其主要思想是共现概率的比值编码了含义成分.
Glove 需要构建 co-occurence Matrix ,其中:
- X i j X_{ij} Xij 代表单词 j 出现在上下文单词 i 的次数
- X i = ∑ k X i k X_{i}= \sum_{k}{X_{ik}} Xi=∑kXik 代表了任意 k 个单词出现在单词 i 上下文的次数
-
P
i
j
=
P
(
j
∣
i
)
=
X
i
j
/
X
i
P_{ij} = P(j|i)=X_{ij}/X_i
Pij=P(j∣i)=Xij/Xi 来代表着单词 j 在在单词 i 上下文出现的概率
为什么说共线概率比值蕴含了单词的意义成分?比如我们想要区分 ice 和 stream 两种状态,那么之间的关系可以用共现概率的比值来进行描述,令 x = solid,那么计算其出现在 ice 的上下文的概率,以及其出现在 stream 的上下文的概率. 可以看到两者概率都很小,这很难解释两者意义,以及区别,但是通过计算两者比值得到8.9一个很大的值,这就可以反映出solid出现在 ice 周围的概率远大于 stream 周围的概率,所以 solid 经常用来描述 ice.而 fashion 则比值接近 1,说明其与 water 和 fashion 的没有什么关系。 相比较单纯的co-occurrence probability,实际上co-occurrence probability的相对比值更有意义。
回顾 skip-gram 模型其中使用了 损失函数:
J
=
−
∑
i
∈
c
o
r
p
u
s
∑
j
∈
c
o
n
t
e
x
t
l
o
g
Q
i
j
J = - \sum_{i \in corpus}\sum_{j \in context} logQ_{ij}
J=−i∈corpus∑j∈context∑logQij
但是对于 glove 需要乘以单词 i 和单词 j 出现在一起的次数,所以上式子更改为:
J
=
−
∑
i
=
1
W
∑
j
=
1
W
X
i
j
l
o
g
Q
i
j
J = -\sum_{i=1}^{W}\sum_{j=1}^{W} X_{ij} logQ_{ij}
J=−i=1∑Wj=1∑WXijlogQij
对于
Q
i
j
Q_{ij}
Qij 使用的是 softmax 分母计算量大所以使用 Least Squares Model 另
P
i
j
^
=
X
i
j
\hat{P_{ij}} = X_{ij}
Pij^=Xij
Q
i
j
^
=
e
x
p
(
u
j
T
v
i
)
\hat{Q_{ij}} = exp(u_j^Tv_i)
Qij^=exp(ujTvi) 丢弃了原有的归一化因子,然后上式子修改为:
J
=
∑
i
=
1
W
∑
j
=
1
W
X
i
j
(
P
i
j
^
)
−
Q
i
j
)
)
2
J = \sum_{i=1}^{W}\sum_{j=1}^{W}X_{ij}(\hat{P_{ij}}) - Q_{ij}))^2
J=i=1∑Wj=1∑WXij(Pij^)−Qij))2
通常
X
i
j
X_{ij}
Xij 比较大,所以取log其结果为:
J
=
∑
i
=
1
W
∑
j
=
1
W
X
i
j
(
l
o
g
(
P
i
j
^
)
−
l
o
g
(
Q
i
j
)
)
2
=
∑
i
=
1
W
∑
j
=
1
W
X
i
j
(
l
o
g
(
X
i
j
)
−
u
j
T
v
i
)
)
2
\begin{aligned} J & = \sum_{i=1}^{W}\sum_{j=1}^{W}X_{ij}(log(\hat{P_{ij}}) - log(Q_{ij}))^2 \\ & = \sum_{i=1}^{W}\sum_{j=1}^{W}X_{ij}(log({X_{ij}}) - u_j^Tv_i))^2 \\ \end{aligned}
J=i=1∑Wj=1∑WXij(log(Pij^)−log(Qij))2=i=1∑Wj=1∑WXij(log(Xij)−ujTvi))2
权重
X
i
j
X_ij
Xij 不一定保证最优,所以引入 f 函数使其:
J
=
∑
i
=
1
W
∑
j
=
1
W
f
(
X
i
j
)
(
l
o
g
(
X
i
j
)
−
u
j
T
v
i
)
)
2
J = \sum_{i=1}^{W}\sum_{j=1}^{W}f(X_{ij})(log({X_{ij}}) - u_j^Tv_i))^2 \\
J=i=1∑Wj=1∑Wf(Xij)(log(Xij)−ujTvi))2
Glove 的优点:
- 训练快速
- 可以扩展到大型语料库
- 即使小的语料库,性能也很好
如何评估词向量
评估分为内部评估(Intrinsic Evaluation)和外部评估(Extrinsic Evaluation):
- Intrinsic Evaluation
- 在一个特殊\中间子任务上评估
- 计算快速
- 帮助去理解子系统
- 需要和真实任务正相关决定有用性 Needs positive correlation with real task to determine usefulness
- Extrinsic Evaluation
- 对真实任务进行评估
- 计算很慢
- 无法确定是该子系统除了问题还是其它子系统除了问题,或者内部交互出问题
- 如果替换子系统后系统系统性能提高了,那么可能改变是好的