1.GLOVE
Word2vec只关注局部,没有考虑全文语言特征。因此引出使用全局统计信息的GLOVE(Global Vectors for Word Representation),融入全局的先验统计信息,可以加快模型的训练速度,又可以控制词的相对权重。
现分别计算在ice和steam出现的情况下solid、gas、water、fashion出现的概率,如下表所示
Probability and Ratio | k=solid | k=gas | k=water | k=fashion |
---|---|---|---|---|
p(k|ice) | 1.9 × 1 0 − 4 1.9 \times10^{-4} 1.9×10−4 | 6.6 × 1 0 − 5 6.6 \times10^{-5} 6.6×10−5 | 3.0 × 1 0 − 3 3.0 \times10^{-3} 3.0×10−3 | 1.7 × 1 0 − 5 1.7 \times10^{-5} 1.7×10−5 |
p(k|steam) | 2.2 × 1 0 − 5 2.2 \times10^{-5} 2.2×10−5 | 7.8 × 1 0 − 4 7.8 \times10^{-4} 7.8×10−4 | 2.2 × 1 0 − 3 2.2 \times10^{-3} 2.2×10−3 | 1.8 × 1 0 − 5 1.8 \times10^{-5} 1.8×10−5 |
p(k|ice)/p(k|steam) | 8.9 8.9 8.9 | 8.5 × 1 0 − 2 8.5 \times10^{-2} 8.5×10−2 | 1.36 1.36 1.36 | 0.96 0.96 0.96 |
从数据中可看出
1)k=water时,k与单词ice和steam均相关且 p(k|ice)/p(k|steam) 接近1
2)k=solid时,k与单词ice相关但与steam不相关且 p(k|ice)/p(k|steam) 很大
3)k=gas时,k与单词ice不相关但与steam相关且 p(k|ice)/p(k|steam) 很小
4)k=fashion时,k与单词ice和steam均不相关且 p(k|ice)/p(k|steam) 接近1
p(k|i)/p(k|j)的值 | 单词j,k相关 | 单词j,k不相关 |
---|---|---|
单词i,k相关 | 接近1 | 很大 |
单词i,k不相关 | 很小 | 接近1 |
假设
X
X
X为共现词频矩阵
N
×
N
N\times N
N×N,
N
N
N为词的个数。
x
i
j
x_{ij}
xij表示词
i
,
j
i,j
i,j在文本中的共现词频。单词k出现在单词i语境中的概率,即条件概率
P
i
j
=
x
i
j
x
i
P_{ij}= \frac {x_{ij}}{x_i}
Pij=xixij。因此得到 两个调条件概率的比率
r
a
t
i
o
i
,
j
,
k
=
P
i
k
P
j
k
ratio_{i,j,k}=\frac {P_{ik}}{P_{jk}}
ratioi,j,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
,
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为指数函数,因此得:
F
(
(
w
i
−
w
j
)
T
w
~
k
)
=
F
(
w
i
T
w
~
k
)
F
(
w
j
T
w
~
k
)
=
P
i
k
P
j
k
F((w_i-w_j)^T\widetilde w_k)=\frac {F(w_i^T\widetilde w_k)}{F(w_j^T\widetilde w_k)}=\frac {P_{ik}}{P_{jk}}
F((wi−wj)Tw
k)=F(wjTw
k)F(wiTw
k)=PjkPik
然后有:
F
(
w
i
T
w
~
k
)
=
P
i
k
=
X
i
k
X
i
F(w_i^T\widetilde w_k)=P_{ik}=\frac {X_{ik}}{X_i}
F(wiTw
k)=Pik=XiXik
令F=xep,于是有:
w
i
T
w
~
k
=
l
o
g
(
X
i
k
)
−
l
o
g
(
X
i
)
w_i^T\widetilde w_k=log(X_{ik})-log(X_i)
wiTw
k=log(Xik)−log(Xi)
由于
l
o
g
(
X
i
)
log(X_i)
log(Xi)和
k
k
k是独立的,于是增加bias term
b
i
b_i
bi和
b
k
b_k
bk:
w
i
T
w
~
k
+
b
i
+
b
k
=
l
o
g
(
X
i
k
)
w_i^T\widetilde w_k+b_i+b_k=log(X_{ik})
wiTw
k+bi+bk=log(Xik)
基于代价函数 J = ∑ I , j = 1 V f ( X i j ) ( w i T w ~ k + b i + b k − l o g ( X i k ) ) 2 J=\sum_{I,j=1}^V f(X_{ij})(w_i^T\widetilde w_k+b_i+b_k-log(X_{ik}))^2 J=∑I,j=1Vf(Xij)(wiTw k+bi+bk−log(Xik))2求解词向量 w i T 和 w ~ k w_i^T和\widetilde w_k wiT和w k,与word2vec只是用中心词作为词向量不同的是,最后Glove的词向量生成使用一个词的中心词和背景词的词向量之和作为该词的词向量。其中词频重要性:
f ( x ) = { ( x / x m a x ) α i f x < x m a x 1 o t h e r w i s e f(x)=\left\{\begin{array}{l}(x/x_{max})^\alpha\;\;\;\;if\;x<x_{max}\\1\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;otherwise\end{array}\right. f(x)={(x/xmax)αifx<xmax1otherwise
参数取值 x m a x = 100 , α = 0.75 x_{max}=100,\alpha=0.75 xmax=100,α=0.75
2.FastText
2017facebook提出的FastText可以在大型语料库上非常快速地完成任务。FastText的模型结构与CBOW相似,不同之处是FastText的输入是词向量(embedding),将各输入加和平均并预测标签而CBOW预测的是中间词,即模型架构相似但是模型的任务不同。
参考资料
[1]GloVe详解