手套词向量
Glove word vector来自《Glove:单词表示的全局向量》一书。
Glove的全称是global vectors for word representation,中文意思是全局单词向量。Glove是一个全局词频统计(count-based &;总体统计)单词表示工具。
和word2vec一样,它可以把一个词表示成一个由实数组成的向量,向量可以捕捉词与词之间的一些语义特征,比如相似性和类比性。并且通过向量的运算,比如欧氏距离或者余弦相似度,可以计算出两个词之间的语义相似度。
3.构建损失函数:
这个损失函数是最简单的均方损失,但在此基础上增加了一个权函数。它的作用是:对于一个语料库中经常一起出现的词(频繁出现),
在本文中,作者采用了满足上述条件的分段函数:
本文所有实验中,的值均为。
虽然很多人声称Glove是一种无监督的学习方法,即不需要手动标注数据,但实际上它还是有标签的,向量和就是不断更新学习参数。所以本质上它的训练方式和监督学习没什么区别,都是基于梯度下降。
训练的具体方法是:使用AdaGrad的梯度下降算法,随机采样矩阵中所有非零元素,设定学习率为0.05,向量大小小于300时迭代50次,其他大小迭代100次,直至收敛。
因为是对称的,所以最后学的两个词的向量和也应该是对称等价的,只是因为初值不同,所以最后的值不一样。为了提高鲁棒性,最终选择两者之和作为最终的词向量(两者初始化不同相当于加入了不同的随机噪声,因此鲁棒性可以得到提高)。
图1 * * *用了三个指标:语义准确率、语法准确率、整体准确率。那么我们很容易发现,向量维数在300时可以达到最好,而上下文窗口大小大致在6到10之间。
如果语料本身比较小,微调没有效果,或者直接自己训练没有很强的计算能力,直接用大数据预训练的手套词向量也会有更好的效果。