推荐系统中的AutoRec

一:前言

笔者最近在总结推荐系统主流模型,从十多年前的经典的协同过滤算法开始,一直到现有的各大企业所用的推荐模型,笔者一直在思考一个问题,那就是神经网络在计算机领域内的大热,是如何承上启下,承接传统MF,CF算法,又是如何连接到最新的各种模型,创造散发出各大模型的呢。原则上讲,很多读者跟笔者一样,肯定很早就研究过AutoRec,但我们应该考虑的是,在澳大利亚国立大学提出著名的《AutoRec: Autoencoders Meet Collaborative Filtering》之前,我们应该如何思考解决这个承上启下的问题,笔者认为这才是读者同鄙人应该思考的问题。知识的创新需要诸君共同努力,共勉之。

二:AutoRec简介

AutoRec是一个标准的自编码器,他跟Mlp类似,是一个标准的3层神经网络(单隐层神经网络),只不过他结合了自编码器和协同过滤的思想,确切的说,AutoRec就是一个标准的自编码器结构,其基本原理,就是利用协同过滤中的共现矩阵,来完成物品向量和用户向量的自编码,再利用编码结果来得到用户对物品的评分,然后进行推荐。
这里介绍一下自编码器:
顾名思义,自编码器是能一种能够完成数据自编码的模型,无论是图像,音频,还是数据,都能通过自编码器转化成向量的表达形式。自编码器是一个无监督的数据维度压缩和数据特征表达方法,他是神经网络的一种,模型训练完成后他会尝试将输入直接复制到输出。由于经过自编码器的泛化过程,故输出向量和输入向量不完全相等,即某些缺失值会被自动补上,故自编码器有一定的缺失维度预测能力,如果我们得到了全部的缺失值,就得到了所有用户对物品i的评分,就可以进行推荐了,其模型如下所示:
在这里插入图片描述
其中输入为x,输出为r,S代表所有的输入数据向量,h=f(x)表示编码器,r=g(h)=g(f(x))表示解码器,自编码器的目标便是优化损失函数:
在这里插入图片描述
也就是令图中的红色部分的Error的值最小,即输入与输出的误差最小。

下面是AutoRec的整体模型框图
在这里插入图片描述
可以看到整个模型只有3层,蓝色的圆点代表的是隐层神经元,红色方框代表的是模型的输入r^{(i)},经过权重矩阵V到达隐藏层,再经过权重矩阵W到达输出层,我们的目的是通过训练模型,找到合适的权重矩阵V和W,以及偏置u和b,使得输入值和输出值的误差最小。令模型的重建函数为h(r; θ),其定义如下:
在这里插入图片描述
其中f(.)代表的是输出层的神经元的激活函数,g(.)代表的是隐层神经元的激活函数。这里的参数 θ = { W, V, u, b},V和W分别是隐层和输出层的权重矩阵,u和b分别是隐层和输出层的偏置,故在基于物品的AutoRec模型中,参数总量为2mk + m+ k个。
损失函数
自编码器的损失函数
在这里插入图片描述
其中S是d维向量的集合。
AutoRec模型的损失函数中考虑到了对参数的限制,因此加入了L2正则来防止过拟合,损失函数变化为:
在这里插入图片描述
其中||.|| F为Frobenius范数。
定义好损失函数之后,就可以使用反向传播和梯度下降等方法来进行模型训练了。基于物品的AutoRec模型的训练过程如下:
1,输入物品i的评分向量r^{(i)},即所有用户对物品i的评分向量。
2,得到模型的评分预测输出向量h(r^{(i)}; θ)。
3,根据评分预测向量和真实评分向量的误差进行训练,最小化损失函数,得到最终的模型参数θ。

三:基于AutoRec的推荐过程

假如我们现在已经训练好了模型,那基于物品的AutoRec模型的推荐过程是怎样的呢?其实非常简单,只需要2步:
1,依次输入物品i的评分向量r{(i)},得到模型输出的预测评分向量h(r{(i)}; θ)。
2,遍历所有物品预测评分向量的第u维,得到用户u对所有物品的评分,进行排序之后得到用户u的推荐列表。
上述流程是针对基于物品的AutoRec模型,也就是Item-AutoRec,其实只要把AutoRec模型的输入变成用户向量,那么模型其实就变成了基于用户的AutoRec模型,即User-AutoRec。

四:AutoRec模型的优缺点

AutoRec模型从神经网络的角度出发,使用一个单隐层的AutoEncoder泛化用户或物品评分,使模型具有一定的泛化和表达能力。同时由于模型结构比较简单,使其存在一定的表达能力不足的问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值