首页 > 其他分享 >Multi-behavior Recommendation with Graph Convolutional Networks论文阅读笔记

Multi-behavior Recommendation with Graph Convolutional Networks论文阅读笔记

时间:2024-02-21 10:55:04浏览次数:18  
标签:Convolutional Multi 项目 Graph 语义 用户 传播 交互 行为

Abstract

传统的推荐模型通常只是要一种类型的用户-项目交互,但是却有着严重的数据稀疏或者冷启动问题。使用多种类型的用户-项目交互的多行为推荐,如点击和收藏,可以作为一种有效的解决方案。早期队多行为推荐的努力未能捕捉到行为对目标行为的不同影响强度。它们还忽略了多行为数据中隐含的行为语义。这两个限制都使得数据没有被充分利用来改进目标行为上的推荐性能
在本文中,我们通过创新性的构建一个统一的图来表示多行为模型,名为MBGCN来解决上面的问题。通过用户项传播层学习行为强度,通过项目传播层捕获行为语义,MBGCN可以很好的解决现有工作的局限性。

Introduction

个性化推荐系统已成为当今广泛的减轻信息过载的服务。协同过滤是构建推荐模型的范式,它可以学习用户的兴趣,并从收集的用户行为数据中估计偏好,即历史反馈,如购买等。传统的CF模型是针对单一类型的行为设计的,这在大多数情况与平台利润直接相关,如电子商务平台中的购买行为。但是在实际应用中会导致严重的冷启动和数据稀疏性问题。但是平台可以收集一些容易发生的其他类型的行为,比如点击和浏览。换句话说,推荐系统有能力利用其他类型的行为来帮助预测用户为了对目标行为的交互,这就是多行为推荐。
目前主流的有两种方式,第一类将多行为数据利用到采样过程中,并建立多采样对来加强模型学习过程。例如,MCBPR假设行为之间存在一个重要性顺序,它通过构建具有一种积极行为和另一种较弱的行为采样对来扩展BPR。第二类则试图设计模型来捕获多行为信息,例如基于矩阵分解的模型同时对多个行为矩阵进行分解。
但是目前的工作都存在以下限制:

  • 多种类型的行为强度没有得到充分的利用。 一方面忽略对行为的强度会使一些有用的信号丢失。例如与点击行为相比,添加购物车明显是更强的信号。因此准确建模添加购物车与购买之间的密切关系可以提高性能。另一方面,将所有辅助行为粗略地视为与目标行为相比较弱是不合理的。例如在电子书推荐系统中,与朋友分享一本书是比购买书更强的用户偏好,这是目标行为。也就是说需要多反馈推荐模型来揭示并进一步利用数据中不同行为类型的各种强度。
  • 没有考虑多种类型相关的语义。 行为的语义可以理解为一种行为类型的意义,换句话说,是用户-项目交互在特定行为类型下发生的原因。从另一个角度来看,每种行为类型下的交互项目之间应该存在一些共同的特征或特殊的关系。例如用户在电子商务网站上点击和查看产品时,共同点击或查看的产品可能是可替换的。当涉及到购买时,这些共同购买的产品可能是互补的。当我们没有项目的边信息,如类别或品牌时,项目间的关系可以作为解决方案来揭示协作推荐任务的语义。
    简而言之,现有方法的局限性在于它们不能彻底解决上述两个挑战:建模基于用户到项目的强度和基于多种类型行为的基于项目到项目的语义。
    为了解决这些问题,我们建议基于多种类型的行为数据构建一个统一的异构图。将用户/项目表示为节点。不同类型的行为表示为图的多种类型的边,基于用户到项目的强度和基于项目到项目的语义建模问题转向了异构边和项目-用户-项目元路径建模。我们进一步提出了一种名为多行为图卷积网络的解决方案,利用图神经网络从复杂边和高阶图连通性学习的强大能力来解决上述两个挑战。
    更具体的说,我们构造了一个由两种节点和多种类型的边组成的异构图,其中一条连接用户节点和项目节点的边指的是一种特定类型的用户-项目反馈。首先,这种图结构的交互数据没有对偏好强度设置任何先验约束或假设。为了捕捉不同行为的各种强度,我们对每个行为提出了具有行为感知能力的项目到用户的传播层,以将相邻的项目节点的嵌入传播到用户节点。这使得该模型能够区分不同的辅助行为的不同强度。其次,我们设计了对项目节点嵌入操作的传播层,操作在项目节点的嵌入和协同交互的相邻项目上。这有助于捕获不同行为的项目相似度的不同CF语义,并增强对项目嵌入的学习。通过这些设计,我们的MBGCN方法有效地解决了主要的挑战,并有助于利用辅助行为来更好地推荐目标行为。
    本文所做的主要贡献如下:
  • 我们建议构造一个异构图来表示多反馈数据,而不受每种行为的偏好强度的任何约束。
  • 对于所构造的图,我们提出了一个基于图卷积网络的推荐模型。一方面,我们设计了行为感知的用户到项目嵌入传播层来捕获不同行为的不同影响;另一方面,我们设计了项目之间的嵌入传播来建模项目之间的相似性,这反映了不同行为的各种语义。

Methodology

模型的具体方法如下,包含了四个组件:

  • 共享层:为用户和项目嵌入提供初始化
  • 用户-项目传播层,同时学习每种行为的强度,并基于多种行为的用户-项目交互提取协同过滤信号
  • 项目-项目传播层,根据行为类型来细化项目之间的特殊关系或行为语义
  • 联合预测模块
    模型的总体结构如下:
    pFtZIYQ.png

用户-项目传播层

包含两种传播

  • 项目-用户传播
  • 用户-项目传播

项目-用户传播
从项目到用户传播需要考虑每个行为的权重,我们需要根据每种行为总的用户的交互次数和可学习的每种行为的权重来得到每种用户的行为进行传播的权重。

然后每种用户的行为的嵌入是由对应行为的项目的嵌入进行聚合的。

用户-项目传播
因为每种项目的性质是固定的(存疑),所以聚合的时候直接对与其交互的用户进行聚合,不考虑项目的行为
用户-项目传播层的示意图如下所示:
pFtlfiV.png

项目-项目传播层

这里感觉很奇怪而且感觉很不合理

项目的聚合按照所有与其有相同行为的项目来进行聚合
每个项目最后都有\(|N_r|\)个嵌入,\(|N_r|\)为行为的数量

项目-项目传播层的示意图如下所示:
pFtl5zF.png

联合预测

分为基于用户的协同过滤分数和基于项目的协同过滤分数
损失函数还是使用的是BPR Loss

Conclusion

在这项工作中,我们研究了考虑多种类型的用户-项目交互的多行为推荐问题。为了充分建模不同行为和不同行为语义所反映的不同偏好强度,我们提出了一种基于图的解决方案。该解决方案将多个用户-项目交互矩阵重构到统一的图中。然后我们提出了一个MBGCN模型,它利用了图卷积网络从复杂的图结构中学习节点表示的能力。

标签:Convolutional,Multi,项目,Graph,语义,用户,传播,交互,行为
From: https://www.cnblogs.com/anewpro-techshare/p/18024712

相关文章

  • 百度搜索exgraph图执行引擎设计与实践
    导读百度搜索exgraph图执行引擎设计重点分成三个部分:图描述语言、图执行引擎、对接扩展。图描述语言是一种基于文本可读的图描述语言,用于描述任务中的算子以及算子之间的依赖关系,即让人可以理解,也可以被计算机理解并执行。图执行引擎是exgraph的核心,负责根据图描述语言生成的......
  • Qt 使用QCryptographicHash做简单的数据加密
    在编写程序的时候经常会使用到一些加密的方法,在Qt中,提供了一些常用的加密方法:Md4,Md5,Sha1,Sha224,Sha256,Sha384,Sha512,Sha3_224,Sha3_256,Sha3_384,Sha3_512,如果我们需要使用这些加密方法时,可以直接使用Qt中的QCryptographicHash类进行加密。1#include<QCryptographic......
  • Qt 哈希加密 QCryptographicHash
    QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。共有类型枚举QCryptographicHash::Algorithm:公共函数voidaddData(constchar*data,intlength)......
  • A trip through the Graphics Pipeline 2011: Index
    原文地址https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/Welcome.ThisistheindexpageforaseriesofblogpostsI’mcurrentlywritingabouttheD3D/OpenGLgraphicspipelinesasactuallyimplementedbyGPUs.Alot......
  • [ARC165C] Social Distance on Graph
    转化题意,对图进行黑白染色,求最大的\(X\)满足所有\(u,v\)间最短路径小于\(X\)的\(u,v\)异色。很明显是二分答案,假设现在二分到\(mid\),转化为判定型问题。直接\(n^2\)枚举点肯定不对。发现性质:如果\(u,v\)的最短路径长度小于\(X\)且最短路径上经过的边数大于\(......
  • Java中正则表达式(regex)匹配多行(Pattern.MULTILINE和Pattern.DOTALL模式)
    ​ Java中,正则表达式(regex)的处理是通过Pattern类实现的。Pattern类提供了多种标志(flags)来修改正则表达式的行为。其中,Pattern.MULTILINE和Pattern.DOTALL是两个常用的模式,它们分别用于处理多行文本和让.匹配包括行终止符在内的任意字符。 参考文档:Java中正则表达式(regex)匹......
  • 《SagDRE: Sequence-Aware Graph-Based Document-Level Relation Extraction with Ada
    代码原文地址关键参考文献:Document-LevelRelationExtractionwithAdaptiveThresholdingand LocalizedContextPooling摘要关系抽取(RE)是许多自然语言处理应用的重要任务,它的目标是从文档中抽取出实体之间的关系。文档级RE任务面临着许多挑战,因为它不仅需要跨句子......
  • 【2023年10月多校联训B层联赛2】 珠子 &&【October 2023 Multi-School League B Tier
    第一次用英语,见谅。为什么用英语?```Dev里懒得换输入法。```Link\(\textbf{gxyzoj\#3358}\)\(\textbf{LuoguU406794}\)DescriptionFhas\(n\)beadsarrangedinasequence,eachofwhichhasacolor,andatotalof\(m\)colors,numbered\(1,2,3,\cdots,......
  • [MIT 6.S081] Lab7: Multithreading
    Lab7:Multithreading在这个实验中主要是要熟悉一下多线程的一些东西,比如实现一个用户态线程,还有使用一些api。Uthread:switchingbetweenthreads这个任务的主要目的是实现用户态线程的调度,不过这个用户态线程个人认为是有栈协程。在这个任务中,需要实现在一个CPU资源的情......
  • 【XV6】 Multithreading
    代码:https://github.com/JasenChao/xv6-labs.git用户级线程切换题目要求完成用户级线程系统,提示程序要在uthread.c和uthread_switch.S中补充完成。用户级线程调度和进程的机制是类似的,因此uthread_switch.S可以复制swtch.S中的内容: .globlthread_switchthread_switch:......