Grapy Embedding--更多结构信息的图嵌入技术

一:Graph Embeding 出现的原因

word2vec 和其衍生的Item2vec做为一种embedding技术的基础性方法,都是建立在序列样本(词序列,用户行为序列)基础之上的。但是在互联网背景下,数据对象之间更多的是以图结构的方式呈现的,典型的例子就是由用户行为序列产生的物品关系图,以及由属性和实体之间组成的知识图谱(knowledge graph).在面对图结构时候,传统的序列embedding方法就显得力不从心了,因此graph embedding 就成了最新的研究方向。

二:Graph Embedding 的原理

graph embedding是一种对图结构中的节点进行embedding编码的方法,最终生成的节点Embedding 向量一般包含图的结构信息和邻近节点的局部相似性信息,例如下图:由淘宝用户行为序列数据产生的物品关系图
在这里插入图片描述
从上图的例子,我们已经能够触碰到一些graph embedding 的本质,graph embedding 之所以能干好 “”sequence embedding “” ,是因为graph embedding 能够生成一些不存在的序列,例如,上图数据中没有这样的用户行为数据:B-E-F、D-E-C 等等。但是在物品关系图中,我们有机会生成这样的序列。因此,图结构比 Item2Vec 更能反映互联网场景下的用户与物品的复杂关系网络,更能捕获 Items 间的高维相似性。
当然,不同的graph embedding方法的原理不尽相同,对于图信息保留方式也有区别,下面就介绍几种主流的graph embedding 方法和他们之间的联系与区别。

三:Deep Walk—最早最基础的Graph Embedding 方法

3.1deep walk 研究的主要目的
其实关于Graph embedding 的很大一部分研究主要是如何更好地构建含有关系的样本,其中包括如何更合理的构造图,如何更合理的从图中采样得到样本,从而能够在embedding 中 更好地保留这些关系。Deepwalk就是这样,他并没有在训练embedding的模型上做改变,因此只有 输入更合理的关系样本数据,才能得到更好地embedding向量化结果,这也是图结构存在的意义之一。
3.2deep walk 的主要思想
3.2.1
deep walk 其实就是random walk 和 skip-gram 的组合。Random Walk 负责对图进行采样,获得图中节点与节点的共现关系,Skip-gram 从关系(也就是采样的序列)中训练节点的 Embedding 向量。他的主要思想就是通过在由物品组成的图结构上随机游走,产生大量的物品序列,然后将这些物品序列作为训练样本输入word2vec(skip-gram模型)进行训练,得到物品的embedding。,
3.2.2
简单的的例子如下图:
在这里插入图片描述
上图中展示的是阿里在淘宝上的 DeepWalk 的过程,在传统 DeepWalk 的基础上,阿里的还应用了会话切分和加权边,具体算法过程如下:
1,图 a 展示了原始的用户行为序列,这里设置了一个时间窗口,只选择用户在该窗口内的行为,这样处理不但可以节省计算和存储开销,也符合一个用户的兴趣趋向于随时间迁移的实情。这种处理方法被称为是基于 session 的用户行为(session-based)。经验上,该时间窗口的区间是一个小时;
2,图 b 基于这些用户行为序列构建了物品相关图,可以看出,物品 A,B 之间的边产生的原因就是因为用户 U1 先后购买了物品 A 和物品 B,所以产生了一条由 A 到 B 的有向边。如果后续产生了多条相同的有向边,则有向边的权重被加强。8在将所有用户行为序列都转换成物品相关图中的边之后,全局的物品相关图就建立起来了;
3,图 c 采用随机游走的方式随机选择起始点,重新产生物品序列;
4,图 d 最终将这些物品序列输入 word2vec 模型,生成最终的物品 Embedding 向量。
DeepWalk 的算法流程伪代码:
在这里插入图片描述
在这里插入图片描述

3.2.3
随机游走是一种路径搜索算法,用来从图上获得一条随机的路径。从一个节点开始,随机沿着一条边,正向或者反向的找到他的邻居节点,一次类推,直到达到设置的路径长度。不难发现,随机游走有两个关键步骤,第一:起始点的选择,第二:下一个跳转节点的选择。
起始点的选择有常见的两种方法
1,采用一定的规则(比如均匀抽样)随机从图中抽取一定数量的节点
2,以图中的所有节点为起始点
一般使用第二种方法,以使所有的节点都被选到。
下一跳转节点选择的两种情况
1,对于无权图
误差别的从当前节点的邻居节点中随机采样几个节点做为下一个跳转节点,重复此过程,直到访问序列长度达到预设条件即可,deep walk 原论文中就是采用的这种纯粹的随机游走的方法。
2,对于有向有权图(选择权重最大的那边条对应的节点)
对于有权图,下一跳节点的选择最简单的方法是按照边的权重随机选择,阿里的论文在讲述 DeepWalk 的时候,给出了一个非常简单的随机游走转移概率的公式,也就是到达节点 vi 后,下一步遍历 vi 的所有临接点 vj 的概率。
如果物品的相关图是有向有权图,那么从节点 vi 跳转到节点 vj 的概率定义如下:
在这里插入图片描述

四:DeepWalk 的改进:从 LINE 到 Node2Vec

(一)LINE

DeepWalk 之后,比较重要的工作是微软亚洲研究院在 2015 年发布的 LINE(Large-scale Information Network Embedding)。LINE 中定义了两种相似度来进一步深化 “节点关系”,使训练出的 Embedding 既保留局部网络结构信息又保留了一定的全局网络结构信息。

First-order proximity(一阶相似度):用于描述图中成对顶点之间的局部相似度,形式化描述为若节点之间存在直连边,则边的权重即为两个顶点的相似度(权重可以是 0-1 这样的二进制表示,也可以是任意的非负数),若不存在直连边,则一阶相似度为 0。 如下图,节点 6 和 7 之间存在直连边,且边权较大,则认为两者相似且一阶相似度较高,而 5 和 6 之间不存在直连边,则两者间一阶相似度为 0。

Second-order proximity(二阶相似度):网络中的很多相互关系其实不一定能够直接观察到,仅有一阶相似度并不能保留全局网络结构,因此作为补充,加入了二阶相似度。二阶相似度并不是通过直接观察到的连接来确定的,而是通过顶点的共享邻域结构来确定的。如下图,虽然节点 5 和 6 之间不存在直连边,但是他们有很多相同的相邻节点(1,2,3,4),这其实也可以表明 5 和 6 是相似的,二阶相似度就是用来描述这种关系的,拥有相似邻居的顶点往往彼此相似。其实二阶相似度也是符合自然的直觉的,例如,在社交网络中,拥有相同朋友的人往往有相似的兴趣,从而成为朋友;在单词共现网络中,总是与同一组词同时出现的词往往具有相似的含义。二阶相似度形式化定义为,令 pu=(wu,1,⋯,wu,|V|) 表示顶点 u 与所有其他顶点间的一阶相似度,则 u 与 v 的二阶相似度可以通过 pu 和 pv 的相似度表示。若 u 与 v 之间不存在相同的邻居顶点,则 2 阶相似度为 0。
在这里插入图片描述
相比 DeepWalk 纯粹随机游走的序列生成方式,LINE 可以应用于有向图、无向图以及边有权重的网络,并通过将一阶、二阶的邻近关系引入目标函数,能够使最终学出的 node embedding 的分布更为均衡平滑,避免 DeepWalk 容易使 node embedding 聚集的情况发生。下图是论文中的结果对比:
在这里插入图片描述
从图中可以看出,LINE 的效果最好,DeepWalk 对不同颜色的点分得也不错,但是图形中部很多点都挤在一块,而这些点都是出度很大的点,文章提了一句说对于这种点的处理 DeepWalk 会产生很大噪音,但没有详细对此分析。论文还指出,DeepWalk 利用随机游走去捕获邻近关系,更像是深度优先搜索 DFS;而 LINE 的方式更像是广度优先搜索 BFS,相对而言更合理。上图中的 GF 代表 graph factorization,这里不作介绍。

(二)Node2vec—节点跳转同质性(DFS)和结构性(BFS)的权衡

在 DeepWalk 和 LINE 的基础之上,斯坦福大学在 2016 年发布了 Node2Vec。Node2Vec 是一种综合考虑 DFS 邻域和 BFS 邻域的 Graph Embedding 方法。简单来说,node2vec 可以看做是deep walk 的一种延伸,是能够控制随机游走呈现同质性(DFS)还是结构性(BFS)的deep walk 进而实现不同关系序列的均衡。

1,同质性和结构性

Node2Vec 把邻域的采样看作是局部搜索的一种形式,通常分为两种极端采样策略:广度优先采样(Breadth-first Sampling,BFS)----结构性和深度优先采样(Depth-first Sampling,DFS)—同质性,下图能够明显看出这两种采样方式的不同。
在这里插入图片描述
结构性:指的是结构上相似的节点的embedding应该尽量相似
随机游走的过程更倾向于BFS,因为bfs会更多的在当前节点的邻域中遍历,相当于在当前节点周边网络结构中进行一次围观扫描。当前节点是局部中心点,边缘点,还是内部节点,其生成的序列所包含的节点数和顺序必然是不同的,从而让最终的embedding抓取到更多结构性的信息。题外话,各位觉得这个像不像聚类中的k-means.
如上图:
邻域被限制在起始节点的近邻节点上,与初始节点在同一社区内的节点更容易出现在一个路径里。在上图中,对于大小为 k=3 的领域采样,BFS 采样节点 s1、s2、s3。
同质性:距离上相近的节点的embedding应尽量相似
随机游走过程更倾向于DFS,因为dfs更有可能通过多次跳转,游离到远方的节点上,但无论怎么样,DFS的游走更大概率会在一个集团内部进行,这就使得一个集团或者社区内部节点的embedding更为相似,从而更多的让结构抓住网络的同质性。
如上图:
邻域由在距离起始点越来越远的连续采样的节点组成,发现能力更强。在上图中,对于大小为 k=3 的邻域采样,DFS 采样节点 s4、s5、s6。
通常在网络中两种相似性都存在。 BFS 和 DFS 采样策略在产生反映上述两种对应关系的向量表示方面发挥着关键作用。DFS 擅长学习网络的同质性,BFS 擅长学习网络的结构性。如果把上面的 Graph 的某一个节点作为 Root,然后画一个树状结构去搜索,BFS 和 DFS 就好理解了。

2,如何控制node2vec算法中的同质性和结构性倾向

重点:通过节点间的跳转概率进行控制
以下图为例,我们假设第一步是从 t 随机游走到 v 后,这时候我们要确定下一步的邻接节点。
在这里插入图片描述
形式化来讲,从节点 v跳转到下一个节点 x 的概率为:
在这里插入图片描述
在这里插入图片描述
参数 p 被称为返回参数(return parameter),控制跳回到前序节点 t 的概率,p 越小,随机游走回退到节点 t 的可能性越大,如果 p<min(q,1),则更倾向于搜索局部周边的节点,则产生的序列与宽度优先搜索(BFS)类似,更加擅长学习到网络的结构性;相反,p 越大,游走越不会访问到之前的节点,如果 p>max(q,1),刚刚访问过的节点不太可能被重复访问,则更倾向于搜索更大范围,产生的序列与深度优先搜索(DFS)类似,更加擅长学习到网络的同质性。

参数 q 被称为进出参数(in-out parameter),控制下一跳节点选择与 t 不直接相连节点的概率,当 q>1 时,节点 v 之后更倾向于访问前序节点 t 的共同邻居,当前节点更可能在附近节点游走,产生的序列与宽度优先搜索(BFS)类似,更加擅长学习到网络的结构性;q < 1 时,节点 v 之后,更不倾向访问前序节点 t 的邻居,则随机游走到远方节点的可能性越大,产生的序列与深度优先搜索 (DFS) 类似,更加擅长学习到网络的同质性。
上面这种随机游走策略和当前节点 v,前序节点 t 相关,其实是二阶马尔科夫。一般来说,我们会从每个点开始游走 5~10 次,步长则根据点的数量 N 游走更号N步。

3,同质性和结构性在推荐系统中的应用

Node2Vec 所体现的网络的同质性和结构性在推荐系统中也是可以被很直观的解释的。同质性相同的物品很可能是同品类、同属性、或者经常被一同购买的物品,而结构性相同的物品则是各品类的爆款、各品类的最佳凑单商品等拥有类似趋势或者结构性属性的物品。毫无疑问,二者在推荐系统中都是非常重要的特征表达。由于 Node2Vec 的这种灵活性,以及发掘不同特征的能力,甚至可以把不同 Node2Vec 生成的 Embedding 融合共同输入后续深度学习网络,以保留物品的不同特征信息。

五:EGES------阿里巴巴的综合性Graph Embedding技术

1,EGES的原理
Graph embedding 能够保留一些cf 忽略掉的复杂的高阶网络相似关系,但他存在一个致命的冷启动问题,例如新加入物品图的物品和那些和用户没有过多互动的长尾物品,graph embedding并不能为这些冷启动物品生成初始化embedding, 为了是这些物品能获得合理的初始化embedding .阿里巴巴通过引入更多的补充信息(side information )来丰富embedding的信息来源,从而使没有历史行为记录的商品获得 Embedding。简单来说,其基本思想就是在 DeepWalk 生成的 Graph Embedding 基础上引入 Side Information。
Side Information,可以简单理解为用户或物品的相关属性信息,我们通常会称之为用户侧信息、物品侧信息,也有些地方译为边信息、辅助信息、补充信息等。
在推荐系统中常用的特征源有:用户对物品的历史行为交互信息、发生交互的上下文环境信息、用户侧或者物品侧的属性信息、通过属性信息连接的拓扑结构延伸出的知识图谱信息。

接下来我们简单分析一下这种方法背后的思想是什么。

生成 Graph Embedding 的第一步是生成物品关系图,我们通常只是通过用户行为序列来生成物品关系图。其实我们也可以通过物品侧信息(Side Information)的相似性来建立物品之间的边,比如利用相同品牌、相同类别等信息,这样就可以生成基于内容物品关系图(想起什么了没,像不像itemcf的原理),有了这个物品关系图,自然可以在没有用户行为的情况下也能够学习到 Embedding,也一定程度上缓解了冷启动问题。
基于这种物品侧属性信息生成的物品 Embedding 向量可以被称为 Side Information Embedding 向量,当然,根据使用的物品侧信息类别的不同,可以有多个 Side Information Embedding 向量。8比如对于淘宝的商品,这些 Side Information 可以是类目、店铺、价格、品牌等等,其实就是物品在某一个方面的属性内容信息,叫 Side Information 确实也形象,Side Information 通常在排序阶段被广泛用作关键特征,但在召回阶段应用较少。
2,GES和EGES
通过随机游走,我们可以得到 item 的游走序列,包括了之前有行为的 item 以及新加入的 item,每个 item 都对应一组 Side Information,也就意味着我们同时得到了 Side Information 序列,此时需要将 item 和 Side Information 一起加入 Skip-gram 模型进行训练学习,否则不在一个向量空间,做运算无意义。

因此,对于每个 item,最后除了会得到它对应的 item Embedding,还有有各个 Side Information 产生的 Embedding,那么如何融合一个物品的多个 Embedding 向量,使之形成物品最后的 Embedding 呢?最简单的方法是在深度神经网络中加入 average pooling 层将不同 Embedding 平均起来,用公式表示为:
在这里插入图片描述
在这里插入图片描述
在论文中上述方法称为 GES(Graph Embedding With Side Information),通过这种简单的方法将 Side Information 加了进来,从而使具有相近 Side Information 的 item 可以在 Embedding 空间内更接近。这会使冷启动 item 的 Embedding 表征更加精准,同时因为内容属性的加入,丰富了向量表达,进一步提升了在线和离线的效果。
阿里团队在上述方法的基础上,将平均进一步改为加权平均的方式,也就是最终的 EGES(增强型的 EGS,Enhance Graph Embedding With Side Information)方法,这样的改动也更加符合实际情况,不同类型的 Side Information 对于在用户行为中的共现 item embedding 的贡献各不相同
EGES 使用了一个加权平均层(weighted average layer)来结合不同的 Side Information,定义如下:
在这里插入图片描述
在这里插入图片描述
EGES 的流程如下图:
在这里插入图片描述
该模型将传统 Skip-gram 模型进行了改进,加入 Side Information 以及加权平均层,成为 Weighted Skip-gram 模型,其中:
1,SI 表示 Side Information,SI 0 表示 item 本身,剩下的 SI 1 ~ SI n 表示 item 对应的几种 Side Information;
2,Sparse Features 代表 item 和 Side Information 的 ID 信息,通常用 One-Hot 编码表示;
3,Dense Embeddings 表示 item 和 Side Information 的 Embedding 信息,并在HiddenRepresentation 处进行加权平均聚合;
4,Sampled Softmax Classifier 表示使用负例采样的优化方式,N 代表采样的负样本,P 代表正样本(某个 item 周边上下 n 个 item 均为正样本,在模型中表示时不区分远近)。
EGES 的算法流程:

在这里插入图片描述
在这里插入图片描述
Side Information 带来的好处
1,提升 Embedding 的表征力度

Side Information 加入 Embedding 的训练,除了用到原本用户的行为信息,又加入了物品的内容属性信息,这样可以极大丰富 item Embedding 的表征力度,因为用户的偏好跟这些物品内容属性也可能有很大的关联。
,2,为解决 item 冷启动提供了便利

新的 item 是没有用户交互信息的,因此也就无法训练 Embedding,没有 Embedding 也就无法有效推荐新物品,这是一个很棘手的问题。不过这个新 item 会有品牌、店铺、价格、类目等一系列内容属性信息,即 Side Information,Side information 都是有现成的训练好的 Embedding。因此,可以借用 Side Information 训练好的 Embedding 来解决 item 的冷启动问题,通常的做法是,根据 item 内容属性所关联的 Side Information,将这些 Side Information 对应的 Embedding 计算向量平均值,作为冷启动 item 的 Embedding 向量。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值