【论文阅读】Graph-less Collaborative Filtering

【论文阅读】Graph-less Collaborative Filtering

文章目录

  • 【论文阅读】Graph-less Collaborative Filtering
    • 1. 来源
    • 2. 介绍
    • 3. 模型解读
      • 3.1 协同过滤
      • 3.2 模型
        • 3.2.1 对比知识精馏
      • 3.2.2 自适应对比正则化
      • 3.2.3 SimRec的参数学习
    • 4. 实验
    • 5. 总结

1. 来源

在这里插入图片描述

  • 2023WWW CCFA
  • 原文地址
  • code

2. 介绍

图神经网络(GNNs)在图结构的用户-项目交互数据上显示了表示学习的协同过滤(CF)任务的能力。然而,

  • 由于现有的基于 GNN 的CF模型在相邻节点之间固有的递归消息传播,低通拉普拉斯平滑算子的过平滑和噪声效应,可能会产生难以区分和不准确的用户(项)表示。
  • 此外,在整个图结构中使用堆叠聚合器的递归信息传播可能会在实际应用中导致较差的可伸缩性。

基于这些限制,作者提出了一个简单而有效的协同过滤模型(SimRec),该模型将知识蒸馏和对比学习的力量结合起来。在SimRec中,在教师GNN模型和轻量级学生网络之间实现自适应转移知识,不仅可以保留全局协作信号,还可以解决表示重新校准的过平滑问题。在公共数据集上的经验结果表明,与各种强基线相比,SimRec在效率更好的同时,保持了更好的推荐性能。

在这里插入图片描述

3. 模型解读

3.1 协同过滤

在本节中,作者将介绍协同过滤中的重要符号,并概述基于MLP的神经CF和基于gnn的CF架构。在一个典型的推荐场景中,𝐼 用户{𝑢1,𝑢2,…,𝑢𝐼}和 𝐽 项目{𝑣1,𝑣2,…,𝑣𝐽},分别由 𝑢𝑖 和 𝑣𝑗 索引。交互矩阵 A∈R𝐼×𝐽 表示观察到的用户和项目之间的交互,如果用户𝑢𝑖采用了项目𝑣𝑗,则 𝑎𝑖,𝑗=1,否则 𝑎𝑖,𝑗=0。基于上述定义,基于cf的推荐器可以形式化为一个推理模型,

  • i)输入用户-项目交互数据a∈R𝐼×𝐽,基于输入建模用户的交互模式;
  • ii)输出未观察到的用户-项目对(𝑢𝑖,𝑣𝑗)之间的交互预测结果𝑦𝑖,𝑗。

一般来说,CF模型可以概括为以下两阶段模式:
在这里插入图片描述

  • 第一阶段 Embed(·) 表示嵌入过程项目user𝑢𝑖和项目𝑣𝑗到𝑑-diemen隐藏空间基于观察到的历史交互a嵌入(·)的结果是向量化表示h𝑖,h𝑗∈R𝑑为每个用户𝑢𝑖和项目𝑣𝑗,保持用户项交互模式。
  • 第二阶段的 Predict(·) 旨在利用学习到的嵌入数据h𝑖,h𝑗,利用预测得分𝑦𝑖,𝑗∈R来预测用户-项目关系。基于上述两阶段模式,作者提出的SimRec方法旨在从嵌入和预测水平进行知识精馏,以有效的知识转移。

基于MLP的协同过滤。提出了基于MLP的神经CF方法[13,37]来赋予CF非线性关系建模。由于模型架构的简单性,基于MLP的CF是高效的,并且不太可能像GNNs [3]那样学习过度平滑的消息消息。受到其优势的启发,作者采用了MLP作为在作者的KD对比框架中的学生模型。简而言之,SimRec中的MLP遵循以下的两阶段范式:
在这里插入图片描述
其中,¯h𝑖,¯h𝑗∈R𝑑分别表示用户𝑢𝑖和项目𝑣𝑗的初始嵌入向量。M-Embed(·)表示基于MLP的嵌入函数。作者采用点积来预测(·),这已被证明是有效的和有效的。

GNN增强的协同过滤。最近的CF模型将图神经信息传播应用于二部交互图G = {U,V,E}上,将用户的高阶交互关系编码到节点嵌入中。这里,U={𝑢𝑖},V={𝑣𝑗}分别表示用户节点集和项目节点集。当且仅当𝑒𝑖,𝑗=1时,𝑎𝑖,𝑗∈E存在。通常,基于gnn的CF可以抽象为:
在这里插入图片描述
其中,H,¯H∈R(𝐼+𝐽)×𝑑表示其行为节点嵌入向量的嵌入矩阵。G-Embed(·)表示基于gnn的嵌入函数,它迭代传播(Prop(·)并沿交互图G聚合(Agg(·))𝐿次。

  • 需要注意的是,虽然它注入了信息丰富的结构信息,但基于整体图建模和高阶迭代的gnn也会损害了模型的可伸缩性,并在协同过滤任务中带来过度平滑的风险。

3.2 模型

在本节中,将详细说明作者提出的 SimRec 框架的技术细节,其工作流如图2所示。
在这里插入图片描述

3.2.1 对比知识精馏

在模型设计中,作者的动机是:

  • i) gnn在学习结构感知节点嵌入方面的优势,
  • ii) 在防止过度平滑问题方面的高效mlp方面的优势。

为此,作者建议将知识从基于gnn的教师模型提取为基于MLP的学生模型。具体来说,教师模型是一个轻量级的图卷积网络(GCN),其嵌入过程通过如下传播显示:
在这里插入图片描述
其中,H(𝑡)∈R(𝐼+𝐽)×𝑑 为教师模型给出的嵌入矩阵。索引 𝑙 表示图神经迭代的次数(一共为𝐿迭代)。¯A∈R(𝐼+𝐽)×(𝐼+𝐽)表示由相互作用矩阵A 生成的图G的对称相邻矩阵。I 表示单位矩阵,D表示¯A的对角度矩阵。迭代由 H(𝑡)0=¯H(𝑡)初始化。学生模型使用一个共享的MLP网络来从用户和项目的初始嵌入中提取特征。对于用户𝑢𝑖,嵌入层的形式表示如下:
在这里插入图片描述
其中,h𝑖(𝑠),¯h(𝑠)𝑖∈R𝑑表示由学生给出的 𝑢𝑖 的嵌入。FC(·)表示全连接的图层。𝐿′是FC层的数量。一个FC层配置了一个转换 W ∈ R 𝑑×𝑑 应用LeakyReLU激活𝛿(·)和残差连接。项目侧嵌入层的构建方法也很类似。

  • 预测级蒸馏。为了将知识从教师模型提取到学生模型,SimRec首先遵循基于kl-散度的KD [14]范式,以调整教师和学生模型之间的预测输出。受推荐系统中面向排序的BPR loss [22]成功的启发,SimRec将两种模型进行用户偏好排序任务。具体来说,在每个训练步骤中,作者随机抽取一批三联体T1={(𝑢𝑖,𝑣𝑗,𝑣𝑘)},其中𝑢𝑖、𝑣𝑗、𝑣𝑘以统一的概率从整体用户和项目集合中分别抽取。然后SimRec计算两种模型的(𝑢𝑖,𝑣𝑗)和(𝑢𝑖,𝑣𝑘)之间的偏好差,如下:
    在这里插入图片描述
    其中, z i , j , k z_{i,j,k} zi,j,k∈R表示用户对三组(𝑢𝑖,𝑣𝑗,𝑣𝑘)的偏好的差异得分。作者将学生模型的分数表示为𝑧(𝑠)𝑖,𝑗,𝑘,将教师模型的分数表示为𝑧(𝑡)𝑖,𝑗,𝑘。然后,通过最小化以下损失函数来进行面向预测的精馏:
    在这里插入图片描述
    其中,𝑧¯(𝑡)𝑖𝑗𝑘、𝑧¯(𝑠)𝑖𝑗𝑘 是由s型函数sigm(·)与温度因子𝜏1处理的偏好差异。在这里,𝑧(𝑡)𝑖𝑗𝑘 是由训练有素的教师模型给出的,并且不存在反向传播梯度。借助面向预测的蒸馏 L1,简单的 mlp 学习模拟高级GNN模型的预测,从而直接生成推荐结果。通过这种末端监督,对学生模型的参数进行优化,以保留从教师模型中提取的知识。
    值得注意的是,作者的预测级KD与普通KD在CF中深度暗知识学习的训练样本富集方面有所不同。具体来说,用于多类分类的普通KD[14]不仅从得分最高的类中挖掘暗知识,而且从所有类的等级中挖掘暗知识。然而,将CF视为多分类是有问题的,因为有太多的类(项),因此软标签很容易接近零,变得难以排序。为了解决这个问题,作者的预测水平KD采用了成对排序任务,通过从丰富的样本中提取来挖掘黑暗知识。不同于基于BPR的模型训练,将每个积极项目与一个消极项目配对,作者的KD方案从教师对𝑣𝑗的预测中学习,𝑣𝑘分别从整体项目集中抽样。这里的𝑣𝑗,𝑣𝑘不是固定为阳性或阴性。这极大地丰富了作者的KD训练集,并促进了更深的黑暗知识提炼。

  • 嵌入级蒸馏。上述预测级蒸馏虽然有效,但只监督了模型的输出,而忽略了学生和教师之间嵌入分布的潜在差异。由于这两种模型都遵循Eq 1中的嵌入和预测模式,作者通过基于嵌入级知识转移扩展了SimRec中的KD范式在对比学习。具体来说,作者从每个训练步骤中观察到的交互中抽取一批用户和项目T2={𝑢𝑖,𝑣𝑗}。然后,作者在相应的用户/项目嵌入上应用以下对比损失:
    在这里插入图片描述
    其中,cos(·)表示余弦相似度函数。𝜏2表示温度超参数。为了迫使学生模型从基于MLP的CF所缺乏的高阶模式中学习到更多信息,这里作者只使用了来自教师的高阶节点嵌入。教师的嵌入经过良好的训练和参数优化固定。通过使用面向嵌入的蒸馏直接对隐藏嵌入进行正则化,模拟法不仅进一步提高了学生模型的性能,而且大大加速了交叉模型的蒸馏,这在作者的实证评价中得到了验证。

3.2.2 自适应对比正则化

为了防止过平滑信号从基于gnn的教师转移到学生模型,SimRec提出通过普遍最小化节点上的相似性来对学生的嵌入学习进行正则化。特别是,SimRec通过比较蒸馏任务的梯度和主要任务的梯度,自适应地定位哪些节点更有可能被过度平滑。特别地,作者重用了从嵌入级蒸馏中得到的采样用户和项目t2,并对学生模型的节点嵌入应用以下自适应对比正则化:
在这里插入图片描述
其中,损失L3由三项(𝜑(·))组成,分别推开用户距离、用户项目距离和项目项目距离。第一项𝜑(𝑢𝑖,U,𝜔𝑖)将𝑢𝑖嵌入和每个用户𝑢𝑖‘嵌入U之间的点积相似性最小化,加权因子为𝜔𝑖。在这里,相似性得分用温度超参数𝜏3进行调整。用于用户-项目关系和项目-项目关系的𝜙(·)函数的工作方式类似。加权因子𝜔𝑖、𝜔𝑗对应分别为𝑢𝑖、𝑣𝑗,其权重计算如下:
在这里插入图片描述
其中,𝜔𝑖∈R为用户 𝑢𝑖 调整对比正则化的权重。简而言之,当蒸馏任务给出的梯度(可能过于平滑)与主任务产生的梯度(很难过于平滑)相矛盾时,𝜔𝑖具有更大的值(即1+𝜖)。这里,0<𝜖<1是一个超参数。▽𝑖∈R𝑑表示嵌入向量h𝑖w.r.t,不同的优化任务的梯度。例如,▽𝑖1,2表示两个蒸馏任务目标L1和L2的复合梯度。▽rec𝑖表示推荐任务的梯度,它独立于基于gnn的教师,因此没有过度平滑的风险。任务Lrec将在稍后详细阐述。用点积法估计了梯度之间的相似性。当蒸馏任务与推荐任务之间的相似性大于两个蒸馏任务之间的相似性时,作者可以假设蒸馏任务与推荐任务之间的优化差异足够小,足以削弱正则化。

3.2.3 SimRec的参数学习

遵循知识蒸馏的训练范式,作者的 SimRec 首先对基于gnn的教师模型进行训练,直到收敛。在每一步中,SimRec采样一批三联体Tbpr={(𝑢𝑖,𝑣𝑗,𝑣𝑘)|𝑎𝑖,𝑗= 1,𝑎𝑖,𝑘= 0},其中𝑢𝑖表示锚定用户。𝑣𝑗和𝑣𝑘分别表示正项和负项。BPR损失函数[22]对采样数据的应用如下:
在这里插入图片描述
其中最后一项表示权值𝜆(𝑡)的权重衰减正则化,以防止过拟合。

然后,SimRec进行联合训练,以优化基于MLP的学生的参数,在此期间,结构感知的节点表示从高级的gnn中提取为抗过平滑的mlp。培训过程在A.1中有详细阐述。通过两个蒸馏任务和正则化项的强化,提出了总体优化目标:
在这里插入图片描述
其中,𝜆1、𝜆2、𝜆3、𝜆4为不同优化项的权重。T2表示上述包含从观察到的交互e中采样高阶的用户-项目对的集合。由于对比正则化L3使负用户-项目对之间的相似性最小化,推荐目标Lrec仅使正用户-项目对之间的相似性最大化。L4表示MLP神经网络的权值-衰减正则化方法。

4. 实验

在之前工作之后,作者进行了全秩评估,其中测试集中的积极项目与每个用户的所有未交互的项目进行排序。广泛使用的Recall@N和NDCG@N指标[16,32]被用于评估,其中默认情况下是𝑁= 20。
在这里插入图片描述
在这里插入图片描述

5. 总结

在本文中,作者提出了一个对比的知识蒸馏模型,该模型自适应地将知识从基于gnn的教师模型转移到一个小的前馈网络中,显著提高了推荐模型的效率和鲁棒性。作者设计的自适应对比正则化产生无偏自监督信号,以缓解推荐系统中普遍存在的过平滑和噪声效应。作者的综合实验证明,与最先进的学习技术相比,作者的方法在提高推荐准确性和获得更好的效率方面的有效性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CDN和DNS

目录 宽带&#xff0c;窄带&#xff0c;带宽区别和联系如何计算带宽带宽和网速的区别和联系 CDNCDN的原理CDN的好处CDN和通信行业DNS和CDN的区别与联系用户访问未使用CDN缓存网站的过程为使用了CDN缓存后的网站的访问过程变为 CDN加速服务 DNSDNS对好处公共 DNS114 DNS阿里DNS百…

UE4/5动画系列(1.模板制作)

目录 动画模板制作 同步模板组制作 有模板做什么都方便&#xff0c;所以这里我们做一个动画蓝图的模板&#xff08;动物专用&#xff09; 动画模板制作 第一步创建一个动画蓝图的模板 然后找到第三人称的模板&#xff0c;将其模板的蓝图改名&#xff1a; 在动画蓝图的模板里…

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息&#xff0c;提示账号密码错误&#xff0c;其实并不是 添加secntlmssp参数即可&#xff1b;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

基于Servlet+JDBC实现的基础博客系统>>系列2 -- 前端基础页面

目录 1. 博客公共页面样式 2. 博客列表页 3. 博客详情页 4. 博客登录页 5. 博客编辑页 1. 博客公共页面样式 导航栏以及背景图设置 <body> <!-- 1.navigation 导航栏 --><div class"nav"><!-- logo --><img src"image/logo.png&q…

JS获取省市区/县,layui获取省市区,layui实现省市区联动,jquery实现省市区联动

前言 通过JS方式获取省市区数据&#xff0c;可自己手动更改JS文件数据 非常简单 效果 实现 百度网盘链接: https://pan.baidu.com/s/1RktJgXY0NP7Eq0ohvBPOEA 提取码: 477z gitee下载链接&#xff1a;https://gitee.com/yuanyongqiang/common-files/blob/master/area.js 下…

轮廓检测及功能

一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出轮廓轮廓特征边界矩形 3. 实验环境 Python 3.6.6numpymatplotlibcv2 二、实验步骤 1 导入资源并显示图像 import numpy as np import matplotlib.pyplot as pl…

C语言进阶教程(再论指针和数组3)

文章目录 前言一、a和&a的区别二、数组作为函数参数总结 前言 本篇文章继续讲解指针和数组。 一、a和&a的区别 1.数组名&#xff08;例如 a&#xff09;表示整个数组。当使用数组名时&#xff0c;它会被解释为对整个数组的引用。例如&#xff0c;可以使用 a[0] 来访…

Attention is all you need

这篇文章最大的亮点就是提出了一种Transformer的结构&#xff0c;是完全依赖注意力机制来刻画输入和输出之间的全局依赖关系&#xff0c;而不使用递归运算的RNN网络了。这样的好处就是第一可以有效的防止RNN存在的梯度消失的问题&#xff0c;第二是允许所有的字全部同时训练(RN…

Docker 数据卷

1、什么是数据卷 通过镜像创建一个容器。容器一旦被销毁&#xff0c;则容器内的数据将一并被删除。但有些情况下&#xff0c;通过服务器上传的图片出会丢失。容器中的数据不是持久化状态的。这个时候可以通过数据卷来解决这个问题。 数据卷是一个可供一个或多个容器使用的特殊目…

解决不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接的问题

问题概述&#xff1a; 用windows server 2012 r2 vl x64搭了个文件服务器&#xff0c;在使用时有个问题&#xff0c;老是用户登录有问题&#xff0c;提示“不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接”。出现的原因不详&#xff0c;网上也没查到合理的…

typescript找不到模块‘vue‘ ‘vue-router‘

import { createRouter, createWebHashHistory, createWebHistory } from vue-router 提示&#xff1a;找不到模块“vue-router”。你的意思是要将 "moduleResolution" 选项设置为 "node"&#xff0c;还是要将别名添加到 "paths" 选项中?ts(27…

【HISI IC萌新虚拟项目】ppu模块基于spyglass的lint清理环境搭建与lint清理

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 RTL代码在交付给验证同时进行功能验证时,可以同步进行lint的清理工作。一般而言影响编译和仿真的问题会在vcs的error和warning中被修正,因此清理lin…

Windows下Nacos的配置与使用

一、什么是 Nacos 以下引用来自 nacos.io Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用…

【Rust】2、实战:文件、网络、时间、进程-线程-容器、内核、信号-中断-异常

文章目录 七、文件和存储7.2 serde 与 bincode 序列化7.3 实现一个 hexdump7.4 操作文件7.4.1 打开文件7.4.2 用 std::fs::Path 交互 7.5 基于 append 模式实现 kv数据库7.5.1 kv 模型7.5.2 命令行接口 7.6 前端代码7.6.1 用条件编译定制要编译的内容 7.7 核心&#xff1a;LIBA…

详解Spring Cloud版本问题

目录 1.让人头疼的多版本号体系 2.目录关系 3.为什么会有多个版本号体系 1.让人头疼的多版本号体系 由于历史原因&#xff0c;spring cloud分为了Alibaba和Netflix两个体系。 想要了解原因以及整个spring cloud体系的来龙去脉的同学可以去看我的另一篇文章&#xff1a; S…

信息系统之网络安全方案 — “3保1评”

信息系统之网络安全方案 — “3保1评” 序&#xff1a;什么是“3评1保”&#xff1f;一、网络安全等级保护1.1 概念1.2等保发展1.3法律要求1.4分级及工作流程 二、涉密信息系统分级保护2.1概念2.2法律要求2.3分级及工作流程 三、关键信息基础设施保护3.1概念3.2关保的发展3.3法…

(UE4/UE5)Unreal Engine中使用HLOD

本教程将详细介绍在Unreal Engine的不同版本&#xff08;4.20-4.24、4.25-4.26、5.2&#xff09;中如何使用Hierarchical Level of Detail (HLOD)。注意&#xff0c;每个版本中使用HLOD的方法可能会有所不同。 一、预先生成LOD 步骤一&#xff1a;预先生成LOD打开UE4.21&…

C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易&#xff0c;给个免费的小星星和免费的赞吧&#xff0c;关注也行呀(⑅•͈ᴗ•͈).:*♡ 不要白嫖哇(⁍̥̥̥᷄д⁍̥̥…

解决Vuex刷新页面数据丢失的问题

参考&#xff1a; https://blog.csdn.net/qq_51441159/article/details/128047610 方法一&#xff08;不使用插件&#xff09;&#xff1a; 1、直接在vuex修改数据方法中将数据存储到浏览器本地存储中 import Vue from vue; import Vuex from vuex;Vue.use(Vuex);export defa…

Java——《面试题——MyBatis篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 目录 前文 1、什么是MyBatis 2、说说MyBatis的优点和缺点 3、#{}和${}的区别是什么&#xff1f; 4、当实体类中的属性名和…