深度学习推荐系统实战_38_29_图神经网络Pinterest是如何应用图神经网络的
你好,我是王哲,今天我想和你聊一聊图神经网络。
那互联网中到处都是图结构的数据,比如我们熟悉的社交网络,最近流行的知识图谱等等。
这些数据中包含着大量的关系信息。
那这对于推荐系统来说是非常有帮助的。
为了能更好的利用这些信息进行推荐,各大巨头可谓是尝试了各种的办法。
比如我们之前学习过的deep work noteork这些非常实用的graph embedding方法,这是技术的发展,永无止境GNN.也就是图神经网络是最近年最火热,也是最流行的。
基于图结构数据的建建模方法严格一点。
来图图神经网络指的就是可以直接处理图结构数据的神经网络模型。
那在诸多的GNN的解决方案中,著名社交电商巨头pinrist对于graph sage的实现和落地又是最成功的,在业界的影响力也最大。
所以这节课我们就来一起学一学graph sage的技术细节,看一看pinterest是怎么利用图神经网络进行商品推荐的那在正式开始讲graph sage之前呀,我还想先给你讲一讲deep work,通过graph embedding方法和GNN之间的关系,这有助于我们理解GNN的原理。
那这里我们就结合文稿中的图,一来简单回顾一下deep work和notew AK算法的基本流程。
那他们在面对像图一b这样的图数据的时候,其实没有直接处理图数据的结构,而是走了一个取巧的方式。
先把图结构数据,通过随机构图采样转换成了序列数据,然后再用像word wak这样的序列数据embedding的方法来生成最终的graph embedding.那我把这类graph embedding的方法归类为基于随机游走的间接性graph embedding方法,它其实代表了我们在解决一类技术问题时的思路。
那就是在面对一复复杂问题的时候,我们不直接解决它,而是搭一座桥。
通过这座桥把这个复杂问题转换成一个简单问题。
因为对于简问问题们有更丰丰富的处理手段,这样一来,这个复杂问题也就能够简单的解决了。
显然,基于随机游走的graph embedding方式就是这样一种搭桥的解决方案,但是搭桥的过程中难免会损失一些有用的信息。
比如用随机游走对图结构数据进行抽样的时候,虽然我们得到的序列数据中还包含了图结构的信息,但却破坏了这些信息的原始结构。
正因为这样,很多研究者工程师不满足这样搭桥的方式,而是希望造一台推土机,把这个问题平推过去,直接解决它。
那GNN就是这样一种平推解决图结构数据问题的方法,它直接输入图结构的数据产却破坏的embedding或者抽样结。
当然,不同研究者打造这台推土机的方式各不相同。
我们今天要重点介绍的graph fish,就是其中最著名的一台,也最具参考价值。
下面我们就来详细讲一讲的细节。
那graphisagragrah sage的全称叫做graph, sasample and agggate翻过过来是图采采样和聚集方法。
其实这个名称就很好的解释了,它运行的过程,那就是先采样再聚集。
那这时候问题又来了,这里的采样还是随机u做的采样吗?要还是通通采,样样才能够得到样本,我们造的还是推土机吗?不就又变成了搭桥的方式吗?别着急,等我讲完了graph sage的细节你就明白了。
那graph sage的主要过程我放在了文稿里。
它主要可以分为三步,第一步就是在整体的图数据上,从某一个中心节点开始采样,得到一个k阶的子图。
示意图中给出的示例是一个二阶子图。
第二步就是等有了这个二阶子图之后,我们可以先利用GNN把二阶的临界点聚合成一阶的临界点,再把一阶的临界点聚合成这个中心节点。
最后等有了聚合好的这个中心节点embedding,我们就可以去完成一个预测任务。
比如这个中心节点的标签是被点击的电影,那我们就可以让这个GNN完成一个点击率预估任务。
那这就是graph sage的主要步骤。
那你看了之后可能还觉得有点抽象。
那接下来我们再结合文稿中图三推荐电影的例子,来看一看graph sage是怎么工作的。
首先我们要利用movie length的数据得到电影间的关系图。
那这个关系图可以是用用户的行为生成的,也可以是像生成知识图谱一样来生成。
比如说两部电影拥有同一个演员,就可以建立一条边拥有相同的风格,也可以建立一条边规则,我们可以自己来定。
那在这个由电影作为节点的关系图上,我们随机选择一个中心节点。
比如我们选择了玩具总动员作为一个中心节点,这时再向外进行二阶的临节点采样,就生成了一个树形的子图样本。
那经过多次采样之后,我们会拥有一批这样的子图样本,这个时候我们就可以把这些样本输入GNN中进行训练了。
那GNN的结构我会在下一个小节详细讲。
那这里我们只要清楚这个GNN,即可以预测中心节点的标签,比如点击或为点击,也可以单纯预测中心结点的embedding就够了。
那总的来说,graph sage的主要步骤就是三个采样聚合预测。
现在我们关注的重点就变成了graph sage的模型结构到底是怎么样的那它到底是怎么把一个k阶的子图放到GNN中去训练,然后生成中心结点的embedding呢?接下来我就结合graph sage的模型结构来和你详细讲一讲。
那这里我还是二二阶gragrapsage为例,那那后超过中阶节结构,只只进进步步延延伸,这个模型没有更多特别的地方。
那以我们理解,二阶的模型结就足够了。
那我们来看文稿中的示意图,它处理的样本是一个以a为中心结点的二阶子图。
从左到右,我们可以看到点a的一阶临界点,包括点b点c和点d那从BCD再扩散一阶,可以看到点b的临界点是a和c点c的临界点是ABEF,而点d的临界点是点a清楚了样本的结构。
我们再从右到左来看一看graph的训训练过程。
那这sagragrapfige的输入是二阶临接点的embedding.那二阶临接点的embedding,通过一个叫做graphige的操作,生成了一阶临界点的embedding,然后一阶临界点的embedding,再通过这个convolve操作,生成了目标中心结点的embedding.至此,完成了整个的训练过程。
这个过程的实现的关键就在于这个叫做convolve的操作。
那它到底是什么呢?那convolve的中文名你肯定不会陌生,就是卷积。
那这里的卷积并不是严格意义上数学的卷积运算,而是一个由every greate操作和concat操作组成的复杂的操作。
这里我们要重点关注图四中间的部分,它放大了convolve操作的细节。
那这个convote操作是由两个步骤组成的,第一步叫做convogde操作,就是图四中伽马符号代表的操作。
它把点a的三个临界点embedding进行了聚合,生成了一个embedding叫做HNA.那第二步我们把HNA与点a上一轮训练中的embedding HA连接起来,然后通过一个全链接层生成点a新的embedding.那第二步实现起来就很简单了,但是第一步中的agggate操作到底是什么呢?那搞清楚了这个,我们就搞清楚graphge的所有细节了。
事实上everygate操作我们也不陌生,它其实就是把多个embedding聚合成一个embedding的方式。
那我们在推荐模型篇中也讲过很多次了,比如我们最开始使用的average pudling,那在DIN中使用过的attention机制。
那在序列模型中讲过的基于GRO的序列方法,以及可以把这些embedding聚合起来的MLP等等aggregate的操作非常多。
如果你要问具体用哪个,我还是那句老话,实践决定最终的结构。
好,到这里我们就抽丝剥茧的讲清楚了graph sage的每个模型细节,结果你还有疑惑,再回头多看几遍graph sage的模型结构图。
结合我刚才的讲解,相信不难理解它。
不过在讲grapsage的主要步骤的时候,我们还留了一个小尾巴,没有讲。
结合说graph sage既可以预测中心节点的标签,比如点击或未点击,又可以单纯的生成中心节点的embedding.那要要知道,预测样本标签这个事情是一个典型的有监督学习的任务,而生成结点的ebebedding又是一个无监督学习的任务。
Gragrapsage是怎么做到既可以进行有监督学习,又能进行无监督学习的呢?要想让graph sage做到这一点,关键就看你怎么设计它的输出层了。
我们先来说说有监督的情况。
那为了预测中心节点附带的标签,比如这个标签是点击或未点击,我们就需要让graphsage的输出层是一个类似LR这样的二分类模型。
这个输入层的输入,就是我们之前通过GNN学到的中心节点embedding,那输出当然就是预测标签的概率了。
那这样graphish就可以完成有监督学习的任务了。
而对于无监督学习,那就更简单了。
这是因为我们的输入层完全可以仿照第六节课的word, worst输入层的设计,用一个soft max当做输出层,预测的是每个点的ID.这样一来,每个点对应的soft max输入层向量就是这个点的embedding,这就和watch back的原理完全一致了。
如果你仔细学习了上一节youtube的候选集生成模型的话,你就知道这和它视频向量的生成方式也是一样的。
那graph fige我们讲了这么多,那pines st到底是怎么它的推荐系统中应用GNN的呢?我这就来详细讲一讲。
由于graph sage是pintres和斯坦福大学联合提出的,所以的对于pintricg n的应用也是直接在grapsage上的基础进行的,只是给这个金恩取了一个换汤不换药的新名字,叫pinsage.那pin sage这个网站的主要功能是为用户提供各种商品的浏览、推荐收藏的服务。
那所谓的pin这个动作,其实就是你收藏了一个商品到自己的收藏夹。
因此所有的pin操作就连接起了用户商品和收藏夹,共同构成了一个他们之间的关系。
图pin sasage就是这个图上训练练,并得到每个商品的ebeddding.那pinsage embedding的具体应用场景是什么呢?那其实跟我们第十四讲中实现的功能一样,就是商品的相似推荐。
只不过之前业界更多的采用item to wadedeort这样的方法来生成用于相似推荐的物品embedding.那在GNN流行起来之后,大家就开始尝试使用GNN生成的物品embedding来进行embeding了。
那pinsage在pintrst场景下的效果到底怎么样呢?那我们就借助pintrst给出的一些例子来判断一下,我把它放在了文稿中。
我们先来看图五左边的例子,因为他给出的是一个种子发芽的图片,我们就推测它应该是一个卖绿植的或者绿植种子的商家。
接下来我们再判断一下,左边通过其种不同算法,找到的相似图片是不是合理的那其中pinsage是pinsage的实际用于推荐系统的方法。
其他三个visuo、 annote、 pixi都是效果测试中的对比算法。
那我们看到通过第一个算法,viro找到的图片,虽然看上去和原来的图片比较相似,但前两个图片居然都是食品的照片。
这显然是不相关的。
而第二个算法,annote中的数目以及第三个算法,pixi中的辣椒和西兰花,显然也都跟种子片很遥远的差距。
那相比之下,pinpinsage找到的图片就很合理了,他找到的全部都是种子发芽或者培育绿植的图片,这就非常合乎用户的逻辑了。
要知道,在pinsage应用的构成中,它是没有直接分析图片内容的,而只是把图片当做一个节点利用节点和周围节点的关系,生成图片的embedding.因此,这个例子可以说明,pssage在某种程度上理解了图片的语义方析。
而关于grapsage,正是埋藏在pssage的商品关系图中的首先grassage起到了多么神奇的数据挖掘的作用。
好了,今天的课程讲完了,我们一起来做个总结。
这节课我们讲了图神经网络的经典方法,grapbedge我们抽丝剥茧的把grapsage的细节全部剖开。
那关于graph sage,我们重点要记住它的特点和主要步骤。
首先,graph sage目前来说是最经典的GN的解决方案,因此它具有进n最显著的特点就是它可以直接处理图数据,不需要把图数据转换成更简单的序列数据。
首先,抽序列据在mbebedding方法进行处理。
其次,grapsage的主要步骤是三步采样聚合预测。
其中,采样是指在整体图数据上,随机确定中心结点采样。
K阶子图样本聚合,是指利用GNN把k阶子图样本聚合成中心结点。
Embedding预测是指利用GNN做有监督的标签预测,或者直接生成节点embedding.那在这三步之中,重点在于聚合的GNN结构。
那它使用了confort操作,把邻结点embedding聚合起来,跟中心结点上一轮的embedding连接之后,利用全连接层生成新的embedding.为了方便你及时回顾,我也把这节课中的重点知识总结在了文稿的表格中。
你可以看一看,最后让我们来看一道思考题。
那使用graph sage是为了生成每一个节点的embedding.那我们有没有办法在graph sage中加入物品的其他特征,比如物品的价格、种类等等特征,让最终生成的物品embedding包含这些信息呢?好,那期待在留言区看到你对graph sage的思考,我们下节课见。