Neural Collaborative Filtering

article/2025/8/26 14:50:12

目录

      • 2 PRELIMINARIES
      • 3. NEURAL COLLABORATIVE FILTERING
        • 3.1 通用框架
        • 3.2 广义矩阵分解(GMF)
        • 3.3 MLP
        • 3.4 GMF和MLP的聚合—NeuMF
      • 4 EXPERIMENTS
        • Q1 NCF的效果比其他SOTA的隐式CF好吗?
        • Q2 带有负采样的log loss(这个优化框架)是否适用于RS?
        • Q3 更深的网络对于从交互数据中学习 有帮助吗?

核心: 内积的局限性,用神经结构代替内积。实验表明,使用更深层次的神经网络提供了更好的推荐性能。

2 PRELIMINARIES

隐反馈交互

在这里插入图片描述
目标函数分为ponit-wise和pair-wise loss:

  • ponit-wise,最小化预测值和实际值之间的差距,预测rmse,二分类Logloss
  • pair-wise,最大化正样本和负样本之间的差距,bpr, margin-based loss等

矩阵分解可以看作隐表示的加和,每个维度的贡献相同
在这里插入图片描述
内积的局限性例子,p4和p1最接近,然后是p3,最后是p2;但是p4和p1靠近之后,会改变p2、p3对于p4的相似性,距离与真正相似性不符合。解决这个问题的一个方法就是增大隐表示的维度,但是会破坏模型的泛化性(个人认为就是造成过拟合),本文通过使用DNN来学习交互函数来解决这个限制。
在这里插入图片描述

3. NEURAL COLLABORATIVE FILTERING

3.1 通用框架

在这里插入图片描述
输入都只含用户和物品的id,通过嵌入来得到对应的表示,还可以用content来获取用户或者物品的表示,以此解决冷启动问题。NCF层的每一层都可以定制,用以发现用户-项目交互的某些潜在结构。最后一个隐藏层X的维数决定了模型的能力。
NCF的形式化表示为:
在这里插入图片描述
前面两项表示 用户表示和物品表示;后面三项表示用户嵌入表、物品嵌入表、参数
在这里插入图片描述

使用ponitwise的损失函数:
在这里插入图片描述
在这里插入图片描述

3.2 广义矩阵分解(GMF)

在这里插入图片描述
a o u t = 1 a_{out}=1 aout=1 h h h 为各维度为1的向量,就相当于矩阵分解MF。如果我们允许h在没有统一约束的情况下从数据中学习,它将导致MF的变体,允许潜在维度的不同重要性。

本文所说的GMF就是输出为sigmoid,学习h,允许每一维度贡献不同。
在这里插入图片描述

3.3 MLP

将用户表示和物品表示concat,没有考虑用户和项潜在特征之间的任何交互,这不足以模拟协作过滤效果。为了解决这个问题,本文在concat向量上添加隐藏层,使用标准MLP来学习用户和项潜在特征之间的交互。
concat+MLP
在这里插入图片描述
采用relu激活函数,因为它使用稀疏的激活,一定程度上缓解了过拟合问题,(sigmoid,tanh遭受饱和的问题,当sigmoid输出为0,1附近时,神经元不再学习)。采用塔形结构( tower pattern),(比如200-100-10这种),对于较高的层使用少量的隐藏单元,它们可以学习更抽象的数据特征。(可以关注一下塔形结构为什么有这种优点

3.4 GMF和MLP的聚合—NeuMF

到目前为止,提出了了两个NCF的实例化:

  • GMF应用线性内核来建模潜在特征交互
  • MLP使用非线性内核从数据中学习交互函数。

一个方法就是两者共享嵌入层,和Neural Tensor Network (NTN)的思想一致:
这里自己的疑问:就只有一层MLP吗?没有多层?
在这里插入图片描述
共享GMF和MLP的嵌入可能会限制融合模型的性能。我们允许GMF和MLP学习单独的嵌入,并通过concat它们的最后一个隐藏层来组合这两个模型。
在这里插入图片描述
在这里插入图片描述
使用GMF和MLP的预训练模型初始化NeuMF, 把GMF和MLP先单独学习,得到稳定的参数之后,作为NeuMF的初始化参数。唯一的调整是在输出层:(问题,concat还要用 α \alpha α ??
在这里插入图片描述
预训练的时候用Adam;NeuMF中用原始的SGD。这是因为Adam需要保存动量信息来正确更新参数。

4 EXPERIMENTS

实验设置说的比较详细,可以参考。并且两个数据集也能参考。
留一法 评估,每位用户选最新的点击作为test,其他作为train。随机抽取100个未由用户交互的项目,将测试项目排序在100个项目中。
指标选用HR,NDCG,计算每个测试用户的这两个指标,并使用平均分数。
对于每位用户,随机选一个已有的交互作为验证集,来调整参数。对于每个正样本,随机选4个负样本。

Q1 NCF的效果比其他SOTA的隐式CF好吗?

在这里插入图片描述
还做了p检验

Q2 带有负采样的log loss(这个优化框架)是否适用于RS?

pointwise损失相对于pairwise损失的一个优点是负样本的灵活采样比。pairwise对于一个正样本只能对比一个负样本(pairwise一个正样本不能对比多个负样本吗??),但是point-wise可以对每一个正样本采取多个负样本。
在这里插入图片描述
在这里插入图片描述

Q3 更深的网络对于从交互数据中学习 有帮助吗?

结果表明使用更深的模型对于协同过滤能更有效。

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/laK78UnS.shtml

相关文章

图像处理中滤波(filtering)与卷积(convolution)的区别

图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。 1、滤波(或者叫相关) 简单来说&#…

MAVEN中filtering的作用是什么?

FILTERING的作用 MAVEN提供了一种过滤机制,这种机制能够在资源文件被复制到目标目录的同时,当filtering true时替换资源文件中的占位符;当filtering false时不进行占位符的替换。 写在前面 如下所示filtering的用法,它对资源…

在Navicat premium上实现两个数据库同步

问题:有两个数据库A和B,现需要将数据库A的数据同步到数据库B上。 法一:使用备份 首先在数据库A上生成备份 然后将数据库A的备份拷贝到存储数据库B的备份的文件夹下,然后点击还原备份 方法二:使用工具中的同步操作 点击工具->结构同步 选…

Otter实现数据库同步

Otter工作原理 原理描述: 基于Canal开源产品,获取数据库增量日志数据。典型管理系统架构,manager(web管理)+node(工作节点) a. manager运行时推送同步配置到node节点 b. node节点将同步状态反馈到manager上基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作…

【愚公系列】2022年12月 数据库-关系数据库同步框架Dotmim.Sync的使用

文章目录 前言1.移动智能的三种模式2.混合模式模式的瓶颈3.数据同步的解决方案 一、关系数据库同步框架Dotmim.Sync的使用1.包介绍2.SqlServer到Sqlite同步测试基本使用3.SqlServer到Sqlite同步测试Web API代理3.1 服务端设置SqlServer同步服务3.2 客户端设置SqlLite同步服务3.…

django mysql数据同步_[django自动同步数据库]Django数据库同步操作技巧详解

同步数据库: 使用上述两条命令同步数据库 1.认识migrations目录: migrations目录作用:用来存放通过makemigrations命令生成的数据库脚本,里面的生成的脚本不要轻易修改。 要正常的使用数据库同步的功能,app目录下必须要…

SQLSERVER数据库同步

SQLSERVER数据库数据同步 1、实现方法2、实现发布3、实现订阅 1、实现方法 使用的是SQL自带的发布与订阅功能,SQL Server版本是2008,一台发布,一台订阅,实现数据库的数据同步。 2、实现发布 打开复制,右击本地发布&…

MySQL第九讲 MySQL集群主从搭建指定数据库同步数据

1、全库同步与部分同步 之前提到,我们目前配置的主从同步是针对全库配置的,而实际环境中,一般并 不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步。那如何 针对库和表做同步配置呢? 首先在Master端…

Python数据库同步神器(一键同步)

1.背景: 最近公司项目的用户中心模块经常出现线上问题,测试人员需要将线上真实数据导入到测试环境中去复现Bug。公司有3套测试环境,来回切换并校验数据比较麻烦,于是就有了如下的数据库同步神器。 2.界面: 3.源代码&…

分布式数据库同步

分布式部署时数据库之间的数据同步 数据的同步原理就是同步binlog日志到需要复制的其他的数据库上,其他数据库根据binlog日志里面的ddl和dml语句,执行该语句同步到当前数据库,就能保证多个数据库的数据的一致性。 Binlog日志主要是的数据库执行的ddl、…

异构数据库同步方案

目录 1 概述 2 原理 3 参数 1 概述 为减轻生产库负载,避免在其上直接运行分析应用拖垮系统,需要将生产系统产生的业务数据实时同步到大数据分析平台。 凭借异构(主从库不同类型、主从对象不同属主模式)数据处理能力&#xff…

IDEA 之because it is included into a circular dependency循环依赖的解决办法

问题场景: 今天启动项目的时候突然遇到这个错误导致无法启动 Information:2019/8/26 11:34 - Compilation completed with 1 error and 0 warnings in 6 s 52 ms Error:Cannot build artifact aws_multi_branch_1.0.0:war exploded because it is included into a…

Maven dependencyManagement 详解

dependencyManagement(以下简称:《依赖管理器》) 《依赖管理器》简介 Maven中的《依赖管理器》元素提供了一种管理依赖版本号的方式。在《依赖管理器》元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包…

Maven之dependencyManagement

1. 父项目的dependencyManagement 最开始,知道dependencyManagement是管理jar包版本的,如果在父项目中的该节点下声明了包的版本,子项目中在Dependencies中引用该包时就不需要声明版本了,这样保证多个子项目能够使用相同的包版本…

dependency-track 初始化源码解析

因项目的关键因素,需查看dependency-check源码流程。个人学习用。自己读代码可以根据web.xml的几个listener来debug。 1、org.dependencytrack.RequirementsVerifier 校验java版本,内存等运行时环境。 2、org.dependencytrack.upgrade.UpgradeInitiali…

Maven中的dependencyManagement 详解

Maven中的dependencyManagement 详解 大家好,我是酷酷的韩金群~ 1.作用: 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。 2.pom.xml文件中,jar的版本判断的两种途径: (1)如果dependencies里的dependency自己…

dependency walker工具简介及使用

dependency walker工具 简介使用 简介 官方概述: Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, …

pytest.mark.dependency用例依赖

这是一个pytest第三方插件,主要解决用例之间的依赖关系。如果依赖的上下文失败后续的用例会被标识为跳过执行,相当于执行了pytest.mark.skip。 1.安装 安装命令如下: pip install pytest-dependency执行上述命令后,再执行pip i…

dependencyManagement使用简介

dependencyManagement使用简介 Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有…