07 | Embedding进阶:如何利用图结构数据生成Graph Embedding?
07 | Embedding进阶:如何利用图结构数据生成Graph Embedding?
讲述:王喆
时长16:53大小15.46M
互联网中有哪些图结构数据?
基于随机游走的 Graph Embedding 方法:Deep Walk
在同质性和结构性间权衡的方法,Node2vec
Embedding 是如何应用在推荐系统的特征工程中的?
小结
课后思考
赞 32
提建议
精选留言(37)
- 浣熊当家2020-12-11王喆老师!我刚刚问了那个deepwalk在原本就是序列数据上的应用的问题,我说我能想到的优势就是扩充样本, 但是通过一系列的尝试,我觉得好像是恰恰相反!用deepwalk的时候生成比原序列样本少,才能降低噪音,抓住主要关联。特别想跟老师探讨一下这个结论。 具体是这样的, 我用我们公司的用户浏览网页的序列数据,来做网页的embedding,原本有 500k条序列,一开始我用deepwalk生成了原数据两倍的样本(1mm)的samples, 结果训练出来的embedding,网页之间的similarity很低 (每个网页跟最近网页的similarity值达到0.5左右, 如果直接用原样本可达0.7), 接着我试着降低deepwalk生成样本的数量,最后用了跟您同样的20k,通过随机抽查,效果特别的好(可以达到0.9以上,而且结果很make sense)。所以我觉得deepwalk的好处反而是去掉多余噪音信息,关注主要矛盾,所以一般要生成比原样本更少的样本量展开
作者回复: 非常棒的实践。 所以我一直说实践出真知,从来都不是哪个算法比另外一个更好。我觉得你说的没错,deepwark的抽样过程保留了转移矩阵的“主要框架”,但同时当抽样次数不太高的时候,item embedding的覆盖率反而没有item2vec好。 这次的实践经验推荐其他的同学参考,赞!
共 4 条评论77 - 微波2020-10-16王老师,对于深度学习这块儿我是个新手,查找网上的东西真是太多了,好像说的都有道理,真是不知道该看些啥,能否推荐一些经典papers作为进一步学习的资料吗?十分感谢!
作者回复: 推荐关注我的推荐系统paper list吧,经典的不能再经典了。https://github.com/wzhe06/Reco-papers
43 - 张弛 Conor2020-10-17Embedding预训练的优点:1.更快。因为对于End2End的方式,Embedding层的优化还受推荐算法的影响,这会增加计算量。2.难收敛。推荐算法是以Embedding为前提的,在端到端的方式中,在训练初期由于Embedding层的结果没有意义,所以推荐模块的优化也可能不太有意义,可能无法有效收敛。 Embedding端到端的优点:可能收敛到更好的结果。端到端因为将Embedding和推荐算法连接起来训练,那么Embedding层可以学习到最有利于推荐目标的Embedding结果。展开
作者回复: 赞,标准正确答案。
共 4 条评论42 - 轩2021-01-06老师您好,关于课后思考题有些疑惑,预训练emb和end2end emb: 首先 预训练emb实现了模型和emb的解耦,解耦之后,模型只需要关注emb即可,emb就是物品的本征表示,线上服务也就是查redis拿emb完成推断。缺点么,感觉有风险?假如emb是由上游提供,上游重train之后,每一维的隐含意义就变化了,下游模型必须重新train,否则不就出错了? end2end的训练的话,对emb可以finetune,理论性能更高,但是总感觉不甚灵活?对于新的物品不停更新发布,岂不是nn.embedding的vocab需要不停的扩充,模型也需要不停的再次训练? 嗯,感觉在工程落地时,面对非静态的物品集,要么不灵活要么有风险?展开
作者回复: 非常非常好的思考,推荐给其他同学。我觉得你说的都没错。 我想进一步讨论的是第一点,到底模型需不需要重新训练。 我觉得对于有些上层模型是不用的,比如这些上层模型只接受embedding的similarity,不直接接收emb本身。 那么对于接收emb本身直接到网络结构里的,我觉得确实是需要重新训练的。 当然欢迎大家继续就这个问题讨论,很好的insight
22 - 张弛 Conor2020-10-29请问老师,有两个问题有点疑惑,第一个问题是采用Node2Vec算法时,当前节点v到下一个节点x的概率在经过进出参数和返回参数调整后是否需要做概率的归一化操作,使节点v到所有下一节点的概率为1呢?第二个问题是既然我们希望网络要么体现“同质性”要么体现“结构性”的特点,那么为什么一定要设定两个参数p和q,而不是仅用一个参数m(打比方)来实现,当m小,就是同质性强,结构性弱,当m大,就是同质性弱,结构性强?
作者回复: 非常好的问题: 1、需要归一化。注意我们在原文中一直强调我们要计算的是跳转“权重”,而不是跳转“概率”,既然是权重,我们就需要通过归一化转换成跳转概率。 2、设置两个参数,是因为与一个点相连的点有三类,dtx=0,1,2。我们固定一类点的权重为1,就需要分别给另外两类点不同的控制参数,就是p和q,这样更灵活。如果只用一个参数,当然也可以,但灵活性就差一点。
共 2 条评论9 - Dikiwi2020-10-21直观理解,预训练的emb本身因为是有一定意义的,所以喂给mlp之后理论上可以加速收敛,但因为这个emb是通过其他方法训练出来的,本身不是对该模型服务的,所以很可能走到局部最优解?
作者回复: 这个点非常好。e2e训练的好处之一就是能够找到embedding层在这个模型结构下的最优解。预训练可能损失一些效果。 但好处你也说过了,可以大幅加快收敛的速度。
共 3 条评论8 - 远方蔚蓝2020-10-16老师后面会介绍一下GraphSAGE和GAT在推荐的应用与实践吗,业界现在用的挺多。
作者回复: 会讲GraphSAGE的原理和细节。
共 2 条评论7 - Geek_63ee392020-10-16“首先,为了使 Graph Embedding 的结果能够表达网络的“结构性”,在随机游走的过程中,我们需要让游走的过程更倾向于 BFS(Breadth First Search,宽度优先搜索)” 这里应该是DFS吧?并且同质性是使用BFS
作者回复: 这是非常常见的一个问题,也推荐其他有疑问的同学关注。 推荐参考原文中的解释。 We observe that BFS and DFS strategies play a key role in producing representations that reflect either of the above equivalences. In particular, the neighborhoods sampled by BFS lead to embeddings that correspond closely to structural equivalence. The opposite is true for DFS which can explore larger parts of the network as it can move further away from the source node u (with sample size k being fixed). In DFS, the sampled nodes more accurately reflect a macro-view of the neighborhood which is essential in inferring communities based on homophily. 原文地址 https://github.com/wzhe06/Reco-papers/blob/master/Embedding/%5BNode2vec%5D%20Node2vec%20-%20Scalable%20Feature%20Learning%20for%20Networks%20%28Stanford%202016%29.pdf
共 5 条评论7 - inkachenko2021-02-24老师,我想问一下deep-walk随机选择起始点的时候,是所有节点等概率选取呢?还是像HMM一样,以原始行为序列中节点出现次数为权重建立一个初始状态概率分布,再随机选取呢?感觉后一种更加合理。。
作者回复: 我在sparrow里的实现是后一种,我觉得更合理,否则会改变数据的分布。
5 - 雪焰🐻🥑2020-10-16对于文中的:"“预训练应用”指的是在我们预先训练好物品和用户的 Embedding 之后,不直接应用,而是把这些 Embedding 向量作为特征向量的一部分,跟其余的特征向量拼接起来" 请问老师,比如对文本的embedding x和图像的embedding y会是得到不同的维度,这种情况下怎么把x和y拼接起来输入DL 模型呢?直接concatenate么?不知道下节课会不会涉及到具体操作,谢谢老师!展开
作者回复: 最直接的方式是直接concatenate 再交由后续多层神经网络处理。 为了实现一些重点embedding之间的交叉,也可以进行多embedding之间的element wise交叉,或者一些乘积操作后输入后续mlp。 基于emb的操作非常多,这里没有统一的答案,也是各种模型层出不穷的原因。
共 2 条评论5 - Wa2021-01-07一直没动手尝试item2vec和graph embedding相关算法,因为对于我们的业务,不同商品之间关系比较独立,不存在“先看了A明星新闻,再看与他有绯闻的B明星新闻,再看他们共同作品的新闻...”这种有时序关系的用户行为序列,所以不确定用类似word2vec这种作用于文本(文本天然具有强前后相关性)的模型是否有效。我们的用户依次点击A - B - C - D可能仅仅是因为展示列表时这个顺序,而不存在A离B近而离D远这种信息,不知道老师怎么看。展开
作者回复: 用户依次点击虽然被你的展示顺序bias,但是仍然包含了用户共同的兴趣特点。所以完全可以使用item2vec。当然最终的效果要看你的实践结果,这里都是经验上的猜测。
共 2 条评论4 - 浣熊当家2020-12-02老师知道有什么sample code, 可以把转移概率矩阵(项目中的transitionMatrix 和itemDistribution )生成图5这种graph可视化图吗?感觉在做presentation的时候,人们就认图,没有图感觉说再多也没有热烈的反馈
作者回复: 哈哈,这其实是个好问题。TensorBoard里其实是有embedidng可视化的工具的,可以研究一下。其他还有Embedding Projector之类的,可以自己研究一下。
共 3 条评论4 - 褚江2021-02-23王老师,我想请问, embedding层可以加入到树模型中吗?很多时候在比较小的样本上训练,感觉Lgbm会好很多,但好像没有人这样做是吗?
作者回复: embedding层应该是没法跟树模型结合的。但是训练好的embedding也许可以放到树模型里面做进一步训练。仅作参考。
共 3 条评论3 - Dive2021-01-24王老师,好多论文里介绍完自己的深度学习推荐模型A都会加一个预训练嵌入的对比。我理解是将预训练得到的嵌入作为深度学习推荐系统模型A的嵌入的初始化;我其实很疑惑,实际中应该是情况①还是情况②呢?感谢老师~ ①这些嵌入在深度学习模型中就固定住,不会更新 ②这些嵌入仅仅是初始化作用,在模型中还会更新
作者回复: 这两种情况都会存在,但业界第一种用的比较多。 后续课程还会讨论这个问题,可以继续学习。
共 2 条评论3 - 香格里拉飞龙2021-08-10老师,关于同质性和结构性及其表达,不知这样理解是否可行呢? 1.倾向于广度优先搜索时(p越小),节点更容易在起始点周围跳转,而且经常会返回前一节点,反应微观的、局部的关系。 比如起始点为图3中节点u,游走长度设为4。所以游走序列可能是u s1 u s1,u s1 u s2,u s1 s2 s1,u s1 s2 u,……,经过许多次游走后,会发现游走序列大部分都在u及其相邻点s1、s2、s3、s4之间转悠,而且其中会有一部分序列在转悠一圈后又回到u。于是可以稍微推断出u是中心节点,且s6的情况与之类似。 而如果起始点设为s9,虽然也有一部分游走序列中多次出现s9,但是若序列从s9到s6,之后又跳转到了s5或s7,就无法再回到s9。在广度优先中,s9为起始点无法返回自身的概率显然比u为起始点无法返回自身的概率大。 故广度优先倾向于表现结构性。 2.倾向于深度优先搜索时(q越小),节点更容易跳转至更远处节点,反应宏观的节点关系。 依然以起始点u举例,游走长度为4。深度优先下更能游走至更远更新的节点,游走序列可能是u s1 s2 s4,u s1 s3 s4,u s1 s2 u,u s1 s2 s5,……,游走序列在更大的概率上游走至s5、s6,并且因为s1和s3并没有外部的节点与之相连,会有一部分序列依然在u和其相邻节点中转悠。所以表现出同质性,与同一节点距离相近的,高度互联且属于相似社区。 还有一种理解。如果一个节点a及其四个相邻节点高度互联,与上图中u极其邻点相似,然而这四个邻点又各自与其他点相连,这些更远处点距离a点为2。于是在游走过程中,有一部分游走序列在a点及其邻点间转悠,也有一部分游走至更远点,不再回来。但是因为a与邻点高度互联,在a与邻点间游走的概率更大。此也能表达同质性。展开
作者回复: 我觉得这个理解没问题,赞。
共 2 条评论3 - Geek_fdb8322021-04-25想求教一下王老师,graph embedding只是embedding了graph有关的信息 (node之间的关系) 吗?如果一个item有些其他的性质,比如price, name, category, 这方面的信息能也能在随机游走的过程中放在graph embedding里吗?
作者回复: 一般不把这些属性信息直接放在graph里面游走,而是在主推荐模型中引入,或者是用GNN等方式来学习。
2 - DAMIAN2021-04-22课后思考: 1. pre-training 优点:embedding泛化能力强,即使后接不同的任务,也都可以work,bp的层数很少,收敛比较快 缺点:精度一般比较低,不能针对特定任务优化 2. end2end: 优点:一般精度比前者高,embedding可以针对特定任务优化 缺点:训练慢,embedding几乎不可能用来做其他的任务,泛化能力比较差 想请问老师,按照迁移学习的思路,将预训练的embedding放到end2end模型中fine-tuning会不会有好的效果呢?展开
作者回复: 这两点都答的非常好。 最后的问题,当然是可行的,比如之前FNN就这么做过,可以有效的降低收敛所需的epoch数量。
2 - Sanders2021-02-03结合Word2Vec这样理解对不对? 1. Random Walk和Node2Vec实际上是构建语料-训练样本的过程,Graph Embedding结构和之前Word2Vec是一样的 2. Word2Vec中会将相邻词的label值设为1,Node2Vec会用跳转概率作为相邻节点的label值
作者回复: 1.可以这样理解 2.也许可以等价,但node2vec跟label的值没有直接关系,还是先做采样,在做word2vec
2 - 范闲2020-11-23Node embedding 的最终结果看起来看起来更像聚类结果。 是否可以利用聚类算法来实现Node embedding的过程呢?
作者回复: 你可以思考一下可不可以,类似kmeans这类方法是如何聚类的,能不能应用在图结构数据上。
共 3 条评论2 - Roy Liang2021-07-23老师,有基于地图的推荐系统案例介绍吗?
作者回复: 跟uber的人随便聊过一些,主要特点是基于lbs的召回设计。其他没有本质的区别。
1