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

阿里的EGES是Graph Embedding的一个经典应用,在内容冷启和物料召回上面有较多的落地潜力。主要思想是根据用户交互的物料作为节点构建物料图,在传统的DeepWalk学习节点Embedding的基础上,使用attention融合节点的side information,使得学习到的物料Embedding包含更丰富、精准的信息。

动机

为了解决淘宝推荐的三大挑战:

  1. Scalability 扩展性,淘宝有十亿量级的用户和二十亿量级的物料
  2. Sparsity 稀疏性,很多用户有交互的物料非常少,用户或者物料很难学习的充分
  3. Cold Start 冷启动问题,每小时有上百万的新物料上线,新物料的推荐是个很大的问题
优化目标

给定图阿里opensearch 与es对比_机器学习阿里opensearch 与es对比_算法_02表示节点集合,阿里opensearch 与es对比_算法_03表示边集合,目标是学习一个映射函数阿里opensearch 与es对比_阿里opensearch 与es对比_04,使得每个节点阿里opensearch 与es对比_权重_05映射成一个阿里opensearch 与es对比_人工智能_06维向量。

使用DeepWalk方式学习Graph Embedding,DeepWalk使用Word2vec来学习图的节点表示。应用Skip-gram来优化,表示如下。
阿里opensearch 与es对比_阿里opensearch 与es对比_07

构建图

构建有向图,采样节点序列。需要做清洗:点击后停留不超过1s的行为去掉;3个月内购买超过1000个物料或者超过3500个点击的用户去掉;对于物料ID不变但是内容有更新的物料去掉。

阿里opensearch 与es对比_阿里opensearch 与es对比_08


随机游走的节点转移概率定义如下,阿里opensearch 与es对比_人工智能_09表示节点的邻接矩阵,阿里opensearch 与es对比_阿里opensearch 与es对比_10表示节点阿里opensearch 与es对比_阿里opensearch 与es对比_11到节点阿里opensearch 与es对比_权重_12的权重,节点的权重定位为相邻节点阿里opensearch 与es对比_阿里opensearch 与es对比_11跳转到节点阿里opensearch 与es对比_权重_12的频率。

阿里opensearch 与es对比_算法_15

然后应用优化目标

阿里opensearch 与es对比_阿里opensearch 与es对比_16

其中阿里opensearch 与es对比_阿里opensearch 与es对比_17是窗口大小,使用节点独立性假设

阿里opensearch 与es对比_人工智能_18

基于负采样方法,阿里opensearch 与es对比_阿里opensearch 与es对比_19表示节点阿里opensearch 与es对比_阿里opensearch 与es对比_20的负采样,可以得到优化目标的详细形式

阿里opensearch 与es对比_权重_21

GES:Graph Embedding with Side Information

除了物料ID之外,还可以加入其他的物料信息,比如物料一级类目、二级类目、所属商家、所属店铺等信息,阿里opensearch 与es对比_权重_22表示物料ID的Embedding矩阵,其中阿里opensearch 与es对比_机器学习_23表示物料节点阿里opensearch 与es对比_权重_24的ID的Embedding,阿里opensearch 与es对比_机器学习_25表示第阿里opensearch 与es对比_权重_26个sideinfo,阿里opensearch 与es对比_阿里opensearch 与es对比_27表示融合之后的Embedding
阿里opensearch 与es对比_阿里opensearch 与es对比_28

EGES:Enhanced Graph Embedding with Side Information

上面各个sideinfo融合的时候权重是一样的,实际情况肯定是不同的sideinfo权重不一样,设置不同的权重更符合事实。设置一个权重矩阵阿里opensearch 与es对比_阿里opensearch 与es对比_29 表示各个节点在各个sideinfo上面的权重,融合后的Embedding为
阿里opensearch 与es对比_人工智能_30

学习算法

节点阿里opensearch 与es对比_权重_24的Embedding是阿里opensearch 与es对比_阿里opensearch 与es对比_27,节点阿里opensearch 与es对比_权重_24的一个邻居节点的Embedding表示为阿里opensearch 与es对比_阿里opensearch 与es对比_34,label为阿里opensearch 与es对比_权重_35,那么代入上面的优化目标,可以得到

阿里opensearch 与es对比_权重_36

梯度求解如下

阿里opensearch 与es对比_阿里opensearch 与es对比_37


算法步骤

阿里opensearch 与es对比_阿里opensearch 与es对比_38


阿里opensearch 与es对比_权重_39

实验结果

阿里opensearch 与es对比_权重_40

DeepWalk相关

EGES使用了DeepWalk作为Graph节点Embedding的学习,这里简要回顾下DeepWalk。

DeepWalk优缺点:

优点:
首个将自然语言处理和深度学习应用到图机器学习中
稀疏数据场景性能很好

缺点:
随机均匀游走
需要大量随机游走序列
学到的是局部信息,很难学到全局信息
仅利用到节点的连接信息,没有利用节点的属性
使用的是word2vec,网络层级不深

DeepWalk的主要思想是将图中节点进行采样得到一系列节点序列,将这些节点序列看做句子,节点看做词汇,套用自然语言处理处理领域的word2vec对节点进行无监督编码处理,得到节点Embedding。使得在图结构中比较接近的节点的Embedding在向量空间中也比较接近。

如下图所示,图中比较接近的点编码后的Embedding(二维,d=2)在向量空间上也是比较接近。

阿里opensearch 与es对比_权重_41

为什么可以套用Word2vec

因为自然语言处理中,句子中的词汇的分布是幂律分布,少量的词大量使用,有大量的长尾词汇。而一个现实的图中,也是少量的节点有大量的连接(度),大部分节点的度比较少,二八定律也非常明显,因此随机采样的节点序列也是符合幂律分布的,因此可以套用。

阿里opensearch 与es对比_权重_42

使用skip-gram算法,用中心词预测周围词,阿里opensearch 与es对比_阿里opensearch 与es对比_17表示窗口大小
阿里opensearch 与es对比_阿里opensearch 与es对比_16

DeepWalk算法步骤

设定好窗口大小阿里opensearch 与es对比_阿里opensearch 与es对比_17,Embedding大小阿里opensearch 与es对比_人工智能_06,每个节点随机游走的次数阿里opensearch 与es对比_算法_47,游走的序列长度阿里opensearch 与es对比_权重_48

阿里opensearch 与es对比_阿里opensearch 与es对比_49

阿里opensearch 与es对比_阿里opensearch 与es对比_50

实验结果

因为是无监督产生的Embedding结果,实验评估的时候讲这些Embedding作为中间结果来做多分类,计算F1值,可以看到标注的label比例越大,DeepWalk效果越好。

阿里opensearch 与es对比_机器学习_51


阿里opensearch 与es对比_机器学习_52


节点的游走次数阿里opensearch 与es对比_算法_47对效果的影响,大概在阿里opensearch 与es对比_权重_54之后效果增长缓慢。

阿里opensearch 与es对比_人工智能_55