对于Glove 算法的理解

Glove算法是一种基于全局词频统计的回归算法。它不是基于神经网络的,而是基于最小二乘原理的回归方法。
它的算法的核心就是损失函数:
对于Glove 算法的理解
通过这个函数可以计算出词向量。推导的过程不是严格基于数学的。我尝试反向推导一下,看看能否让大家更容易理解。正规的推导除了看原文之外,可以参考NLP学习(1)—Glove模型—词向量模型

上面的损失函数是基于i,j统计的,因此可以得出Glove的算法复杂度是N*N。
f(xij)是一个权重函数,其目的是防止某些取值过大,而某些取值又过小。词函数的定义如下:
对于Glove 算法的理解
第二部分,就是大家很熟悉的最小二乘法公式:
对于Glove 算法的理解
log(Xij)是单词j在单词i的上下文中出现的次数,是个确定值。
而前面的部分bi,bj是偏置项,相当于起调节作用的,可以通过误差反传算法调节。
最重要的就是ViTVj,这就是我们要求解的词向量。而Vi和Vj可以通过误差反传计算。最后得到的就是词向量。
在Mittens的实现中,梯度带求导就是使用的这4个变量。