返回目录:理财保险
今天小编继续向您介绍一篇使用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