论文浅尝 | 基于知识增强的多行为对比推荐

news2024/10/6 18:24:41

6dc38b5e4d6c59595b30d3173f03ce1f.png

笔记整理:吴飞跃,东南大学硕士,研究方向为推荐系统

链接:https://doi.org/10.1145/3539597.3570386

动机

在实际推荐场景中,用户和物品之间存在多种类型的交互行为,如在线购物平台上的点击、标记为喜欢和购买等。传统的推荐技术通常只关注用户和物品之间单一类型的行为建模,因此如何充分利用多种行为信息进行推荐对于现有系统具有重要意义,这在两个方面提出了需要探索的挑战:(1)利用用户的个性化偏好捕捉多行为依赖关系;(2)处理目标行为稀疏监督信号导致的推荐不足。本文旨在探索利用用户个性化偏好来捕捉多行为依赖关系以及处理目标行为稀疏监督信号引起的不足推荐两个方面所面临的挑战。

贡献

本文的主要贡献包括以下几个方面:

1、提出了一个新的推荐框架KMCLR(Knowledge Enhancement Multi-Behavior Contrastive Learning Recommendation),该框架包括两个对比学习任务和三个功能模块,通过将多行为信息和知识图谱信息相结合,增强用户层和物品层的表示,强调从不同角度对用户-物品信息进行建模,缓解目标行为数据稀疏的问题。

2、在KMCLR框架中,提出了两个对比学习任务和一个损失范式,可以更好地建模行为之间的粗粒度共性和用户之间的细粒度差异,以提高推荐性能。这是第一次将多行为对比学习和知识图谱对比学习联合引入推荐系统。

3、在三个真实数据集上进行了各种实验,结果显示KMCLR框架优于各种最先进的推荐方法。此外,还进行了消融实验,以更好地理解KMCLR的模型设计,证明其中关键组件的有效性。

方法

总体框架如图1所示,主要由三个模块组成,分别是多行为学习模块、知识增强模块以及联合学习模块,并提出了两种类型的对比学习任务来捕获多行为互动特征和物品层面的知识特征。多行为学习模块通过两个行为编码器捕获用户的历史互动行为,以学习用户的多行为特征表达。知识增强模块通过知识图谱编码器学习物品的知识图谱嵌入表示。联合学习模块通过提出的两种CL任务(行为对比学习任务和知识图谱对比学习任务)联合训练多行为学习模块和知识增强模块,以学习用户和物品的联合表示。

023fae4752e5fa41eed306a3fd760478.png

图1 总体框架图

1、多行为学习模块

在此模块中,用户的多行为互动图被输入到多行为编码器中。通过此编码器构建用户单行为表达。KMCLR根据目标行为与其他行为的对比损失优化用户-物品嵌入。此过程利用多行为信息增强用户级嵌入表达。

多行为学习模块通过两个行为编码器(行为编码器A和行为编码器B)分别学习用户的两个历史行为(行为A和行为B)的表达。然后,将行为编码器A的输出(行为A的用户表达)作为目标,行为编码器B的输出(行为B的用户表达)作为负例,通过对比学习任务优化模型。同样,我们也将行为编码器B的输出作为目标,行为编码器A的输出作为负例进行优化。

e10c1890d575dec459692827133a5a87.png

定义的自监督对比学习损失函数如上所示,其中, τ 是用于控制softmax曲线平滑度的参数,  (∼) 是对之间的距离函数,代表正负例对之间的相似度。

通过这个过程,模型学会将两个行为中的用户表达拉近(如果这两个行为来自同一用户),而将不同用户的表达推远(如果这两个行为来自不同用户)。所以,该模块通过多个行为的信息学到了用户的个性化特征,增强了用户级的表达,缓解了单一行为数据的稀疏性问题,为后续的推荐提供了更加丰富的用户表达。

2、知识增强模块

知识图谱作为辅助信息输入到知识增强模块。KMCLR利用不同的图嵌入技术,关注KG中的理性和语义信息以获得不同的节点表达。基于每个图嵌入表达,从用户的角度提出一种项目评分评估方法,通过保留低噪声项目信息构建用户-项目嵌入。这些经过处理的数据将根据CL任务进一步用于优化项目级嵌入表达。

知识增强模块主要利用外部的知识图谱信息增强物品的表达。具体来说,该模块首先使用不同的图嵌入方法(如TransR)学习知识图谱中的实体和关系的表达。然后,基于这些表达,提出一种从用户的角度评价物品的方法,筛选出那些与用户偏好最相关的物品。

最后,该模块将筛选出的相关物品作为目标,将不相关物品作为负例,构建知识图谱对比学习任务,通过该任务优化用户和物品的表达。这个过程可以使表达学习到物品间的语义相关性与差异,增强物品级的特征表达。

93da047c1161232c6a41b781896cd810.png

和多行为学习模块类似,此类对比学习的损失函数定义如上。

3、联合学习模块

通过上述模块,以不同的方式获得了两种类型的用户-物品嵌入,一种使用多行为信息,另一种使用KG信息。这些从不同角度获得的嵌入包含着不同重点的信息,需要以合理的方式结合。因此,赋予一个结合权重α,并通过实验探索最佳结合结果。

205d6bfee7d0a21414d0fa792415cfa6.png

在优化阶段,使用贝叶斯个性化排序(BPR)推荐损失作为主要任务损失来进一步优化参数:

6d760f41fadd60ccaa268ce9a06e05ce.png

其中  代表用户u的可见交互集合。

实验

6eeab35a661d6121abbfea209f41a428.png

表1 数据集概况

实验使用了三个真实世界的数据集,分别是Yelp、Tmall和Retail。

efff35e4f7cd98b2c5aca3797da01a5d.png

表2 性能表现对比

作者将KMCLR与不同的模型进行了对比。其中基于CF的方法有BPR、LightGCN、AutoRec和NGCF,知识感知推荐方法有KGAT、KGCL,多行为推荐方法有NMTR、MATN、MBGCN、KHGT、CML。

在和所有其他基线模型的对比中,KMCLR在所有数据集上均取得了最优的性能,验证了该模型的有效性。

总结

作者提出了KMCLR,一种新的基于知识增强的多行为对比学习推荐框架。具体来说,联合引入了多行为信息和知识图谱信息到推荐系统中,以增强用户行为方面和项目方面的信息,缓解目标行为数据稀疏性问题。此外,通过设计两种对比学习任务和联合训练方法,KMCLR可以从多角度学习个人偏好,考虑不同行为和视角之间的共性和差异。各种数据集上的大量实验结果证明了KMCLR与各种最先进方法的有效性。未来工作的一个有希望的方向是进一步探索一种有效的模型来解决引入额外信息所造成的噪声信号问题。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

5034dc6e1e59f641251c3a8dc146d183.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

【算法专题突破】二分查找 - 704. 二分查找(16)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:704. 二分查找 - 力扣(LeetCode) 题目非常简单,就是查找一个 target。 2. 算法原理 根据最基本的二分查找算法: 在一个…

Java代码随想录第一章:-数组理论基础,704. 二分查找,27. 移除元素 ,

一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 举一个字符数组的例子如图: 需要两点注意的是 数组下标都是从0开始的。数组内存空间的地址是连续的 正是因为数组的在内存空间…

Unity 发布WebGL平台,C#与JavaScript交互

发布H5平台,接入SDK,比如微信等,涉及到C#与JS的交互。 jslib(JavaScript Library)是Unity的一种机制,允许你在C#中通过JavaScript代码来执行一些操作。这是一种高级的技巧,主要用于一些特殊情况…

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt,并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…

Android AMS——APP启动流程

Android 应用启动方式主要有两种 , 冷启动和热启动。 冷启动:后台没有应用进程 , 需要先创建进程 , 然后启动 Activity ;热启动:后台有应用进程 , 不创建进程 , 直接启动 Activity ; 其实,还有一种问起动的方式,就是用户按了返回键退出应用,随后又从新启动,可是活…

【Python】{已解决}在命令行窗口查看的版本号与安装版本不一致问题

今天在使用一个新的第三方库的时候:先pip安装了一下,然后导入的时候报错了 然后以为是没有安装成功,就又pip了一下,发现已经成功安装了。 那是为什么呢? 是解释器出现了问题吗?于是我就去查看了一下pychar…

反射-认识反射

一、什么是反射 二、如何使用反射 1.第一步:加载类,获取类的字节码(获取类的Class对象) public class reflectTest {public static void main(String[] args) throws Exception {Class c1 Student.class; //通过类名得到学生类…

上班后很迷茫,到底该如何做一个合格的测试?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 如何做一个合格的测试?软件测试工程师的岗位职责到底是什么? 最初,我…

倒计时列表实现(小程序端Vue)

//rich-text主要用来将展示html格式的&#xff0c;可以直接使用这个标签 <view class"ptBox" v-for"(item,index) in orderList" :key"index"> <rich-text :nodes"item.limit_time|limitTimeFilter"></rich-text>…

vue+three.js中使用Ammo.js

直接通过npm i ammo.js安装进webpack的项目里调用时&#xff0c;会出现如下报错&#xff1a; ERROR in ./node_modules/ammo.js/ammo.js 1:1683-1696 Mo…

VMware中安装Ubuntu(2023年)

Ubuntu安装 前言 安装过程中电脑发热时正常的&#xff0c;这个还是稍微有点点大&#xff1b;下载的版本根据自己的喜好来&#xff0c;新版本肯定要比旧版本占用的空间更大&#xff0c;大家自行选择&#xff1b;仅供学习使用的话可以下载成熟稳定的版本&#xff0c;例如16、18…

【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e;例题1例题2例题3例题4 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e; 这里SOA与微服务的例题只对应找寻了几个&#x…

servlet开发-通过Tomcat部署一个简单的webapp

首先我们得下载安装Tomcat&#xff0c;推荐看Tomcat&#xff08;HTTP服务器&#xff09;下载以及认识&#xff0c; 我们将通过打印一个hello word的方式来熟悉servlet开发,通过Tomcat部署一个webapp的流程 servlet的含义 Tomcat提供了一系列的api接口&#xff0c;这些api背后…

dfs力扣1993树上的操作

文章目录 dfs力扣1993树上的操作题目示例提示做题历程做题思路数组定义编写代码 完整代码 dfs力扣1993树上的操作 题目 题目链接 给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 parent[i] 是第 i 个节点…

Java多线程篇(5)——cas和atomic原子类

文章目录 CASAtomic 原子类一般原子类针对aba问题 —— AtomicStampedReference针对大量自旋问题 —— LongAdder CAS 原理大致如下&#xff1a; 在java的 Unsafe 类里封装了一些 cas 的api。以 compareAndSetInt 为例&#xff0c;来看看其底层实现。 可以发现&#xff0c;最…

基于abaqus的非等速生长Voronoi晶体模型生成插件

1. 非等速生长晶体模型简介 对于标准Voronoi而言&#xff0c;每个晶粒的生长速率是相同的&#xff0c;任意两个晶粒的交界线为其形核点连线的垂直平分线&#xff0c;交界线为一条直线&#xff0c;如图1.1所示。 图1.1 标准Voronoi晶粒交界线 而对于非等速生长Voronoi晶体而言…

项目篇——java文档搜索引擎

Java 文档搜索引擎 文章目录 Java 文档搜索引擎一、分词二、完成parser 类2.1、排除非html文件2.2、解析html以下是解析 HTML 标题的方法以下是解析 对应的 URL以下是解析 HTML的正文&#xff1a; 补充&#xff1a;倒序索引 三、实现 index 类3.1、实现索引结构3.2、索引中新增…

学会使用Git 和 GitHub

Git 和 GitHub 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具&#xff0c;拥有最多的用户&#xff0c;且管理着地球上最庞大的代码仓库&#xff1b;而后者是全球最大 同性交友 代码托管平台、开源社区。 在没有这两个工具时&#xff0c;编程可能是这样的…

Go环境搭建

下载 官网地址 选择Download 根据自己的请选择对应的版本进行下载(我这里使用windos go.1.21.1版本) 我这里选择zip类型进行下载免安装版(你也可以选择mis类型进行下载,安装版一步一步next就行)。 安装 解压安装包 目录说明 配置环境变量 验证是否安装成功 完成上述配置…

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中&#xff0c;Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面&#xff1a; 反射&#xff1a;Metadata可以用于在运行时获取类的信息&#xff0c;包括类的名称、属性、函数等。通过反射&…