前文介绍,共生矩阵的方法可以反映词之间全局的共生关系,这是CBOW和Skip-Gram不具备的。为了改进上述算法,有论文提出了采用GloVe的方法来求词向量。
首先,要对语料库进行一遍扫描,求出共生矩阵X。其中Xi,j为出现词i的同时,也出现j的次数。注意到skip-gram算法中,我们已经针对中心词i和上下文词j,我们计算得到损失函数Li,j为
Li,j=−log∑v∈Vexp(wiTuv)exp(wiTuj)≡−logQi,j
这样总的损失函数为
L=−i∈V∑j是i的上下文∑logQi,j=−i∈V∑j∈V∑Xi,jlogQi,j
这里Xi,j为实际语料库*生i,j的次数,而Qi,j则看作是根据训练得到的i,j共生的概率。那么L实际上就是一个cross-entropy损失函数。我们将L改为类似least-square的损失函数,即
L=−i∈V∑j∈V∑f(Xi,j)(logPi,j−logQi,j)2
其中f(Xx,j)为权重,Xi=∑jXi,j,Pi,j=Xi,j/Xi。进一步我们将第二个求和符号里的“概率差”换成“次数差”,即
L=−i∈V∑j∈V∑f(Xi,j)(logXi,j−wiTuj)2
这就是GloVe的模型。模型利用了语料库中词汇间的共生关系,在实际应用中比CBOW和Skip-Gram速度要更快,求得的词向量效果也要更好。
earofreceiver
发布了4 篇原创文章 · 获赞 0 · 访问量 94
私信
关注