深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

07 | Embedding进阶:如何利用图结构数据生成Graph Embedding?

Comparing Pre-training and End2End Training
Summary of Key Knowledge Points
End2End Application
Pre-training Application
Direct Application
Application in Recommendation Systems
Controlling BFS and DFS Tendencies
Balancing Homophily and Structural Equivalence
Word2vec Training
Random Walk
Algorithm Process
Behavior Relation Graph Data
Knowledge Graphs
Social Networks
Graph Data Representation
Sequence Data Representation
Embedding Technology
After-class Thinking
Conclusion
Application of Embedding in Recommendation System Feature Engineering
Node2vec
Deep Walk
Types of Graph Data in the Internet
Introduction
Graph Embedding

该思维导图由 AI 生成,仅供参考

你好,我是王喆。
上一节课,我们一起学习了 Embedding 技术。我们知道,只要是能够被序列数据表示的物品,都可以通过 Item2vec 方法训练出 Embedding。但是,互联网的数据可不仅仅是序列数据那么简单,越来越多的数据被我们以图的形式展现出来。这个时候,基于序列数据的 Embedding 方法就显得“不够用”了。但在推荐系统中放弃图结构数据是非常可惜的,因为图数据中包含了大量非常有价值的结构信息。
那我们怎么样才能够基于图结构数据生成 Embedding 呢?这节课,我们就重点来讲讲基于图结构的 Embedding 方法,它也被称为 Graph Embedding。

互联网中有哪些图结构数据?

可能有的同学还不太清楚图结构中到底包含了哪些重要信息,为什么我们希望好好利用它们,并以它们为基础生成 Embedding?下面,我就先带你认识一下互联网中那些非常典型的图结构数据(如图 1)。
图1 互联网图结构数据
事实上,图结构数据在互联网中几乎无处不在,最典型的就是我们每天都在使用的社交网络(如图 1-a)。从社交网络中,我们可以发现意见领袖,可以发现社区,再根据这些“社交”特性进行社交化的推荐,如果我们可以对社交网络中的节点进行 Embedding 编码,社交化推荐的过程将会非常方便。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了图结构数据生成Graph Embedding的方法,重点介绍了基于随机游走的Graph Embedding方法Deep Walk和Node2vec。Deep Walk通过随机游走产生物品序列,再输入Word2vec进行训练,得到物品的Embedding。Node2vec在Deep Walk的基础上调整了随机游走跳转概率,权衡了网络的同质性和结构性,进一步应用于推荐系统学习不同网络结构特点。文章详细解释了Node2vec算法中如何控制BFS和DFS的倾向性,以及如何通过节点间的跳转概率来表达网络的“同质性”和“结构性”。此外,文章还介绍了Graph Embedding在推荐系统中的特征工程应用方式,包括“直接应用”、“预训练应用”和“End2End应用”。 文章总结了Graph Embedding的两种主要方法,Deep Walk和Node2vec,并总结了Embedding技术在深度学习推荐系统中的应用方法。Deep Walk方法通过随机游走产生物品序列,再输入Word2vec模型进行训练,而Node2vec在此基础上增加了随机游走过程中跳转概率的倾向性,体现了“结构性”和“同质性”。此外,文章还介绍了Embedding技术在深度学习推荐系统中的三种应用方法,“直接应用”、“预训练”和“End2End训练”。这些方法各有特点,是业界主流的应用方法。文章内容详实,为读者提供了生成Graph Embedding的基本概念和方法,以及在推荐系统中的应用方式。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • 浣熊当家
    王喆老师!我刚刚问了那个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好。 这次的实践经验推荐其他的同学参考,赞!

    2020-12-11
    4
    82
  • 微波
    王老师,对于深度学习这块儿我是个新手,查找网上的东西真是太多了,好像说的都有道理,真是不知道该看些啥,能否推荐一些经典papers作为进一步学习的资料吗?十分感谢!

    作者回复: 推荐关注我的推荐系统paper list吧,经典的不能再经典了。https://github.com/wzhe06/Reco-papers

    2020-10-16
    44
  • 张弛 Conor
    Embedding预训练的优点:1.更快。因为对于End2End的方式,Embedding层的优化还受推荐算法的影响,这会增加计算量。2.难收敛。推荐算法是以Embedding为前提的,在端到端的方式中,在训练初期由于Embedding层的结果没有意义,所以推荐模块的优化也可能不太有意义,可能无法有效收敛。 Embedding端到端的优点:可能收敛到更好的结果。端到端因为将Embedding和推荐算法连接起来训练,那么Embedding层可以学习到最有利于推荐目标的Embedding结果。

    作者回复: 赞,标准正确答案。

    2020-10-17
    4
    42
  • 老师您好,关于课后思考题有些疑惑,预训练emb和end2end emb: 首先 预训练emb实现了模型和emb的解耦,解耦之后,模型只需要关注emb即可,emb就是物品的本征表示,线上服务也就是查redis拿emb完成推断。缺点么,感觉有风险?假如emb是由上游提供,上游重train之后,每一维的隐含意义就变化了,下游模型必须重新train,否则不就出错了? end2end的训练的话,对emb可以finetune,理论性能更高,但是总感觉不甚灵活?对于新的物品不停更新发布,岂不是nn.embedding的vocab需要不停的扩充,模型也需要不停的再次训练? 嗯,感觉在工程落地时,面对非静态的物品集,要么不灵活要么有风险?

    作者回复: 非常非常好的思考,推荐给其他同学。我觉得你说的都没错。 我想进一步讨论的是第一点,到底模型需不需要重新训练。 我觉得对于有些上层模型是不用的,比如这些上层模型只接受embedding的similarity,不直接接收emb本身。 那么对于接收emb本身直接到网络结构里的,我觉得确实是需要重新训练的。 当然欢迎大家继续就这个问题讨论,很好的insight

    2021-01-06
    23
  • 张弛 Conor
    请问老师,有两个问题有点疑惑,第一个问题是采用Node2Vec算法时,当前节点v到下一个节点x的概率在经过进出参数和返回参数调整后是否需要做概率的归一化操作,使节点v到所有下一节点的概率为1呢?第二个问题是既然我们希望网络要么体现“同质性”要么体现“结构性”的特点,那么为什么一定要设定两个参数p和q,而不是仅用一个参数m(打比方)来实现,当m小,就是同质性强,结构性弱,当m大,就是同质性弱,结构性强?

    作者回复: 非常好的问题: 1、需要归一化。注意我们在原文中一直强调我们要计算的是跳转“权重”,而不是跳转“概率”,既然是权重,我们就需要通过归一化转换成跳转概率。 2、设置两个参数,是因为与一个点相连的点有三类,dtx=0,1,2。我们固定一类点的权重为1,就需要分别给另外两类点不同的控制参数,就是p和q,这样更灵活。如果只用一个参数,当然也可以,但灵活性就差一点。

    2020-10-29
    2
    9
  • Dikiwi
    直观理解,预训练的emb本身因为是有一定意义的,所以喂给mlp之后理论上可以加速收敛,但因为这个emb是通过其他方法训练出来的,本身不是对该模型服务的,所以很可能走到局部最优解?

    作者回复: 这个点非常好。e2e训练的好处之一就是能够找到embedding层在这个模型结构下的最优解。预训练可能损失一些效果。 但好处你也说过了,可以大幅加快收敛的速度。

    2020-10-21
    3
    8
  • 远方蔚蓝
    老师后面会介绍一下GraphSAGE和GAT在推荐的应用与实践吗,业界现在用的挺多。

    作者回复: 会讲GraphSAGE的原理和细节。

    2020-10-16
    2
    7
  • Geek_63ee39
    “首先,为了使 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

    2020-10-16
    5
    7
  • inkachenko
    老师,我想问一下deep-walk随机选择起始点的时候,是所有节点等概率选取呢?还是像HMM一样,以原始行为序列中节点出现次数为权重建立一个初始状态概率分布,再随机选取呢?感觉后一种更加合理。。

    作者回复: 我在sparrow里的实现是后一种,我觉得更合理,否则会改变数据的分布。

    2021-02-24
    5
  • 雪焰🐻🥑
    对于文中的:"“预训练应用”指的是在我们预先训练好物品和用户的 Embedding 之后,不直接应用,而是把这些 Embedding 向量作为特征向量的一部分,跟其余的特征向量拼接起来" 请问老师,比如对文本的embedding x和图像的embedding y会是得到不同的维度,这种情况下怎么把x和y拼接起来输入DL 模型呢?直接concatenate么?不知道下节课会不会涉及到具体操作,谢谢老师!

    作者回复: 最直接的方式是直接concatenate 再交由后续多层神经网络处理。 为了实现一些重点embedding之间的交叉,也可以进行多embedding之间的element wise交叉,或者一些乘积操作后输入后续mlp。 基于emb的操作非常多,这里没有统一的答案,也是各种模型层出不穷的原因。

    2020-10-16
    2
    5
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部