SSLRec:统一的自监督推荐算法库

5ccfbf46d1578f9cb6b9433e4fffa7b0.gif

3e4a3a1d5f6bfa8975f5db97f0ce539a.png

96536c92bc00fbbf832bf00b22e99ab0.png

论文链接:

https://arxiv.org/pdf/2308.05697.pdf

论文代码:

https://github.com/HKUDS/SSLRec

TLDR

我们搭建了 SSLRec,一个统一的自监督推荐算法库。SSLRec 提供了一个标准化、灵活和全面的框架,用于整合不同场景下的推荐算法,并推动新算法的设计。

f2af63659338d05d2bc56e8cfcf80295.png

研究背景

推荐系统在应对信息过载和提升用户体验方面变得不可或缺。近年来,深度学习技术取得了显著的成功,并广泛应用于提升推荐系统的性能。然而,现有方法的有效性受到高质量监督标签的可用性的限制,特别是在推荐系统中,大量的物品可能导致用户交互稀疏,对许多长尾用户和物品缺乏足够的训练标签。此外,用户行为数据中的噪声,如交互噪声和流行度偏差,是一个普遍存在的挑战,严重影响模型的鲁棒性,导致推荐性能下降。

为了应对从稀疏和嘈杂数据中学习的推荐系统的需求,自监督学习(SSL)方法应运而生,并在减少对观察到的监督标签的依赖方面取得了有希望的结果。然而,许多 SSL 推荐系统缺乏公开的实现,即使有开源代码,不同开发者和设置之间在实现细节(如数据格式、参数调整方法和模型训练策略)上的不一致性使得公平比较各种算法的有效性变得具有挑战性。这种不一致性阻碍了推荐领域的进展。

为了解决这一问题,我们创建了 SSLRec,该框架提供了一个标准化、灵活和全面的平台,用于比较不同的自监督推荐系统的性能。我们的框架有以下几个特点:

  • 灵活的模块化架构:SSLRec 基于模块化构建,使用户能够轻松定制和组合模块,创建个性化推荐模型。

  • 多样化的推荐场景:SSLRec 旨在满足各种推荐场景的需求,其关注多个方面来理解用户偏好,包括基于图的协同关系学习、顺序推荐等等。

  • 全面的最新模型:SSLRec 包含了各种最新的自监督推荐算法,为研究人员提供了一个全面且易于使用的平台,用于开发新模型。

  • 统一的数据处理与测试评估:SSLRec 提供了统一的数据处理过程和标准化的测试评估,确保能够以可靠和高效的方式评估和比较SSL推荐系统。

  • 丰富的实用功能函数:SSLRec 提供了大量工具类函数,简化了推荐模型的开发和评估过程,使得研究人员可以专注于开发创新算法。

  • 易于使用的接口:SSLRec 提供了一个易于使用的接口,简化了训练和评估推荐模型的过程,促进了与不同推荐系统的快速和高效的实验。

9cd118b80902a64e7ee1294608199b8e.png

框架设计

b349af033f809c98c3d6121408ac8a60.png

目前,SSLRec 涵盖有以下几个推荐场景:协同过滤(General Collaborative Filtering)、序列化推荐(Sequential Recommendation)、社交推荐(Social Recommendation)、基于知识图谱的推荐(Knowledge Graph-enhanced Recommendation)和多行为推荐(Multi-behavior Recommendation)。

一般来说推荐算法含有预测函数 ,从而对用户 和商品 基于已有观测数据 计算一个推荐值 ,从而将其向真实值 进行优化:

d983b30e6338703d3e1fff07622c767a.png

在基于自监督的推荐算法中,其常常引入一个额外的自监督损失函数 ,使得算法还需优化如下目标:

722c49e478e32513889de9ef99279e21.png

其中 表示增强(augmentation)函数,其本质思想就是基于不同增强后的数据进行自监督损失函数设计,例如在基于对比学习的自监督方法中会进行不同视角的拉近推远,基于生成式自监督学习中会进行重构,亦或者在预测式的自监督模式下对增强生成的指标进行预测等等。

因此,框架设计的核心就是对增强函数自监督损失函数的模块化设计,从而能够用于不同的自监督推荐算法的统一搭建。

2.1 增强模块

为了防止由于稀疏标签而导致的模型退化,数据增强在生成原始数据或特征的多个视图时起着至关重要的作用,从而促进了额外的自监督信号的生成。在 SSLRec 中,我们从各种 SSL 算法中提取了常用的增强技术,并将它们结构化为与模型无关的模块,以便在不同的 SSL 模型中复用。具体来说推荐系统的增强技术可以分为以下两类:

  • 基于数据的增强。基于数据的增强方法在图推荐系统中起着重要作用,它包括随机增强图形结构,例如随机删除边缘或节点,以及自适应增强图形结构学习。在社交推荐场景中,研究人员通过利用矩阵操作挖掘特定社交关系之间的交互模式,获取增强的交互矩阵,从而减少噪声并丰富具有社交感知语义信息的增强视图。对于序列场景,可以应用启发式或随机增强方法(例如裁剪、插入和重新排序原始项目序列),以增强原始数据。

  • 基于特征的增强。基于特征的技术旨在通过学习嵌入来创建不同的视图。这些技术包括向特征添加随机噪声、随机删除隐藏变量中的某些元素或学习特征的聚类中心。然而,现有的推荐算法框架未能完全整合不同的 SSL 相关增强范例。在 SSLRec 中,我们将这些增强技术整合到可重用的模块中,以实现轻松的插拔式集成。这使得现有的 SSL 算法可以快速复制,并激发研究人员设计新的增强方法以进一步提高模型性能和泛化能力。

2.2 自监督函数模块

自监督推荐算法利用增强的数据和特征,通过特定的目标函数生成自监督信号,以促进模型参数的优化。在对比/预测自监督学习中,通常使用 InfoNCE 损失来拉近正样本对的视图,推开负样本对的视图。还有其他类型的 SSL 损失,如 DirectAU 提出的对齐和均匀性正则化技术,通过优化隐藏特征的分布来替代 InfoNCE。

KL/JS 散度也被用作一种 SSL 策略,通过拉近模型预测的概率分布来实现自监督学习。在生成式 SSL 中,交叉熵损失广泛应用于序列推荐中,用于将掩码项目的预测分布与基本事实对齐。对于在图中重建掩码边缘或节点特征,也提出了更高效的方法,如缩放余弦误差(SCE)或对比重建。我们的模型库将包括上述各种 SSL 相关目标作为模型实现的标准损失函数,确保自监督学习的有效性,并提高模型实现的整体效率。

0fcac55e119330b1b8e9680a49efc06e.png

基准测试

目前,我们在 SSLRec 中已经实现了如下推荐算法,涵盖有五种不同的推荐场景,包含了最先进的自监督推荐算法

16e05ea9b74cf4d46a47dff02f1c65b6.png

同时,我们为不同的推荐场景预处理了如下所示的数据集,它们都是在学术研究中常用的推荐基准数据集,用于训练与测试。

da70559626e33c12216969ff29458f8e.png

对于协同过滤(General Collaborative Filtering)我们在 Gowalla 数据集上面进行了基准测试,结果如下:

9a617b6ce6dafd2253340faad080b0dd.png

对于序列化推荐(Sequential Recommendation)我们在 MovieLen-20M 数据集上面进行了基准测试,结果如下:

cc452d94c5577b8e825d87b465d18334.png

对于社交推荐(Social Recommendation)我们在 Yelp 数据集上面进行了基准测试,结果如下:

3f3ee8d40728d0ac37b4215fa728aa56.png

对于基于知识图谱的推荐(KG-enhanced Recommendation)我们在 Alibaba 数据集上面进行了基准测试,结果如下:

30d92e5c8bd6b7f3431b7429108d0d2d.png

对于多行为推荐(Multi-behavior Recommendation)我们在 Retail Rocket 数据集上面进行了基准测试,结果如下:

e87cdf1005392bad99e858b70ce4fc2e.png

e2d8b96756f535890259158e5995a656.png

框架比较

我们对当前以易用性和实现最新算法而闻名的基于 PyTorch 的推荐框架进行了统计,并与 SSLRec 进行了比较,结果如下:

从结果中,我们有以下两点发现:

1. 尽管自监督推荐算法在各种用户建模和个性化场景中表现出色并得到广泛研究,但大多数现有的推荐框架未能全面解决这个问题。早期的库如 Spotligt 和 DaisyRec 主要关注经典的监督推荐算法,而 ReChorus、Beta-recsys 和 RecBole 则包含了一些最新的自监督推荐算法。

然而,直到最近出现的 SELFRec,才有了一个专门为自监督学习设计的库。我们的框架通过解决现有库忽视的问题而脱颖而出。此外,我们的 SSLRec 库提供了丰富的功能和模块,为用户提供了易于使用和灵活性出色的工具。这些丰富的自监督函数和模块使用户能够快速轻松地实现各种自监督推荐算法,使我们的框架成为研究人员和从业人员的宝贵资源。

2. 与现有的算法库相比,SSLRec 在提供最全面的自监督推荐算法方面脱颖而出。大多数算法在该领域取得了最先进的性能。尽管 SELFRec 这个自监督库主要关注一般的协同过滤和顺序推荐,但我们的 SSLRec 通过涵盖五个不同任务和实现更多的自监督推荐算法,超过了其范围。此外,SSLRec 还提供自动化的超参数搜索、结果保存和过程记录等辅助工具包,提高了库的可用性和可靠性,确保了无缝的用户体验。

0d36a7ac40aab807af50b0f84d049db6.png

总结与愿景

在本文中,我们提出了 SSLRec,一个全面的自监督推荐算法库。它包括近 30 种算法,涵盖了 5 个推荐领域。通过使用模块化的算法建模,我们实现了快速的设计和开发。我们的库包含了常用的增强和自监督损失模块,简化了算法设计过程。我们还提供了标准化的数据集和一致的训练验证测试流程,以进行公平的比较。

我们重视用户反馈,并致力于不断改进和扩展 SSLRec,以满足推荐系统研究社区不断变化的需求。我们的重点将始终放在自监督推荐算法上,不断根据宝贵的用户反馈来扩展和优化我们的 SSLRec 库。同时,我们也希望用户加入我们一同不断完善和改进 SSLRec,不断扩大其影响力,从而服务更多的研究员和开发者们。

更多阅读

e28af1e53b28b43ef0a4abbc2334ccfd.png

cbe729437f66b63263f80e9ef25c2421.png

d746febafe6794b3a18e87a7132fc3a5.png

fa0e6b59c0cb3c11474c39ebf2ec4558.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

537d97ae2b916821855f300ae54e5da8.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

f4a296f4f49e6f259457d4028e1e4e8c.jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2+Vue3

文章目录 Vue快速上手Vue是什么第一个Vue程序插值表达式Vue核心特性:响应式 Vue指令v-htmlv-show 与 v-ifv-else 与 v-else-ifv-onv-bindv-forv-model指令修饰符 计算属性watch侦听器(监视器)watch——简写watch——完整写法 Vue生命周期 和 …

网页的快捷方式打开自动全屏--Chrome、Firefox 浏览器相关设置

Firefox 的全屏方式与 Chrome 不同,Chrome 自带全屏模式以及APP模式,通过简单的参数即可设置,而Firefox暂时么有这个功能,Firefox 的全屏功能可以通过全屏插件实现。 全屏模式下,按 F11 不会退出全屏,鼠标…

GDB之(任意门)跳到任意位置(十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Pytorch-CNN-Mnist

文章目录 model.pymain.py网络设置注意事项及改进运行截图 model.py import torch.nn as nn class CNN_cls(nn.Module):def __init__(self,in_dim28*28):super(CNN_cls,self).__init__()self.conv1 nn.Conv2d(1,32,1,1)self.pool1 nn.MaxPool2d(2,2)self.conv2 nn.Conv2d(3…

Web 第一步:HTTP 协议(基础)

这里是JavaWeb的开头部分!那么先解释一下吧: Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 JavaWeb:是用Java技术来解决相关 Web 互联网领域的技术栈。 &#xf…

vite和webpack的区别

vite和webpack的区别 1、前言2、Webpack2.1 Webpack简述2.2 Webpack常用插件 3、Vite3.1 Vite简述3.2 Vite插件推荐 4、区别4.1 开发模式不同4.2 打包效率不同4.3 插件生态不同4.4 配置复杂度不同4.5 热更新机制不同 5、总结 1、前言 Webpack和Vite是现代前端开发中非常重要的…

深度解析shell脚本的命令的原理之ls

ls是一个常用的Unix和Linux命令,它的功能是列出目录内容。当运行ls命令时,操作系统会执行一系列步骤,以获取和显示指定目录中的文件和子目录。以下是对这个命令的深度解析: 解析参数和选项:首先,ls命令会解…

Linux:centos9的本地yum仓库配置

其实9和7的配置方法是差不多一样的,只不过你使用7的本地yum仓库里面直接挂载就可以直接把仓库位置指向挂载点 具体可以看我往期文章,但是先看完我下面的描述再去看我链接的文章才能看懂如何配置centos9的yum仓库 Linux:YUM仓库服务_鲍海超-…

Android Media3 ExoPlayer 开启缓存功能

ExoPlayer 开启播放缓存功能,在下次加载已经播放过的网络资源的时候,可以直接从本地缓存加载,实现为用户节省流量和提升加载效率的作用。 方法一:采用 ExoPlayer 缓存策略 第 1 步:实现 Exoplayer 参考 Exoplayer 官…

利用Python将dataframe格式的所有列的数据类型转换为分类数据类型

一、样例理解 import pandas as pd import numpy as np# 创建测试数据 feature_names [col1 , col2, col3, col4, col5, col6] values np.random.randint(20, size(10,6))dataset pd.DataFrame(data values, columns feature_names)print("转换前的数据为\n",d…

NetSuite知识会汇编-管理员篇顾问篇2023

本月初,开学之际,我们发布了《NetSuite知识会汇编-用户篇 2023》,这次发布《NetSuite知识会汇编-管理员篇&顾问篇2023》。本篇挑选了近两年NetSuite知识会中的一些文章,涉及开发、权限、系统管理等较深的内容,共19…

Python 基于PyCharm断点调试

视频版教程 Python3零基础7天入门实战视频教程 PyCharm Debug(断点调试)可以帮助开发者在代码运行时进行实时的调试和错误排查,提高代码开发效率和代码质量。 准备一段代码 def add(num1, num2):return num1 num2if __name__ __main__:f…

使用stelnet进行安全的远程管理

1. telnet有哪些不足? 2.ssh如何保证数据传输安全? 需求:远程telnet管理设备 用户定义需要在AAA模式下: 开启远程登录的服务:定义vty接口 然后从R2登录:是可以登录的 同理R3登录: 在R1也可以查…

全国职业技能大赛云计算--高职组赛题卷①(容器云)

全国职业技能大赛云计算--高职组赛题卷①(容器云) 第二场次题目:容器云平台部署与运维任务1 Docker CE及私有仓库安装任务(5分)任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续…

驱动开发,IO模型,信号驱动IO实现过程

1.信号驱动IO框架图 分析: 信号驱动IO是一种异步IO方式。linux预留了一个信号SIGIO用于进行信号驱动IO。进程主程序注册一个SIGIO信号的信号处理函数,当硬件数据准备就绪后会发起一个硬件中断,在中断的处理函数中向当前进程发送一个SIGIO信号…

opencv形状目标检测

1.圆形检测 OpenCV图像处理中“找圆技术”的使用-图像处理-双翌视觉OpenCV图像处理中“找圆技术”的使用,图像处理,双翌视觉https://www.shuangyi-tech.com/news_224.htmlopencv 找圆心得,模板匹配比霍夫圆心好用 - 知乎1 相比较霍夫找直线算法, 霍夫找…

TCP详解之流量控制

TCP详解之流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提…

大语言模型之十-Byte Pair Encoding

Tokenizer 诸如GPT-3/4以及LlaMA/LlaMA2大语言模型都采用了token的作为模型的输入输出,其输入是文本,然后将文本转为token(正整数),然后从一串token(对应于文本)预测下一个token。 进入OpenAI官…

MFC 如何启用/禁用菜单(返灰/不可点击状态)

1、为页面(窗口)添加一个菜单栏和子菜单 2、在XXDlg.h文件中定义一个菜单栏变量和bool变量 CMenu m_Menu; //菜单变量 bool m_EnableMenu;//菜单栏中某个子菜单禁用/启用(变灰)的控制变量3、在OnInitDialog函数中进行初始化&…

常见的数码管中的引脚分布情况

简单介绍 数码管,实际就是用了7段亮的线段表示常见的数字或字符。常见的像下面几种(图片是网络中的截图)。事件中使用到的知识还是单片机中最基础的矩阵扫描。记得其中重要的有“余晖效应”,好像是要把不用的亮段关闭&#xff0c…