深度学习推荐系统实战_10_07_Embedding进阶如何利用图结构数据生成Graph_Embedding
你好,我是王哲。
今天我想和你聊聊怎么利用图结构数据生成graph, embedding上节课,我们一起学习了embedding技术。
我们知道只要能够被序列数据表示的物品,都可以通过item back方法训练出embedding.但是啊互联网的数据可不仅仅是数据那么简单,越来越多的数据以图的形式展现出来。
这个时候基于序列数据的embeembedding方法就显得不够用了。
但在推荐系统中,弃图图结构数据是非常可惜的。
因为图数据中包含了大量有价值的结构信息,那我们怎么样才能够基于图结构数据生成mmbedding呢?这课我们就重重来讲讲基于图结构的embedding方法,它也被称为graph embedding.讲到这儿,可能有的同学还不太清楚图结构中到底包含了哪些重要信息。
为什么我们希望好好利用它们,还要以它们为基础生成evdding呢?接下来呀我就先带你认识一下互联网中那些非常典型的图结构数据。
这其中最典型的就是我们每天都在使用的社交网络。
从社交网络中我们可以发现,一线领袖可以发现,社区根据这些社交特性,我们还能进行社交化的推荐。
如果我们可以对社交网络中的节点进行embedding编码,社交化推荐的过程将会非常方便。
除此之外,知识图谱也是近几年来非常火热的研究和应用方向,就像文稿中图一b中描述的那样。
知识图谱中包含了不同类型的知识主体,比如人物、地点等等。
附着在知识主体上的属性,像是人物描述、物品特点等等,以及主体和主体之间、主体和属性之间的关系。
如果我们能够对知识图谱中的主体进行化,就可以发现主体体间的潜潜关系。
系个对于基于内容知识识的推荐系统是非常有帮助。
那那还有一类非常重要的图述。
据如果行关系系图数据这类数据几乎存在于所有互联网应用中。
它事实上是由用户和物品组成的二部图,它是用户和物品之间的相互行为生成的行为关系图。
借助这样的关系图,我们自然能够利用embedding方法,发掘出物品和物品之间、用户和用户之间,以及用户和物品之间的关系,从而应用于推荐过程。
毫无疑问,图数据具备巨大的价值。
如果我们能将图中的节点embedding化,对于推荐系统来说将是非常有价值的特征。
所以接下来我们就进入正题,一起来学习基于图数据的graph embedding方法。
首先我们来学习一个在业界影响力比较大,应用也很广泛的graph embedding方法。
Deep work.它是二零一四年由美国实习大学的研究者提出的。
它的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列。
然后将这些物品序列作为训练样本输入what to work进行训练,最终得到物品embedding.因此a book可以被看作链接序列embedding和graph embedding的一种过渡方法。
文稿中的图二就展示了deb OK方法的执行过程。
下面我就结合图二中的四个示意图来为你详细讲解一下d boook的算法流程。
首先我们基于原始的用户行为序列,比如用户的购买物品序列、观看视频序列等等,来构建物品关系图。
从物品关系图中我们可以看出,因为用户u一先后购买了物品a和b所以产生了一条由a到b的有向边。
如果后续产生了多条相同的有向边,则有向边的权重会被加强,再将所有用户行为序列都转换成物品相关图中的边后全局的物品相关图就建立起来了。
然后我们采用随机有锁的方是随机选择起始点,重新产生物品序列,其中随机游走采样的次数、长度等等都属于超参数,需要我们根据具体应用进行调整。
最后我们将这些随机游走生成的物品序列输入what to ck模型,生成最终的物品inviring向量。
在DBO的算法流程中啊,唯一需要形式化定义的就是随机游走的跳转概率,也就是到达结点VI后下一步遍历VI的邻结点VJ的概率。
如果物品关系图是有向有权图,那从结点VI跳转到结点VI的权率定义。
如如果出j的权重比上i出边的权重之和,详细的公式可以参考文稿中的公式。
一、在公式中,n加VI是结点VI,所有的初边集合MIJ是结点VI到VJ边的权重,也就是说DBB的跳转概率率,跳转边的权重占所有相关初边权重之和的比例。
如果物品相关图是无向无权权重,跳转转概率将是一个特例。
也就是权m相关会是一向常数重,并并且加VI,应该是结点VI所有边的集合,而不是所有出边的集合。
在这之后,通过随机游走得到新的物品序列。
我们就可以通过经典的what to work的方式生成物品ebedding ding.当然,关于于what work的细节,你可以回顾上一节的内容,这里我就不再赘述了。
Deep book提出后,研究人员对于graph embedding的探索远没有结束。
二零一六年,斯坦福大学的研究人员在deep work的基础上更进一步,提出了notewak模型。
它通过调整随机游走、跳转概率的方法,让graph invidding结结在网络的同质性和结构性中进行权衡。
进一步可以把不同的embedding输入推荐权衡,让推荐系统学习到不同的网络结构特点。
我这里说的网络的同质性指的是距离相近节点的embedding应该尽量近似。
你可以看一下文稿中的图三,其中节点u和与它相连的节点s一到s四的embedding表达应该是接近的这就是网络同质性的体现。
在电商网站中,同质性高的物品很可能是同品类、同属性或者经常被一同购买的物品。
而结构性指的是结构上相似的,节点的embedding应该尽量接近图。
三中节点u和节点。
S六都是各自局域网络的中心节点,它们结构上相似,所以它们embedding的表达也应该近似,这就是结构性的体现。
在电商网站中,结构性相同的物品一般是各品类的爆款、最佳凑单商品等拥有类似趋势或者结构性属性的物品。
理解了这些基本概念之后。
那么问题来了,graph embedding的结果究竟是怎么表达结构性和同质性的呢?首先,为了使graph embedding的结果能够表达网络的结构性,因为表度游走过程程,我们需要让游走的过程程更向于BFS从是随度优先搜索。
因为为FFS会更多的当前节点的邻域中进行遍利游走,相当于对当前节点周边的网络进行了一次微观扫描。
当前节点是局部中心节点,还是边缘节点,亦或是连接性的节点,其生成的序列包含含节节数量、量、顺序、序必然不同同,从而让最终的embedding抓取到更多结构性的信息。
而为了表达同质性,随机机走走,更倾向向于FFS深度优先搜索才行。
因为DFS更有可能通过多跳转转,游走到远方的节点上。
无论怎样,DFS的游走更大概率会在一个大的集团内部进行,这就使得一个集团或者社区内部节点的embedding更为相似,从而更多的表达网络的同质性。
那在note wax算法中,究竟是怎样控制BFS和DFS的倾向性的呢?其实它主要是通过结点间的跳转概率来控制它的倾向性。
比如文稿中的图四就展示了notewac算法从结点t跳转到结点v这从结点v跳转到周围各点的跳转概率。
这里你要注意这几个结点的特点。
结点t是随机游走上一步访问的结点,结点v是当前访问的结点,结点x一x二x三是与v相连的非t结点,但结点x一还与结点t相连。
这些不同的特点决定了随机游走时下一次跳转的概率。
跳转概率。
我们可以用具体的公式来表示,从当前结点v跳转到下一个结点x的概率是派VX等于欧米伽VQ乘以欧米伽VX,其中欧米伽VX是BN EX的原始权重。
阿尔法PQ是note back定义的一个跳转权重,到底是倾向于DFS还是BFS,首要就由这个跳转权重的定义有关了。
这里我们先了解一下这个跳转权重的精确定义,我再做进一步的解释。
我把这个权重的公式放在了文稿中。
你可以先看一看,你会看到阿尔法PQ里的DTX是指结点t到结点x的距离,比如结点x一,其实是与结点t直接相连的。
所以这个距离DX就是二结点t到结点t自己的距离DTT当然就是零了。
而x二、x三这些不与t相连的结点DTX就是二。
此外,阿尔法PQ中的参数p和q共同控制着随机游走倾向性。
其中参数p被称为返回参数,距越小,随机游走回结点t的可能性就就大note back back.更更注重表达网络的结构性参数,q被称为进出参数,q越小,随机游走到远结点的可能性就越大。
Noto back就更注重表达网络的同质性。
反之,当前结点点更可能在附近的结点游走之这么多多公式参参大可能会有点儿头晕。
我建议大家还是坐下来自己尝试给p和q设置不同大小的值,算一算,从v跳转到TX一x二和x三的跳转概率。
这样一来,应该就不难理解我刚才所说的随机游走倾向性的问题了。
Noteback这种灵活表达、同质性和结构性的特点也得到了实验验证证实。
我们以通过过整整和QQ的参数值,让它产生不同的ebebedding.结果文稿中的图五中的上图就是noto back,更注重同质性的体现,从中我们可以看到距离相同的结点颜色更为接近。
而图五的下图则更注重结构性,其中结构特点相似的结点,它们的颜色也更为接近。
毫无疑问,noto back所体现的网络的同质性和结构性,在推荐系统中都是非常重要的特征。
表达包于notebak的这种灵活性,以及发掘不同图特征的能力。
我们甚至可以把不同noteork生成的偏向结构性embedding结果,以及偏向同质性的embedding结果,共同输入后续的深度神经网络,以保留物品的不同图特征信息。
到这里,我们已经学习了好几种主流的embedding方法,包括note列数据的embedding方法,watwork work和item work work,以及图数据的embedding方法,deep work和teto work.那你有没有想过我们为什么要在特征工程这一篇来介绍embedding呢?Embedding又是怎么应用到推荐系统中的呢?这里我就来做一个统一的解答。
第一个问题不难回答,由于embedding的产出就是一个数值型的特征向量,所以embedding技术本身就可以视做特征处理方式的一种,只不过与简单的one hot编码等方式不同,embedding是一种更高阶的特征处理方法,它具备了把序列、结构、网络结构甚至其他特征融合到一个特征向量中的能力。
而第二个问题的答案有三个embedding啊。
在推荐系统的应用方式大致有三种,分别是直接应用预训练应用和n to end应用。
其中直接应用最简单就是我们得到embedding向量之后,直接利用in ebedding向量的相似性,实现某些推荐系统的功能,典型的功能有利用物品embedding中的相似性,可以实现相似物品推荐利用物品embedding和用户embedding的相似性,实现猜你喜欢等经典的推荐功能,还可以利用物品embedding,实现推荐系统的召回层等等。
当然,如果你还不熟悉这些应用细节,也完全不用担心。
我们在之后的课程中都会讲到,预训练应用指的是在我们预先训练好物品和用户的embedding之后不直接应用,而是把这些embedding向量作为特征向量的一部分,跟其余特征向量拼接起来,作为推荐模型的输入,参与训练,这样做能够更好的引入其他特征,让推荐模型做出更全面、准确的预测。
第三种应用叫做end to end应用看上去是一个新的名词,它的全称叫做end to end training,也就是端到端训练。
不过n to NN用其实并不神秘,它指的是我们不预先训练embedding它,而是把embedding的训练与深度学习推荐模型结合起来,采用统一的端到端的方式一起训练,直接得到包含embedding层的推荐模型。
这种方式非常流行,像微软的deep crossing.首先,LT的的NN和google le wide de deep.这这些经典的模型就都包含embedding层,它们的时间细。
我们们会在后续续课程中介绍,你这里只需要了解这个概念就可以了。
好了,今天的内容讲完完了,我们起起来做个方法。
首节课我们一起学习了graph embedding的两种主要方法,分别是debo、 ook和noto并并我们还总结了waembedding技术在深度推荐系统中的应用方法。
首习deb boook方法的关键直接得到它法方型。
这个算法过程可以分为三步。
首先我们基于原始的用用户行序列来构建物品关系图,然后采用随机优组的方式,随机选择起始点,重新产生物品序列。
最后,我们将这些随机右组生成的物品序列输入worto back模型。
如果倾向于物品embedding向量,而notebk相比deb book增加了随机优组过程中跳转概率的倾向性。
如果倾向于宽度优先搜索,则embedding结果更加体现结构性。
而如果倾向于深度优先搜索,则更加体现同质性。
最后,我们还介绍了embedding技术在深度学习推荐系统中的三种应用方法,直接应用预训练和n to n训练。
这些方法各有特点,它们都是业界主流的应用方法。
随着课程的不断深入,我会带你一步一步揭开它们的面纱。
那老规矩,在课程的最后,我还是用表格的方式总结了这次课程的关键知识点,你可以利用它来复习巩固。
好,至此啊,我们就完成了所有embedding理论部分的学习。
下节课我们会一起进入embedding和graph embedding的实践部分,利用spell rexes的数据,使用spark实embedding的训练。
希望你到时候跟我一起动起手来,最后留一道思考题。
你能尝试对比一下embedding预训练和embedding n to n训练这两种应用方法,说出它们之间的优缺点嘛。
欢迎在留言区分享你的思考和答案。
如果这节graph embedding的课程让你有所收获,那不妨也把这节课分享给你的朋友们,我们下节课见。