前言
在自然语言处理(NLP)领域,谷歌提出的 Word2Vec 模型是学习词向量表示的重要方法。其中,带有负采样(SGNS,Skip-gram with negative sampling)的 Skip-Gram 神经词向量模型在当时被证明是最先进的方法之一。各位读者需要自行了解 Word2Vec 中的 Skip-Gram 模型,本文只会做简单介绍。
在论文 Item2Vec:Neural Item Embedding for Collaborative Filtering 中,作者受到 SGNS 的启发,提出了名为 Item2Vec 的方法来生成物品的向量表示,然后将其用于基于物品的协同过滤。
基于负采样的 Skip-Gram 模型
Skip-Gram 模型的思想很简单:给定一个句子
其中,
表示上下文的窗口大小; 表示中心词; 表示上下文。表达式中的概率
的公式为: ,分别对应中心和上下文词的 Embedding 特征表示。- 这里的意思是每个单词有 2 个特征表示,作为中心词
和上下文 时的特征表示不一样。 , 表示语料库中词的数量。
简单来理解一下 Skip-Gram 模型的表达式:
- 对于句子中的某个词
,当其作为中心词时,希望尽可能准确预测它的上下文。 - 我们可以将其转换为多分类问题:
- 对于中心词
预测的上下文 ,其 ;那么,模型对上下文的概率预测 越接近 1 越好。 - 若要
接近 1,对于分母项中的 ,其 越小越好(等价于将其视为了负样本)。
- 对于中心词
注意到分母项,由于需要遍历语料库中所有的单词,从而导致计算成本过高。一种解决办法是基于负采样(NEG)的方式来降低计算复杂度:
- 其中,
, 表示负样本的数量。
其它细节:
单词
作为负样本时,被采样到的概率:单词
作为中心词时,被丢弃的概率:
Item2Vec 模型
Item2Vec 的原理十分十分简单,它是基于 Skip-Gram 模型的物品向量训练方法。但又存在一些区别,如下:
- 词向量的训练是基于句子序列(sequence),但是物品向量的训练是基于物品集合(set)。
- 因此,物品向量的训练丢弃了空间、时间信息。
Item2Vec 论文假设对于一个集合的物品,它们之间是相似的,与用户购买它们的顺序、时间无关。当然,该假设在其他场景下不一定使用,但是原论文只讨论了该场景下它们实验的有效性。由于忽略了空间信息,原文将共享同一集合的每对物品视为正样本。目标函数如下:
- 对于窗口大小
,由设置的决定。
在 Skip-Gram 模型中,提到过每个单词
- add:
- concat:
原文还补充到,这两种方式有时候会有很好的表现。
总结
- Item2Vec 的原理很简单,就是基于 Word2Vec 的 Skip-Gram 模型,并且还丢弃了时间、空间信息。
- 基于 Item2Vec 得到物品的向量表示后,物品之间的相似度可由二者之间的余弦相似度计算得到。
- 可以看出,Item2Vec 在计算物品之间相似度时,仍然依赖于不同物品之间的共现。因为,其无法解决物品的冷启动问题。
- 一种解决方法:取出与冷启物品类别相同的非冷启物品,将它们向量的均值作为冷启动物品的向量表示。
原论文链接:[1603.04259] Item2Vec: Neural Item Embedding for Collaborative Filtering (arxiv.org)