论文笔记——Graph Bottlenecked Social Recommendation

news2024/11/18 11:43:46

文章地址

代码地址

1.1简介

随着社交网络的出现,社交推荐已经成为个性化服务的重要技术。最近,基于图的社交推荐通过捕捉高阶社交影响显示出了有希望的结果。大多数基于图的社交推荐的经验研究直接将观察到的社交网络纳入公式,并基于社交同质性产生用户偏好。尽管这种方法有效,但我们认为现实世界的社交网络不可避免地存在噪声(存在多余的社交关系),这可能会阻碍精确的用户偏好特征描述。然而,由于缺乏标签,识别和移除多余的社交关系是具有挑战性的。

在这篇论文中,我们专注于从信息瓶颈的角度学习去噪的社交结构以促进推荐任务。具体来说,我们提出了一个新颖的图瓶颈社交推荐(Graph Bottlenecked Social Recommendation, GBSR)框架来解决社交噪声问题。GBSR是一个模型无关的社交去噪框架,旨在最大化去噪社交图与推荐标签之间的互信息,同时最小化去噪社交图与原始社交图之间的互信息。这使得GBSR能够学习到最小但足够的社交结构,有效地减少多余的社交关系,并增强社交推荐。

从技术上讲,GBSR由两个精心设计的部分构成:偏好引导的社交图细化和基于Hilbert-Schmidt Independence Criterion(HSIC)的瓶颈学习。广泛的实验结果证明了所提出的GBSR的优越性,包括与各种基础模型结合时的高性能和良好的泛化能力。

1.2问题陈述

在基础的社交推荐场景中,有两种类型的实体:用户集合 U(∣U∣=M) 和项目集合 V(∣V∣=N)。用户有两种行为,即用户-用户社交关系和用户-项目互动。我们使用矩阵 S∈R(M×M) 来描述用户-用户社交结构,其中每个元素 Sab​=1 如果用户 b 关注用户 a,否则 Sab​=0。类似地,我们使用矩阵 R∈R(M×N) 来描述用户-项目互动,其中每个元素rai​=1 如果用户 a 与项目 i 互动,否则 rai​=0。给定用户 a、项目 i 和社交关系矩阵 S 作为输入,基于图的社交推荐系统旨在推断用户 a 将与项目 i 互动的概率:,其中 Gθ表示图神经网络(GNN)公式。

因此,基于图的社交推荐的优化目标定义如下:

0含义:这是基于图的社交推荐系统的原始优化目标。

目标:找到最佳的 GNN 参数 θ,使得模型预测的用户-项目互动概率与实际互动尽可能接近,从而最小化损失函数。

然而,用户社交网络通常存在噪声,包含冗余关系,直接使用 S 来推断互动概率可能会降低推荐准确性。在这项工作中,我们专注于学习鲁棒的社交结构 S′ 以提高推荐性能:

含义:这是社交去噪函数,目的是从原始社交网络 S 中学习一个鲁棒的社交结构 S′。

目标:通过去噪函数 Fϕ,从原始社交网络S中移除冗余的社交关系,得到一个更鲁棒的社交结构S′。

因此,图噪声社交推荐的最终优化描述如下:

含义:这是考虑社交去噪后的最终优化目标。

目标:同时优化 GNN 参数 θ 和社交去噪函数的参数 ϕ,使得模型在去噪后的社交结构 S′ 上预测的用户-项目互动概率与实际互动尽可能接近,从而最小化损失函数,提高推荐系统的准确性和鲁棒性。

信息瓶颈(Information Bottleneck, IB)是机器学习中的一种表示学习原则,它寻求在数据拟合度和减少无关信息之间取得平衡。给定输入数据 X,Z 是隐藏表示,Y 是下游任务的标签,它们遵循马尔可夫链 X→Z→Y。信息瓶颈原则描述了一个最优表示应该保留对下游任务的最小充分信息。

含义:如何找到最优的隐藏表示Z∗

目的:最小化数据表示的复杂性:通过最小化I(X;Z),公式鼓励模型去除不必要的信息,即那些对预测 Y 没有帮助的信息。

最大化对下游任务的有用性:通过最大化 I(Y;Z),公式确保 Z 保留了对预测 Y 有用的信息。

找到最佳平衡:通过 β 的调节,可以在减少数据复杂性和保持预测能力之间找到最佳平衡。

信息瓶颈原则已广泛应用于机器学习任务,如模型鲁棒性、公平性和可解释性。

在这项工作中,我们将信息瓶颈原则引入到鲁棒的社会去噪学习中,其目的是寻找对推荐任务来说最小但足够的社交结构。

由于缺乏可用的社交去噪先验知识,引入了用户偏好信号来指导社交图的去噪。为了保证社交去噪和推荐任务之间的权衡,通过图信息瓶颈原则来优化GBSR。因此,GBSR的目标是:

最大化: I(R;S′)−βI(S′;S),由于 I(R;S′) 的计算不可行,我们将所有节点纳入一个中介进行计算。因此,我们得到GBSR的最终优化目标:

目的:

保留有用信息:通过最大化 I(R;U,V,S′),确保S′ 包含对推荐系统有用的信息,即用户与项目之间的互动信息。

去除冗余信息:通过最小化 I(S′;S),减少 S′ 与原始社交图 S 之间的依赖,从而去除不必要的社交关系。

权衡:通过 β 的调节,可以在保留有用信息和去除冗余信息之间找到最佳平衡。

2.1GBSR框架

框架概述

整个流程可以简化为:首先通过用户偏好去噪社交图,然后利用信息瓶颈优化去平衡去噪过程中的信息保留和冗余关系删除,从而增强推荐系统的表现。

用户偏好引导的社交去噪

为了实现GBSR的目标,首先需要生成去噪后的社交图。作者将这一过程描述为一个图的边丢弃(edge dropout)问题,主要通过用户偏好信号来优化社交图的结构。

给定原始社交图S,去噪社交图 S′=Fϕ(U,S)是通过为每一条社交边分配一个丢弃概率来生成的。具体来说,社交图中的每条边会以一定概率被丢弃,表示该关系可能是冗余的。

每条边的丢弃概率通过用户偏好信号来决定。用户的偏好相似性越高,保留这条社交关系的概率越大。用户的偏好表示通过用户-物品交互数据学习得出,利用公式计算用户之间的边权重:其中,ea和 eb分别表示用户 a 和用户 b 的偏好表示,g()是一个用于计算边权重的融合函数,通常通过多层感知器(MLP)实现

社交图中的每条边按照伯努利分布进行丢弃,丢弃概率通过用户偏好相似性来确定。为了使这个丢弃过程可微分,作者采用了concrete relaxation的技术,将伯努利分布替换为一个可微的Sigmoid函数来实现参数化。

互信息最大化:I(R;U,V,S′)

这一部分介绍了如何最大化去噪后社交图与推荐任务之间的互信息,确保去噪后的社交图能够有效地提升推荐性能。

互信息的最大化意味着去噪后的社交图需要保留足够的信息以支持推荐任务。为了实现这一点,作者推导出互信息的下界,并使用BPR(Bayesian Personalized Ranking)损失作为这个下界的优化目标。

互信息最小化:I(S′;S)

在这一部分,作者介绍了如何最小化I(S′;S),即减少去噪社交图S′与原始社交图S之间的互信息,目标是去除社交图中的冗余社交关系。直接计算互信息的上界是困难的,因此作者采用了HSIC(Hilbert-Schmidt Independence Criterion)作为互信息的近似度量。

HSIC是一种统计方法,用于衡量两个变量之间的依赖性。它通过在再生核希尔伯特空间内评估两个分布之间的交叉协方差算子来定义。公式如下:

其中KX和KY是变量X和Y的两个内核函数,X'和Y'是X和Y的两个独立副本则可估计为:

这个公式是高斯核(Gaussian Kernel)函数的一个表达式,用于计算两个数据点 xi和 xj之间的相似度,通常用于支持向量机(SVM)和核方法(Kernel Methods)中。公式如下:

关于HSIC(Hilbert-Schmidt Independence Criterion,希尔伯特-施密特独立性准则)的最小化问题,用于衡量两个随机变量 S′ 和S 之间的独立性。公式如下:

用于正则化推荐模型的学习过程,以减少模型对于原始社交图的依赖,同时保留对推荐任务有用的信息。通过最小化这个正则化项,模型学习到的表示 EB′能够减少与输入社交图EB的依赖,从而去除噪声和冗余的社交关系,提高推荐结果的质量和鲁棒性。公式如下:

GBSR框架实例化

在本节中,作者以LightGCN-S为基础模型,具体实现了GBSR框架。该过程包括以下步骤:

图构建:基于用户和物品的交互关系以及用户之间的社交关系构建图结构。

节点嵌入更新:通过多层图卷积神经网络(GCN)更新节点嵌入表示。

去噪社交图应用:将去噪后的社交图应用于推荐任务,通过BPR损失函数优化模型参数。

最终的优化目标定义为:

3.实验设计及论文复现

3.1数据集:

DoubanBook, Yelp, and Epinions三个公开数据集

3.2实验方法:

进行分组,一组为直接使用社交关系的推荐模型,另外一组是使用了去噪以后的社交关系的相同的社交关系的推荐模型。

3.3评价指标:

1.召回率(Recall)

在推荐系统中,我们只关心正确推荐的有多少,也就是用户真实喜欢的,并不会关心推荐错的,所以我们用召回率,而不是准确率.

2.归一化折损累计增益(NDCG)

NDCG用作排序结果的评价指标,评价排序的准确性。

推荐系统通常为某用户返回一个item列表,假设列表长度为K,这时可以用NDCG@K评价该排序列表与用户真实交互列表的差距。

3.4消融实验:

作者对提出的GBSR(Graph Bottlenecked Social Recommendation)框架进行的消融研究(Ablation Study),目的是探索框架中每个组成部分的有效性。

模型变体:

GBSR:完整的GBSR模型,包括偏好引导的社交去噪和基于HSIC的瓶颈正则化。

GBSR-w/o HSIC:移除了HSIC瓶颈正则化的GBSR模型,仅保留偏好引导的社交去噪模块。

实验结果

发现:在所有情况下,GBSR-w/o HSIC的性能都比完整的GBSR模型差,甚至比基线模型(backbone model)更差。

含义:这一结果表明,HSIC瓶颈正则化是GBSR框架中一个重要的组成部分,它对于提高推荐系统的性能有显著的贡献。

3.5实验复现:

作者在github上进行了代码开源,同时提供了torch和tensorflow两个版本,文中的实验结果通过tensorflow版本得到.

作者提供了requirements.txt,指明了代码所需要的包,如下所示:

python版本为3.7.0,但如果直接使用pip install -r requirement.txt的话,会出现一些问题,faiss1.7.1版本应该只有linux系统,除此之外torch很容易下载失败。

也尝试过使用conda构建虚拟环境,然后依次安装每一个包,但是依旧会发生安装失败和版本冲突的问题。

于是尝试使用wsl+Ubuntu来进行环境搭建和运行代码。

3.6运行结果:

training.txt分析:

dataset: 表示使用的数据集名称,这里是 "douban_book",可能指的是豆瓣图书数据集。

runid: 运行标识符,用于区分不同的训练运行。

device_id: 指定训练模型的设备ID

epochs: 训练的总轮数,这里是 "1000",表示模型将训练1000轮。

batch_size: 每批训练数据的大小,这里是 "2048",表示每次训练将使用2048条数据。

lr: 学习率,控制模型在训练过程中参数更新的速度,这里是 "0.001"。

topk: 推荐系统中用于评估的 top-k 值,这里是 "20",意味着评估时会考虑模型推荐列表中前20个最可能的物品。

early_stops: 提前停止训练的轮数,如果模型在设定的轮数内没有改进,则停止训练,这里是 "10"。

num_neg: 负样本的数量,用于训练的负例数目,这里是 "1"。

gcn_layer: 图卷积网络的层数,这里是 "3",表示模型包含3层图卷积。

num_user: 用户的数量,这里是 "13024"。

num_item: 物品的数量,这里是 "22347"。

latent_dim: 潜在特征空间的维度,这里是 "64"。

l2_reg: L2 正则化的系数,用于控制模型的复杂度,防止过拟合,这里是 "0.0001"。

beta: 超参数,可能与模型的某个特定部分有关,这里是 "40.0"。

sigma: 超参数,可能与模型的某个特定部分有关,这里是 "2.5"。

edge_bias: 边偏置,可能用于调整图中边的权重,这里是 "0.5"。

social_noise_ratio: 社交噪声比率,可能用于模拟用户行为中的不确定性,这里是 "0"。

data: 这部分文本不完整,但通常它可能指向数据的路径或与数据相关的其他信息。

Mean_weight:表示模型中权重的平均值。这个值在训练过程中可能会变化,用于反映模型权重的总体大小。

Epoch:表示训练周期的序号,这里为1,意味着这是模型完成的第一个训练周期。

Train_AUC:表示训练集上的AUC(Area Under the Receiver Operating Characteristic Curve)值,是模型分类性能的一种评价指标。AUC值范围从0到1,值越高表示模型性能越好。这里的0.6541表示模型在第一个训练周期后的性能。

Loss_rank:表示排名损失,是推荐系统中常用的一种损失函数,用于优化物品的排序。这里的0.6931表示当前周期的排名损失。

Loss_reg:表示正则化损失,用于防止模型过拟合。这里的0.0000表示当前周期的正则化损失非常小,接近于0。

Loss_GIB:表示全局信息损失,这是一种考虑全局信息的损失函数,用于进一步提升模型性能。这里的1.5327表示当前周期的全局信息损失。

topk:表示在推荐系统中用于评估的 top-k 值,这里为20,意味着评估模型时会考虑模型推荐列表中前20个物品的性能。

R@20:表示召回率(Recall@20),是推荐系统中的一个评估指标,表示在推荐列表的前20个物品中,与用户实际互动的物品数量占用户实际互动物品总数的比例。这里的0.0013表示在第一个训练周期后,模型的召回率为0.13%。

P@20:表示精确率(Precision@20),是推荐系统中的一个评估指标,表示在推荐列表的前20个物品中,与用户实际互动的物品数量占推荐物品总数的比例。这里的0.0015表示在第一个训练周期后,模型的精确率为0.15%。

N@20:表示归一化折扣累积增益(Normalized Discounted Cumulative Gain@20),是推荐系统中的一个评估指标,用于衡量推荐列表中前20个物品的质量和排序。这里的0.0013表示在第一个训练周期后,模型的NDCG值为0.13%。

traintime:表示训练时间,以秒为单位。这里的26.2524表示完成第一个训练周期所需的时间为26.2524秒。

valtime:表示验证时间,以秒为单位。这里的2.6106表示在第一个训练周期后进行模型验证所需的时间为2.6106秒。

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

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

相关文章

【注册/登录安全分析报告:孔夫子旧书网】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

香港科技大学数据建模MSc(DDM)硕士学位项目25/26招生宣讲会-西安专场

香港科技大学数据建模MSc(DDM)硕士学位项目25/26招生宣讲会-西安专场 🕙时间:2024 年10 月12日(周六) 16:00 🏠地点: 西安交大南洋大酒店(交通大学青龙寺店) 行政会议室 🧑‍🎓嘉宾…

0基础学习PyTorch——GPU上训练和推理

大纲 创建设备训练推理总结 在《Windows Subsystem for Linux——支持cuda能力》一文中,我们让开发环境支持cuda能力。现在我们要基于《0基础学习PyTorch——时尚分类(Fashion MNIST)训练和推理》,将代码修改成支持cuda的训练和推…

[sql-03] 求阅读至少两章的人数

准备数据 CREATE TABLE book_read (bookid varchar(150) NOT NULL COMMENT 书籍ID,username varchar(150) DEFAULT NULL COMMENT 用户名,seq varchar(150) comment 章节ID ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT 用户阅读表insert into book_read values(《太子日子》…

MindSearch 部署到Github Codespace 和 Hugging Face Space

和原有的CPU版本相比区别是把internstudio换成了github codespace。 教程是https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/MindSearch/readme_github.md 复现步骤: 根据教材安装环境和创建硅基流动 API 然后启动前后端 然后按照教材部署到 Huggi…

安宝特案例 | 某知名日系汽车制造厂,借助AR实现智慧化转型

案例介绍 在全球制造业加速数字化的背景下,工厂的生产管理与设备维护效率愈发重要。 某知名日系汽车制造厂当前面临着设备的实时监控、故障维护,以及跨地域的管理协作等挑战,由于场地分散和突发状况的不可预知性,传统方式已无法…

计算机的错误计算(一百零六)

摘要 探讨含有变元负的整数次方的多项式的计算精度问题。 计算机的错误计算(一百零五)给出了一个传统多项式的错误计算案例;本节探讨含有变元负的整数次方的多项式的计算精度问题。 例1. 已知 计算 若在Python下计算,则有&…

猎板PCB大讲堂:PCB谐振效应及其对设计的影响

在PCB设计中,谐振效应是一个不可忽视的问题,它可能导致信号完整性问题、电源分配系统(PDS)工作异常,甚至成为EMI辐射源。以下是关于PCB谐振效应的一些详细信息: 1. 谐振产生的原因: - PCB中…

d2l | 目标检测数据集:RuntimeError: No such operator image::read_file

目录 1 存在的问题2 可能的解决方案3 最终的解决方案3.1 方案一(我已弃用)3.2 方案二(基于方案一)3.3 方案三(基于方案一) 1 存在的问题 李沐老师提供的读取香蕉数据集的函数如下: def…

Ubuntu系统设置bond双网卡

这里我的服务器是Ubuntu 22.04.3 LTS,是高阶版本,设置网卡需要通过netplan 根据你的Ubuntu版本(如使用Netplan或/etc/network/interfaces),选择相应的配置方法。 我这边以root用户登录进服务器,就不需要普通用户每次在命令前添加sudo 1.通常/etc/netplan下配置文件名形…

IDEA开发SpringBoot项目基础入门教程。包括Spring Boot简介、IDEA创建相关工程及工程结构介绍、书写配置文件、Bean对象管理等内容

文章目录 0. 关于本文1. 概述1.1 Spring简介1.2 Spring Boot简介1.3 传统的开发方式1.3.1 简述1.3.2 缺点 1.4 Spring Boot的优点 2. 创建一个简单的Spring Boot应用程序2.1 在IDEA创建项目2.2 pom配置文件内容2.3 启动类2.4 创建Controller 3. 从Maven工程创建Spring Boot工程…

数据结构~二叉搜索树

文章目录 一、二叉搜索树的概念二、二叉搜索树的结构二叉搜索树的性能分析二叉搜索树的插入二叉搜索树的查找二叉搜索树的删除 三、二叉搜索树key和key/value使用场景四、二叉搜索树的练习将二叉搜索树就地转化为已排序的双向循环链表从前序与中序遍历序列构造二叉树二叉树的前…

jmeter-请求参数加密-MD5加密

方法1 :使用jmeter自带的函数助手digest Tool(工具)---Function Helper Dialog(函数助手对话框) 第一个参数是要md5加密的值,第二个参数是保存加密后值的变量 ( 此处变量是从txt文件导入的,所以使用的是${wd} ) …

excel统计分析(1):列联表分析与卡方检验

列联表:用于展示两个或多个分类变量之间频数关系的表格。——常用于描述性分析卡方检验:通过实际频数和期望频数(零假设为真情况下的频数),反映了观察频数与期望频数之间的差异程度,来评估两个变量是否独立…

Metasploit渗透测试之服务端漏洞利用

简介 在之前的文章中,我们学习了目标的IP地址,端口,服务,操作系统等信息的收集。信息收集过程中最大的收获是服务器或系统的操作系统信息。这些信息对后续的渗透目标机器非常有用,因为我们可以快速查找系统上运行的服…

System Timer (STM)

文章目录 1. 介绍2. 功能特性3. 应用场景4. 功能介绍4.1 TIME0 ~TIME6计数器精度与定时范围4.2 比较器工作原理4.3 中断处理 5. Ifx Demo5.1 STM_Interrupt_1_KIT_TC277_TFT5.2 STM_System_Time_1_KIT_TC275_LK5.3 SMU_Reset_Alarm_1_KIT_TC275_LK 1. 介绍 Ifx TC37x拥有3个自…

前端大模型入门:使用Transformers.js实现纯网页版RAG(一)

我将使用两篇文章的篇幅,教大家如何实现一个在网页中运行的RAG系统。本文将其前一半功能:深度搜索。 通过这篇文章,你可以了解如何在网页中利用模型实现文本相似度计算、问答匹配功能,所有的推理都在浏览器端本地执行,…

C语言-IO

一,阻塞IO与非阻塞IO 简介: IO的本质是基于操作系统接口来控制底层的硬件之间数据传输,并且在操作系统中实现了多种不同的 IO 方式(模型),比较常见的有下列三种 阻塞型IO模型 非阻塞型IO模型 多路复用IO模型 在 C 语言中&#…

牛客SQL练习详解 02:条件查询

牛客SQL练习详解 02:条件查询 1、基础排序sql36 查找后排序sql37 查找后多列排序sql38 查找后降序排列 2、基础操作符sql6 查找学校时北大的学生信息sql7 查找年龄大于24岁的用户信息sql8 查找某个年龄段的用户信息sql9 查找chuchu 3、高级操作符sql11 高级操作符练…

认知杂谈91《菜鸟的自我修炼:减少过度干预》

内容摘要:          在投资和生活中,动作过多往往因情绪波动和缺乏计划而引发亏损。历史上的安史之乱和现代投资中的频繁交易都是例证。要管理情绪,首先要认识自己的情绪模式,然后改变消极的思考方式,并通过合…