GloVe: Global Vectors for Word Representation 阅读笔记

刚开始学cs224n,虽然manning很可爱讲得也很慢但还是 听不懂,读完阅读材料感觉好了不少。
贴个pdf

算法

共现概率比例

共现矩阵中概率的比例可以编码词的meaning components

比如对于一个跟词i很接近但是跟词j不接近的词k, P i k / P j k P_{ik}/P_{jk} Pik/Pjk 应当很大;如果k跟词j很接近但是跟i不接近,那么 P i k / P j k P_{ik}/P_{jk} Pik/Pjk 应该很小;如果k跟两个词都很接近或者都不太接近,那么 P i k / P j k P_{ik}/P_{jk} Pik/Pjk 应该接近于1。记为
F ( w i , w j , w ~ k ) = P i k P j k F(w_i,w_j,\tilde w_k)=\frac{P_{ik}}{P_{jk}} F(wi,wj,w~k)=PjkPik

Log-bilinear model

作者希望F可以将这个概率比例的信息编码到词向量空间,而词向量空间是线性空间,所以我们可以基于向量的差距改写F,

F ( w i − w j , w ~ k ) = P i k P j k F(w_i-w_j,\tilde w_k)=\frac{P_{ik}}{P_{jk}} F(wiwj,w~k)=PjkPik

并且,函数的输入是向量,而输出是标量。理论上可以将F定义为一个类似于神经网络的函数,但为了保留线性的性质和防止混淆向量维数,作者使用点积

F ( ( w i − w j ) T w ~ k ) = P i k P j k F((w_i-w_j)^T\tilde w_k)=\frac{P_{ik}}{P_{jk}} F((wiwj)Tw~k)=PjkPik

考虑到在共现矩阵中,一个词可以作为中心词和上下文交换出现,因此词向量需要满足 w ↔ w ~ w\leftrightarrow \tilde w ww~ ,共现矩阵需要满足 X ↔ X T X\leftrightarrow X^T XXT.为了达到这种对称性,(下面这段没看懂)需要F在两个组 ( R , + ) , ( R > 0 , × ) (R,+),(R_{>0},\times) (R,+),(R>0,×)上同构
F ( ( w i − w j ) T w ~ k ) = F ( w i T w ~ k ) F ( w j T w ~ k ) F((w_i-w_j)^T\tilde w_k)=\frac{F(w_i^T\tilde w_k)}{F(w_j^T\tilde w_k)} F((wiwj)Tw~k)=F(wjTw~k)F(wiTw~k)

满足上述形式的函数是指数函数,因此函数的输入就是输出(P)取log,

w i T w ~ k = log ⁡ ( P i k ) = log ⁡ ( X i k ) − log ⁡ ( X i ) w_i^T \tilde w_k=\log (P_{ik})=\log (X_{ik})-\log (X_{i}) wiTw~k=log(Pik)=log(Xik)log(Xi)

如果没有减去的 log ⁡ ( X i ) \log (X_i) log(Xi),上式就对称了。由于它与k无关,所以可以被吸收到词向量 w i w_i wi 的偏置项中去。再加入一个词向量 w ~ k \tilde w_k w~k 的偏置项,就得到了对称表达

w i T w ~ k + b i + b ~ k = log ⁡ ( X i k ) w_i^T \tilde w_k+b_i+\tilde b_k=\log (X_{ik}) wiTw~k+bi+b~k=log(Xik)

由于log在参数靠近0的地方发散,可以为此添加1。

这称为Log-bilinear model,即有两个线性的算子。这种模型用两个词向量的点积衡量共现概率,大义为 w i ⋅ w j = log ⁡ P ( i ∣ j ) w_i\cdot w_j=\log P(i|j) wiwj=logP(ij)

最小二乘回归

log-bilinear模型事实上依然均等地考虑了整个共现矩阵,即使共现矩阵是非常稀疏的,但显然经常出现在一起的词组含有更多的信息。
w i T w ~ k + b i + b ~ k = log ⁡ ( X i k ) w_i^T \tilde w_k+b_i+\tilde b_k=\log (X_{ik}) wiTw~k+bi+b~k=log(Xik)

可以将上式视作最小二乘问题,为此定义一个损失函数,衡量LHS和RHS的差距,并引入权重系数 f ( X i j ) f(X_{ij}) f(Xij)

J = ∑ i , j = 1 V f ( X i j ) ( w i T w j + b i + b ~ j − log ⁡ X i j ) 2 J=\sum_{i,j=1}^V f(X_{ij})(w_i^T w_j+b_i+\tilde b_j-\log X_{ij})^2 J=i,j=1Vf(Xij)(wiTwj+bi+b~jlogXij)2

由于同样的pair(word i, word j)可能出现多次,所以直接以 X i j X_{ij} Xij 为权重。但我们不希望过于常见的词,比如功能词,的权重太大,所以对 X i j X_{ij} Xij 进行映射

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)= \begin{cases} (x/x_{max})^{\alpha} & if \ x<x_{max} \\ 1 & otherwise \end{cases} f(x)={(x/xmax)α1if x<xmaxotherwise

在这里插入图片描述

以削弱它们的作用。

f ( X i j ) f(X_{ij}) f(Xij) 需要满足的要求如下

在这里插入图片描述

与其他算法的对比

以skip-gram中的negative-softmax方法为例, Q i j Q_{ij} Qij 表示词j在词i的上下文中出现的概率大小,使用softmax

Q i j = exp ⁡ ( w i T w ~ j ) ∑ k = 1 V exp ⁡ ( w k T w ~ j ) Q_{ij}=\frac{\exp {(w_i^T\tilde w_j)}}{\sum_{k=1}^V \exp {(w_k^T\tilde w_j)}} Qij=k=1Vexp(wkTw~j)exp(wiTw~j)

最小化负log损失函数,并将ij相同的组合并,

J = − ∑ i ∑ j X i j log ⁡ Q i j J=-\sum_i\sum_j X_{ij}\log Q_{ij} J=ijXijlogQij

根据 X i = ∑ k X k , P i j = X i j / X i X_i=\sum_k X_k, P_{ij}=X_{ij}/X_i Xi=kXk,Pij=Xij/Xi

J = − ∑ i X i ∑ j P i j log ⁡ Q i j = − ∑ i X i H ( P i , Q i ) J=-\sum_i X_i\sum_j P_{ij}\log Q_{ij}=-\sum_i X_i H(P_{i},Q_{i}) J=iXijPijlogQij=iXiH(Pi,Qi)

H为分布P和Q的交叉熵。但这样运算量太大了,依然可以用最小二乘处理,以略去规范项(分母)

J ^ = − ∑ i , j X i ( P ^ i j − Q ^ i j ) 2 \hat J=-\sum_{i,j} X_i (\hat P_{ij}-\hat Q_{ij})^2 J^=i,jXi(P^ijQ^ij)2

其中
P ^ i j = X i j , Q ^ i j = exp ⁡ ( w i T w ~ j ) \hat P_{ij}=X_{ij},\quad \hat Q_{ij}=\exp {(w_i^T\tilde w_j)} P^ij=Xij,Q^ij=exp(wiTw~j)

X i j X_{ij} Xij 可能很大,所以把他们都log一下,再把 X i j X_{ij} Xij 映射一下,

J ^ = − ∑ i , j X i ( log ⁡ P ^ i j − log ⁡ Q ^ i j ) 2 = − ∑ i , j X i ( w i T w ~ j − log ⁡ X i j ) 2 \begin{aligned} \hat J &= -\sum_{i,j} X_i (\log\hat P_{ij}-\log\hat Q_{ij})^2 \\ &= -\sum_{i,j} X_i (w_i^T\tilde w_j-\log X_{ij})^2 \end{aligned} J^=i,jXi(logP^ijlogQ^ij)2=i,jXi(wiTw~jlogXij)2
J ^ = − ∑ i , j f ( X i j ) ( w i T w ~ j − log ⁡ X i j ) 2 \hat J= -\sum_{i,j} f(X_{ij}) (w_i^T\tilde w_j-\log X_{ij})^2 J^=i,jf(Xij)(wiTw~jlogXij)2

和glove的损失函数相比只差一个偏置项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值