推荐搜索之AutoRec模型

这个话题咱们要开启一个新的系列啦,尽可能的讲清楚推荐系统的演变过程,以及其中都需要那些问题,并做出什么样的改动,最终取得什么样的效果。希望你能学到一些历史的基础上,还能思考自己做事情的过程。

image.png

上面是为数不多能把整个推荐发展过程讲清楚的一张图,接下来的章节中,咱们会按照这个图一点一点的讲清楚技术的发展历程。

AutoRec 单隐层神经网络推荐模型

AutoRec 模型是一个标准的自编码器,它的基本原理是利用协同过滤中的共 现矩阵,完成物品向量或者用户向量的自编码。再利用自编码的结果得到用户对 物品的预估评分,进而进行推荐排序。

自编码器

编码器是指能够完成数据“自编码”的模型。无论是图像、 音频,还是数据,都可以转换成向量的形式进行表达。
假设自编码器的重建函数为h(r,θ)h(r, \theta),那么目标函数就是

minrSrh(r,θ)2min \sum_{r \in S} ||r-h(r, \theta)||^{2}

S是所有的数据的向量集合,可以是打分特征也可以是类似one-hot特征,重建函数的参数数量远小于输人向量的维度数量, 因此自编码器相当于完成了数据压缩和降维的工作。
假设有 m 个用户,n个物品,用户会对n个物品中的一个或几个进行评分, 未评分的物品分值可用默认值或平均分值表示,则所有m个用户对物品的评分可 形成一个 m x n 维的评分矩阵,也就是协同过滤中的共现矩阵。
对于物品i来讲,所有m个用户对它的评分就可以表示为一个m维的向量,r=(R0,...,Ri)r=(R_{0},...,R_{i}).那么AutoRec的结构如下。

image.png

图中的 V 和 W 分别代表输入层到隐层,以及隐层到输出层的参数矩阵。重建函数的形式化表达为

h(r,θ)=f(Wg(Vr+μ)+b)h(r, \theta)=f(W*g(Vr+\mu)+b)

其中f和g分别是输出层和隐层的激活函数。加入L2正则以后形式如下。

mini=1nrih(ri,θ)2+λ2(W2+V2)min \sum_{i=1}^{n}||r_{i}-h(r_{i}, \theta)||^{2}+\frac{\lambda}{2}*(||W||^{2}+||V||^{2})

由于 AutoRec 模型是一个非常标准的三层神经网络,模型的训练利用梯度反
向传播即可完成。

AutoRec使用过程

当输人物品 i 的评分向量为 rir_{i}时,模型的输出向量h(r,θ)h(r, \theta)就是所有用户对物品i的评分,通过遍历输入物品向量就可以得到用户 u 对所有物品的评分预测,进而根据评分预测排序得到推荐列表。不知道你发现了没有,类似的方式其实我们可以做于物品的 AutoRec 和基于用户AutoRec。以上介绍的AutoRec输入向量是物品的评分向量,因此可 称为 I-AutoRec( Item based AutoRec ),如果换做把用户的评分向量作为输入向量, 则得到 U-AutoRec ( User based AutoRec ) 在进行推荐列表生成的过程中, U-AutoRec 相比 I-AutoRec 的优势在于仅需输人一次目标用户的用户向量,就可 以重建用户对所有物品的评分向量。也就是说,得到用户的推荐列表仅需一次模 型推断过程;其劣势是用户向量的稀疏性可能会影响模型效果。

AutoRec的局限性

AutoRec 模型从神经网络的角度出发,使用一个单隐层的 AutoEncoder 泛化 用户或物品评分,使模型具有一定的泛化和表达能力。由于 AutoRec 模型的结构 比较简单 ,使其存在一定的表达能力不足的问题。不知道大家记不记得word2vec的nlp中的算法,其实AutoRec和word2vec类似的实现。 某种程度是可以替换的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×