word2vec相关技术补充GloVe

前文介绍,共生矩阵的方法可以反映词之间全局的共生关系,这是CBOW和Skip-Gram不具备的。为了改进上述算法,有论文提出了采用GloVe的方法来求词向量。
首先,要对语料库进行一遍扫描,求出共生矩阵XXX。其中Xi,jX_{i,j}Xi,j​为出现词iii的同时,也出现jjj的次数。注意到skip-gram算法中,我们已经针对中心词i和上下文词j,我们计算得到损失函数Li,jL_{i,j}Li,j​为
Li,j=logexp(wiTuj)vVexp(wiTuv)logQi,j \begin{aligned} L_{i,j}&=-\log\frac{\exp(w_i^Tu_j)}{\sum_{v \in V}\exp(w_i^Tu_v)} \\ & \equiv -\log Q_{i,j} \end{aligned} Li,j​​=−log∑v∈V​exp(wiT​uv​)exp(wiT​uj​)​≡−logQi,j​​
这样总的损失函数为
L=iVjilogQi,j=iVjVXi,jlogQi,j \begin{aligned} L&=-\sum_{i \in V}\sum_{j是i的上下文}\log Q_{i,j} \\ &=-\sum_{i \in V}\sum_{j \in V} X_{i,j}\log Q_{i,j} \end{aligned} L​=−i∈V∑​j是i的上下文∑​logQi,j​=−i∈V∑​j∈V∑​Xi,j​logQi,j​​
这里Xi,jX_{i,j}Xi,j​为实际语料库*生i,ji,ji,j的次数,而Qi,jQ_{i,j}Qi,j​则看作是根据训练得到的i,ji,ji,j共生的概率。那么LLL实际上就是一个cross-entropy损失函数。我们将LLL改为类似least-square的损失函数,即
L=iVjVf(Xi,j)(logPi,jlogQi,j)2 L=-\sum_{i \in V}\sum_{j \in V}f(X_{i,j})(\log P_{i,j}-\log Q_{i,j})^2 L=−i∈V∑​j∈V∑​f(Xi,j​)(logPi,j​−logQi,j​)2
其中f(Xx,j)f(X_{x,j})f(Xx,j​)为权重,Xi=jXi,jX_i=\sum_j X_{i,j}Xi​=∑j​Xi,j​,Pi,j=Xi,j/XiP_{i,j}=X_{i,j}/X_iPi,j​=Xi,j​/Xi​。进一步我们将第二个求和符号里的“概率差”换成“次数差”,即
L=iVjVf(Xi,j)(logXi,jwiTuj)2 L=-\sum_{i \in V}\sum_{j \in V}f(X_{i,j})(\log X_{i,j} - w_i^Tu_j)^2 L=−i∈V∑​j∈V∑​f(Xi,j​)(logXi,j​−wiT​uj​)2
这就是GloVe的模型。模型利用了语料库中词汇间的共生关系,在实际应用中比CBOW和Skip-Gram速度要更快,求得的词向量效果也要更好。

word2vec相关技术补充GloVeword2vec相关技术补充GloVe earofreceiver 发布了4 篇原创文章 · 获赞 0 · 访问量 94 私信 关注
上一篇:【NOIP2009】最优贸易


下一篇:树形结构的数据库表Schema设计-基于左右值编码