赞
踩
先修知识:
看上一讲的文章:https://blog.csdn.net/weixin_41332009/article/details/113920580
潜在语义分析使用的 SVD 这种count based模型与Word2Vec 这种 direct prediction模型,它们各有优缺点。
Count based模型
Direct Prediction
所以Manning教授等人想采取一种方法可以结合两者的优势,并将这种算法命名为GloVe(Global Vectors的缩写),表示他们可以有效的利用全局的统计信息。这里,“全局统计信息”就是指在整个语料库中,一个词语在另一个词语周围出现的概率。
如何有效的利用word-word co-occurrence count并能学习到词语背后的含义呢?
首先定义一些符号:对于矩阵
X
X
X,
X
i
j
X_{ij}
Xij 代表了单词
j
j
j 出现在单词
i
i
i上下文中的次数,则
X
i
=
∑
k
X
i
k
X_i = \sum_k X_{ik}
Xi=∑kXik 即代表所有出现在单词
i
i
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
j
j 出现在单词
i
i
i 上下文中的概率,即co-occurrence probability。
用一个例子来解释如何用co-occurrence probability来表示词语含义:
例如我们想区分"ice"与"steam",它们之间的关系可通过它们与不同的单词
x
x
x 的co-occurrence probability的比值来描述。例如对于solid,solid出现在ice周围的概率为
1.9
×
1
0
−
4
1.9 \times 10^{-4}
1.9×10−4, solid 出现在steam周围的概率为
2.2
×
10
−
5
2.2 \times 10{-5}
2.2×10−5.这两个概率本身没有什么意义,有意义的是它们的比值
P
(
s
o
l
i
d
∣
i
c
e
)
P
(
s
o
l
i
d
∣
s
t
e
a
m
)
\frac{P(solid|ice)}{P(solid|steam)}
P(solid∣steam)P(solid∣ice).这个比值为8.9,是一个较大的值。这是因为solid更常用来描述ice的状态而不是steam的状态,所以在ice的上下文中出现几率较大;对于gas则恰恰相反;而对于water这种描述ice与steam均可或者fashion这种与两者都没什么联系的单词,则比值接近于1。所以相较于单纯的co-occurrence probability,实际上co-occurrence probability的相对比值更有意义。
文章直接给出了GloVe模型的损失函数:
J
=
∑
i
,
j
=
1
V
f
(
X
i
j
)
(
w
i
T
w
^
j
+
b
i
+
b
^
j
−
l
o
g
X
i
j
)
2
J = \sum _{i,j = 1}^V f(X_{ij}) (w_i^T \hat w_j + b_i + \hat b_j - log X_{ij})^2
J=i,j=1∑Vf(Xij)(wiTw^j+bi+b^j−logXij)2
为了理解这个损失函数,我们先看最后一项 w i T w ^ j + b i + b ^ j − l o g X i j w_i^T \hat w_j + b_i + \hat b_j - log X_{ij} wiTw^j+bi+b^j−logXij, 其中:
以这个作为损失是因为经过一系列推导,我们希望 w i T w ^ j + b i + b ^ j = l o g X i j w_i^T \hat w_j + b_i + \hat b_j = log X_{ij} wiTw^j+bi+b^j=logXij。推导过程见https://zhuanlan.zhihu.com/p/60208480
f ( X i j ) f(X_{ij}) f(Xij)是个权值,加上这个权值是因为需要给那些较少发生的co-occurrence较小的权重。 f ( X i j ) f(X_{ij}) f(Xij)需满足:
最后再对词汇表中的词两两求一次损失,将所有的损失加起来得到最终的损失即可。
虽然GloVe的作者在原论文中说GloVe结合了SVD与Word2Vec的优势,训练速度快并且在各项任务中性能优于Word2Vec,但是我们应该持有怀疑的态度看待这一结果,可能作者在比较结果时对于GloVe模型参数选择较为精细而Word2Vec参数较为粗糙导致GloVe性能较好,或者换另一个数据集,改换样本数量,两者的性能又会有不同。实际上,在另一篇论文Evaluation methods for unsupervised word embeddings中基于各种intrinsic和extrinsic任务的性能比较中,Word2Vec结果要优于或不亚于GloVe。实际应用中也是Word2Vec被采用的更多,对于新的任务,不妨对各种embedding方法都做尝试,选择合适自己问题的方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。