论文信息:华南理工大学 吴浠 16年硕毕论
目的:将卷积神经网络应用到推荐系统,缩短训练时间。
为此工作:
1)对比分析了当前广泛应用于推荐系统中的各个算法,包括基于内容的推荐,协同过滤推荐,基于知识的推荐,混合推荐。
2)将卷积神经网络应用到推荐系统中,实现了基于卷积神经网络的推荐算法。
3)在 Matlab 中实现了基于卷积神经网络的推荐算法,利用 Movie Lens-1M 公开数据集进行实验,并与传统的推荐算法做了比较,在实验中取得了不错的效果。
备注(参考文献13中):将我们在日常生活中常接触到的的推荐系统做了全方位的比较,在比较推荐系统的同时,还比较了推荐算法这个最核心部分的性能,并对如何评定算法的性能做了总结[13]。
内容一(传统算法优缺点) :
推荐算法一般模型:
1,基于内容的推荐算法:
把用户对文档分为喜欢和不喜欢两类,则可以把推荐算法转化为分类算法,用机器学习中的朴素贝叶斯、决策树、Rocchio 算法、线性分类算法等来做推荐。
优点:用户之间是独立的,互不影响;新的物品加入时不会有冷启动的问题。
缺点:冷启动;文档的特征抽取难度较大;无法挖掘出用户的潜在兴趣,只能推荐和他喜欢的类似的东西。
2,基于协同过滤的推荐算法:
优点:容易发现新兴趣、不需要特定领域的专业知识、推荐自动化程度高、时间越长并且数据量越大效果越好。
缺点:用户或者商品过多时会导致矩阵稀疏、冷启动等问题。
3,基于知识的推荐:
4,混合推荐
内容二:用于推荐系统的神经网络
背景知识1:神经网络单个神经元结构:
神经网络正是由很多个这样的神经元组成的,他们能够构成非常丰富的神经网络结构:
在上图这个基本神经网络结构模型中,大体上可以将这个网络结构分为三部分:输入层、输出层和隐含层。每一层都由若干神经元组成,隐含层的层数通常不止为一,这取决于具体的网络结构,这对于外界是不可见的。每层所做的操作都是将上一层的输出拿来加权求和,再加上偏置后输入激活函数,激活函数的输出如果不是最后一层的话,那么输出又成为下一层神经元的输入。
在反向传播调整误差的过程中,采用的是梯度下降法,来调整各层连接权值使得目标函数最小化。即通过计算每一层的输出值和实际值的误差平方和,并从输出层一直反馈到输入层的逐层传递的过程。
背景知识2:支持向量机
和超平面最近的样本点称为支持向量,我们要寻找到这样一个平面——各个支持向量和它的边际距离最大化,在图中就是直线 b。
背景知识3:自组织特征映射
自组织特征映射算法中首先将所有输出层节点的向量初始化为随机小数,然后计算输入向量同输出节点之间的距离,把距离最小的节点作为获胜节点。在调整完获胜节点的权值后,还由近及远地调整了附近节点的权值,对于最近的给予较高的权值,较远的则给予抑制。通过把一个向量多次的输入到模型中进行反复的学习,以加强网络的抗干扰能力,最后使得某个特定模式的输入保持稳定的输出模式,即使由于某种原因使得个别神经元受损,整个系统对于某种模式的记忆和识别依旧可靠。
背景知识4:自适应共振理论
一种无监督学习的自组织神经网络。自适应共振理论在模拟人的大脑的时候最大的特点就是基于这样一个假设:人们在任何时候的判断总会受到之前学过的所有知识的影响。可以说自适应共振算是把人类的记忆功能纳入到神经网络中来,能够在保持神经网络原有模型的同时,将新的内容添加进去。
将ART 看做一个分类器,对于新输入的样本,ART 先从去网络已有的类型中进行查找,如果发现某个类模型和新输入的样本很接近的话,那就对该类的模型依据新样本进行调整,使得这个类模型能更好地代表该类。如果没有发现接近的类模型,那么就新建一个新的类模型,使得这个新建的类模型能匹配新样本。这相当于是对神经网络的输入进行了一个标准化的过程,同时把原有模型的记忆都存储在类模型之中,而被调整的对象也是已经被神经网络认可的模型,这样就可以在保持原有学习知识的基础上又加入了新的学习知识。
背景知识5:模糊神经网络
从知识的表达来看,模糊理论所表达出的知识具有很强的经验性,对于我们人类而言更容易理解,而神经网络所表达出来的数据之间的复杂性难于理解。在知识的存储上,模糊理论所表达出的知识被存储在规则集中,而神经网络则将知识存储在网络中的权系数和偏置之中。在计算量上,模糊理论同一时间使用到的规则不多,计算量小,而神经网络的计算量则较大。在知识的获取上,模糊理论依靠专家提供,而神经网络则依靠训练获得。
当往常规的神经网络中输入模糊信号,并且网络中的权值也采用模糊权值时,这样的网络就可以成为模糊神经网络。神经网络的输入输出节点代表模糊系统的输入输出信号,它的隐含节点代表模糊理论的隶属函数和模糊规则。首先依靠经验选择规则集和隶属函数,然后再利用神经网络的学习方法,依据输入的样本来调整设计的参数,可以总结为依靠神经网络对模糊系统的参数做调整,这也是目前研究最广泛的模糊神经网络。
模糊神经网络的学习过程主要是学习两样东西:结构的学习和参数的学习。结构学习指的是依据不同应用场景中的性能需求,确定选择怎么样的规则和函数、这些规则中的前提和结论、以及采用多少个这样的规则和函数的过程。参数学习就是依据训练样本调整这些模糊规则以及隶属函数的的参数的过程。
内容三(基于卷积神经网络的推荐算法):
1,局部感知和参数共享,卷积,池化
共享参数指的是共享生成隐含层神经元的权重矩阵以及它们的偏置。之所以能采取这样的策略,其中包含的原理是:图像的一部分统计特征与另外一部分是相同的。因此我们可以将从一部分习得的特征运用在另一部分上,因此对于图像上的所有位置,我们都可以使用同一个卷积核,这样便可以使得卷积神经网络要学习的参数数目大大降低。
池化一般包括平均池化和最大池化。
2,卷积神经网络结构
卷积神经网络的前面就是由若干个卷积运算和采样操作组合而成,最后一层的尾部是全连接的分类器,可以采用逻辑回归、softmax 回归或者是支持向量机,可以是包含隐含层的多层感知器也可以是简单的单层感知器,本文中采用的是单层感知器。
3,算法模型的构建
在初始化尾部的单层感知机的时候,我们在这里将它看做是一种分类,每一类归结为一个电影打分,这里采用的都是同一种策略。如图 3-4 所示,对于每一个输出节点,如果为该打分,那么该节点分数便为 1,否则为 0。
4,前向传播训练过程
1) 卷积层:使用权重矩阵 W 并做加权求和,此处的权重二维矩阵就是卷积核,卷积操作后再加上偏置并输入到激活函数sigmoid中。
2) 池化层:本文所采用的是平均池化的计算方法,因此此处的池化可以看做是一种特殊的卷积操作,池化操作不需要偏置,经过池化后得到了下一层的输入特征。
3) 尾部感知机:最后一层将一个训练块中的某个训练样本的所有输出连接起来,得到的输出向量乘上单层感知机的权重矩阵,并加上尾部感知机的偏置后做卷积操作,得到最终的输出结果。
4,反向调整误差过程
目的就是寻找合适的参数组合(W,b)使得 (LW,b) 最小。
梯度下降法反向传播:
5,离线训练
可以对用户进行聚类,相似用户在训练和推荐阶段使用同一组训练模型参数。
其中用户信息和商品信息都可以事先获得,并且把它们数字化。在离线训练模型阶段,利用数字化后的用户信息、商品信息和行为信息,对之前判定为同一类用户的采用同一种模型进行训练,在一定的时间段内定期地对模型的参数进行更新;在实时推荐阶段,只需要将采集到的行为数据与之前的数据进行融合,输入到模型之中,就可以实现实时推荐,算法的离线训练流程如图 3-8 所示。
内容四(MovieLens数据集实验):
Movielens数据集:943个用户,1682部电影,100000条评分。
数据包含主要三个表:用户表、电影信息表、评分表。
用户表包含:用户编号、用户性别、用户年龄、用户职业、用户地区一共 5 个字段。其中用户职业在这里一共包含 21 种不同的职业。而最后一个字段使用的是美国邮政编码 zip 码来标识用户所属的区域,区域字段包含的范围过大且不具备用户代表性,因此我们在使用数据集的时候忽略了该字段。电影信息表包含有:电影编号、电影名称、电影上映年份、以及电影所属类型。我在这里采用了电影上映时间以及电影类型字段,电影类型包含有一共 19 种类型。最后一个评分表包含有:用户编号、电影编号、分数、以及精确到秒的打分时间。
1,数据预处理
我们构造出来的初始输入数据,考虑到卷积神经网络的输入数据应该为类似图像的二维数组,我们将这样的数据以统一的方式转化为二维数组后输入卷积神经网络中。
2,算法实践
初始输入的时候,我们将 24 维的数据构造成一个 4*6 维的特征图,类似于一幅图像,每次输入的时候采用的块大小为 500 幅图像,进行三次迭代。
3,实验结果评价方法
本文提出的基于卷积神经网络的推荐算法在保持原有推荐精度的情况下又具有计算时间短的特点,利用卷积神经网络的两大神器——局部感知与参数共享,极大地减少了神经网络的参数个数,从而节约了计算时间,同时取得了不错的效果。之所以能够取得不错的效果,因为相对于图像而言,由以上信息转化而来的特征图具有更好的局部相似性,即在同一个位置上所对应的信息代表的同一个意义。
内容五(论文改进):
1,算法的冷启动问题。
2,数据的量化问题,尚不清楚各个职业之间的远近关系。
3,数据的构造问题。设计更合理的特征向量和卷积核大小。
4,模型的构建问题。为每一个用户或者是一类用户构建一组模型,这样在数据量很大的情况下或许能够取得不错的效果,就是运算量会增大许多。
5,并行地运行。目前实现的方法是在 matlab 上的单机版,可以移植到集群上,开发能在分布式集群上运行的并行版本。