注:模型原文来自Mikolov T, Chen K, Corrado G, et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer Science, 2013.
2.1.Skip-Gram模型
假设在训练集中有这样的句子:"I want a glass of orange juice to go along with my cereal.",Skip-Gram模型需要做的就是构造监督学习问题:上下文词(词c)与目标词(词t)匹配。比如选择orange作为上下文词,随机在一定词距内选另一个词,词距可以选择为前后10个词或5个词,目标词可能选择juice,也可能选择了glass等等。
这个思想来源于Tomas Mikolov,Ilya Sutskever,Kai Chen,Greg Corrado 和 Jeff Dean。(Mikolov T, Sutskever I, Chen K, et al. Distributed Representations of Words and Phrases and their Compositionality[J]. 2013, 26:3111-3119.)
构造新的监督学习问题:给定一对单词,预测这对词是否是一对上下文词-目标词(context-word)。在"I want a glass of orange juice to go along with my cereal."这个句子中,orange和juice是一对上下文词-目标词,因此输出为1,即这是正样本。而orange和king这对词,king是从词典中抽取的,并不是一对上下文词-目标词,因此输出为0,是负样本。
GloVe算法的核心思想是基于词汇共现统计来学习词嵌入,由于利用全局的共现矩阵来训练词向量,而不是仅仅依赖于局部的上下文信息,因此这个算法的全称为global vectors for word representation。(Glove算法的原文:Pennington J, Socher R, Manning C. Glove: Global Vectors for Word Representation[C]// Conference on Empirical Methods in Natural Language Processing. 2014:1532-1543.))
上图所示是一个情感分类问题,输入是一段文本,而输出是预测的相应情感。比如一个餐馆评价的星级,有人说:"The dessert is excellent."(甜点很棒),并给出了四星的评价;有人说:"Service was quite slow"(服务太慢),两星评价;有人说:"Good for a quick meal but nothing special"(适合吃快餐但没什么亮点),三星评价;还有比较刁钻的评论:"Completely lacking in good taste, good service and good ambiance."(完全没有好的味道,好的服务,好的氛围),给出一星评价。对于这样的分类问题,我们有两种解决模型:
但是算法有一个缺点:没考虑词序,像"Completely lacking in good taste, good service, and good ambiance.",虽然good这个词出现了很多次,有3个good,如果忽略词序,仅把所有单词的词嵌入加起来或平均,最后的特征向量会倾向good的意思,分类器很可能认为这是一个好评,但是事实上这是一个差评,只有一星。
由于词嵌入模型是在一个更大的数据集里训练的,因此训练的模型泛化性更好。比如其他人可能会说:"Completely absent of good taste, good service, and good ambiance.",即使absent(缺乏的)这个词不在标记的训练集里,但如果是在一亿或一百亿单词集里训练词嵌入,模型仍可以正确判断,并且泛化的很好。