网站首页 > 技术文章 正文
今天小编继续向您介绍一篇使用AutoEncoder作为核心推荐算法的文章,此篇文章发表在了2015年的WWW Companion。这篇文章是较早地采用AutoEncoder进行推荐的论文,对后续采用类似模型作为推荐算法的工作有一定的启发和指导作用。
提前告诉大家一下,本篇本章的代码已经实现、集成到了LibRec当中,相信不久就会和大家在GitHub上见面。
Auto-Encoder
我们通常所说的AutoEncoder是包含一个隐藏层的三层神经网络,是一种无监督学习算法。AutoEncoder利用反向传播算法进行训练学习,使得目标值近似等于输入值。由于目标值近似等于输入值的特性,Auto-Encoder被广泛地应用于数据压缩、可视化等领域。同时,在很多deep learning任务中,AutoEncoder是很重要的“building block”。
AutoRec
这篇文章提出了一种基于AutoEncoder的协同过滤方法来解决评分预测问题。在协同过滤算法中,假设有m个用户和n个物品,以及用户对物品的评分矩阵R,我们的任务是尽可能准确地推测出用户对未评分物品的评分值。
Sedhain S, Menon A K, Sanner S, et al. AutoRec: Autoencoders Meet Collaborative Filtering. WWW 2015.
评分矩阵 R 中的每一行 ru 表示一个部分评分被观测到(partially observed)的用户向量;每一列 ri 表示一个部分评分被观测到(partially observed)的物品向量。本篇文章希望通过AutoEncoder将 ru 或 ri 投影到低维向量空间(这个过程叫做encode),然后再将其投影到正常空间(这个过程叫做decode),利用AutoEncoder目标值和输入值相近的特性,从而重建出(reconstruct)用户对于未评分物品的评分值。
给定评分矩阵 R 中的用户向量或物品向量 r,AutoEncoder的损失函数为:
其中关于 h 的函数是对输入 r 重建(reconstruction)后的结果,
其中,f 和 g 都是激活函数,W 为输入层到隐藏层的权重,V 为隐藏层到输出层的权重。
Item-based AutoRec
在此基础中,本文提出了item-based AutoRec(如图所示)。
在原有AutoEncoder的基础上有两点不同:(1)由于 r 的评分只是部分被观测到的,因此模型只在有观测到的评分时进行参数更新;(2)为了防止过拟合,加入了对权重的正则化。根据以上两点,AutoRec的损失函数变为:
本文采用了resilient propagation(Rprop)进行模型参数的更新。待模型收敛之后,预测用户对未评分物品的评分为:
本文在不同数据集上和其他方法进行了对比,结果如下:
结束语
本文是较早地使用AutoEncoder进行推荐的工作,对其他工作有一定的借鉴作用。同时,本文还讨论了不同激活函数下模型的性能,隐层单元数量以及隐藏层数量对模型结果的影响,详见论文。
最后,小编给各位看官列出近几年将AutoEncoder用于推荐系统的相关论文:
Hybrid Recommender System based on Autoencoders, DLRS workshop, 2016
Collaborative Denoising Auto-Encoders for Top-N Recommender Systems, WSDM, 2016
Deep Collaborative Filtering via Marginalized Denoising Autoencoder, CIKM, 2015
Relational Stacked Denoising Autoencoder for Tag Recommendation, AAAI, 2015
Collaborative Filtering with Stacked Denoising AutoEncoders and Sparse Inputs, NIPS workshop, 2015
猜你喜欢
- 2024-10-12 Item2Vec负采样优化基础上专题地图产品个性化推荐方法探究
- 2024-10-12 |期刊分享|深度学习|语音增强生成对抗网络
- 2024-10-12 NTT DoCoMo新应用提升驾驶员与乘客匹配率
- 2024-10-12 这725个机器学习术语表,太全了 3分钟了解机器学习
- 2024-10-12 深度学习中高斯噪声:为什么以及如何使用
- 2024-10-12 NeurIPS 2021 | CyGen:基于概率论理论的生成式建模新模式
- 2024-10-12 数据挖掘干货总结(十)-- 神经网络和深度学习
- 2024-10-12 DevZone | NVIDIA OptiX光线追踪引擎
- 2024-10-12 清华大学廖方舟:产生和防御对抗样本的新方法 | 分享总结
- 2024-10-12 一文看懂AutoEncoder模型演进图谱
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)