主要内容包括:
添加小助手链接:
1.免费资料领取:点击上方链接添加小助手回复【大数据合集】免费领取《大数据典藏版合集》
回复【算法合集】免费领取《互联网核心算法合集》
2.添加交流群:点击点击上方链接添加小助手回复【大数据交流群】加入“大数据交流群”
回复【算法交流群】加入“算法交流群”
01
Background
1. 推荐系统在 E&E 上的两大难点
在建立推荐系统的模型之前,我们需要获得用户和内容的相关数据。可是在推荐系统的实践中,经常会遇到冷启动的问题,即缺少新进入的用户信息和新进入的内容信息。对于用户信息,很多公司都会有市场部从市场上的各个渠道导入进来,成本较高,且无法完全覆盖。对于新进入的用户,他们往往是没有历史行为的,而这个行为特征却是推荐系统中最重要的特征之一。而新用户的留存对于公司是至关重要的,所以对于新用户的推荐要求尽可能的精准,使其对于平台产生忠诚度。新用户的推荐是推荐系统的第一个难题。第二个难点则是新内容的推荐,新内容首先是没有用户的反馈,没有用户的反馈也就无法利用相应的评估体系总结内容的真实价值。同时,新内容还存在难曝光的问题。现存的推荐系统,从比较传统的推荐系统,到 Word2Vec,再到现在各种各样的神经网络,在召回阶段都无法很好的召回新内容, 所以很难进入到训练样本中去,这是新内容的长尾问题。
2. 经典图模型—协同过滤
我们可以把协同过滤认为是一种图推荐模型, 因为用户和内容可以认为是二分图结构。推荐系统的宗旨是建立更多的用户到内容的链接,随着图越来越大,就可以抽取到更多的信息, 从而服务更多的用户。以 item-based CF 为例,通过计算 item 之间的相似度,从而计算出最相似的 topK 内容,把它们当作当前 item 的邻接点,构成物与物相连的有向图保存在起来。推荐时快速定位用户接触过的 seeds 列表:在”一推多”场景直接查找节点的邻边。 在 “n 推 n” 场景根据多节点对各邻边加权求和。在多样性推荐中将 seeds 分组并执行多个”一推多”操作。
CF 的缺点也很明显,首先,由于算法的设计问题,导致了它是一种偏热门推荐。在数据过滤的初期,没有达到某种阈值的 user 和 item 将会被过滤掉,形成马太效应。第二,容易形成内部环路。比如某些很受欢迎的主播,他们互为 topK,导致一直在他们内部互推。
这时,我们可以通过知识图谱和 node2vec 来拓展图的泛化能力。
3. Graph Embedding
我们都知道在 NLP 任务中,word2vec 是一种常用的 word embedding 方法,来源于神经网络模型,是神经网络的一种中间结构的简化。结构如上图所示:
word2vec 通过语料库中的句子序列来描述词与词的共现关系,进而学习到词语的向量表示。它是将序列向量化的一个浅层神经网络,通常只需要有效行为的序列就可以快速得到一个以 id 为单特征 item2vec 召回模型。
Graph Embedding 的思想类似 word2vec,使用图中节点与节点的共现关系来学习节点的向量表示。在 graph 中随机游走生成顶点序列,构成训练集,然后采用 skip-gram 算法,训练出低维稠密向量来表示顶点。这种思想与传统的协同过滤相比有两个比较明显的特点:
在 graph 中主要存在两种关系,homophily 和 structural equivalence。所谓 homophily,即是在 graph 中紧密相连的邻域。具有这种关系的顶点之间,学习出来的向量应该接近或者相似。structural equivalence,就是指在图中具有相似作用的顶点,他们之间未必相邻,甚至可能相隔较远,都是所在邻域的中心顶点。满足这种关系的顶点之间,特征向量也应该接近或者相似。通常在现实世界的 graph 中,会同时存在这两种关系。可以表示如下结构:
但是在不同的任务中需要关注的重点不同,可能有些任务需要关注网络 homophily,而有些任务比较关注网络的 structural equivalence,可能还有些任务两者兼而有之。那么关键的问题就是如何来描述节点与节点的共现关系。RandomWalk 是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。
DeepWalk 从一个节点开始采样,跳到下一个节点的概率完全取决于邻边的权重, 无法灵活地捕捉这两种关系,在这两种关系中有所侧重。而实际上,对于这两种关系的偏好,可以通过不同的序列采样方式来实现。有两种极端的方式,一种是 Breadth-First Sampling ( BFS ),广度优先搜索,如图中红色箭头所示,从 u 出发做随机游走,但是每次都只采样顶点 u 的直接邻域,这样生成的序列通过无监督训练之后,特征向量表现出来的是 structural equivalence 特性。另外一种是 Depth-First Sampling ( DFS ),深度优先搜索,如图中蓝色箭头所示,从 u 出发越走越远,学习得到的特征向量反应的是图中的 homophily 关系。Node2vec 则额外定义了参数 p、q,用于控制回退、BFS、DFS 动作。
02
Related Work
1. Alibaba graph-embedding
首先我们介绍一篇阿里巴巴的图嵌入技术论文 “Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba ( kdd 2018 )”, 其流程如下图所示:
首先如图 (a),假设每个用户有不同的用户行为,每个用户浏览过不同的 item 按时间顺序排列。这里有一个业务上的技巧,就是把用户在某个时间窗内的连续行为作为一个 session,例如一个小时,如果超过时间窗,就划分为不同的 session。通常在短周期内访问的商品更具有相似性。每个 session 构成一个 sampled sequence,将所有 sampled sequence 构成有向图,图边表示该方向流过的次数,得到的 graph。
如图 (b),边权重记录了商品的出现次数。计算商品的转移概率,并根据转移概率做游走,生成商品序列,图 (c)。最后通过 skip-gram 训练出 embedding。
新商品没有用户行为,因此无法根据 Base Graph Embedding ( BGE ) 训练得出向量。为了解决物品的冷启动问题,阿里加上了物品的边信息 Side Information ( SI ),例如品牌,类别,商店等信息。SI 相似的商品,在向量空间中也应该接近。如下图所示:
在最下面的 Sparse Features 中, SI0 表示商品本身的 one-hot 特征, SI1 到 SIn 表示 n 个边信息的 one-hot 特征,阿里采用了13种边信息特征。每个特征都索引到对应的 embedding 向量,得到第二层的 Dense Embeddings,然后将这 (n+1) 个向量做平均来表示这个商品,公式如下图。 其中,Wvs 表示商品 v 的第 s 个边信息向量, Hv 是隐向量。
剩下的事情就和 BGE 相同了。这个做法叫 Graph Embedding with Side Information ( GES )。不同的边信息对于商品的向量可能会有不同的贡献,可以另外学习一个权重矩阵 A∈R|V|×(n+1),其中 |V| 表示商品集合 V 的数量,Aij 表示第 i 个商品的第 j 个边信息权重。计算方法如下所示,从平均变成了加权求和。对权重取 e 的指数是为了保证所有边信息的权重大于0。
这个方法叫做 Enhanced Graph Embedding with Side Information ( EGES )。
2. Airbnb Word2Vec
Airbnb 提出的冷启动和采样方式同样值得我们借鉴。首先,它同样是采用 session 进行分割的,而且明确指出 30mins 内的连续有序 sequences。同时提出了一个新的负采样策略,即从与当前 item 的同一个 cluster 里面采样负样本。而且 Airbnb 强化了付费行为的训练。点击序列中若有付费行为,则将这个 item 强制纳入该序列每个 item 的上下文窗口。
Airbnb 的冷启动策略很简单, 他并没有做 end2end 的学习属性的 embedding,而是直接把 new item 按主要属性 ( 房间数,地域,地段等等 ) 检索到最相似的 top3 个已知的 item,取3个 item 向量的平均值初始化 new item embedding。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777