前一阵子阅读了部分deep learning结合Collaborative filtering的工作,准备写一系列的阅读笔记,这是作为预热的第一篇,也是最容易的一篇,WWW 2015的poster,看起来很快。
在传统的CF里,所用的信息即为所有用户历史的评分数据,按用户做行,item做列,可以得到一个rating matrix
在神经网络有,一有类特殊的网络叫做AutoEncoder,简称AE。AE是一个包含单隐层的神经网络。如下图所示:
AE的目标是学习一个模型能使得输出尽可能接近输入,选用平方误差作为loss function后目标为
AutoRec的想法是将AE拿来直接学习Rating Matrix里的行或列数据的压缩向量表达,分为user-based AutoRec和item-based AutoRec两种。对于item-based AutoRec,input为R里的每列,即每个item用各个user对它的打分作为其向量描述;对于user-based AutoRec是用R里的每行。下图给出了item-based AutoRec的网络结构和数据流程。
模型的学习目标为:
后一项为防止过拟合加入的正则项。需要注意的是第一项里在计算loss只在观测到的数据上计算。未观测到的missing value在初始时赋一个默认值,比如1-5分的打分体系里统一给3。
在使用模型做预测时,直接将模型对input重建后的新向量里对应位置的值认为是预测值,即
user-based AutoRec可以类似推导出,就不做详述。从实验数据来看,item-based AutoRec胜出user-based AutoRec,比传统的FM类方法都要更好。
评价:这篇文章的思想还是挺聪明的,思路直观简洁且在理。然而很显然的是,在数据很稀疏的情况下用AE去学习的效果会不理想,数据里噪声太大,在CF里存在的困境同样存在。后续要介绍的DL+CF的文章中引入了item和user的side information去解决这个问题。