从0到1详解推荐系统中的嵌入方法,原理算法到应用都讲明白了 Posted 2021-05-01 AI科技大本营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从0到1详解推荐系统中的嵌入方法,原理算法到应用都讲明白了相关的知识,希望对你有一定的参考价值。
作者丨gongyouliu
编辑丨lily
来源 | 大数据与人工智能(ID:)
作者曾在
这篇文章中提到,矩阵分解算法是一类嵌入方法,通过将用户行为矩阵分解为用户特征矩阵和标的物特征矩阵的乘积,最终将用户和标的物嵌入到低维空间中,通过用户特征向量和标的物特征向量的内积来计算用户对标的物的偏好。
Word2Vec也是一类嵌入方法
,通过构建双层神经网络模型,将词嵌入到低维向量空间,词向量保持了词的句法和语义关系,可以解决各类语言学问题。自从2013年Google发明Word2Vec算法后,Worde2Vec在机器学习领域得到大规模采用,在NLP、推荐、搜索等领域产生了深远的影响。
本文我们主要讲解嵌入方法在推荐系统上的应用,
上面提到的矩阵分解和Word2Vec两类算法是推荐嵌入方法的核心思想来源,下面讲到的很多嵌入方法思路都来源于此。
本文会从嵌入方法简介、嵌入方法应用于推荐系统的一般思路、几种用于推荐系统的嵌入方法的算法原理介绍、嵌入方法在推荐系统中的应用案例介绍、利用嵌入方法解决冷启动等5部分来讲解嵌入方法。希望通过本文的学习读者可以很好地理解嵌入方法的思想、原理、价值以及典型的嵌入方法在推荐系统上的应用,最终能够将嵌入方法应用到具体的推荐业务上。
词嵌入方法最早在自然语言处理领域得到大规模的使用(见参考文献1、2、3、4),可以通过学习词的低维向量表示,用于解决词的句法和语义相关的NLP问题,如词性标注、关键词提取、句子 相似度等等,并且取得了非常好的效果。这种嵌入技术吸引了很多其他领域的研究者进行尝试用于更多的业务场景,如搜索(参考文献11、21)、推荐等,并取得了很好的效果。
熟悉深度学习的读者肯定知道,深度学习模型隐含层的向量可以作为一种生成嵌入表示的方法。自编码器和表示学习的一些方法和技术可以很好地用作嵌入,随着深度学习的发展壮大,嵌入方法得到大量使用。Word2Vec本身也是一种浅层的神经网络模型。
嵌入方法有很强的数学背景,在数学领域大量采用,几何学中有所谓的嵌入存在定理,像PCA分析本质上是一种高维空间到低维空间的嵌入。在数学上有所谓的射影几何学,研究的就是图形的射影性质,即它们经过射影变换后,依然保持不变的图形性质。可以说从高维空间到低维空间的任何一种映射其实就是一种嵌入。
在这里,我给嵌入方法一个很形式化的数学定义,让读者更好理解。假设
是n维空间中的一个二元组,S是由向量组成的集合,F是S中元素满足的某种关系。那么嵌入方法就是需要我们找到一个映射:
,使得
在
中也大致满足(可能有一定的信息损耗)关系F。
现实生活中嵌入的案例很多,比如我们在平面中画三维物体其实是一种嵌入,我们需要保持物体之间的相对距离、位置以及遮挡关系,这种关系保持得越好,那么画的就越逼真。
霍夫曼编码就是一种采用最小信息量来编码的方式,我们也可以将从一种可行的长编码到最短霍夫曼编码的映射关系看成是一种嵌入。
通过嵌入,我们可以在更低的维度解决问题,人类的大脑是比较善于处理低维(三维以下)问题的,对高维问题更难理解,所以嵌入方法也是一类方便我们理解和认知的方法。
为什么嵌入方法有效呢?是因为高维空间表达能力太强,现实生活中的样本数量一般是较小的(相比于高维空间近乎无限的表达能力),只能“占据”高维空间很小的一个区域(这个区域一般等价于一个很低维的空间),所以我们可以将这些样本投影到等价的低维空间中,也能让它们有一定的区分度。
总结一下,嵌入方法是指通过数学变换(机器学习算法)将高维空间的对象映射到低维空间并保持相关性质的一种方法。
除了方便人类理解外,通过嵌入我们至少可以获得如下价值:
1.嵌入到低维空间再处理,可以减少数据存储与计算成本(高维空间有维数灾难);
2.嵌入到低维空间,虽有部分信息损耗,但是这样反而可能提升模型的泛化能力(样本一般含有噪音,通过嵌入低维空间,其实可以“过滤掉”部分噪音);
本篇文章我们主要讲解嵌入方法在推荐系统上的应用,下面我们从嵌入方法的基本原理开始介绍。
上一节对嵌入方法做了一个比较简单的介绍,在本节我们来讲解嵌入方法怎么应用于推荐业务上。一般来说,在推荐系统上,可以采用以下两种嵌入方式进行推荐,下面我们分别介绍。
在讲之前,先说明一下,对于推荐业务来说,最主要的两种推荐(产品)形态是标的物关联标的物推荐和完全个性化推荐,这里我们讲嵌入方法在推荐上的应用,主要是应用于这两种推荐场景。
通过构建算法模型,基于用户行为数据、标的物metadata数据将标的物嵌入到低维空间中,得到每个标的物的嵌入向量表示。有了标的物的嵌入向量,我们可以通过如下三种方式用于推荐业务。
将标的物嵌入到同一个空间后,“距离”越近的标的物往往越相似。我们可以利用该性质来计算两个标的物之间的相似性。一般计算相似性可以采用cosine余弦的方法。
我们可以为每个标的物求出最相似的K个标的物作为关联推荐。具体在大规模数据情况下,怎么分布式求topK相似度,我在
第三节计算topK相似度中有详细讲解怎么利用Spark来分布式计算,这里不再赘述。
(2) 对标的物进行聚类,
形成个性化专题,用于产品运营,也可以用于关联推荐
有了标的物的向量表示,我们还可以对标的物进行聚类,同一类的标的物往往是相似的,这一类标的物可以用于制作专题,通过人工增减部分标的物,给专题起一个描述性的标题,就可以用于人工运营,这是算法和人工配合的很好的一个案例,特别适合长视频行业。
另外,聚类后的标的物也可以作为关联推荐,将同一类的其他标的物作为关联推荐列表。
有了标的物的嵌入向量表示,我们可以非常容易地为用户进行个性化推荐。具体的推荐策略有如下两个:
通过用户操作过的标的物的嵌入的“聚合”来获得用户的嵌入表示,可以采用(加权)平均或者RNN(见参考文献15,本文不讲解)等方式来聚合。
,记
是用户按照时间顺序最近操作过的k个标的物(
是最近操作过的),标的物
的嵌入表示记为
,那么我们可以用如下方式来获得用户的嵌入表示
其中,
是标的物
的权重,我们可以取
,这时不同时间段的标的物权重是一样的,也可以按照时间做等差或者等比的衰减,保证时间最近的标的物权重最大。
通过上面方法获得了用户对标的物的评分,计算出用户与每个标的物的评分,按照评分降序排序取TopN作为推荐列表(剔除用户已经操作过的标的物)。
该方法可以将用户最近操作过的标的物作为种子标的物,将种子标的物最相似的N个标的物作为推荐的候选集。具体如下:
当然,上面只是选择出了候选集,一般我们还要给候选集中的标的物打分,按照分值高低将高分的topN推荐给用户,本文我们不讲解怎么对候选集排序,未来会单独出一篇关于推荐系统排序的文章。
嵌入方法还有一种使用方式是将用户和标的物同时嵌入同一个低维空间中,这样就可以获得用户和标的物的特征向量,它们是同一维度的。这时我们可以用用户向量和标的物向量的内积作为用户对标的物的偏好评分,获得了评分就可以采用前面讲的方式给用户做推荐了。这种嵌入应用方式的典型代表就是矩阵分解算法,读者可以从我之前写的《矩阵分解推荐算法》这篇文章中进行更加深入的了解。后面我们也会讲解这种联合嵌入的实际案例。
前面讲解完了嵌入方法应用于推荐的一般思路,在本节我们对几种用于推荐系统上的嵌入方法的算法原理进行简单介绍。
假设有评分的
对(
代表用户,
代表标的物)组成的集合为
:
,通过矩阵分解将用户
和标的物
嵌入k维特征空间的嵌入向量分别为:
那么用户
对标的物
的预测评分为
,真实值与预测值之间的误差为
。如果预测得越准,那么
越小,针对所有用户评分过的
对,如果我们可以保证这些误差之和尽量小,那么有理由认为我们的预测是精准的。
有了上面的分析,我们就可以将矩阵分解转化为一个机器学习问题。具体地说,我们可以将矩阵分解转化为如下等价的求最小值的最优化问题。
其中
是超参数,可以通过交叉验证等方式来确定,
是正则项,避免模型过拟合。通过求解该最优化问题,我们就可以获得用户和标的物的特征嵌入。
SGNS(Skip-Gram with Negative Sampling),是Word2Vec(Google工程师在2013年提出的一种浅层神经网络嵌入方法)中一类重要方法,主要目的是将词嵌入到低维向量空间,可以捕获词上下文之间的关系。该方法自从被提出后在各类NLP任务中获得了非常好的效果,并被拓展到包括推荐系统等在内的多种业务场景中。
下面对该算法的原理做简单介绍。后面讲到的很多推荐系统嵌入方法都是从该算法吸收灵感而提出的。
假设
是有限词汇表
中的一个词序列。Word2Vec方法将求解词嵌入问题转化为求解下面的目标函数的极大值问题
其中,c是词
的上下文(附近的词)窗口的大小,
是下面的softmax函数:
和
分别是词
的目标(target)和上下文(context)嵌入表示,这里
,参数m是嵌入空间的维数。
直接优化公式2的目标函数是非常困难的,因为求
计算量太大,是词库大小N的线性函数,一般N是百万级别以上。
我们可以通过负采样(Negative Sampling)来减少计算量,具体来说,就是用如下的公式来代替上面的softmax函数。
这里
是logistic函数,M是采样的负样本(这里负样本是指抽样的词
不在词目标
的上下文中)数量。
最终可以用随机梯度下降算法来训练公式2中的模型,估计出U 、V。读者可以阅读参考文献1、2、3、4对Word2Vec进行深入学习和了解。
参考文献12提出了一个CoFactor模型,将矩阵分解和Word2Vec(参考文献27中证明Word2Vec嵌入等价于一类PMI矩阵的分解,本文作者也是采用的PMI分解的思路,而不是直接用Word2Vec)整合到一个模型中来学习嵌入并最终给用户做推荐,也是一个非常不错的思路。
参考文献28借助Word2Vec的思路,提出了Prod2Vec模型,该算法利用发给用户的电子邮件广告数据,根据用户的邮件点击购买回执了解用户的偏好行为,通过将用户的行为序列等价为词序列,采用Word2Vec类似的方法进行嵌入学习获得商品的嵌入向量,最终给用户进行个性化推荐。该算法部署到线上,有9%点击率的提升。参考文献16基于Prod2Vec模型,提出了一种整合商品metadata等附加信息的Meta-Prod2Vec算法模型,提升了准确率,并且可以有效解决冷启动问题,感兴趣的读者可以阅读学习这两篇文章。
有很多开源的软件有Word2Vec的实现,比如Spark、gensim、TensorFlow、Pytorch等。我们公司采用的是gensim,使用下来效果不错。
给定一个图
,V、E分别代表图的顶点和边的集合。所谓图嵌入就是学习每个顶点在低维空间
中的向量表示。利用数学的术语就是学习一个映射:
,将图中每个顶点v映射为d维空间中的一个向量
。
基于Word2Vec和参考文献23的思路,我们可以先通过随机游走(random walk)生成图顶点的序列,再利用Word2Vec的Skip-Gram算法学习每个顶点的向量表示。为了保留图的拓扑结构,我们需要求解如下的目标函数:
这里N(v)是顶点v的邻域,可以定义为通过顶点v通过一步或者两步可达的所有其他顶点的集合。
是给定一个顶点v,通过随机游走获得v的一个邻域顶点的概率。
有了上面的定义和说明,剩下的处理流程和思路跟Word2Vec是一样的了,这里不再赘述。
参考文献6、19分别提供了基于图嵌入进行个性化推荐的解决方案,其中6我们会在第四节4中详细介绍。19提供了一个在异构信息网络(Heterogeneous Information Network,简写为HIN)中通过随机游走生成节点序列,再将节点序列嵌入低维空间,通过一组fusion函数变换后整合到矩阵分解模型中进行联合训练,通过求解联合模型最终进行推荐的方法,该方法也可以有效地解决冷启动问题,具体架构图如下,感兴趣的读者可以参考原文。随着互联网的深入发展,异构信息网络是一类非常重要的网络,在当前的互联网产品中(社交网络产品、生活服务产品等)大量存在,基于HIN的个性化推荐也是未来一个比较火的方向之一。
图嵌入通过将图中节点变换为节点序列再利用Word2Vec思路做嵌入,本质就是Word2Vec的思路。只是不同的图嵌入方法将图中节点变换为节点序列的实现方案不一样。
最近几年深度学习驱动的人工智能第三次浪潮对计算机视觉、语音识别、自然语言处理领域有极大的推动作用,在部分机器学习任务(如图像分类、机器阅读理解精确匹配等)上的表现超越了人类的水平。同样深度学习在推荐上也有大量应用,并且在工业界取得了不错的效果。
利用深度学习嵌入进行推荐是深度学习推荐系统中的一类重要方法,其实Word2Vec嵌入也是一个神经网络模型,只不过是浅层神经网络。这里我们简单介绍一下,关于深度学习推荐系统作者会单独写一篇文章详细介绍。
我们知道自编码器是深度学习中一类非常重要的表示学习技术,通过自编码器,可以获得输入向量的低维表示,这个表示其实就是一种嵌入,我们可以利用这种嵌入来进行推荐。关于利用自编码器技术做推荐的文章有很多,参考文献25利用自编辑器联合矩阵分解将附加信息整合到推荐模型中在部分推荐公开数据集上获得了不错的效果。参考文献15、26也是利用自编码器来做嵌入进行推荐的例子。建议读者可以学习一下参考文献15,是雅虎给出的一个基于自编码器做推荐的案例,并且应用到了雅虎新闻的推荐中,取得了很好的效果,该文的方法也很新颖,值得学习了解。
另外,YouTube的一篇非常出名的奠基性的深度学习文章(见参考文献24),这篇文章中将推荐问题看成一个分类问题(类别的数量等于视频个数),基于用户过去观看记录预测用户下一个要观看的视频的类别。文章利用深度学习来进行嵌入,将用户和标的物嵌入同一个低维空间,通过softmax激活函数来预测用户用户在时间点t观看视频i的的概率问题。具体预测概率公式见下图:
其中u、v分别是用户和视频的嵌入向量。U是用户集,C是上下文。该方法也是通过一个(深度学习)模型来一次性学习出用户和视频的嵌入向量。感兴趣的读者可以参考阅读,我在下一篇文章《深度学习推荐算法》中会详细讲解该文章算法原理和核心思想。
上一节讲解了4类用于推荐系统的嵌入方法,基于这4类方法,我们在本节介绍几个有代表性的嵌入方法在推荐系统中的应用案例,让大家可以更好地了解嵌入方法怎么做推荐。这几个案例都是在真实的工业级场景得到验证的方法,值得大家学习和借鉴。
通过第三节1的矩阵分解的介绍,当我们获得了用户和标的物嵌入后,我们计算出用户u的嵌入向量与每个标的物嵌入向量的内积
,再按照内积的值从大到小降序排列,剔除掉用户已经操作过的标的物,将topN推荐给用户。读者可以参考我以前写的《矩阵分解推荐算法》这篇文章进行深入了解。
微软在2016年基于Word2Vec提出了item2vec(参考文献14),基于用户的操作行为,通过将标的物嵌入到低维空间的方式来计算标的物之间的相似度,进行关联推荐。下面对该方法进行简单介绍。
我们可以将用户操作过的所有标的物看成词序列,这里每个标的物就相当于一个词,只是这里用户操作过的标的物是一个集合,不是一个有序序列。虽然用户操作标的物是有时间顺序的,但是标的物之间不像词序列是有上下文关系的(一般不存在一个用户看了电影A之后才能看电影B,但是在句子中,词的搭配是有序关系的),因此这里当成集合会更合适。所以,我们需要对Word2Vec的目标函数进行适当修改,最终我们可以将item2vec的目标函数定义为
这里不存在固定的窗口大小了,窗口的大小就是用户操作过的标的物集合的大小。而其他部分跟Word2Vec的优化目标函数一模一样。
最终用向量
来表示标的物的嵌入,用cosine余弦相似度来计算两个标的物的相似度。也可以用
、
、
(
和
拼接在一起的向量)来表示标的物的嵌入。
我们公司也采用了item2vec算法来对视频进行嵌入,用于视频的相似推荐中,点击率效果比原来的基于矩阵分解的嵌入有较大幅度的提升。
阿里盒马利用Word2Vec思想对不同类别的ID(item ID、product ID、brand ID、store ID等)进行联合嵌入学习,获得每个ID的嵌入表示,下面我们对该方法进行简单介绍(见参考文献7)。
给定一个item序列
,Skip-Gram模型通过优化如下的平均对数概率目标函数
这里C是上下文窗口的长度。下图是某个用户的浏览序列,其中前5个浏览记录是一个session(用户的一次交互序列,可以按照时间,比如按照一个小时切分,将用户在APP上的操作分为多个session)。
其中,
定义如下
分别是item和context的嵌入表示,m是嵌入空间的维数,D是总的item数,也就是盒马上的所有商品数量。
上述公式求导计算复杂度正比于D,往往D是非常大的,所以类似Word2Vec,可以采用如下的负采样技术减少计算量
这里S是从正样本item的噪音分布
(item及其上下文之外的物品的分布)中抽取的负样本的数量。
一般取均匀分布,但是对于商品来说,分布其实是不均匀,很多商品是热门商品,搜索购买的人多,另外一些相对冷门。因此,为了平衡商品之间的冷热情况,最终从Zipfian分布来抽取负样本。具体采样方式如下:
先将所有样本按照访问量降序排列按照[0,D)来索引,我们可以用如下公式来近似Zipfian分布
令
,这里r是从均匀分布
抽取的随机数,那么Zipfian分布可以近似表示为
即负采样可以先从
抽取随机数r,按照上面公式计算出index,这个index对应的item就是采样的item(要提出掉item本身及它的context中的物品)。通过该方式采样可以大大加速训练过程。
讲解完了item ID的嵌入方法,下面我们来说下怎么对多个ID进行联合嵌入训练。对于商品来说,每个商品都有对应的产品、品牌、供应商,并且还有不同维度的分类。下面给出一个item关联的6个ID,分别是product ID、brand ID、store ID、cate-level1 -ID、cate-level2 -ID、cate-level3 -ID。拿苹果手机举例来说,item ID代表的是iPhone X 64G 黑色版对应的ID,而product ID对应的是iPhone X的ID,brand ID对应的是Apple的ID,storeID对应的是苹果官方旗舰店的ID,cate-level1 -ID、cate-level2 -ID、cate-level3 -ID分别是科技产品、消费类电子产品、智能手机等分层次的类别。
上图是item ID和它的属性ID之间的关联关系,假设有K个ID,我们按照顺序记为
这里
,而
分别是product ID、brand ID、store ID等。那么类似上面对独立item的对数条件概率公式3,对于多ID联合嵌入,我们有如下公式
上式中,
和
分别是第k个ID的context和target嵌入表示,
是嵌入空间的维数,不同类型的ID可以嵌入到不同维数的空间中,
是
的权重系数。假设第k个ID(比如brand ID)包含
个不同的item(这个品牌包含
个不同的item),即
举例来说,我们始终有
,如果
包含10个不同的item,那么
。item ID与它的属性ID之间是有很强的关联的。如果两个item ID的嵌入向量相似,那么他们的对应属性ID的向量也是相似的,反之亦然。因此我们定义
这里
是将嵌入向量
变换到与
同一纬度的矩阵变换。最终的联合嵌入最优化问题可以定义为
其中
都是超参数。由于各类ID是相对固定的,上述模型可以较长时间(比如一周)训练一次,也不太会影响最终推荐的精度。
通过上述最优化问题求解,获得了item的嵌入表示,那么我们可以采用第二节1中(3)的方法来为用户做个性化推荐,这里不细说了。读者可以阅读参考文献7,对技术细节做更细致了解。
我们在第三节3有向图嵌入中对图嵌入方案进行了介绍,在这里我们详细讲解淘宝基于图嵌入做推荐的一个算法模型,感兴趣的读者可以详细阅读参考文献6了解更多细节介绍。下面我们分4个部分来分别介绍。
用户在淘宝上的访问行为是有时间顺序的,是一个行为序列,一般协同过滤只考虑了用户访问的商品是否在同一个行为序列中,而忽略了访问的序关系,而序关系可能反应了用户的兴趣特征。一般不会考虑用户整个访问历史,因为这样计算量大,并且用户兴趣是随着时间变化的。所以将用户在一段时间内(比如一个小时)的行为作为一个session来考虑。
我们可以通过如下步骤来构建用户行为session的有向图(参考下图中a、b两个步骤):所有商品构成图的顶点,如果两个商品在某个用户的一个session中是相邻的(即该用户连续访问了这两个商品),那么我们就可以在这两个顶点构建一条有向边(用户访问节点的次序就是边的方向),边的权重可以是这两个商品在所有用户session中出现的次数。通过这个方式,我们就可以构建出基于用户行为的有向图了。这时边的权重就代表了两个顶点之间基于用户行为的相似度。
构建好有向图后,我们就可以采用随机游走(参考文献23的DeepWalk方法,参考文献13、17、18提供了其他利用图嵌入的方法,其中17、18提供了比其他图嵌入方法更高效的实现方案,可以大大节省嵌入训练的时间)的方式生成行为序列(参见图2中的c)。后面我们再用Skip-Gram算法学习图的顶点(商品)的嵌入表示(参考图2中d的Skip-Gram模型)。我们需要最大化通过随机游走生成序列中的两个顶点同时出现的概率,具体来说,我们需要求解如下最优化问题:
上式中w是生成的序列中上下文节点的窗口大小。可以假设窗口中不同的节点是独立的。那么可以做如下简化
利用Word2Vec中提到的负采样技术,最终的优化目标函数为
上式中
是为
采样的负样本集合,
是logistic函数,
越大,采样样本越多,模型最终效果越好。
每个商品是包含价格、品牌、店铺等附加信息的,这些附加信息可以整合到Skip-Gram模型中,这样即使该商品没有用户行为,也可以用附加信息的嵌入获得嵌入向量,从而解决冷启动问题。
具体来说,可以将附加信息跟商品拼接起来,在模型中增加一个聚合层,将商品和它的附加信息嵌入平均化,即通过下式来获取隐含层的表示(参见图4的模型表示)。
上式中,
是商品v的嵌入表示,
是附加信息的嵌入表示,我们假设商品嵌入和附加信息嵌入到相同维度的空间中,这样才可以求平均。
(3)中假设所有的附加信息权重是一样的,实际上不同的附加信息权重不一样,我们可以给不同附加信息不同权重,让模型效果更好。不同的附加信息的权重可以根据经验给定,或者作为模型参数来学习获得。
通过图嵌入,有了商品的嵌入向量表示,我们就可以用第二节1(3)中的第2个方法给用户做推荐。
参考文献10中提出了一种整合物品图像、标题、描述文本、协同信息的Content2Vec模型,该方法将不同类型的信息通过不同的嵌入方法生成的嵌入向量聚合起来,形成一个统一的模型来预测两个商品是否会被一起购买的概率,该模型的架构如下图。
通过不同的算法将商品不同维度的信息嵌入到低维空间中,这些不同源的信息嵌入过程是解耦合的、可插拔的,可以用不同的算法来取代。图像嵌入可以用图像分类的算法获得(如AlexNet等),而文本的嵌入可以用Word2Vec获得,协同信息的嵌入可以用矩阵分解算法获得。
该模块将(1)不同源的商品信息嵌入向量,通过一个统一的模型获得联合嵌入表示。
输出层结合两个商品的联合嵌入向量,计算出这两个商品被一起购买的概率。具体来说,两个商品的联合嵌入向量通过求内积,再经过sigmod函数变换获得概率值。
通过上述方法可以获得每个商品的嵌入向量,我们就可以用第二节1(3)中的第2个方法给用户做推荐。
嵌入方法除了可以用于推荐外,通过整合附加信息(side information)到嵌入模型中,可以很好地解决冷启动问题。我们知道基于内容的推荐可以缓解冷启动问题,这些附加信息也一般是内容相关的信息,所以整合进嵌入模型中就可以用于解决冷启动。下面我们简单介绍4种通过嵌入解决冷启动的案例。
参考文献9中给出了一种在矩阵分解中整合用户特征和标的物特征的方案,可以有效地解决用户和标的物冷启动问题。这篇文章我们在《矩阵分解推荐算法》第四节6中进行过介绍,这里不再赘述。
2、 通过不同ID间的结构链接关系及不同平台用户的特征迁移来解决冷启动
参考文献7中,每个item ID会关联对应的product ID、brand ID、store ID等,对于一个新的item来说,这个item所属的产品、品牌或者店铺可能会存在其他的item被用户点击购买过,那么一种很自然的方式是用这个item关联的其他ID的嵌入向量来构造该item的近似嵌入表示。
因为
是单调递增函数,结合第四节3介绍的阿里盒马的联合嵌入模型中公式4,那么我们就有如下近似公式
要想让上式取值最大,当
与后面括号中的向量方向一致才可能达到。那么我们就可以用
来近似item的嵌入。当然不是跟item ID关联的所有ID都有嵌入,我们只需要选择有嵌入的ID代入上式中即可。通过模型线上验证,这种方式得到的嵌入效果还是很不错的,可以很好地解决商品冷启动问题。
同时,这篇文章中通过不同APP用户特征的迁移可以解决用户冷启动,下面也做简单介绍。
盒马和淘宝都属于阿里的电商平台,淘宝通过这么多年的发展已经覆盖了绝大多数的用户群,大部分盒马的用户其实也是淘宝的用户,那么对于盒马上的新用户,就可以用该用户在淘宝上的特征,将特征迁移到盒马上来,为他做推荐。下面来简要介绍推荐的流程与方法。
假设淘宝的用户为
,盒马上的用户为
,他们的交集为
(
)。那么按照下面流程就可以为盒马的新用户做推荐了:
(1)采用第四节3的方案计算出淘宝平台上用户的嵌入向量;
(2) 将
的用户根据在淘宝上的嵌入向量用kmeans聚类聚成1000类;
(3) 对于(2)中的每一类,将这一类用户在盒马上购买的topN热门商品计算出来作为推荐候选集;
(4) 对于从淘宝来的新的盒马用户,我们先从上面的1000类中找到与该用户最近的类(该用户的嵌入向量与类中心距离最近);
(5) 将该新用户最近的类的topN热门商品推荐给该用户。
下面的图6可以更好地帮助大家理解上面的流程。通过这5步就可以为盒马的新用户做推荐了。当然如果一个用户是盒马的新用户但不是淘宝的用户或者也是淘宝的新用户,那么这个方法就无能为力了,但是这种情况毕竟是很少的(因为淘宝覆盖了中国绝大多数的电商用户),所以该方法基本解决了盒马大部分新用户的冷启动推荐问题。
我们在第四节4中已经说明了在有向图嵌入构建Skip-Gram模型过程中整合附加信息可以解决冷启动问题,这里不再说明。
前面我们在第四节5中讲解了Content2Vec模型,该模型通过将图片、文本、类别等metadata信息嵌入,再将这些不同源的嵌入向量通过一个统一的模型获得联合嵌入表示,最终通过
(A、B是两个商品的嵌入向量)输出层来训练获得最终的商品嵌入表示。通过该方法,即使没有足够多的用户行为,因为模型整合了图片、文本信息,可以有效避免冷启动问题。
上面只是列举了第四节案例中几种可以解决冷启动的算法模型,其他可以解决冷启动的模型这里不一一列举。总结下来,只要是模型中整合了附加信息,基本都可以有效缓解冷启动问题。
随着Word2Vec等嵌入方法在NLP、推荐、搜素等各个领域的成功运用,嵌入方法越来越受欢迎。本文讲解了嵌入方法的思想、嵌入方法在推荐上的应用思路、介绍了用于推荐业务的几种嵌入方法的一般原理,最后给出了几个工业界利用嵌入方法做推荐的算法案例及怎么利用嵌入方法缓解冷启动问题。参考文献整理了很多关于嵌入方法理论及其在搜素推荐中的应用的论文,值得大家研究和学习。
从数学的角度来说,嵌入方法就是一种投影映射,通过选择合适的映射将复杂空间的向量投影到低维空间,保持某些性质的不变性,可以更容易地解决很多机器学习问题。目前嵌入方法在推荐上的应用基本都是基于矩阵分解、Word2Vec及深度学习的思想通过部分整合附加信息来实现的。我相信未来有更多的理论知识的突破来支持嵌入方法更好地用于推荐业务,嵌入方法未来一定有更大的发展前景和应用价值,让我们拭目以待!
1.[Word2Vec] Distributed Representations of Words and Phrases and their Compositionality (Google 2013)
2.[Word2Vec] Efficient Estimation of Word Representations in Vector Space (Google 2013)
3.[Word2Vec] Word2vec Parameter Learning Explained (UMich 2016)
4.Network–Efficient Distributed Word2vec Training System for Large Vocabularies
5.A Deep Embedding Model for Co-occurrence Learning
6.[2018 阿里] Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
7.[2018 阿里] Learning and Transferring IDs Representation in E-commerce
8.[2017 facebook] StarSpace:Embed All The Things
9.[2015] Metadata Embeddings for User and Item Cold-start Recommendations
10.[2017 Criteo] Specializing Joint Representations for the task of Product Recommendation
11.[2018 Airbnb] Real-time Personalization using Embeddings for Search Ranking at Airbnb
12.[2016 Netflix] Factorization Meets the Item Embedding- Regularizing Matrix Factorization with Item Co-occurrence
13.[2016] node2vec- Scalable Feature Learning for Networks
14.[2016 微软] Item2Vec- Neural Item Embedding for Collaborative Filtering
15.[2017 Yahoo] Embedding-based News Recommendation for Millions of Users
16.[2016] Meta-Prod2Vec: Product Embeddings Using Side-Information for Recommendation
17.[WWW 19] NetSMF: Large-Scale Network Embedding as Sparse Matrix Factorization
18.[IJCAI 19] ProNE: Fast and Scalable Network Representation Learning
19.[2017] Heterogeneous Information Network Embedding for Recommendation
20.Representation learning: A review and new perspectives
21.[2017] Learning a Hierarchical Embedding Model for Personalized Product Search
22.[2017] MRLR: Multi-level Representation Learning for Personalized Ranking in Recommendation
23.Deepwalk: Online learning of social representations
24.[YouTube 2016] Deep Neural Networks for YouTube Recommendations
25.[2017 携程] A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems
26.[2015] Deep Collaborative Filtering via Marginalized Denoising Auto-encoder
27.[2014] Neural Word Embedding as Implicit Matrix Factorization
28.[2016 Yahoo] E-commerce in Your Inbox: Product Recommendations at Scale
(*本文为 AI科技大本营转载文章,转
载请联系原作者)
2019 中国大数据技术大会(BDTC)历经十一载,再度火热来袭!
豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。
【早鸟票】
与
【特惠学生票】
限时抢购,扫码了解详情!
推荐阅读
以上是关于从0到1详解推荐系统中的嵌入方法,原理算法到应用都讲明白了的主要内容,如果未能解决你的问题,请参考以下文章
从原理到落地,七大维度详解矩阵分解推荐算法
「推荐系统从0到1」服务发现
机器学习实战应用案例100篇-图网络从原理到实战应用案例
Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序
详解从0开始的嵌入式学习路线,学什么怎么学?
从原理到应用落地,一文读懂推荐系统中的深度学习技术