群组推荐模型---SoAGREE(Social-Enhanced Attentive Group Recommendation)

SoAGREE

  • 概要
  • 方法
    • Hierarchical Attention Network Learning
      • Attentive User Representation Learning
    • NCF(Neural Collaborative Filtering)

概要

此论文是在AGREE(Attentive Group Recommendation)模型上的进一步增强,有兴趣的朋友可以去看上一篇博客讲述的就是AGREE模型。在AGREE模型的基础上,个体用户的表示学习通过利用他们的社会关注者信息得到进一步增强。提出的解决方案由两个部分组成:
(1)层次注意网络学习,利用双层注意网络在层次结构中表示群体和用户。第一层注意力网络聚合每个用户的关注对象,将社会影响合并到群组推荐场景中,第二层注意力机制作为群组成员聚集策略来执行群组推荐。
(2)使用NCF进行交互学习,为用户和组推荐项目。

方法

Hierarchical Attention Network Learning

此部分作为一个分层注意力网络,主要分为两层,分别是:Attentive Group Representation LearningAttentive User Representation Learning。第一层注意力网络聚合每个用户的关注对象,将社会影响合并到群组推荐场景中,第二层注意力机制作为群组成员聚集策略来执行群组推荐。第一部分是AGREE模型的基础,主要讲解第二部分。

Attentive User Representation Learning

将社会关注者信息整合到关注用户表示学习中,将用户的关注者信息作为用户的属性,并以关注权值进行聚合。专注用户表示学习的目标是获得每个个体用户更为准确的嵌入向量。公式如下:
u i = ∑ t ∈ H i β ( i , t ) f t + s i u_i=\displaystyle\sum_{t \in H_i}\beta(i,t)f_t+s_i ui=tHiβ(i,t)ft+si
u i u_i ui为用户嵌入, β ( i , t ) \beta(i,t) β(i,t)为注意力权重,本文最为主要的部分便是注意力权重的训练,公式如下:
b ( j , t ) = h T R e L U ( Q f f t + Q s s i + b ) b(j,t)=h^TReLU(Q_ff_t+Q_ss_i+b) b(j,t)=hTReLU(Qfft+Qssi+b)
β ( i , t ) = s o f t m a x ( b ( i , t ) ) = e x p ( b ( i , t ) ) ∑ t ∈ H i e x p ( b ( i , t ) ) \beta(i,t)=softmax(b(i,t))=\frac{exp(b(i,t))}{\textstyle\sum_{t\in H_i}exp(b(i,t))} β(i,t)=softmax(b(i,t))=tHiexp(b(i,t))exp(b(i,t))
Q f Q_f Qf Q s Q_s Qs分别是将追随者嵌入和用户偏好嵌入转换为隐含层的注意网络的权值矩阵,b是隐含层的偏差向量。利用ReLU作为隐藏层的激活函数,利用权重向量h将其投影到得分 β ( i , t ) \beta(i,t) β(i,t)上,最后利用softmax函数对用户级注意力进行归一化。利用注意力机制的基本原理,动态学习用户关注对象的关注权重,用户关注对象对用户表示的贡献不均衡。 s i s_i si为用户的一般偏好。

NCF(Neural Collaborative Filtering)

NCF是一种用于项目推荐的多层神经网络框架。它的想法是将用户嵌入和物品嵌入到一个专用的神经网络中,从而从数据中学习交互功能。由于神经网络具有较强的数据拟合能力,因此NCF框架比传统的MF模型具有更强的通用性,后者简单地使用与数据无关的内积函数作为交互函数。因此,选择NCF框架来对嵌入(表示用户、项目和组)和交互功能(预测用户-项目和组-项目交互)执行端到端学习。
pooling layer
对输入的向量 g l ( j ) g_l(j) gl(j) v ( j ) v(j) v(j)进行逐元素乘积,然后与 g l ( j ) , v ( j ) g_l(j),v(j) gl(j),v(j)进行连接。
e 0 = φ p o o l i n g ( g l ( j ) , v ( j ) ) = [ g l ( j ) ⨀ v ( j ) g l ( j ) v ( j ) ] e_0=\varphi_{pooling}(g_l(j),v(j))= \begin{bmatrix} g_l(j)\bigodot v(j)\\ g_l(j)\\ v(j) \end{bmatrix} e0=φpooling(gl(j),v(j))= gl(j)v(j)gl(j)v(j)
内积能够有效的捕获到群组和物品之间的交互,同时连接群组和物品本身的信息能够避免信息丢失。
hidden layer
池化层之上是一堆完全连接的层,这些层使模型能够捕获用户、组和项目之间的非线性和高阶相关性。
{ e 1 = R e L U ( W 1 e 0 + b 1 ) e 1 = R e L U ( W 1 e 0 + b 1 ) . . . . e h = R e L U ( W h e h − 1 + b h ) \begin{cases} e_1=ReLU(W_1e_0+b_1)\\ e_1=ReLU(W_1e_0+b_1)\\ ....\\ e_h=ReLU(W_he_{h-1}+b_h) \end{cases} e1=ReLU(W1e0+b1)e1=ReLU(W1e0+b1)....eh=ReLU(Wheh1+bh)
最后一层输出 e h e_h eh经过下面的公式转化为预测分:
{ r i j ^ = w T e h , i f e 0 = φ p o o l i n g ( u i , v j ) y i j ^ = w T e h , i f e 0 = φ p o o l i n g ( g l ( j ) , v j ) \begin{cases} \hat{r_{ij}}=w^Te_h,if e_0=\varphi_{pooling}(u_i,v_j)\\ \hat{y_{ij}}=w^Te_h,if e_0=\varphi_{pooling}(g_l(j),v_j) \end{cases} {rij^=wTeh,ife0=φpooling(ui,vj)yij^=wTeh,ife0=φpooling(gl(j),vj)
w w w表示预测层的权重 r i j ^ \hat{r_{ij}} rij^ y i j ^ \hat{y_{ij}} yij^分别表示用户对物品的预测分和群组对物品的预测分。设计了两个任务的预测共享相同的隐藏层。这是因为群嵌入是从用户嵌入聚合而来的,这使得它们本质上处于相同的语义空间中。此外,这可以增强用户-项目交互数据对组-项目交互功能的训练,反之亦然,有利于二者的相互强化。

代码链接:SoAGREE

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

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

相关文章

.raw 是一个 Anndata 包中的对象,用于存储原始的单细胞数据。scanpy种如何查看 .raw 对象的内容,

1查看 .raw 对象的内容,可以使用以下方法: .raw 是一个 Anndata 包中的对象,用于存储原始的单细胞数据。 使用 .X 属性查看原始数据矩阵:.raw.X 这将返回一个 Numpy 数组,其中包含原始数据的数值。 使用 .var_names 属…

nodejs微信小程序+python+PHP兴趣趣班预约管理系统设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

ARM作业1

汇编实现三个灯闪烁 汇编代码&#xff1a; .text .global _start _start: 设置GPIOE,GPIOF时钟使能LDR R0,0X50000A28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) STR R1,[R0] 设置PE10,PF10,PE8为输出 LED1LDR R0,0X50006000LDR R1,[R0]ORR R1,R1,#(0X1<<20)BIC R1…

力扣每日一题day38[106. 从中序与后序遍历序列构造二叉树]

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出&#xff1a;[…

华为鸿蒙(HarmonyOS):连接一切,智慧无限

华为鸿蒙是一款全场景、分布式操作系统&#xff0c;旨在构建一个真正统一的硬件生态系统。该操作系统于2019年8月首次发布&#xff0c;并被设计为可以应用于各种设备&#xff0c;包括智能手机、智能手表、智能电视、车载系统等多种智能设备。 推荐一套最新版的鸿蒙4.0开发教程 …

从零开发短视频电商 在AWS上SageMaker部署模型自定义日志输入和输出示例

从零开发短视频电商 在AWS上SageMaker部署模型自定义日志输入和输出示例 怎么部署自定义模型请看&#xff1a;从零开发短视频电商 在AWS上用SageMaker部署自定义模型 都是huaggingface上的模型或者fine-tune后的。 为了适配jumpstart上部署的模型的http输入输出&#xff0c;我…

python一点通: 一文讲清Post 和 Put操作区别!

当我们使用网络服务时&#xff0c;如果我们不能小心地区分 POST 和 PUT&#xff0c;有时可能会触发错误。 在 Web 开发世界中&#xff0c;特别是在处理 RESTful API 时&#xff0c;HTTP 方法 POST 和 PUT 经常被使用&#xff0c;但常常被误解。这两者都用于向服务器发送数据&a…

Java设计模式之单例模式以及如何防止通过反射破坏单例模式

单例模式 单例模式使用场景 ​ 什么是单例模式&#xff1f;保障一个类只能有一个对象&#xff08;实例&#xff09;的代码开发模式就叫单例模式 ​ 什么时候使用&#xff1f; 工具类&#xff01;&#xff08;一种做法&#xff0c;所有的方法都是static&#xff0c;还有一种单…

使用 Elasticsearch 检测抄袭 (一)

作者&#xff1a;Priscilla Parodi 抄袭可以是直接的&#xff0c;涉及复制部分或全部内容&#xff0c;也可以是释义的&#xff0c;即通过更改一些单词或短语来重新表述作者的作品。 灵感和释义之间是有区别的。 即使你得出类似的结论&#xff0c;也可以阅读内容&#xff0c;获得…

Chrome浏览器http自动跳https问题

现象&#xff1a; Chrome浏览器访问http页面时有时会自动跳转https&#xff0c;导致一些问题。比如&#xff1a; 开发阶段访问dev环境网址跳https&#xff0c;后端还是http&#xff0c;导致接口跨域。 复现&#xff1a; 先访问http网址&#xff0c;再改成https访问&#xf…

MYSQL数据库的实操与备份

MySQL数据库的实操 MySQL数据库的操作 数据库授权语句grant all on *.* to 用户% identified by密码刷新授权表flush privileges 1.查看所有数据库show databases;2.切换数据库use 库名;3.创建库并指定字符集create database 库名 default charset ‘utf8’;4.查看当前所在数…

Springboot+vue的装饰工程管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的装饰工程管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的装饰工程管理系统&#xff0c;采用M&#xff08…

vue3开发一个todo List

创建新的 Vue 3 项目&#xff1a; 按装vue3的 工具 npm install -g vue/cli创建一个新的 Vue 3 项目&#xff1a; vue create vue3-todolist进入项目目录&#xff1a; cd vue3-todolist代码&#xff1a; 在项目的 src/components 目录下&#xff0c;创建一个新的文件 Todo…

洛谷 NOIP2016 普及组 回文日期

这道题目本来是不难想思路的。。。。。。 然而我第一次做的时候改了蛮久才把代码完全改对&#xff0c;主要感觉还是不够细心&#xff0c;敲的时候也没注意见检查一些小错误&#xff0c;那么接下来不说废话&#xff0c;请看题干&#xff1a; 接下来请看输入输出的样例以及数据范…

听GPT 讲Rust源代码--src/tools(23)

File: rust/src/tools/clippy/rustc_tools_util/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/clippy/rustc_tools_util/src/lib.rs文件的作用是为Clippy提供了一些实用工具和辅助函数。 该文件中定义了VersionInfo结构体&#xff0c;它有三个字段&#xff0c;分别为m…

Web组态可视化编辑器-by组态

演示地址&#xff1a; http://www.by-lot.com http://www.byzt.net web组态可视化编辑器&#xff1a;引领未来可视化编辑的新潮流 随着网络的普及和快速发展&#xff0c;web组态可视化编辑器应运而生&#xff0c;为人们在网络世界中创建和编辑内容提供了更加便捷的操作方式。这…

【Spring实战】配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍&#xff0c;我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中&#xff0c;…

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践&#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样&#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…

【clickhouse】在CentOS中离线安装clickhouse

一、下载地址 通过以下链接进行rpm安装包的下载 https://packages.clickhouse.com/rpm/stable/ 根据需求下载对应版本 注意&#xff1a;ClickHouse 20.8.2.3版本新增加了 MaterializeMySQL 的 database 引擎&#xff0c;该 database 能映射到 MySQL 中的某个 database&#…

electron GPU process isn‘t usable. Goodbye

最近再使用electron的时候总是报错打不开&#xff0c;记录一下这个问题的解决方法&#xff1b; // 再主进程中添加下面的即可 app.commandLine.appendSwitch(no-sandbox);官网看了下&#xff1a;https://www.electronjs.org/zh/docs/latest/api/command-line-switches –no-sa…