1。2 研究现状
1。3 协同深度学习模型简介
本文建立了一个紧耦合的层级贝叶斯模型,我们称之为协同深度学习(Collaborative Deep Learning,CDL)模型 [20],并将其应用于推荐系统。首先本文建立一个堆叠去噪自动编码机(Stacked Denoising Autoencoders,SDAE)[21],通过SDAE我们对内容信息进行去噪和降维,然后在其基础上将内容信息的利用同协同过滤方法连接起来。本模型支持内容信息与评分信息之间双向的信息传递。虽然本文使用了SDAE作为提取内容信息的模型,但是CDL模型也支持其他的学习模型例如波尔兹曼机[22]和卷积神经网络[23]。尽管本文的推荐任务是针对电影的,但是本模型也可应用于其它领域的推荐任务,例如文章[24]或音乐的推荐。
2。 符号表示
我们用 和 表示SDAE中第l层的权重和偏差, 表示 的第n列。L表示SDAE的层数。 表示SDAE中第l层的神经元个数,为了简便起见,我们用K表示编码层的神经元个数,即 。包含J个物品的内容信息 表示为一个J×S的矩阵,S为词袋的长度。 表示内容信息 的第j行,即物品j的维数为S的词袋向量。对于I个用户,我们定义一个I×J的评分矩阵R。若用户i对物品j的有过浏览记录,则 ,否则 。推荐任务可以简化为,在给定部分的评分矩阵R及物品内容信息 的情况下,对评分矩阵R的其它部分做出预测。
我们令 表示未加入噪声的内容信息数据。 表示被噪声污染过后的内容信息, 同样也是J×S的矩阵。 表示SDAE第l层的输出数据, 的维数为J× 。同 的表示类似,我们用 表示 的第j行数据。
3。 模型介绍
3。1 堆叠去噪自动编码机
SDAE是一个用于学习特征的前向神经网络,它由经典的去噪自动编码机扩展而来。自编码器适用于无监督学习,输入层接受形如 的输入,隐藏层对于输入层做编码(Encode)操作,而输出层对于隐藏层做解码(Decode)操作。去噪自编码器在自编码器的基础上,在输入中加入随机噪声再传递给自编码器,通过自编码器来重建出无噪声的输入。噪声的添加有很多种方法,本文采用的方法是把输入的一些位(最多一半位)设置为0,这样去噪自编码器就需要通过没有被污染的位来猜测被置为零的位。通过噪声的引入,可以使编码机学习出的特征更加健壮。堆叠自动编码机则是由自编码机叠加起来形成一个深度网络,通过反馈前一层的降噪自动编码机的潜在表达(输出编码)作为当前层的输入。这个非监督的预学习结构一次只能学习一个层。每一层都被作为一个降噪自动编码机以最小化重构误差来进行训练。当前k个层的训练完成,我们可以进行k+1层的训练,因此此时我们才可以计算前一层的编码和潜在表达。当所有的层都被训练了,整个网络进行第二阶段训练,称为微调。在本文中,我们通过对编码层神经元个数做出限制,从而达到对内容信息的特征学习。
首先我们先对SDAE进行构建:来*自-优=尔,论:文+网www.youerw.com
(1) 对SDAE网络中的第l层,
(a) 对于权重矩阵 的每一列 ,我们将其初始化为 。
(b) 初始化偏差向量 。
(c) 对于 的第j行 。
(2) 对于每个物品j,我们构造一个输入向量 。
SDAE中的前L/2层作为编码器对输入的内容信息进行特征提取,后L/2层则作为解码器。我们将log-likelihood损失函数作为SDAE的损失函数,避免学习过慢的问题。