Glove 全称是 Global Vectors for Word Representation。它是基于全局词频统计的Word Representation Tool
它可以捕捉 words之间的 similarity, analogy 等; 通过vectors之间的数学联系计算words之间的语义相似性
假设我们有三句话: I like deep learning. I like NLP. I enjoy flying
我们可以获得一个词典: {"I like", "like deep", "deep learning", "like NLP", "I enjoy", "enjoy flying", "I like"}
共现矩阵中的数字代表row_word 和 column_word在词典中出现的次数
在共现矩阵中,word 与 word 在 Context之间的关系一定在自然数域中, 即 >=1
而 GloVe 计算 word 与 word 在 Context 之间的距离 distance, 并且用 decay = 1/d 来计算weight, 当 words之间的distance越大,weight(decay) 就会越小
用以下公式表示近似关系:
根据近似关系,我们就可以创造出loss function:
weight function (权重函数的作用):
这里 weight function 使用下图的这种:
采用了AdaGrad的梯度下降算法,对矩阵 X 中的所有非零元素进行随机采样,学习曲率(learning rate)设为0.05,在vector size小于300的情况下迭代了50次,其他大小的vectors上迭代了100次,直至收敛。
最后得到2个vector, 分别是 w 和 w_bar; 最后为了提高鲁棒性,输出 w + w_bar, 得到效果如下图
LSA (Latent Semantic Analysis) 是一种比较早的词向量表征工具(Word Representation Tool)
LSA 是基于共现矩阵,使用SVD(奇异值分解)对大矩阵进行降维; 缺点是比Glove计算代价更大
Word2Vec 的缺点是没有充分使用语料; 一定程度上Glove会比Word2Vec更加精准
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。