计算机系统应用  2020, Vol. 29 Issue (6): 204-210   PDF    
可视化支持下CNN在个性化推荐算法中的应用
宗春梅1, 张月琴2, 赵青杉1, 郝耀军1, 郭玥鑫3     
1. 忻州师范学院 计算机系,忻州 034000;
2. 太原理工大学 计算机科学与技术学院,太原 030024;
3. 西安工业大学 西北兵器工业研究院,西安 710021
摘要:传统的基于协同过滤的推荐方法可以挖掘出评分中隐含的特征, 但推荐过程时间长, 且评分矩阵具有稀疏性, 导致样本真实值与预测值间误差较大. 神经网络通过批量训练可以较快计算出对象特征, 卷积神经网络的局部感知与参数共享性使参数个数明显缩减, 利用普通神经网络及卷积神经网络共同实现推荐可使计算时间缩短; 通过调整神经网络的参数, 为卷积神经网络设计合理的特征向量和卷积核大小, 可以提升推荐速度和推荐准确性. 实验表明, 使用神经网络结合卷积神经网络进行推荐的方法能使推荐的绝对误差均值下降至0.67以下, 大幅提升推荐的准确性及有效性.
关键词: 神经网络    卷积神经网络    个性化推荐    可视化    Tensorboard    
Application of CNN in Personalized Recommendation Algorithms Supported by Visualization
ZONG Chun-Mei1, ZHANG Yue-Qin2, ZHAO Qing-Shan1, HAO Yao-Jun1, GUO Yue-Xin3     
1. Department of Computer Scienceand Technology, Xinzhou Teachers University, Xinzhou 034000, China;
2. College of Computer Science and Technology, Taiyuan University of Technology, Taiyuan 030024, China;
3. Northwest Institutes of Advanced Technology, Xi’an Technological University, Xi’an 710021, China
Foundation item: General Program of National Natural Science Foundation of China (61876124); Education Reform Project of Xinzhou Teachers University (JG201813); Scientific Research Program of Xinzhou Teachers University (2019ky02)
Abstract: The traditional recommendation method based on collaborative filtering can mine the hidden features in the score, but the recommendation process takes a long time, and the score matrix is sparse, resulting in a large error between the real value of the sample and the predicted value. Neural network can quickly calculate the characteristics of objects through batch training. The number of parameters is significantly reduced by the local perception and parameter sharing of convolutional neural network. The calculation time can be shortened by using common neural network and convolutional neural network to realize recommendation together. By adjusting the parameters of neural network, the reasonable feature vector and convolution kernel size for convolutional neural network can be designed to improve recommendation speed and accuracy. Experimental results show that the method of combining neural network with convolutional neural network can reduce the mean value of absolute error of recommendation to below 0.67, and greatly improve the accuracy and effectiveness of recommendation.
Key words: neural network mode     convolutional neural network     personalized recommendation     visualization     Tensorboard    

推荐算法是一种信息过滤技术, 通过总结用户在过去的一段时间内留存在网络中的信息找到其中的规律, 利用这些规律从需要推荐的项目集合中确定用户可能感兴趣的某些项目或者产品, 进而主动向用户提供推荐信息[1]. 传统方法是使用各种协同过滤算法实现推荐, 但用户评分数据却很稀疏, 导致推荐质量及速度下降, 针对协同过滤中存在的稀疏矩阵的问题有学者引入了降维技术对用户进行聚类, 降低了用户特征维数的同时实现了推荐的信息的实时性, 同时为该推荐系统添加了对数据的隐私保护[2-4], 但推荐的时间及精准性仍然与目标相距较大.

近年来深度学习被成功的应用于推荐领域并取得了巨大的成功, 尤其是神经网络, 能从数据列中获取最有信息量的部分, 卷积神经网络在文本特征的提取中得到了很好的应用[5,6]. 基于此, 本文对神经网络的个性化推荐算法进行研究, 依据神经网络、卷积神经网络和推荐算法的各种理论构建实现算法的网络模型, 以此预测用户对电影的评分, 实现基于神经网络的个性化推荐. 在使推荐结果更优化的同时有效减少数据稀疏性对推荐结果的影响, 提高电影推荐速度及质量.

1 背景知识及相关工作

传统的推荐方法在学者们不断改进下取得了很好效果. 文献[7]提出基于一种算法改进评分填充矩阵, 在一定程度上缓解了协同过滤推荐中的数据稀疏性问题, 并弥补了空值填补法填补值过于单一的问题. 文献[8]提出协同过滤利用相似度计算邻居用户, 从而以邻居用户的偏好对目标用户的偏好进行推荐预测, 提高了电影推荐质量. 文献[9]引入社区划分的思想, 构建了一种融合电影类别、用户评分和用户标签的电影推荐模型, 有效解决了数据稀疏性问题. 文献[10]提出一种改进的时间加权协同过滤算法, 利用时间加权的聚类结果优化算法使预测评分准确性大幅度提升. 但数据稀疏、冷启动、手工提取特征过多等问题仍然是传统推荐方法性能提升的瓶颈问题.

随着卷积神经网络应用的日渐成熟与推广, 学者们提出了各种基于此算法进行用户和项目隐藏特征之间的关联分析从而实现基于关联的推荐, 并通过大量实验证明该方法在大规模数据环境下从各方面显著提高了推荐性能, 证明深度学习方法对许多关联分析任务是有效的[11,12]. 文献[13]以电影推荐为研究对象, 提出了融合动态协同过滤和深度学习的推荐算法, 以解决在电影评分推荐场景中的数据稀疏性、冷启动和信息过期问题, 实验结果表明电影评分预测的准确性提高了. 但是算法也存在算法复杂且可解释性差、算法中的参数选取费时且影响着算法性能等缺点.

文献[14]提出尝试基于深度学习来加强个性化推荐, 提出将层叠降噪自动编码器与隐含因子模型相结合的混合推荐方法, 综合考虑评论文本与评分, 以提升推荐模型对潜在评分预测的准确性. 实验结果表明: 与传统推荐模型相比, 该文提出的方法可有效提高评分预测的准确性, 性能提升最高可达64.43%. 文献[15]提出一种融合径向基函数的二值化卷积神经网络的推荐模型, 通过对推荐系统中的用户属性和项目属性建立了RBF网络, 使用径向基函数计算用户与用户之间的相似度矩阵, 再结合卷积神经网络进行推荐预测, 极大节省数据存储空间并提高推荐效率. 文献[16]提出了一种基于注意的卷积神经网络和因子分解机的推荐算法, 利用所建立的因子分解机分析用户和项目隐藏特征之间的关联, 并实现基于关联的推荐. 实验证明推荐性能得到了显著提高, 另外在数据稀疏和冷启动的极端环境下该推荐精度也优于其他推荐方法. 文献[17]提出了一种基于生物机制驱动的特征构建的答案推荐方法用于社区问答中推荐相应给定问题的最佳答案, 通过引入回答者的用户信誉信息来模拟记忆处理特性, 然后构造出用于答案排序的特征向量, 通过特征向量得到最佳答案, 并在StackExchange数据集上的实验, 结果表明该算法具有很好的性能.

综上所述, 神经网络的批量处理及大幅度循环训练的特性可以克服传统的基于协同过滤推荐方法推荐过程时间长的问题, 且卷积神经网络的卷积与池化流程可以适度解决评分矩阵稀疏性问题. 因此, 本文提出一种神经网络算法, 通过对特征向量和卷积核大小等参数的调整实现推荐速度和推荐准确性的提升, 进而在实验过程中通过误差均值等参数来验证神经网络推荐方法在许多性能上优于传统协同过滤推荐方法, 从而说明算法的有效性.

2 本文提出的推荐模型 2.1 相关模型

本文选取构建神经网络的方法进行推荐算法的实现即神经网络推荐算法(Neural Network Recommendation Algorithms), 所设初期计模型将其称为NNRAM_1. NNRAM_1中, x_y_embed_layer是将x对象的y数据引入嵌入层后转成的向量矩阵, 其中向量的值是–1到1之间的随机数, 本质就是数据降维; x_fc_layer是x对象的隐含层; concatenate是做“层”拼接; dense作为输出层用以产生x对象的特征矩阵x_combine_layer_flat; inference是进行预测评分. 算法模型NNRAM_1具体步骤如下:

(1) 构建神经网络模型实现用户特征的提取. 模型包含4层: 输入层、嵌入层、隐含层、输出层, 具体如图1所示. 预处理后的用户数据由输入层接收后, 首先经过嵌入层, 目的是将用户的id、年龄、性别和职业等属性矩阵分别转成向量矩阵, 实现数字化; 其次将嵌入层产生的4个向量矩阵分别送入隐含层; 最后, 经过在隐含层对用户年龄及职业做相应加权处理后, 将4个隐含层矩阵合并送入输出层, 生成聚合的用户属性特征.

图 1 获取用户特征的模型

(2)与用户特征的提取同理, 将处理后电影数据中电影id和电影类型以同样的方式处理产生电影基本信息特征. 对电影名称做文本卷积处理, 如图2所示, 虚线内部分可以循环多次. 首先初始化卷积核的参数和偏置的参数, 指定需要做卷积的文本、卷积核的大小以及卷积的步长. 对于卷积核数的选择可以尝试随机选取数值, 亦可从3起步, 进而选择使用Tensorboard可视化进行监控的方式来观察损失率的变化情况, 从Loss的信号曲线防止过拟合, 反复观测即可尽快确定卷积核数量最佳范围. 当然, 卷积核越小则网络中所需参数数量和计算量就越小. 激活选用ReLU方法, 池化选用max_pool方法, 处理过后生成电影名全连接矩阵; 最后将电影信息所产生的3个局部全连接合并在一起做全连接并输出, 生成电影特征.

图 2 获取电影title特征模型

(3) 将第(1)步和第(2)步中所获得的特征值进行运算, 产生最终的预测评分, 如式(1)所示. inference表示预测评分, A为用户特征, B为电影特征, 考虑到预测评分中用户特征与电影特征所占比例可能存在不平衡性, 为AB设置权重w0w1. 实际评分均为整数, 预测评分为实数, 所以设置偏差b以缩小两者之间的差距. 实验中, 各模型未明确说明时, w0w1b的值分别为1、1、0.

$ P_{\rm inference} = \sum \sum \left( {w_0*A + w_1*B} \right) + b $ (1)
2.2 模型评价标准

推荐算法评价是验证推荐算法是否合格的重要环节之一, 常用指标包括准确度与决策支持精度, 本文主要使用统计精度度量中的平均绝对误差(Mean Absolute Error, MAE), 来进行模型评价. MAE的评价方式为计算预测评分与实际评分二者的绝对平均误差, MAE越小代表预测结果更趋近于真实值, 即推荐结果较优. MAE评价公式如式(2)所示, 式中n为测试集合元素数, xi表示实际评分, yi表示预测评分.

$ E_{\rm MAE} = \frac{{\displaystyle\sum\limits_{i = 1}^n {\left| {{x_i} - {y_i}} \right|} }}{n} $ (2)
3 实验与结果分析

实验中, 将MovieLens-1M数据集分成训练集和测试集, 训练数据与测试数据比为9:1, 先将训练数据投入网络模型进行训练, 训练的最终目的是得到预测评分. 训练结束后, 算法模型得到保存. 训练好的网络模型用测试数据进行测试, 以验证模型的性能, 最后使用模型进行推荐.

3.1 数据集及数据预处理

论文所用数据集是MovieLens-1M, 是将近6000个用户在将近4000部电影上所有评论, 有一亿多条评分数据. MovieLens-1M有3个数据表: 用户数据表、电影数据表、评分数据表. 其中用户数据分别有用户id、性别、年龄、职业id和邮编等字段; 电影数据分别有电影id、电影名和电影风格等字段; 评分数据分别有用户id、电影id、评分和时间戳等字段.

在使用之前需要对现有数据进行预处理. 将用户数据中的年龄和性别字段分别转化为数字. 其中性别中代表男性的M和代表女性的F转化为1和0; 对于年龄数据将其分为7段, 依次用0到6表示. 电影名称和电影类型通过数据字典将其转化为数字. 电影名称数据信息分裂为两个字段信息, 电影文字标题及电影年份, 进而将电影文字标题转成数字字典, 首先将电影名称分成字符串列表, 然后将每一个单词字符串变换成一个数字字符串; 在电影类型数据中, 电影类型的处理同电影名称转成数字字典, 也是一个单词对应一个数字.

3.2 参数设置

模型NNRAM-1中, filter_num数量为8, batch_size数量为256, dropout_keep数量为0.5, learning_rate数量为0.0001. 经训练后, train time(s)为329.6 s, 损失率为0.833 526, MAE为0.717 517.

在NNRAM-1中参数值filter_num、batch_size、dropout_keep、learning_rate不变的情况下, 将网络模型中全连接层的维数由200更改为50产生模型NNRAM-2, 发现其训练时间缩短将近一半, 而Loss及MAE均有所下降. 在进行数据挖掘时发现, 电影的年份数据未得到使用, 而根据观影者的日常选择, 影视作品的年份在很大程度上影响着观影者对其的选取, 所以在读取评分数据集后, 将电影标题中的年份取出并与现在年份做差运算获得的信息参与到电影信息特征提取中, 产生模型NNRAM-3(全连接层维数为200)与NNRAM-4(全连接层维数为50), 实验结果表明在更改模型设置后, 训练时间、损失函数及平均绝对误差均有所下降. 训练结果对比如表1所示.

表 1 相关模型训练结果参数对比

继续对模型NNRAM-4进行改进, 卷积核的数量决定着计算时间的长短及特征提取的准确度, 批处理量的大小影响着权重更新的质量, 学习率的适度设置可以加快学习的速度, 因此对更改模型的卷积核个数filter_num, 对批处理参数batch_size、学习率learning_rate值进行调整以达到运行结果相对最优, 具体如表2所示; 再将数据经过嵌入层、连接层及全连接层时的维度进行缩减; 考虑到电影标题相当于一句话, 一般词组的词素量为2~3个, 由此改变文本卷积时滑动窗口的单词数量, 使其适量减小. 通过以上参数的调整产生了模型NNRAM-5、NNRAM-6、NNRAM-7, 模型部分参数值如表3所示. 模型NNRAM-7中, 求inference时w0w1b的值分别为0.4、0.6、0.28.

表 2 相关模型部分参数对比

表 3 相关模型数据维数对比

3.3 实验结果分析

依次运行所设计的3种模型, 实验结果如表4所示.

表 4 改进后相关模型参数对比

当模型中各层的维数适量减小时, 训练时间会大幅减少, 如图3所示. 而卷积核数量的适量减少及卷积时滑动窗口的数量的合理设置会使损失函数及平均绝对误差(MAE)有所下降, 如图4所示, 这意味着推荐的准确性随之增加.

图 3 改进模型间训练时间对比

图 4 改进模型间性能对比

当对NNRAM_1与NNRAM_7的3次推荐结果进行对比时发现, 加入与时间相关的字段后的模型NNRAM_7所推荐的电影日期上都比较新颖, 而未改进的模型NNRAM_1所推荐的电影中部分时间比较久远, 如表5所示. 电影年份早或过早, 意味着效果不佳, 被推荐对象与观影者猎新习性相违背, 观影需求可能性较小. 改进后的模型NNRAM_7所推荐电影的时间均为与现在时间相近的, 符合观影者需求, 所以推荐结果更容易被观影者接纳.

表 5 相关模型推荐结果对比

文献[18]中所提及的3种算法改进的SlopeOne算法、组合协同过滤算法、SVD和CURE协同过滤算法的MAE分别为: 1.5、1.38、1.57; 文献[19]中所提及的两种算法UIPPSCF和UCF的MAE分别为: 0.791、0.824; 将SlopeOne算法、组合协同过滤算法、SVD和CURE协同过滤算法、UIPPSCF算法、UCF算依次定位M1~M5, 联合NNRAM_7算法其MAE对比如图5所示. 将NNRAM_7的MAE值与前5种模型的MAE值作对比发现, NNRAM_7的MAE值比前5种的平均降低了将近44%.

图 5 传统及改进模型间MAE对比

3.4 Tensorboard实现可视化

在神经网络的训练过程中, 可以通过Tensorboard来记录、监测每个epoch的梯度值并以做出梯度消失、梯度爆炸等问题研究, 可以实时检测每次循环后损失率的变化及走势, 可以分析出权值的更新方向并判断其是否符合规律, 继而对神经网络学习率等参数做出相应的设置和调整以解决现有问题.

(1)损失率(Loss)可视化

Loss图像如图6所示, 损失率随着迭代次数的增加在不断下降, 下降过程虽然存在震荡, 但整体持续下降趋势非常明显, 损失率在不断降低. 通过观测下降趋势, 可以考虑继续加大训练次数以降低损失率, 并且这一过程时间损耗并不明显.

图 6 损失率与迭代次数的关系

(2)梯度更新

卷积层中权重曲线纵坐标表示训练次数, 横坐标表示权重值, 曲线说明权重值随着网络的训练也在波动做调整变化. 良好训练的网络其偏置及权值反映在曲线上是美观、光滑的, 曲线缺乏结构性则表明训练不够理想. 电影标题先后两次池化过程中偏置bias和权重weight的直方图如图7所示, 对比图像可知训练效果良好.

图 7 电影标题池化过程中偏置bias和权重weight的直方图

4 结束语

本文尝试了将普通神经网络与卷积神经网络相结合应用于推荐过程中的方法, 将特征提取的过程用卷积神经网络来实现, 所形成的模型通过预测评分实现了准确率较高的电影推荐, 且在推荐速度和推荐准确性等性能方面相对协同过滤推荐方法有大幅度提升, 说明神经网络可以较理想的实现精准性更高的推荐结果, 虽然在适度的有限循环内模型的损失函数及平均绝对误差呈现着明显的下降趋势, 但还有待通过改进模型结构及调整参数取值进一步降低损失, 使误差趋近于最低值. 另外, 可以考虑将时间戳字段中日期时间的所有信息取出参与数据挖掘, 因为影评的及时性也体现出观影者对电影的情感深度, 同时观影的日期时间等信息也暗含了观影者的其它诸多个人特征如职业及生活习性等, 极具研究价值.

参考文献
[1]
常家伟, 戴牡红. 基于PageRank和谱方法的个性化推荐算法. 计算机科学, 2018, 45(S2): 398-401.
[2]
鲜征征, 李启良, 黄晓宇, 等. 基于差分隐私和SVD++的协同过滤算法. 控制与决策, 2019, 34(1): 43-54.
[3]
裴剑辉. 基于矩阵分解与Slope One的电影推荐方法研究及应用[硕士学位论文]. 重庆: 重庆理工大学, 2019.
[4]
肖成龙, 王宁, 王永贵. 融合社交网络与关键用户的并行协同过滤推荐算法. 计算机应用研究, 2019, 36(10): 2938-2942.
[5]
陈巧红, 王磊, 孙麒, 等. 卷积神经网络的短文本分类方法. 计算机系统应用, 2019, 28(5): 137-142. DOI:10.15888/j.cnki.csa.006887
[6]
Hu QT, Han ZM, Lin XF, et al. Learning peer recommendation using attention-driven CNN with interaction tripartite graph. Information Sciences, 2019, 479: 231-249. DOI:10.1016/j.ins.2018.12.003
[7]
向小东, 邱梓咸. 基于slope-one算法改进评分矩阵填充的协同过滤算法研究. 计算机应用研究, 2019, 36(4): 1064-1067.
[8]
李容, 李明奇, 郭文强. 基于改进相似度的协同过滤算法研究. 计算机科学, 2016, 43(12): 206-208, 240. DOI:10.11896/j.issn.1002-137X.2016.12.037
[9]
万慧, 周涛, 鲍胜利. 基于社区划分的电影推荐模型. 计算机应用, 2018, 38(S2): 124-127.
[10]
兰艳, 曹芳芳. 面向电影推荐的时间加权协同过滤算法的研究. 计算机科学, 2017, 44(4): 295-301, 322. DOI:10.11896/j.issn.1002-137X.2017.04.060
[11]
Xing SN, Liu FA, Zhao XH, et al. Points-of-interest recommendation based on convolution matrix factorization. Applied Intelligence, 2018, 48(8): 2458-2469. DOI:10.1007/s10489-017-1103-0
[12]
Wang J, Sun JQ, Lin HF, et al. Convolutional neural networks for expert recommendation in community question answering. Science China Information Sciences, 2017, 60(11): 110102. DOI:10.1007/s11432-016-9197-0
[13]
邓存彬, 虞慧群, 范贵生. 融合动态协同过滤和深度学习的推荐算法. 计算机科学, 2019, 46(8): 28-34. DOI:10.11896/j.issn.1002-137X.2019.08.005
[14]
张敏, 丁弼原, 马为之, 等. 基于深度学习加强的混合推荐方法. 清华大学学报(自然科学版), 2017, 57(10): 1014-1021.
[15]
雷妍, 贾连印, 李孟娟, 等. 融合RBF的二值神经网络推荐模型. 计算机应用与软件, 2019, 36(3): 76-80. DOI:10.3969/j.issn.1000-386x.2019.03.015
[16]
Pang GY, Wang XM, Hao F, et al. ACNN-FM: A novel recommender with attention-based convolutional neural network and factorization machines. Knowledge-Based Systems, 2019, 181: 104786. DOI:10.1016/j.knosys.2019.05.029
[17]
Fu HP, Niu ZD, Zhang CX, et al. Visual cortex inspired CNN model for feature construction in text analysis. Frontiers in Computational Neuroscience, 2016, 10: 64.
[18]
王雪. 协同过滤推荐算法的改进研究[硕士学位论文]. 鞍山: 辽宁科技大学, 2016.
[19]
陈恭泳. 个性化混合推荐算法及应用研究[硕士学位论文]. 北京: 中央民族大学, 2016.