找时间学习了一下论文:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
该论文根据用户的行为在 item与item之间建立图。再根据Graph,使用random walk 算法生成sequence。
总共分为三个步骤:
1. 根据用户的行为在 item与item之间建立图,(需要提出一些over active user)
2. 使用random walk 算法生成sequence。
3. 利用word2vec学习每个item(node)的embedding(Baseline 版本)。
冷启动问题(cold start issue)
baseline的版本不能够解决cold start的问题。
为了解决cold start 问题,基于这个baseline版本,论文把其他的feature也放入到神经网络当中。
解决方案1:
SI 0 to n 都采用one-hot编码,然后每个SI(side information)都训练出一个embedding系列。
最后将所有的embedding做average sum。Hv为混合后的向量,再放入到神经网络中做训练。利用反向反馈训练参数。
解决方案2:
在解决方案1的基础上,每个feature的embedding计算出一个weight,但是本文中采用的矩阵A的size是(|V|*n)的,也就是每一个node都会有n个weight。计算量比较大,本文说用了100个GPU计算出来的。大厂真是有钱。这样weight sum 层之后,最后这个item的embedding变成了下面这个形式。
解决方案3:
应该将title的信息作为feature,放入embedding当中,个人觉得,这个做法可以参考CENE 那篇论文。
negative Sample training
negative sampling 采用word2vec的sample 方法。可以找batch里面与本node无关的点作为negative 数据。
φ是节点与embedding的映射函数。
实验部分的参数:1. skipgram 的context window=5,dimension=160,number of walks per node=20, length of random walk=10
应用:
这个淘宝的推荐系统是在ranking 之前挑选出candidates,并在Ranking系统中做排序,这个部分比较耗时,可以采用LSH来建索引,方便查找。
文章最后使用CTR来评估结果,CF对应base,CF是协同过滤算法。BGE是本文实现的第一个版本(baseline版本)。