深度学习中不得不学的Graph Embedding方法

原文链接:https://zhuanlan.zhihu.com/p/64200072

深度学习中不得不学的Graph Embedding方法

1,290 人赞同了该文章

这里是「王喆的机器学习笔记」的第十四篇文章,之前已经有无数同学让我介绍一下Graph Embedding,我想主要有两个原因:

  • 一是因为Graph Embedding是推荐系统、计算广告领域最近非常流行的做法,是从word2vec等一路发展而来的Embedding技术的最新延伸;
  • 二是因为已经有很多大厂将Graph Embedding应用于实践后取得了非常不错的线上效果

那我们今天就一起讨论一下Graph Embedding的主要做法和前沿应用。

word2vec和由其衍生出的item2vec是embedding技术的基础性方法(我在之前的文章中也详细介绍了二者的技术原理,王喆:万物皆Embedding,从经典的word2vec到深度学习基本操作item2vec),但二者都是建立在“序列”样本(比如句子、推荐列表)的基础上的。而在互联网场景下,数据对象之间更多呈现的是图结构。典型的场景是由用户行为数据生成的和物品全局关系图(图1),以及加入更多属性的物品组成的知识图谱(图2)。

<img src="https://pic2.zhimg.com/v2-aef010269ddfef8db052fa65479ba9dd_b.jpg" data-size="normal" data-rawwidth="1074" data-rawheight="630" class="origin_image zh-lightbox-thumb" width="1074" data-original="https://pic2.zhimg.com/v2-aef010269ddfef8db052fa65479ba9dd_r.jpg"/>
图1 由用户行为序列生成的物品全局关系图 (引自阿里论文)
<img src="https://pic3.zhimg.com/v2-ad4da5b234e34bf4cf19aa1ea511d496_b.jpg" data-size="normal" data-rawwidth="1000" data-rawheight="500" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic3.zhimg.com/v2-ad4da5b234e34bf4cf19aa1ea511d496_r.jpg"/>
图2 由属性、实体、各类知识组成的知识图谱

在面对图结构的时候,传统的序列embedding方法就显得力不从心了。在这样的背景下,对图结构中间的节点进行表达的graph embedding成为了新的研究方向,并逐渐在深度学习推荐系统领域流行起来。

经典的Graph Embedding方法——DeepWalk

早期影响力较大的graph embedding方法是2014年提出的DeepWalk,它的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列,然后将这些物品序列作为训练样本输入word2vec进行训练,得到物品的embedding。图3用图示的方法展现了DeepWalk的过程。

<img src="https://pic3.zhimg.com/v2-6c548cc39af4400988d04ed1104bb3c2_b.jpg" data-size="normal" data-rawwidth="1800" data-rawheight="526" class="origin_image zh-lightbox-thumb" width="1800" data-original="https://pic3.zhimg.com/v2-6c548cc39af4400988d04ed1104bb3c2_r.jpg"/>
图3 DeepWalk的算法流程(引自阿里论文)

如图3,整个DeepWalk的算法流程可以分为四步:

  1. 图a展示了原始的用户行为序列
  2. 图b基于这些用户行为序列构建了物品相关图,可以看出,物品A,B之间的边产生的原因就是因为用户U1先后购买了物品A和物品B,所以产生了一条由A到B的有向边。如果后续产生了多条相同的有向边,则有向边的权重被加强。在将所有用户行为序列都转换成物品相关图中的边之后,全局的物品相关图就建立起来了。
  3. 图c采用随机游走的方式随机选择起始点,重新产生物品序列。
  4. 图d最终将这些物品序列输入word2vec模型,生成最终的物品Embedding向量。

在上述DeepWalk的算法流程中,核心是第三步,其中唯一需要形式化定义的是随机游走的跳转概率,也就是到达节点vi后,下一步遍历vi的临接点vj的概率。如果物品的相关图是有向有权图,那么从节点vi跳转到节点vj的概率定义如下:

<img src="https://pic3.zhimg.com/v2-c659f8c1dd22e4e646f4e454813cf9a2_b.jpg" data-caption="" data-size="normal" data-rawwidth="1002" data-rawheight="296" class="origin_image zh-lightbox-thumb" width="1002" data-original="https://pic3.zhimg.com/v2-c659f8c1dd22e4e646f4e454813cf9a2_r.jpg"/>

其中N+(vi)是节点vi所有的出边集合,Mij是节点vi到节点vj边的权重。

如果物品相关图是无相无权重图,那么跳转概率将是上面公式的一个特例,即权重Mij将为常数1,且N+(vi)应是节点vi所有“边”的集合,而不是所有“出边”的集合。

DeepWalk的进一步改进——Node2vec

2016年,斯坦福大学在DeepWalk的基础上更进一步,通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)结构性(structural equivalence)中进行权衡权衡。

具体来讲,网络的“同质性”指的是距离相近节点的embedding应该尽量近似,如图4,节点u与其相连的节点s1、s2、s3、s4的embedding表达应该是接近的,这就是“同质性“的体现。

“结构性”指的是结构上相似的节点的embedding应该尽量接近,图4中节点u和节点s6都是各自局域网络的中心节点,结构上相似,其embedding的表达也应该近似,这是“结构性”的体现。

<img src="https://pic3.zhimg.com/v2-147bb9aa6cb646c83680e93bcf016c4e_b.jpg" data-size="normal" data-rawwidth="1544" data-rawheight="552" class="origin_image zh-lightbox-thumb" width="1544" data-original="https://pic3.zhimg.com/v2-147bb9aa6cb646c83680e93bcf016c4e_r.jpg"/>
图4 宽度优先搜索(BFS)和 深度优先搜索(DFS)示意图

为了使Graph Embedding的结果能够表达网络的同质性,在随机游走的过程中,需要让游走的过程更倾向于宽度优先搜索(BFS),因为BFS更喜欢游走到跟当前节点有直接连接的节点上,因此就会有更多同质性信息包含到生成的样本序列中,从而被embedding表达;另一方面,为了抓住网络的结构性,就需要随机游走更倾向于深度优先搜索(DFS),因为DFS会更倾向于通过多次跳转,游走到远方的节点上,使得生成的样本序列包含更多网络的整体结构信息。(通过

@张备
同学的提醒,这里其实是写反了,BFS应该反映了结构性,DFS反而反应了同质性,大家可以深度思考一下这是为什么,欢迎在评论区讨论)

那么在node2vec算法中,是怎样控制BFS和DFS的倾向性的呢?主要是通过节点间的跳转概率。图5显示了node2vec算法从节点t跳转到节点v后,下一步从节点v跳转到周围各点的跳转概率。

<img src="https://pic2.zhimg.com/v2-20a6b345cfe45706b43db91a78ee5b69_b.jpg" data-size="normal" data-rawwidth="1026" data-rawheight="670" class="origin_image zh-lightbox-thumb" width="1026" data-original="https://pic2.zhimg.com/v2-20a6b345cfe45706b43db91a78ee5b69_r.jpg"/>
图5 node2vec的跳转概率

形式化来讲,从节点v跳转到下一个节点x的概率为

<img src="https://pic2.zhimg.com/v2-61287731efe14d38a7084fa2f77ec3c1_b.jpg" data-caption="" data-size="normal" data-rawwidth="426" data-rawheight="78" class="origin_image zh-lightbox-thumb" width="426" data-original="https://pic2.zhimg.com/v2-61287731efe14d38a7084fa2f77ec3c1_r.jpg"/>

其中 [公式] 是边vx的权重, [公式] 的定义如下:

<img src="https://pic2.zhimg.com/v2-481056c49b3619ff679fe10ee38c24c1_b.jpg" data-caption="" data-size="normal" data-rawwidth="604" data-rawheight="242" class="origin_image zh-lightbox-thumb" width="604" data-original="https://pic2.zhimg.com/v2-481056c49b3619ff679fe10ee38c24c1_r.jpg"/>

其中,dtx指的是节点t到节点x的距离,参数p和q共同控制着随机游走的倾向性。参数p被称为返回参数(return parameter),p越小,随机游走回节点t的可能性越大,node2vec就更注重表达网络的同质性,参数q被称为进出参数(in-out parameter),q越小,则随机游走到远方节点的可能性越大,node2vec更注重表达网络的结构性,反之,当前节点更可能在附近节点游走。

node2vec这种灵活表达同质性和结构性的特点也得到了实验的证实。图6的上图就是node2vec更注重同质性的体现,可以看到距离相近的节点颜色更为接近,而图6下图则是结构特点相近的节点的颜色更为接近。

<img src="https://pic1.zhimg.com/v2-d3b6b9ee7c3f3bbc1661ecf0bb678a18_b.jpg" data-size="normal" data-rawwidth="1008" data-rawheight="1052" class="origin_image zh-lightbox-thumb" width="1008" data-original="https://pic1.zhimg.com/v2-d3b6b9ee7c3f3bbc1661ecf0bb678a18_r.jpg"/>
图6 node2vec实验结果

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

阿里的Graph Embedding方法EGES

2018年阿里公布了其在淘宝应用的Embedding方法EGES(Enhanced Graph Embedding with Side Information),其基本思想是在DeepWalk生成的graph embedding基础上引入补充信息。

如果单纯使用用户行为生成的物品相关图,固然可以生成物品的embedding,但是如果遇到新加入的物品,或者没有过多互动信息的长尾物品,推荐系统将出现严重的冷启动问题。为了使“冷启动”的商品获得“合理”的初始Embedding,阿里团队通过引入了更多补充信息来丰富Embedding信息的来源,从而使没有历史行为记录的商品获得Embedding。

生成Graph embedding的第一步是生成物品关系图,通过用户行为序列可以生成物品相关图,利用相同属性、相同类别等信息,也可以通过这些相似性建立物品之间的边,从而生成基于内容的knowledge graph。而基于knowledge graph生成的物品向量可以被称为补充信息(side information)embedding向量,当然,根据补充信息类别的不同,可以有多个side information embedding向量。

那么如何融合一个物品的多个embedding向量,使之形成物品最后的embedding呢?最简单的方法是在深度神经网络中加入average pooling层将不同embedding平均起来,阿里在此基础上进行了加强,对每个embedding加上了权重,如图7所示,对每类特征对应的Embedding向量,分别赋予了权重a0,a1…an。图中的Hidden Representation层就是对不同Embedding进行加权平均操作的层,得到加权平均后的Embedding向量后,再直接输入softmax层,这样通过梯度反向传播,就可以求的每个embedding的权重ai(i=0…n)。

<img src="https://pic2.zhimg.com/v2-740642a04298d289d19cd4225d062b5d_b.jpg" data-size="normal" data-rawwidth="1078" data-rawheight="794" class="origin_image zh-lightbox-thumb" width="1078" data-original="https://pic2.zhimg.com/v2-740642a04298d289d19cd4225d062b5d_r.jpg"/>
图7 阿里的EGES Graph Embedding模型

在实际的模型中,阿里采用了 [公式] 而不是aj作为相应embedding的权重,一是避免权重为0,二是因为 [公式] 在梯度下降过程中有良好的数学性质。

阿里的EGES并没有过于复杂的理论创新,但给出一个工程性的结合多种Embedding的方法,降低了某类Embedding缺失造成的冷启动问题,是实用性极强的Embedding方法。

时至今日,Graph Embedding仍然是工程和学术领域研究和实践的热点,除了本节介绍的DeepWalk,Node2vec,EGES等主流的方法,还有LINE,SDNE等方法也很流行,感兴趣的同学可以参考我之前的综述性文章 王喆:Embedding从入门到专家必读的十篇论文 或者直接阅读论文。

按照惯例留一个讨论题,希望大家踊跃发表意见,让我们所有人都从讨论中受益:

在使用Graph Embedding生成物品的Embedding之后,应该如何生成用户的Embedding?除了Average Pooling有更好的方法吗?

最后欢迎大家关注我的微信公众号:王喆的机器学习笔记wangzhenotes),

weixin.qq.com/r/Ny707Ov (二维码自动识别)

跟踪计算广告、推荐系统等机器学习领域前沿。想进一步交流的同学也可以通过公众号加我的微信一同探讨技术问题,谢谢!

参考资料:

  • 王喆:万物皆Embedding,从经典的word2vec到深度学习基本操作item2vec
  • 王喆:Embedding从入门到专家必读的十篇论文
  • [Graph Embedding] DeepWalk- Online Learning of Social Representations (SBU 2014)
  • [Node2vec] Node2vec - Scalable Feature Learning for Networks (Stanford 2016)
  • [Alibaba Embedding] Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba (Alibaba 2018)
  • 王喆的推荐系统论文列表

本文亦收录在我的新书「深度学习推荐系统」中,这本书系统性地整理、介绍了专栏中所有的重点内容,如果您曾在「王喆的机器学习笔记」中受益,欢迎订阅,谢谢知友们的支持!

深度学习推荐系统
京东
¥ 54.00
去购买​

编辑于 2020-03-24
「真诚赞赏,手留余香」
赞赏

2 人已赞赏

赞赏用户赞赏用户
深度学习(Deep Learning)
机器学习
推荐系统
赞同 1290​
152 条评论
分享
喜欢​收藏​申请转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写给新手炼丹师:2021版调参上分手册

文 | 山竹小果在日常调参的摸爬滚打中&#xff0c;参考了不少他人的调参经验&#xff0c;也积累了自己的一些有效调参方法&#xff0c;慢慢总结整理如下。希望对新晋算法工程师有所助力呀&#xff5e;寻找合适的学习率(learning rate)学习率是一个非常非常重要的超参数&#xf…

函数式编程在Redux/React中的应用

本文简述了软件复杂度问题及应对策略&#xff1a;抽象和组合&#xff1b;展示了抽象和组合在函数式编程中的应用&#xff1b;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践。这其中包括了一段有趣的Redux推导。 软件复杂度 软件的首要技术使命是管理复杂…

论文浅尝 - EMNLP2020 | ConceptBert:视觉问题回答的概念感知表示

笔记整理 | 陈卓&#xff0c;浙江大学计算机科学与技术系&#xff0c;博士研究生研究方向 | 知识图谱/图神经网络/多模态论文链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.44.pdf代码&#xff1a;https://github.com/ZiaMaryam/ConceptBERT发表会议&…

LeetCode 215. 数组中的第K个最大元素(快速排序)

1. 题目 在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4说明: 你可以假设 k…

论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

笔记整理 | 吴林娟&#xff0c;天津大学硕士来源&#xff1a;EMNLP2020链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf动机依赖解析研究快速发展&#xff0c;然而依赖解析的性能在很大程度上依赖于语料库的大小。获取足够的训练数据成本大且困…

Knowledge Review:超越知识蒸馏,Student上分新玩法!

文 | 陀飞轮知乎今天介绍一篇我司的文章Distilling Knowledge via Knowledge Review(缩写为KR)&#xff0c;提出知识蒸馏的新解法。之前在知乎回答过一个知识蒸馏的问题&#xff0c;为何感觉“知识蒸馏”这几年没有什么成果&#xff1f;https://www.zhihu.com/question/3098084…

美团App 插件化实践

背景 在Android开发行业里&#xff0c;插件化已经不是一门新鲜的技术了&#xff0c;在稍大的平台型App上早已是标配。进入2017年&#xff0c;Atlas、Replugin、VirtualAPK相继开源&#xff0c;标志着插件化技术进入了成熟阶段。但纵观各大插件框架&#xff0c;都是基于自身App的…

评测征集 | 2021全国知识图谱与语义计算大会

CCKS 2021将组织知识图谱相关评测竞赛&#xff0c;旨在为研究者们提供一个测试技术、算法、及系统的平台。与CCKS 2020 一样&#xff0c;CCKS 2021 的评测任务仍然采用 Biendata 在线平台发布和评测。CCKS 2020评测竞赛环节共设立8个任务&#xff0c;吸引了2300多支参赛队伍。大…

论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!

文 | Sheryc_王苏从5月初开始&#xff0c;CV圈似乎开始了一阵MLP“文艺复兴”的热潮&#xff1a;在短短4天时间里&#xff0c;来自谷歌、清华、牛津、Facebook四个顶级研究机构的研究者分别独立发布了4篇关于MLP结构在图像任务上取得不错效果的论文。虽然研究本身令人兴奋&…

即时配送的订单分配策略:从建模和优化

最近两年&#xff0c;外卖的市场规模持续以超常速度发展。近期美团外卖订单量峰值达到1600万&#xff0c;是全球规模最大的外卖平台。目前各外卖平台正在优质供给、配送体验、软件体验等各维度展开全方位的竞争&#xff0c;其中&#xff0c;配送时效、准时率作为履约环节的重要…

LeetCode677. 键值映射(Trie树)

1. 题目 实现一个 MapSum 类里的两个方法&#xff0c;insert 和 sum。 对于方法 insert&#xff0c;你将得到一对&#xff08;字符串&#xff0c;整数&#xff09;的键值对。字符串表示键&#xff0c;整数表示值。如果键已经存在&#xff0c;那么原来的键值对将被替代成新的键…

技术实践 | ICDE2021-大规模知识图谱预训练及电商应用

本文作者 | 张文&#xff08;浙江大学&#xff09;、黄志文&#xff08;阿里巴巴&#xff09;、叶橄强&#xff08;浙江大学&#xff09;、文博&#xff08;浙江大学&#xff09;、张伟&#xff08;阿里巴巴&#xff09;&#xff0c;陈华钧*&#xff08;浙江大学&#xff09;接…

吊打BERT、GPT、DALL·E,跨模态榜单新霸主诞生!

文 | 赵一静最近&#xff0c;三个重量级榜单&#xff0c;视觉推理VCR、文本推理ANLI、视觉问答VQA同时被统一模态模型UNIMO霸榜。一个模型统一了视觉和文本两大主阵地&#xff0c;重塑了小编的认知和期望。如此全能&#xff0c;堪称是AI领域的外&#xff08;一&#xff09;星&a…

Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现

前言 2009年9月Spring 3.0 RC1发布后&#xff0c;Spring就引入了SpEL&#xff08;Spring Expression Language&#xff09;。对于开发者而言&#xff0c;引入新的工具显然是令人兴奋的&#xff0c;但是对于运维人员&#xff0c;也许是噩耗的开始。类比Struts 2框架&#xff0c;…

体验paddle2.0rc版本API-Model--实现Mnist数据集模型训练

原文链接&#xff1a;体验paddle2.0rc版本API-Model–实现Mnist数据集模型训练&#xff1a;https://blog.csdn.net/weixin_44604887/article/details/109566281 尝试Mnist训练 导入需要的包导入Mnist数据集组网搭建网络查看模型参数查看模型网络&#xff08;自动命名&#xff0…

LeetCode 648. 单词替换(Trie树)

1. 题目 在英语中&#xff0c;我们有一个叫做 词根(root)的概念&#xff0c;它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如&#xff0c;词根an&#xff0c;跟随着单词 other(其他)&#xff0c;可以形成新的单词 another(另一个)。 现…

99%算法工程师不知道的if/else优化技巧

文 | IT技术控知乎、灵剑知乎观点一&#xff08;IT技术控&#xff09;前期迭代懒得优化&#xff0c;来一个需求&#xff0c;加一个if&#xff0c;久而久之&#xff0c;就串成了一座金字塔。当代码已经复杂到难以维护的程度之后&#xff0c;只能狠下心重构优化。那&#xff0c;有…

人工智能在线特征系统中的生产调度

在上篇博客《人工智能在线特征系统中的数据存取技术》中&#xff0c;我们围绕着在线特征系统存储与读取这两方面话题&#xff0c;针对具体场景介绍了一些通用技术&#xff0c;此外特征系统还有另一个重要话题&#xff1a;特征生产调度。本文将以美团点评酒旅在线特征系统为原型…

LeetCode 211. 添加与搜索单词 - 数据结构设计(Trie树)

1. 题目 设计一个支持以下两种操作的数据结构&#xff1a; void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串&#xff0c;字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。 示例: addWord("bad") addWord("dad&quo…

研究综述 - TKDE2020 | 基于知识图谱的推荐系统

作者 | 郭庆宇转载公众号 | 读芯术TKDE 2020综述&#xff1a;基于知识图谱的推荐系统A Survey on Knowledge Graph-Based Recommender Systems中科院计算所、百度、港科大、中科大、微软原文Qingyu Guo, Fuzhen Zhuang, Chuan Qin, Hengshu Zhu, Xing Xie, Hui Xiong, Qing He…