随机生成元素升序向量_推荐系统中用户向量的表示学习

9464873ad9e8da5fff76d47dd81f4055.png

随着深度学习在推荐系统中的应用,embedding成为绕不开的话题。无论是召回还是排序阶段,均应用到embedding技术。目前已经有很多文章在讨论item的embedding如何生成,本文希望讨论user embedding生成的几种方法,欢迎大家补充和讨论。

Item2Vec+Pooling

在word2vec提出后,给向量化学习提供了很好的思路。微软于2016年提出item2vec[1],本质是skip gram+negative sampling的方式学习item的向量表达。生成item vector之后,可以根据用户历史上与item的交互行为,求avg/max/ pooling获取用户的向量表达。这是最直接的user vector生成方式,但是在实际使用中往往效果一般。主要原因是泛化能力差,对user embedding的学习是无监督的。

除此之外,在如何生成item vector的问题上,item2Vec也给出明确的方法。word2vec对于顺序是有强依赖的。但是对于大部分推荐场景,用户的购买(点击)序列没有强顺序关系,因此我们在构造样本时需要根据场景做一些变化,如:1)需要将滑动窗口设置成最长的长度。保证同一个item的用户,均处在同一个context下。2)通过多次shuffle原始序列构建不同的序列。

7f2a10506c4ff1d12ab34a3bcf6a800b.png

Doc2Vec

doc2vec其实是word2vec的一种扩展方法,当我们通过user与item的交互历史构建出训练的序列时,可以将user作为global context加入到训练中,学出user和item的向量。该模型的优势在于,user和item在一个向量空间内。构建线上服务时,能够通过ANN库快速做user2item的匹配,直接通过user embedding召回item。

Factorization Machine

FM是推荐系统中常用的算法,因为推荐系统的特征空间通常是稀疏的,FM擅长处理稀疏特征,通过丰富的特征交叉提高模型的效果,可以认为FM也是一个浅层的神经网络。FM类模型求解出的隐向量可以作为该ID对应的特征向量,但是每一个feature group的ID拥有单独的特征空间。所以该特征向量可以用于feature group内部各ID的相似性比较,如衡量用户相似度(user-cf)物品相似度(item-cf),但是无法直接通过user embedding找到item embedding的近邻。接下来介绍几种DNN的方式构建user embedding。

688a812c62abd8e28fdbcbdb358097b0.png

Youtube DNN

Youtube DNN作为深度学习+推荐系统在业界的范文,在王喆的机器学习笔记中,https://zhuanlan.zhihu.com/p/52169807有很多实际工程问题的讨论。在召回DNN中,引入丰富的用户侧特征(包括用户的观看和搜索历史),从而学习到的模型更加全面,泛化能力强。模型的最后一层全连接的输出作为user embedding表达,item embedding则使用softmax+negative sampling有监督训练该DNN时,生成的softmax权重向量来表示。因此user embedding和item-embedding也处于同一个特征空间,线上serving时,可以采用ANN的方式查找最近邻。

fa876c191b2ba89974a459e36d715267.png

DSSM

DSSM及微软后续推出的multi-view DSSM也代表了一种思路。这种多塔的结构,可以为user,item构造不同的塔,通过n层全连接之后,将最后一层输出层的向量拼接在一起做softmax,或者直接通过cosine衡量两者的相似性。训练完成后,模型全连接层的输出向量可以作为user,item的embedding表达,而且向量处在同一个向量空间,可以在线进行ANN查找,有效提高线上serving的性能。

7a51317caadfe7723e307c0c5f51507e.png

Graph embedding

user和item之间的关系可以构建成一张图,对于用户点击行为建了一个图G(u,e),除此之外,其他行为(如:item之间属性相关等均可以生成一条边)。图生成之后,就可以使用DeepWalk,Node2Vec,LINE,GCN等算法进行训练。以DeepWalk为例,在建好的图中随机游走,生成节点序列,根据不同的使用场景,可以采用不同的随机游走方式,已实现适合当前场景的策略。生成随机游走序列后使用skipgram进行训练产出向量。Graph Embedding是一个很大的话题,KDD2017 tutorial有关于Graph Embedding的专场分享,大家可以下载相关的slides学习。阿里也根据自己的使用场景在提出了一些改进方法,整体的思路是在图中加入更加丰富的特征,构建DNN网络来训练,详细内容会放在后续的文章中仔细讨论。

[1] Barkan O, Koenigstein N. Item2vec: neural item embedding for collaborative filtering[C]//2016 IEEE 26th International Workshop on Machine Learning for Signal Processing (MLSP). IEEE, 2016: 1-6.

[2] Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations[C]//Proceedings of the 10th ACM conference on recommender systems. ACM, 2016: 191-198.

[3] Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.

[4] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.

b8d2a96f1dd3ae11ad246555387dac52.png

欢迎大家关注我的公众号,一起讨论实用的推荐系统技术。


该文章也在如下问题中回复。

推荐系统中如何做 User Embedding?​www.zhihu.com
e62a34c19966fbe807a40967f822444e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值