改进的矩阵分解与BP神经网络在电影推荐中的研究

2022-12-08 07:23黎丹冰陈怡华吕雪松黎丹雨
现代计算机 2022年18期
关键词:神经网络矩阵函数

黎丹冰,丁 阳,陈怡华,吕雪松,黎丹雨

(1.武汉理工大学继续教育学院,湖北 430070;2.广州探途网络技术有限公司研发部,广州 510000;3.广州新华学院信息科学学院,广州 510000)

0 引言

目前主流平台及应用程序(APP)为了提升用户体验,增加平台对用户的粘性,都提供推荐功能。在这个数据即价值的时代,不论是新闻、电影、音乐,还是美食、书籍、服装等,平台都能够快速捕获用户的注意力,满足用户的需求,例如Amazon电子商务推荐系统[1],Netflix视频推荐系统,今日头条新闻推荐系统[2]等。在电影推荐领域,电影信息与用户信息的交互度不高,使得数据呈现极度稀疏状态,从而造成传统的电影推荐系统个性化不强,很多平台推荐给用户的电影都是一些热门电影,但这并不能代表一定是用户偏爱的电影。因此,针对用户的个性化电影推荐,满足用户的兴趣需求,是一个长期棘手的问题。

目前推荐系统最常用的算法大致可分为以下几种:

(1)矩阵分解技术:是推荐系统中广泛使用的一种方法,Yehuda Koren将矩阵分解模型的优势发挥得淋漓尽致。近年来很多学者、专家都致力于对矩阵分解算法进行优化,从而诞生出很多经典的矩阵分解算法,例如加权正则化矩阵分解(WRMF)[3],非负矩阵分解(NMF)[4],概率矩阵分解(PMF)[5],贝叶斯个性化排序(BPR)[6],分解机(FM)[7],等等。

(2)协同过滤技术:该方法主要有两种,基于用户的协同过滤算法(User CF)和基于物品的协同过滤算法(Item CF),依据对商品的评分来向用户推荐商品。

(3)深度学习技术:将深度学习模型应用于推荐系统,使模型自主学习用户和物品的特征,进行精准推荐是当前研究的热点。深度学习模型具有强大的学习和预测能力[8]。电影推荐系统中,针对电影的评论、图片海报等信息,可利用深度学习模型提取特征来代替用户的兴趣或电影属性。

1 相关研究

推荐算法中的矩阵分解最初是从SVD(singular value decomposition)借鉴来的。推荐系统中的矩阵分解最典型的就是隐语义模型(LFM)[9],诸多学者在此基础上进行优化和改进。尤耀华等[10]提出基于矩阵分解的感知兴趣点智能推荐算法,该方法改进用户范围矩阵和感知兴趣点矩阵,利用矩阵分解的思想为用户推荐感知兴趣点,可信度最高可达98%。潘晓等[11]在轨迹推荐中使用了矩阵分解技术,通过矩阵分解学习用户行为习惯。蔡崇超等[12]结合社交网络中的用户关系,来缓解矩阵的稀疏性,最终推荐精度在Douban数据集上提升62%,但该方法没有考虑用户的兴趣及关联关系。张黎[13]将矩阵分解技术引入到深度学习模型中,提出一种加权神经网络矩阵分解模型。白露露[14]融合了矩阵分解思想与深度学习模型,利用卷积神经网络(CNN)提取用户和物品的浅层语义矩阵,并利用矩阵分解思想进行评分的预测。田震等[15]在广义矩阵分解模型的基础上引入了隐藏层,利用深层神经网络模型来学习用户和物品间高阶交互关系,但是网络层数的增加会导致模型过拟合。由此可见,矩阵分解和深度学习的发展也在影响着推荐系统。

本文将矩阵分解思想与神经网络结合,利用矩阵分解进行初始值的筛选,改进神经网络中损失函数的优化方法,使最终的参数更加接近全局最优解。

2 模型的构建

2.1 问题描述

MovieLens电影数据集提供的数据属性有多种,例如用户的基本信息、评分、电影的名称、年份、类型等,本文根据数据集中的movie ID、user ID和rating之间的关系,创建原始电影评分矩阵和评分记录矩阵,并分解出电影内容矩阵与用户喜好矩阵,结合BP神经网络学习模型生成推荐列表。整体架构图如图1所示。

2.2 原始属性筛选及矩阵分解

2.2.1 原始属性筛选

电影原始数据的属性有user ID、movie ID、rating、timestamp、title、genres等。需要用到的关键属性有user ID、movie ID、rating、title。由于movie ID并不等于行号,并且远远大于行号,故需要用行号代替movie ID,以缓解矩阵的稀疏性。

2.2.2 利用矩阵分解进行初始权值及阈值筛选

(1)隐语义模型(LFM)

LFM是用隐语义来表达用户和物品的特征,其乘积可以得到近似原始数据。假设有m部电影,电影集合为I={i1,i2,…,im},n个用户,用户集合为U={u1,u2,…,un},评分矩阵R为用户对电影的评分,LFM的目的是找到最优的U和I,通过U×I得到预测评分矩阵R̂。为了获得更精确的U和I,LFM最小化损失函数,见式(1)。

其中,φ为正则化系数,通过随机梯度下降法(SGD)找到潜在的U和I。

(2)本文中的相关矩阵分解方法

本文将用户-电影评分矩阵分解成电影内容矩阵α和用户偏好矩阵β。创建一个全零矩阵,行和列分别为电影及用户的数量,即m与n。再将原始rating中的评分值填入创建的矩阵中,没有评分的即为空。由此得到m×n的电影原始评分矩阵A,用来记录每个用户的评分情况。A的形式如下:

其中,Aij表示用户j对电影i的评分值。

电影内容矩阵α可表示为电影i的类型,数据集中的电影类型有:Action/Adventure/Animation/Children's/Comedy/War等,每部电影类型并不单一,可同时属于几种类型,如表1所示。

表1 部分电影类型情况

α为m×k的矩阵,其中k为电影类型数量。

αxy表示第x部电影的第y种类型的权重。

β表示用户对某种类型的喜爱程度,为k×n阶矩阵。

βxy表示第x个用户对第y种类型电影的评分均值。

则̂即为预测的用户评分矩阵:

2.3 BP神经网络模型构建及使用

步骤如下:

(1)使用用户对每种电影类型的评分均值,初始化α、β;

(2)构建损失函数J(α,β);

(3)使J(α,β)误差最小化,训练模型;

(4)得到预测评分矩阵̂,并根据̂中的评分由高到低进行推荐。

2.3.1 损失函数的设计

本次构建的损失函数如下,在误差评分和的基础上引入正则化项来防止过拟合:

其中,前半部分表示预测评分与实际评分之间的偏差,后半部分是为了避免训练过拟合而引入的正则化项。γ评分记录表,λ为正则化参数,y(i,j)表示用户i对电影j的真实评分。

2.3.2 自适应矩估计算法(Adam)的改进

Adam算法是常用的优化训练方法,优点是经过偏置校正后的参数比较平稳[17]。

Adam算法参数更新方式如下:

初始化参数:

while(迭代次数t<设定最大迭代次数tmax):

修正mt和vt:

更新参数:

其中,θ为初始参数,gt为t步的梯度,β1为一阶矩估计指数衰减率,β2为二阶矩估计指数衰减率,mt和vt分别是对梯度的一阶矩估计和二阶 矩 估 计,和是 对mt和vt的 校 正,对学习率形成一个动态约束,但在后期有一些小的缺陷,Adam算法中对vt的计算加入了指数移动平均函数,其值为有效时间内的梯度的加权平均值,随着时间的变化,学习率可能会出现震荡。

针对上述问题,本文结合时间函数和高斯核函数的方法,来训练后期学习率的更新。该方法主要思想是为每个时间段学习一个学习率参数,添加时间距离作为权重。对于这些随时间变化的函数,结合高斯核方法,获得前n-1次迭代的时间集合T={t0,t1,…,tn-1},利用高斯核计算时间相似性计算前n-1次迭代在时间上的相似性,使用时间相似性对参数γi(ti)进行加权,得到第n次迭代的学习率。

其中,γi(ti)为时间ti时的学习率,τ为时间衰减指数。在训练过程前期,模型还未达到稳定状态,时间因素影响不大,可使用Adam优化器进行训练,当训练步长大于设定阈值t0时,学习率的更新规则如公式(16)。学习率更新如图2所示。

3 实验结果及分析

3.1 实验数据集

本次实验用的数据集是MovieLens 1M,该数据集是机器学习和推荐系统常用的公开数据集,记录了6040个用户对3952部电影的1000209条评分记录。随机选取数据集的80%作为训练集,20%作为检验集,检验推荐系统的性能。

3.2 实验平台及评价指标

实验在Windows10系统环境下,采用Anaconda3平台进行网络训练,实验中的所有代码由Python3.7编写完成。激活函数选择Relu函数,输出函数为Sigmoid函数,用Adam算法优化3层BP神经网络,根据迭代次数的不断调整,最终选择迭代次数为5000次。

本文的评价指标包括准确率(Accuracy)和平均绝对误差(MAE)。

准确率的计算过程如式(17)所示:

式(17)中,n为用户数量,N为推荐列表中用户真正喜欢的数量,L为给用户m推荐的列表长度。

平均绝对偏差MAE体现预测与真实评分之间的偏差平均值,计算过程如式(18)所示:

式(18)中,n为用户数量,pi为预测评分,ri为测试数据中的实际评分。因此,准确率越高,说明模型性能越好;MAE值越小,说明误差越小,模型的性能越好。

准确率随迭代次数的变化如图3所示。

3.3 实验结果及分析

3.3.1 不同近邻数目下的结果比较

该实验用于验证深度学习模型在电影推荐系统上的性能。取最小近邻数分别为10、20、30、40、50的情况下,通过计算Top-N结果,对比基于用户的协同过滤User CF和基于项目的协同过滤Item CF,观察准确率和MAE值。结果分别如图4和图5所示。

实验结果显示,本文所提改进的矩阵分解与神经网络模型推荐方法,在不同的近邻数上,性能指标变化不大,这可能是由于BP神经网络中超参数和结构确定下来后,模型的学习能力受限所导致的。但是在上述这些指标上本文的方法对比基于项目和基于用户的传统协同过滤方法,均有较好的效果。

图6 和图7的结果表明,Adam优化器和改进后的Adam优化器,稍微优于SGD优化器,在迭代次数较小时,前两者的准确率基本一致;当迭代次数增加,模型的训练时间变长,改进的Adam优化器的优势才逐渐体现出来。

4 结语

本文利用改进的矩阵分解方法与BP神经网络模型结合,将用户对电影的评分矩阵分解成电影内容矩阵与用户爱好矩阵,利用BP神经网络进行学习,训练过程使用了改进的Adam方法,在MovieLens数据集上进行验证,并分别与User-CF和Item-CF算法,以及Adam与SGD优化器进行了对比。实验结果表明,本文提出的方法比传统协同过滤算法的推荐效果更好。在与Adam和SGD的对比中,前期效果不明显,但随着时间增加,优势逐渐显现出来。

猜你喜欢
神经网络矩阵函数
基于神经网络的船舶电力系统故障诊断方法
基于递归模糊神经网络的风电平滑控制策略
函数备考精讲
基于神经网络的中小学生情感分析
多项式理论在矩阵求逆中的应用
基于Q-Learning算法和神经网络的飞艇控制
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
矩阵
矩阵