GloVe代表用词表示的全局变量(global vectors for word representation)
假定Xij是单词i在单词j上下文中出现的次数,i和j 与t和c的功能一样,可以认为Xij等同于Xtc。根据context和target的定义,会得出Xij等于Xji
如果将context和target的范围定义为出现于左右各10词以内的话,就有对称关系Xij=Xji
如果对context的选择是context总是目target前一个单词,那么Xij=Xji
对于GloVe算法,可以定义context和target为任意两个位置相近的单词,假设是左右各10词的距离,那么Xij就是一个能够获取单词i和单词j彼此接近的频率计数器
GloVe模型做的就是进行优化,将差距进行最小化处理:
minimizei=1∑10,000j=1∑10,000f(Xij)(θiTej+bi+bj′−logXij)2 θiTej即θtTec。对于θtTec,这两个单词同时出现的频率是多少受Xij影响,若两个词的embedding vector越相近,同时出现的次数越多,则对应的loss越小
当Xij=0时,权重因子f(Xij)=0。这种做法直接忽略了无任何相关性的context和target,只考虑Xij>0的情况
出现频率较大的单词相应的权重因子f(Xij)较大,出现频率较小的单词相应的权重因子f(Xij)较小一些
因为θ和e是完全对称的,所以θi和ej是对称的。因此训练算法的方法是一致地初始化θ和e,然后使用梯度下降来最小化输出,当每个词都处理完之后取平均值:
ew(final)=2ew+θw GloVe算法不能保证嵌入向量的独立组成部分:
通过上面的很多算法得到的词嵌入向量,无法保证词嵌入向量的每个独立分量是能够理解的。但能够确定是每个分量和所想的一些特征是有关联的,可能是一些我们能够理解的特征的组合而构成的一个组合分量
使用上面的GloVe模型,从线性代数的角度解释如下:
ΘiTej=ΘiTATA−Tej=(AΘi)T(A−Tej) 加入的A项,可能构成任意的分量组合