首页 > 编程语言 >推荐系统中的常用算法——基于Graph Embedding的GES和EGES

推荐系统中的常用算法——基于Graph Embedding的GES和EGES

时间:2023-06-14 19:33:11浏览次数:54  
标签:GES EGES Graph item 算法 Embedding 向量


1. 概述

相比较于基于Collaborative Filter算法,基于基础Graph Embedding模型可以根据用户的行为序列学习出item的embedding,利用item对应的Embedding可以方便计算item与item之间的相似度,并在实践中被证明是卓有成效的方法,在基于基础Graph Embedding模型,主要包括item2vec,node2vec,deepwalk等算法。

在使用基础Graph Embedding算法的前提是用户的行为序列,但是对于一些新的item或者用户很少有行为的item,即冷启动问题,基础的Graph Embedding算法很难学到对应item的embedding表示,为此,一些针对item冷启动的方法被提出,其中就包括GES和EGES算法。

GES和EGES是阿里在2018年提出的两个基于Graph Embedding的算法,其中GES全称为Graph Embedding with Side Information,EGES全称为Enhanced Graph Embedding with Side Information。为了解决冷启动的问题,GES和EGES在计算item embedding的过程中引入了side information。

2. 算法原理

2.1. side information

side information在推荐系统中有着重要的作用,不仅仅能应用在召回中用于处理冷启动问题,同时在排序阶段中也有广泛的应用。side information主要指的是与item相关的一些先验信息,对于商品而言,先验信息包括:类别,商店,价格等。

2.2. GES算法

GES算法全称为Graph Embedding with Side Information,假设推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习表示item或者side information的embedding矩阵,其中,推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_02表示item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03的embedding,推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_04表示第推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_05个side information,item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03共有推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_07个side information,则对于item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03共有推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_09个向量:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_10

其中,推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_11为embedding的维度。

对于item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03,使用average-pooling将这推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_09个向量聚合起来,得到item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03的向量表示:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_15

2.3. EGES算法

EGES算法全称为Enhanced Graph Embedding with Side Information,从其名字来看便可以知道,EGES是GES的增强版。在GES中,每一个向量,包括一个item的向量以及推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_07个side information的向量,这些向量的权重是一样的。从实际的情况来看,不同种类的side information对于最终的embedding的贡献是不一样的。因此EGES对GES中的向量做了加权的操作。

假设对于item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03,权重矩阵为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_18,其中,推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_19表示第推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_20个item的第推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_21个side information的权重,为简单,记推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_22推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_19推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_24表示的是item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_20本身向量的权重,记为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_26

对于item 推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_03,加权平均后的结果为:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_28

其中,使用推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_29而不是推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_30是为了保证权重大于0。

2.4. GES和EGES的模型结构

GES和EGES的模型结构如下图所示:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_31


其中,Dense Embeddings表示的是item向量以及推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_07个side information的向量。Hidden Representation即为如上公式中的推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_33。从上述过程来看,GES即为EGES模型的简化版本,即权重都为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_34

2.5. EGES中item向量的求解

EGES算法的流程如下图所示:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_35


从EGES算法的流程中,笔者发现,其与DeepWalk的流程基本一致,不同的主要是两点:1)学习的参数不同,在DeepWalk中主要是item的向量表示,在EGES中不仅要学习item的向量推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_36推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_07个side information的向量推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_38,还包括权重的矩阵推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_39;2)在DeepWalk中使用的是SkipGram,在EGES中使用的是WeightedSkipGram。

2.6. Weighted Skip-Gram

Weighted Skip-Gram算法的流程如下所示:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_ide_40


为了能够更好的理解上述的流程,我们需要先了解word2vec中Skip-Gram模型的具体流程,在词向量的求解过程中除了Skip-Gram还可以是CBOW模型,本文的重点是Skip-Gram模型,Skip-Gram模型的结构如下图所示:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_41


为讨论的方便,假设在Skip-Gram模型中,每个词的向量维度为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_11,在词典推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_43中,中心词推荐系统中的常用算法——基于Graph Embedding的GES和EGES_ide_44的词向量为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_45,背景词推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_46的词向量为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_47。给定中心词生成背景词的条件概率可以通过对向量内积做softmax运算而得到:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_48

此时,对于整个文本可以得到如下的概率形式:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_49

语言模型中的目标是要使得上述的概率最大,通过log似然,可以得到如下的损失函数:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_50

对于推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_51,有:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_52

为了能够对其中的参数求解,可以使用梯度下降法求解,此时需要对损失函数求导,以推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_53为例:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_54

从上述的公式发现,每次的求导数的过程中,都需要对整个词典中的词计算,如果词典较大,那么每次更新时的计算成本就比较大,为降低计算成本,近似的训练方法被提出,负采样(Negative Sampling)便是其中的一种近似计算方法。

对于上述给定的中心词推荐系统中的常用算法——基于Graph Embedding的GES和EGES_ide_44,给定一个背景窗口,假设背景词推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_46出现在推荐系统中的常用算法——基于Graph Embedding的GES和EGES_ide_44的背景窗口中的事件概率为:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_58

对于给定的长度为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_59的文本,假设时间步推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_60的词为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_61且背景窗口大小为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_62,此时联合概率为:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_63

此时模型中仅考虑了正样本,通过采样推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_64个未出现在该背景窗口中的词,此时的联合概率为:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_49

其中,推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_66可以表示为:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_67

可以验证,此时计算不再与词典大小相关,而是与负采样的参数推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_64相关,以上便是Skip-Gram模型以及负采样的相关内容。

对于采样到的样本推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_69,其对应的向量为推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_70,由上述的理论可以得到:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_71

可以得到如下的导数:

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_深度学习_72

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_Graph_73

推荐系统中的常用算法——基于Graph Embedding的GES和EGES_权重_74

参考文献


标签:GES,EGES,Graph,item,算法,Embedding,向量
From: https://blog.51cto.com/u_16161414/6480223

相关文章

  • 当 GraphQL 遇上图数据库,便有了更方便查询数据的方式
    人之初,性本鸽。大家好,我叫储惠龙(实名上网),你可以叫我小龙人,00后一枚。目前从事后端开发工作。今天给大家带来一个简单的为NebulaGraph提供GraphQL查询支持的DEMO,为什么是简单的,因为本来想完成更多工作再给大家介绍的,但是上个月太忙加上下个月更忙,但是我又很想白嫖一下Neb......
  • [ABC305E] Art Gallery on Graph
    ArtGalleryonGraphの传送门Problem有一个由\(N\)个点\(M\)边的简单无向图,顶点编号为\(1\)到\(N\),边的编号为\(1\)到\(M\)。第$i$条边连接着点$a_i$和$b_i$。在一些点上有编号为\(1\)到\(K\)的\(K\)个守卫。守卫$i$位于顶点$p_i$,保护......
  • The XOR Largest Pair
    #include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>usingnamespacestd;intbit[32];intn,num[5211314];structTrie{ inttrie[5211314][2],tot=1; inlinevoidInsert(inta){ ......
  • Graph Neural Networks Inspired by Classical Iterative Algorithms
    目录概符号说明MotivationRobustRegularizationYangY.,LiuT.,WangY.,ZhouJ.,GanQ.,WeiZ.,ZhangZ.,HuangZ.andWipfD.Graphneuralnetworksinspiredbyclassicaliterativealgorithms.ICML,2021.概基于广义energyfunction(diffusion)的图神经网......
  • 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络
    2023-06-10:给定一个由n个节点组成的网络,用nxn个邻接矩阵graph表示在节点网络中,只有当graph[i][j]=1时,节点i能够直接连接到另一个节点j。一些节点initial最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件......
  • 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络
    2023-06-10:给定一个由n个节点组成的网络,用nxn个邻接矩阵graph表示在节点网络中,只有当graph[i][j]=1时,节点i能够直接连接到另一个节点j。一些节点initial最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意......
  • imessages数据检测,imessages过蓝检测,用applescript检测手机号码是否注册imessage实
    一、检测iMessage发送数据的2种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写脚本控制......
  • GoodGraph
    [ABC304E]GoodGraph可以用并查集维护目前已有的连通块。首先应当判断给定的图是不是不好的图,如果是不好的,后面肯定都是不好的。除此之外,可以对于每组点对,记录它们对应的连通块是不可达的。将这些关系排序,然后每次查询时看一看能不能找到这个位置即可。由于时间卡的不是很紧,是有......
  • Leetcode Hot 100 & 128. Longest Consecutive Sequence
    参考资料:考点:哈希&[题干]Input:nums=[100,4,200,1,3,2]Output:4Explanation:Thelongestconsecutiveelementssequenceis[1,2,3,4].Thereforeitslengthis4.做的时候冥思苦想了半天,因为这个题目要求是O(n)的解法,后来看到题解的时候还一度怀......
  • Postman 中 GraphQL 教程:快速入门学习
    GraphQL是一种用于API的开源数据查询和操作语言,用于API的查询语言和运行时。它使客户端能够精确地指定其数据需求,并获得预测性地结果。GraphQL旨在提高API的效率、灵活性和可靠性。Postman是一款用于API开发的强大工具,它支持REST和GraphQLAPI。Postman还提供了一个用户友好的界面,......