Glove

优点:融合了矩阵分解Latent Semantic Analysis (LSA)的全局统计信息和local context window优势。融入全局的先验统计信息,可以加快模型的训练速度,又可以控制词的相对权重。

模型

词向量模型:
wiTw~j+bi+b~j=log(Xij) w_{i}^{T} \tilde{w}_{j}+b_{i}+\tilde{b}_{j}=\log \left(X_{i j}\right)
Loss function:
J=i,jNf(Xi,j)(viTvj+bi+bjlog(Xi,j))2 J=\sum_{i, j}^{N} f\left(X_{i, j}\right)\left(v_{i}^{T} v_{j}+b_{i}+b_{j}-\log \left(X_{i, j}\right)\right)^{2}

原理

共现矩阵

共现矩阵为XX,其中的元素为Xi,jX_{i,j},表示词汇jj出现在词汇ii上下文中的次数总和,这个jj由两个单词的上下文窗口距离决定

XiX_i表示出现在ii上下文的所有词汇的总数。然后**PijXijXiP(ji)P_{ij}=\frac{X_{ij}}{X_i}=P(j|i)**表示词汇jj出现的词汇ii上下文的概率

Glove模型笔记
Glove模型笔记

这个比率能够更好地区分相关词(solid 和 gas)与不相关词(ice和fashion),并且还能够更好地区分(discriminate)两个相关词。ratio取决于三个单词i,j,ki,j,k

构建词向量

先假设有一个词向量模型可以代表这个比例
F(wi,wj,w~k)=PikPjk F\left(w_{i}, w_{j}, \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}}
其中wRdw\in R^d是词向量,w^k\hat{w}_k是单独的上下文词向量。等式右侧是从预料库中获得

如何确定函数F呢。首先由于向量空间本质上是线性的,并且我们希望F能够在词向量空间中呈现上面说的比率信息(相似性)。而用向量差异是最自然的方法。于是可以得到
F(wiwj,w~k)=PikPjk F\left(w_{i}-w_{j}, \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}}

然后可以看到左边F的参数是向量,右边是标量,为了使得F的结果也是标量,所以F的参数可以采用内积的形式

于是有
F((wiwj)Tw~k)=PikPjk F\left(\left(w_{i}-w_{j}\right)^{T} \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}}
再然后,因为在共现矩阵中,可以任意划分为中心词或上下文单词,所以要保证ww~w \leftrightarrow \tilde{w}XXTX \leftrightarrow X^{T}的时候模型保持对称性。于是有
F((wiwj)Tw~k)=F(wiTw~k)F(wjTw~k) F\left(\left(w_{i}-w_{j}\right)^{T} \tilde{w}_{k}\right)=\frac{F\left(w_{i}^{T} \tilde{w}_{k}\right)}{F\left(w_{j}^{T} \tilde{w}_{k}\right)}
其中
F(wiTw~k)=Pik=XikXi F\left(w_{i}^{T} \tilde{w}_{k}\right)=P_{i k}=\frac{X_{i k}}{X_{i}}
由上面的式子,可以得到F(x)要等于exp(x)才满足条件,所以可以知道F=exp

于是有
wiTw~k=log(Pik)=log(Xik)log(Xi) w_{i}^{T} \tilde{w}_{k}=\log \left(P_{i k}\right)=\log \left(X_{i k}\right)-\log \left(X_{i}\right)

log(Xi)log(X_i)在,左边有对称性,但是右边没有,wiTwk=wkTwiw^T_iw_k=w_k^Tw_i但是log(Pik)log(Pki)log(P_{ik})不等于log(P_{ki})。又因为log(Xi)log(X_i)独立于k,所以让wiw_i吸收掉log(Xi)log(X_i)作为偏置项bib_i

再添加一个偏置项给bk~\tilde{b_k}wkw_k保持对称性。

于是有
log(Xi,j)=wiTwj~+bi+bj~ log(X_{i,j})= w^T_i\tilde{w_j}+b_i+\tilde{b_j}
于是代价函数如下:

最小二乘
J=i,j=1V(wiTwj~+bi+bj~logXij)2 J=\sum\limits_{i,j=1}^V (w^T_i\tilde{w_j}+b_i+\tilde{b_j}-logX_{ij})^2
其中V是单词的总个数。但是上述目标函数还有一个问题,就是无论单词i和单词k之间出现的频率多少,都作为一个样本进行训练。那么对于那么单词i和单词k之间不常见的组合,或偶尔出现的组合,也进行拟合,其实这些拟合的是一些噪声,这显然不利于模型的鲁棒性/健壮性(robust)。怎么办呢?最简单的办法就来了,让那些出现次数较少的组合权重低一些。

于是最后有了
J=i,j=1Vf(Xij)(wiTwj~+bi+bj~logXij)2 J=\sum\limits_{i,j=1}^V f(X_{ij})(w^T_i\tilde{w_j}+b_i+\tilde{b_j}-logX_{ij})^2

而权重函数应该满足

  1. f(0)=0f(0)=0。

  2. f(x)递增,以保证罕见的组合不会给与过多的权重。

  3. 对于较大的x值,f(X)应该比较小,以保证频繁出现的组合不会给过多的权重。

    根据原则可得到如下函数:
    f(x)={(x/xmax)α if x<xmax1 otherwise  f(x)=\left\{\begin{array}{cc} \left(x / x_{\max }\right)^{\alpha} & \text { if } x<x_{\max } \\ 1 & \text { otherwise } \end{array}\right.

论文作者的实验结果:
Glove模型笔记

待解决问题:homomorphism

https://www.zhihu.com/search?type=content&q=glove%E5%90%8C%E6%80%81

对比word2vec

本质是count based 对比 prediction

Glove模型笔记

参考资料

理解GloVe模型

GloVe和word2vec

川陀学者

相关文章:

  • 2021-07-16
  • 2022-12-23
  • 2021-09-03
  • 2021-12-22
  • 2021-12-31
  • 2021-08-10
  • 2021-04-06
  • 2021-12-31
猜你喜欢
  • 2021-07-06
  • 2021-04-07
  • 2021-08-13
  • 2021-09-21
  • 2021-05-15
相关资源
相似解决方案