在之前,我们介绍了协同过滤模型,该模型根据用户的行为历史生成用户-物品共现矩阵,利用用户相似性和物品相似性进行推荐。

本文要介绍的AutoRec也使用了用户-物品共现矩阵,但不同于协同过滤模型之处在于,AutoRec借鉴了自编码器(AutoEncoder)的思想,对用户向量或物品向量进行了自编码,利用自编码结果得到用户对于物品的评分,据此进行推荐排序。

假设共m个用户,n个物品,则共现矩阵的维度为mxn

以物品的AutoRec(Item based AutoRec)为例,对应AutoRec的模型结构如下:
Alt text

下方的$r^{(i)}$代表全部m个用户对于物品i的评分,它是一个m维的向量。中间层蓝色的两个圈圈代表隐藏层的两个神经元,于是,从下方的$r^{(i)}$到中间层的过程就对应着自编码器的编码过程。同理,从中间层到上方的$r^{(i)}$的过程对应了自编码器的解码过程。

通常,并不是所有用户都对物品i进行了评分,为了方便描述,这里暂且将这些称之为缺失位置。

在进行训练时,下方的m维向量$r^{(i)}$中对应的缺失位置会使用平均值等统计量进行填补,将填补后的向量其输入AutoRec,得到的输出结果也是一个m维向量。通过训练,中间的隐藏层就具有了将输入训练的压缩结果”恢复”的能力,这种”恢复”顺带着能够将缺失值预测出来。

前向传播过程:
Alt text

损失函数:
Alt text

注意,缺失位置填补的元素并不参与损失的计算。

在进行预测时,该系列的第i个位置的元素便是用户对于物品i的预测评分。

其实,个人觉得,训练时不妨全部使用不含缺失的数据,然后手动挖去一些位置,假装是缺失的。这样,训练集的输入含有缺失(真正输入时按照上面说的方法进行填补),而计算损失时则使用原本不含缺失的数据与预测的数据。这样或许能够学的更好吧~

但无论怎样,AutoRec在一定程度上开创了将深度学习应用于推荐系统的先河,在这之后,更多有效的深度学习推荐模型被提出,深度推荐模型的时代已经到来了。

参考: