当前位置: 首页 > news >正文

WWW23-多行为级联|级联图卷积网络的多行为推荐

 论文:https://arxiv.org/abs/2303.15720

 代码:https://github.com/SS-00-SS/MBCGCN

这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不同,期刊到会议,改动了一部分。MB-CGCN是引用了CRGCN,CRGCN的帖子:TOIS23-多行为级联|用于多行为推荐的级联残差图卷积网-CSDN博客

1 动机

首先再次说一下CRGCN的动机:

1 挖掘行为之间的关联和顺序依赖:大多数现有方法主要是将不同类型的行为独立地建模,然后再将这些独立的表示进行融合,忽视了不同行为之间存在的内在关联和顺序依赖。例如,用户的“浏览”行为通常会引导到“点击”行为,而“点击”行为又可能进一步引导到“加入购物车”或“购买”行为。这种行为序列中的依赖关系和信息传递对于准确捕捉用户偏好具有重要意义。然而,现有方法未能在嵌入学习过程中充分利用这些行为间的关联信息,导致用户偏好建模不够全面。

2 模型复杂度较高:为了提高推荐准确性,现有的多行为推荐模型通常引入了复杂的模型结构和更多的参数。例如,使用多层神经网络、注意力机制等高级技术来分别处理不同类型的行为数据。不仅增加了模型的空间和时间复杂度,还导致训练过程更加耗时和资源密集。在实际应用中,推荐系统的效率同样至关重要,一个既能保持高推荐准确性又具备低复杂性和高效率的模型更具应用价值。

那么在此基础上,MB-CGCN:

1:考虑到直接使用输出嵌入作为下一个 GCN 的输入嵌入可能会注入噪声或误导性信息来误导学习过程。

2:考虑到在真实场景中,用户可能会直接跳转一两个行为到最终行为。 


2 贡献

  • 提出了具有级联图卷积网络的多行为推荐模型(MB-CGCN),由一系列 GCN 块组成,每个块对应于行为链中的一个行为( LightGCN)。

  • 不同的是:考虑到噪声问题,设计了特征转换来在传递之前处理嵌入,显式地利用链中的行为依赖关系来直接促进后续行为中的嵌入学习。 最后,从不同行为中学习到的嵌入被聚合以用于最终的行为预测。MB-CGCN 在优化时没有采用多任务学习。 它仅使用目标行为作为监督信号,专注于优化目标行为的预测性能,使得嵌入向量更有效地反映用户对物品的最终偏好。


3 MB-CGCN

模型上来看,还是相似的,去除了残差连接以及多任务。

3.1 嵌入初始化

将离散的用户和物品ID转换为连续的向量表示的过程。这些嵌入向量将作为后续模型学习的基础。

𝑷 ∈ R𝑀×𝑑 和 𝑸 ∈ R𝑁×𝑑 为用户和项目嵌入初始化的嵌入矩阵,其中 𝑀 和 𝑁 分别表示用户和项目的数量; 𝑑 表示嵌入大小,嵌入矩阵 𝑷 和 𝑸 是模型中唯一可学习的参数。

3.2 级联GCN

从各个单一行为中提取用户偏好,并捕捉不同行为之间的级联关系,以全面学习用户偏好。将初始化的用户和物品嵌入作为基本特征,通过利用每种行为学习到的行为特征,逐步细化和优化嵌入表示。

3.2.1 单行为建模

使用lightgcn进行迭代聚合,更新单行为下的用户和项目的嵌入:

​最终的嵌入聚合:

3.2.2 特征转换(不同的地方,没用残差)

交互中所有不同类型的行为都或多或少地揭示了用户的偏好。 在行为链中,后一个行为通常比前一个行为表现出更强的信号或更准确的用户偏好。 然而,直接使用前一个行为的特征作为初始化嵌入可以被视为使用后一个行为对嵌入的细化,这可能会丢失不同行为传达的多样化信息。 另一方面,前一个行为中的噪声信息可能会对后一个行为的学习过程产生严重的负面影响。因此使用特征转换以在下一个行为之前处理学习到的嵌入:

𝑾表示转换向量,特征转换可以有效地提取有用的特征,以促进下一个行为的嵌入学习。(实验分析有证明)

3.2 多行为聚合

将从所有行为中学习到的嵌入进行聚合以进行预测。 这项工作的主要重点是研究按一定顺序利用多种行为的依赖结构进行推荐的潜力:

 3.3 预测与训练:

采用成对学习策略进行模型优化:


 4 讨论

MB-CGCN 与 CRGCN 在如何将嵌入从一个行为传递到下一个行为上有根本的不同。 CRGCN 精心设计了一个残差连接,以保留先前的行为特征作为下一个行为网络的初始化嵌入。 通过这种方式,它通过链中的所有行为逐渐细化用户和项目嵌入来学习用户和项目嵌入。 从最后的行为中学到的嵌入直接用于预测。 因此,从早期行为(例如点击)中学习到的嵌入质量对最终性能有很大影响。 由于早期的行为不是确定性的并且通常是有噪声的,因此在此类行为中使用高阶传播进行嵌入学习不可避免地会给嵌入带来更多的噪声。 这也解释了为什么CRGCN在辅助行为中只使用一层传播(gcn层数为1)。 相反,MB-CGCN采用特征转换来提取有用信息,用于下一个行为的嵌入学习。

实验分析:为了评估特征聚合的实用性,将 CRGCN 与实验中的两个变体进行比较:

• w/o agg.:该变体删除了MB-CGCN中的特征聚合模块。 这意味着从最后一个 GCN 块学习到的嵌入直接用于目标预测。

• w/o  concat.:此变体用串联操作替换聚合。 具体来说,将从每个行为中学习到的用户和项目嵌入连接在一起以进行目标预测。

通过特征转换,当将从第一个行为学习到的嵌入传递到目标行为时,从辅助行为学习到的一些特征将被过滤。 它还将鼓励模型从每种行为中学习不同的特征。 因此,为了充分利用多种行为,CRGCN考虑所有行为特征非常重要。 为了简单起见,在实验中仅比较线性组合(w. agg)和嵌入串联(w. concat.)。 根据经验,W. agg 的性能比 w 好得多。 concat. 还可以应用更复杂的融合方法(例如注意力网络),这将在未来的研究中进行探索。​


5总结

也是级联的方法,期刊到会议,改了残差以及模型训练的部分。因为作者设计的模型是降低复杂度的,所以没用什么其他的方法,整个模型很简洁所以也改不了什么东西。我认为还是有很多地方值得去改进的。

相关文章:

WWW23-多行为级联|级联图卷积网络的多行为推荐

论文:https://arxiv.org/abs/2303.15720 代码:https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不…...

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #...

近实时”(NRT)搜索、倒排索引

近实时(Near Real-Time, NRT)搜索 近实时(NRT)搜索是 Elasticsearch 的核心特性之一,指的是数据在被写入到系统后,可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时,但它的延迟通…...

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

一、安装openMVS 参考官方文档 sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdir eigen_build cd eigen_build &&\cmake . ../eigen -…...

从测试服务器手动热部署到生产环境的实现

为了实现从测试服务器(192.168.0.255)手动热部署到生产环境(172.168.20.100),可以采用多种方法。以下是详细的步骤和最佳实践,帮助你实现这一目标。 1. 准备生产环境 确保生产环境上的 Docker 和 Docker …...

【c++高阶DS】图

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 目录 01.并查集02.图的介绍03.图的存储结构03.1.邻接矩阵03.2.邻接表03.3.矩阵版本代码实现03.4.邻接表版本代码实现 完整代码: 01.并查集 在一些应用问题中,需要将…...

React第十八节 useEffect 用法使用技巧注意事项详解

1、概述 useEffect 是React中一个用于 将组件与外部系统同步的 Hook;在函数式组件中处理副作用函数的 Hook,用于替代类式组件中的生命周期函数; 可以在副作用函数中 实现以下操作: a、请求接口,获取后台提供数据 b、操…...

C++ 指针基础:开启内存操控之门

1. 指针为何如此重要 在 C 编程领域,指针堪称一项极为关键的特性。它赋予了程序员直接访问和操控内存的能力,这使得程序在处理复杂数据结构与优化性能时具有更高的灵活性。想象一下,在编写大型程序时,高效地管理内存资源是多么重要…...

Nginx的stream模块代理四层协议TCP的流量转发

Nginx的stream模块是一个功能强大的工具,专门用于处理四层协议(即网络层和传输层,如TCP和UDP)的流量。以下是对Nginx stream模块的详细解析: 一、基本功能 Nginx的stream模块主要用于实现TCP和UDP数据流的代理、转发…...

UE5 渲染管线 学习笔记

兰伯特 SSS为散射的意思 带Bias的可以根据距离自动切换mip的卷积值 而带Level的值mipmaps的定值 #define A8_SAMPLE_MASK .a 这样应该就很好理解了 这个只采样a通道 带Level的参考上面的 朝左上和右下进行模糊 带Bias参考上面 随机数 4D 3D 2D 1D...

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库,实时绘制图表详解一、引言二、步骤一:环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二:数据获取与处理1、查询数据库2、数据处理 四、步骤三:ECharts图表配置与渲染1、配置ECharts选项2、动…...

Electron 学习笔记

目录 一、安装和启动electron 1. 官网链接 2. 根据文档在控制台输入 3. 打包必填 4. 安装electron开发依赖 5. 在开发的情况下打开应用 6. 修改main为main.js,然后创建main.js 7.启动 二、启动一个窗口 1. main.js 2. index.html 3. 隐藏菜单栏 三、其他…...

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...

http反向代理

通过反向代理实现访问biying,目前访问一些网站需要绕过cloudfare还没有解决,代码如下: from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse import httpx import uvicorn import logging# 设置日志 logging.basicConfig(level=logging.…...

java12.24日记

运算符: 算术运算符: 顾名思义进行算数运算的 多为:四则运算,加一个取余 ,-,*,/以及 %(取余) 而外的:自增 以及自减--,对原数进行1或者-1 i…...

vue中proxy代理配置(测试一)

接口地址:http://jsonplaceholder.typicode.com/posts 1、配置一(代理没起作用) (1)设置baseURL为http://jsonplaceholder.typicode.com (2)proxy为 ‘/api’:’ ’ (3&a…...

[OpenGL]使用TransformFeedback实现粒子效果

一、简介 本文介绍了如何使用 OpenGL 中的 Transform Feedback 实现粒子效果,最终可以实现下图的效果: 本文的粒子系统实现参考了modern-opengl-tutorial, ogldev-tutorial28 和 粒子系统–喷泉 [OpenGL-Transformfeedback]。 二、使用 TransformFeed…...

GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台

GoIoT 是基于Gin 的开源分布式物联网(IoT)开发平台,用于快速开发,部署物联设备接入项目,是一套涵盖数据生产、数据使用和数据展示的解决方案。 GoIoT 开发平台,它是一个企业级物联网平台解决方案&#xff…...

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序,但是还有不少朋友在调试开发板上的程序时,仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法,供有需要的朋友参考。 1. 下载 …...

攻防世界web第一题

最近开始学习网络安全的相关知识,开启刷题,当前第一题 题目为攻防世界web新手题 这是题目 翻译:在这个训练挑战中,您将了解 Robots_exclusion_standard。网络爬虫使用 robots.txt 文件来检查是否允许它们对您的网站或仅网站的一部…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...