陌路茶色/

Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

阿里巴巴于18年发表于KDD上的。600 billion输入,共游走150 billion条walk,XTF平台100块GPU,少于6小时训练完。

ABSTRACT

在淘宝的推荐系统中面对这样三个主要的挑战:
(1)Scalability:比如十亿用户,二十亿item(商品)
(2)Sparsity:用户趋向于仅仅和少数的item有关系,这样很难训练一个正确的推荐系统模型
(3)Cold Start:在淘宝,每小时会有百万的item被上传,这些item没有用户行为,如何处理这些item

本论文基于graph Embedding来解决这三个问题,首选从用户的历史行为中构造item graph,然后学习graph中item的embedding,在推荐过程中会使用到item的embedding。缓解稀疏和冷启动问题,side Information被整合到graph embedding 框架中。

INTRODUCTION

去解决这些问题,设计了两节点的推荐框架,第一个阶段是matching,第二个阶段是ranking。在matching阶段,为和用户互动过的item生成相似候选集合。在ranking阶段,训练一个深度神经网络模型,根据用户的表现为用户排序候选item。

在这篇文章中,我们关注在matching阶段,该阶段的核心任务是计算基于用户行为的item之间的相似性。实现这一点,我们提出为用户历史行为构建商品图来学习图中商品的embedding,之前的工作中使用CF来计算相似性,但是CF只考虑了在用户行为历史的共现关系,我们在item图中使用随机游走来捕获item之间更高阶的相似性,但是对于item之间有很少边或有没有边的情况下学习embedding仍旧是一个挑战,因此我们提出EGES(dubbed Enhanced Graph Embedding with Side information)。

FRAMEWORK

Construction of Item Graph from Users’ Behaviors

用户的行为可以被当成一个序列,但是使用用户的全部历史信息是不现实的,因为(1)大量的数据太耗时,(2)用户的兴趣会随着时间而变化。在实践中,我们设置一个时间窗口并仅仅选择在这个窗口内的用户行为,这被叫为基于会话的用户行为,经验上,窗口的持续时间是一小时。

在我们获得一个基于会话的用户行为数据后,如果两个商品在一个用户的序列中共现,那么这两个商品被连接,注意构成的是有向图,图中的方向 a->b 表示的商品a在商品b之前被用户访问,用这种方法,被构造的有向图可以表示基于所有用户不同商品之间的相似性。

在实践中,我们在提取用户序列之前需要过滤非法数据和非正常行为以消除我们提出的方法中的噪声。在我们的系统中如下行为被视为噪声:
• 如果发生一个点击后停留时间小于1秒,这个点击将被作为是无意的行为,需要被移除
• 在Taobao中有一些过度活跃的用户,他们实际上是垃圾用户。根据我们长期观察,如果一个用户在三个月之内买了1000件商品或者它的总共点击数大于3500,那么这个用户是一个垃圾用户,我们需要过滤这些用户的行为。
• 零售商会不断的跟新商品的信息,这样一个标识符可能对应多个商品,这里我们会移除掉和其相关的其他商品(保持一个标识符对应一个商品,且该商品是最新的)

Base Graph Embedding

我们采用DeepWalk来学习节点的embedding信息,每个节点之间的转移概率被定义为如下:
屏幕快照 2019-10-30 下午6.37.06.png
其中$N_{+}(v_i)$表示该节点的出度节点。(我看的DeepWalk不是和边权重没有关系吗,这里成了有偏游走了。)
整个过程如下图:
屏幕快照 2019-10-30 下午6.41.20.png
论文中提到在进行负采样时,负采样的个数越多,效果越好。

Graph Embedding with Side Information

冷启动的问题,比如UNIQLO的两个hoodies可能非常相似(一家店中相同类别的商品相似),喜欢Nikon lens(尼康镜头)的人可能对Canon Camera(佳能相机)感兴趣,这意味着相似的商品在embedding空间中应该非常接近,基于上述我们提出了下图的GES方法。
屏幕快照 2019-10-30 下午8.39.59.png
使用$W$表示商品或者辅助信息的embedding矩阵,$W_v^0$表示商品$v$的embedding,$W_{v}^{s}$表示第$s$个辅助信息类型的embedding,每个商品$v$都有$n$个类型的辅助信息,即有n+1个向量$W_v^0,...,W_v^n \in \mathbb{R}^d$,其中d表示的是向量的维度,其中经验上来说商品的embedding和辅助信息的embedding维度是相同的。去整合辅助信息,将这n+1个向量通过平均池化层得到商品$v$的相关embedding,其中:
屏幕快照 2019-10-30 下午8.47.55.png
$H_v$表示的是商品$v$的聚合embedding,这个结果解决了冷启动问题,并且提高了线上和线下的表现。

Enhanced Graph Embedding with Side Information

尽管GES有很好的收益,但是整合不同类型的辅助信息在embedding中仍旧是有问题的,因为在公式(6)中每个类型的辅助信息对最后的embedding来说是相同的,这在现实中是不可能的。比如,用户拍了iphone,接下来可能会去看Macbook或者iPad,因为这些的品牌都是Apple,然而,一个用户可能因为方便和低价而在同一家淘宝店买不同牌子的衣服。因此,不同类型的辅助信息在用户行为的商品中有不同的贡献。

去解决这个问题,我们提出EGES,不同类型的辅助信息在聚合到最终的embedding时应有不同的贡献,给定$A \in \mathbb{R}^{|V| \times (n+1)}$是权重矩阵,其中$A_{ij}$表示第$j$个辅助信息的类型和第$i$个商品的权重,权重矩阵的第一列表示的是商品$v$本身的权重,这里使用$s_v^s$表示第$s$个辅助信息的类型的权重,$a_v^0$表示商品$v$的权重,这样公式(6)被改写为:
屏幕快照 2019-10-30 下午9.04.36.png
添加$e$的原因是为了确保每个类型的权重都大于0。

对于训练数据中的节点$v$(使用H表示)以及其上下文节点$u$,使用$Z_u \in \mathbb{R}^d$表示,$y$表示标签,EGES的目标函数是:
屏幕快照 2019-10-30 下午9.19.04.png
屏幕快照 2019-10-30 下午9.20.46.png
对应的EGES框架如下:
屏幕快照 2019-10-30 下午9.21.49.png
以及按权重的Skip-gram:
屏幕快照 2019-10-30 下午9.22.45.png

留下一条评论

暂无评论