神经协同过滤:深度学习如何重写推荐系统的规则

GitHub May 2026
⭐ 1880
来源:GitHub归档:May 2026
一项开创性研究提出用多层神经网络替代矩阵分解中的内积运算,构建出神经协同过滤(NCF)框架。通过融合广义矩阵分解(GMF)与多层感知机(MLP),NCF解锁了学习非线性用户-物品交互的能力,为隐式反馈建模树立了新标杆。

GitHub上的hexiangnan/neural_collaborative_filtering仓库(星标超过1,880个)彻底改变了推荐系统建模用户-物品交互的方式。传统协同过滤依赖矩阵分解(MF),通过计算用户和物品隐向量的内积来预测偏好。这种线性操作本质上限制了模型捕捉用户行为中复杂非线性模式的能力。NCF框架直接对此发起挑战,用能够从数据中学习任意函数的神经架构替代内积。其核心创新在于双塔设计:一个广义矩阵分解(GMF)分支,模仿线性MF但具备可学习的权重;一个MLP分支,学习高阶特征交互。通过将两者融合,NCF不仅保留了线性建模的简洁性,更引入了深度学习的表达力,在MovieLens等基准数据集上显著超越了传统方法。这一工作已成为神经推荐系统的奠基性成果,深刻影响了后续DeepFM、Wide & Deep等工业级模型的设计思路。

技术深度解析

NCF框架从根本上重新思考了协同过滤问题。不同于先学习用户和物品嵌入再计算点积,NCF学习一个神经函数 f(u, i | Θ),将用户和物品特征向量映射为预测分数。其架构由两个并行塔组成:

- 广义矩阵分解(GMF):该分支对用户和物品嵌入进行逐元素乘积(Hadamard积),然后将结果通过一个带sigmoid激活的单线性层。数学上,它计算 p_u ⊙ q_i,其中 p_u 和 q_i 分别是用户和物品的隐向量。这是对MF的直接泛化:如果权重矩阵被约束为对角矩阵,GMF就退化为标准MF。关键优势在于,GMF学习的是逐元素交互的加权和,允许模型为不同的隐维度分配不同的重要性。

- 多层感知机(MLP):该分支将用户和物品嵌入拼接起来,然后通过一系列全连接层(例如,大小为[64, 32, 16, 8]的层,使用ReLU激活)。MLP学习用户和物品特征之间的非线性交互,捕捉线性模型无法实现的模式。作者采用了塔式结构(层大小递减)来学习交互的分层表示。

- 神经协同过滤(NeuMF):最终模型通过拼接GMF和MLP的最终隐藏层,再通过一个sigmoid输出层,将两者的输出融合。这种融合使得模型能够同时捕捉线性模式(通过GMF)和非线性模式(通过MLP)。作者还引入了一种预训练策略:先分别训练GMF和MLP,然后用它们的权重初始化组合后的NeuMF模型。这显著提升了收敛速度和最终性能。

训练细节:模型使用二元交叉熵损失在隐式反馈数据(例如,点击/未点击)上进行训练。采用负采样生成训练对。论文使用Adam优化器,学习率为0.001,小批量大小为256。GMF的嵌入大小设为8,MLP输入的嵌入大小也为8,MLP隐藏层为[64, 32, 16, 8]。

基准性能:在MovieLens 1M数据集(100万条评分,6,040个用户,3,706个物品)上,NCF在K=10时取得了以下命中率(HR)和归一化折损累计增益(NDCG):

| 模型 | HR@10 | NDCG@10 |
|---|---|---|
| ItemPop(基线) | 0.5233 | 0.3160 |
| ItemKNN | 0.6357 | 0.4027 |
| BPR-MF | 0.6815 | 0.4139 |
| eALS | 0.7008 | 0.4306 |
| GMF | 0.7120 | 0.4379 |
| MLP | 0.6990 | 0.4273 |
| NeuMF(预训练) | 0.7325 | 0.4550 |

数据要点:NeuMF在所有基线上表现最佳,包括强大的eALS(逐元素交替最小二乘法)和BPR-MF(基于贝叶斯个性化排序的矩阵分解)。预训练策略相比从头训练带来了2-3%的提升。这表明线性与非线性组件的融合至关重要——无论是单独的GMF还是MLP,都无法匹敌组合模型。

GitHub实现:官方仓库(hexiangnan/neural_collaborative_filtering)提供了TensorFlow 1.x代码,包含数据预处理、模型定义和评估脚本。它已成为实现神经推荐系统的标准参考。该仓库超过1,880个星标反映了其在研究社区中的持久影响力。

关键参与者与案例研究

NCF论文的作者包括Xiangnan He、Lizi Liao、Hanwang Zhang、Liqiang Nie、Xia Hu和Tat-Seng Chua。Xiangnan He现为中国科学技术大学(USTC)教授,是推荐系统和图神经网络领域的高产贡献者。他后续的工作包括神经因子分解机(NFM)和LightGCN,两者都建立在NCF学习非线性交互的哲学之上。

几家主要科技公司已采用或从NCF中汲取灵感来构建其架构:

- Pinterest:该公司的PinSage及后续推荐模型使用了图卷积网络,但NCF风格的融合架构影响了他们在视觉发现方面的早期深度学习努力。
- Google:Wide & Deep模型(2016年)在概念上与NCF的线性(宽)和非线性(深)组件融合相似,尽管应用于应用推荐。
- 华为:DeepFM模型(2017年)明确地将因子分解机与深度神经网络结合用于点击率预测,直接将NCF的思想扩展到特征丰富的场景。
- 阿里巴巴:该公司用于电商推荐的DIN(深度兴趣网络)和DIEN模型使用了注意力机制,但仍然依赖于NCF推广的嵌入+MLP范式。

关键深度学习推荐模型对比

| 模型 | 年份 | 核心创新 | 输入 | 主要局限 |
|---|---|---|---|

更多来自 GitHub

SimpleX:彻底摧毁元数据的消息网络——深度解析SimpleX 是一个去中心化的消息网络,实现了任何主流平台都不敢尝试的目标:完全消除用户标识符。与 Signal、Telegram 或 Matrix 不同——它们都依赖某种形式的用户 ID(手机号、用户名或与身份绑定的加密密钥)——SimCzkawka:用 Rust 打造的重复文件杀手,速度碾压一切同类工具Czkawka 由波兰程序员 qarmin(Rafal Mikrut)开发,在系统工具领域异军突起,短短数月内便在 GitHub 上收获了超过 31,700 颗星标。这款工具的核心价值简单直接:以极致效率查找并删除重复文件、空文件夹、临时文PocketBase + Vue 3:悄然重塑全栈原型开发的极简主义组合manuelraven/mnlrpocketappbase 仓库受 longhabit 项目启发,是一个将 PocketBase(基于 Go 的嵌入式数据库,内置身份验证和文件存储)与 Vue 3 前端相结合的极简示例。该项目在 GitHu查看来源专题页GitHub 已收录 3126 篇文章

时间归档

May 20263028 篇已发布文章

延伸阅读

神经协同过滤迎来冷启动克星:注入物品元数据,推荐系统焕发新生一个名为 dangchienhsgs/neural-collaborative-filtering-advance 的开源项目,通过将物品元数据直接融入交互嵌入,对经典神经协同过滤(NCF)进行了升级。这一简单却高效的改进,有望大幅降低冷启CentOS 7 的最后一战:为何这个 Singularity-Docker-PyTorch 镜像对 HPC 至关重要一个看似小众却至关重要的容器镜像——singularity-docker-centos7-conda-pytorch——为仍在运行 CentOS 7 的 HPC 集群和研究实验室提供了生命线。AINews 深入剖析其设计、局限,以及对遗留 神经水文学:深度学习如何重塑百年水文预测模型一个名为NeuralHydrology的专业Python库,正悄然重塑这门拥有百年历史的水文学科。通过将LSTM和Transformer等复杂神经网络应用于降雨与河流流量数据,它为预测水资源的复杂行为提供了一种全新的数据驱动范式,对洪水、干RuVector:用Rust融合向量数据库与图神经网络,开启实时AI推理新范式开源项目RuVector正挑战数据存储与智能计算的传统分野。该项目基于Rust构建,将高性能向量数据库与集成的实时图神经网络(GNN)相结合,打造出能够进行复杂关系推理的自学习系统。这一融合有望显著降低构建需要实时关系推理的AI应用的延迟与

常见问题

GitHub 热点“Neural Collaborative Filtering: How Deep Learning Rewrote the Rules of Recommendation Systems”主要讲了什么?

The hexiangnan/neural_collaborative_filtering repository on GitHub, with over 1,880 stars, introduced a paradigm shift in how recommendation systems model user-item interactions. T…

这个 GitHub 项目在“neural collaborative filtering vs matrix factorization comparison”上为什么会引发关注?

The NCF framework fundamentally rethinks the collaborative filtering problem. Instead of learning user and item embeddings and then taking their dot product, NCF learns a neural function f(u, i | Θ) that maps user and it…

从“how to implement NCF in PyTorch from scratch”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 1880,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。