基于双重注意力机制的降噪自编码器推荐算法 ①
2021-01-12王倩雯张延华付琼霄
王倩雯 张延华 付琼霄 李 萌 李 庆
(北京工业大学信息学部信息与通信工程学院 北京 100124)
0 引 言
随着技术的不断发展,信息量持续增长,用户身处信息爆炸化环境,无法快速寻找所需内容。搜索引擎虽然能满足某些用户的需求,但并不能学习用户偏好从而主动帮助用户搜寻合适信息[1]。而推荐系统在解决信息过载问题的同时可完成用户个性化推荐。
推荐系统主要分为三类,即基于内容的推荐、基于协同的推荐和混合推荐[2]。其中基于协同的推荐[3]可有效利用其他相似用户的反馈信息并推荐新鲜项目,现已经成为应用最广的推荐系统。但基于协同的推荐算法仍有明显不足,无法为零历史用户和新物品进行推荐,这就是推荐系统中常见的冷启动问题[4]。为了缓解这些问题,研究人员通常将内容信息融入协同算法中进行混合推荐。
近年来深度学习因特征提取能力强,在多个领域表现优异[5-6]。2007年,在Nexflix Prize推荐大赛上提出将深度学习应用于推荐系统。此后,基于深度学习的推荐系统研究受到国际学术界越来越多的关注,ACM推荐系统年会于2016年召开第1届基于深度学习的推荐系统研究专题研讨会,国内外许多研究机构也对基于深度学习的推荐系统开展了广泛研究。Du等人[7]将隐因子模型与多层感知机相结合,提出了一种新的群体推荐策略。利用多层感知机获取用户与项目之间的潜在联系,并根据推荐分数设计均衡推荐策略,确保群体用户的满意程度,有效提高了群体推荐准确率。Guo等人[8]结合因子化机和深度学习,提出了一种基于深度网络的因子化机模型进行点击率预测,该模型无需人工特征处理,省去了繁琐操作。He和Chua[9]基于因子化模型提出一种神经因子化模型,通过进行特征之间的高层次非线性交互提高预测能力,其参数少、隐层少、训练更加容易。Cui等人[10]则设计了一种模型特征交互图神经网络模型,可提升对特征间的复杂交互预测精度。进行建模自编码器作为深度学习模型中重要的一种结构,其学习能力已被大家认可。最早将自编码器应用于推荐领域的算法为基于自编码器的协同过滤算法[11],但它只能解决整数评分预测问题,且增加了评分矩阵的稀疏程度。
现有的方法部分已经取得了较为满意的效果,但仍有几个因素需要考虑以再度提高算法性能。之前的研究主要依靠单一的用户评分学习隐藏偏好,忽略了每个历史评分项目对预测结果的影响;将用户辅助信息直接加入推荐网络,没有考虑不同用户辅助信息的差异,无法充分利用该信息。
本文针对上述问题提出了一种基于双重注意力机制的降噪自编码器模型,主要贡献如下。
(1) 将用户与项目辅助信息融入降噪自编码器模型,扩充可利用的数据来源,解决冷启动问题。
(2) 利用注意力机制从用户历史交互项目中学习用户长期偏好以构建用户画像。
(3) 再次使用注意力机制学习用户偏好、用户辅助信息与隐藏层向量的权重,训练得到更为准确的评分。
本文在公开数据集上进行了仿真实验,结果表明本文方法准确度更高,证明了注意力机制的有效性。
1 相关工作
1.1 基于自编码器的推荐
在现有基于深度学习的研究中,大部分推荐算法是以自编码器为基础进行的。自编码器为一种无监督自学习,拥有强大的特征学习能力,可以捕捉到用户-项目间的潜在关系,这一特点使它深受研究人员欢迎。2015年,Sedhain等人[11]提出基于自编码器的协同过滤算法,它将基于用户或基于项目的评分作为输入,预测完整评分。这项研究对两种输入模型都进行了性能评估,发现基于项目的模型表现较好,因项目评分方差较小。Wu等人[12]在此基础上提出协同降噪自编码器模型,在模型中加入噪声数据与用户因子,提高了模型鲁棒性和推荐准确度。Chen等人[13]提出边缘去噪模型,用更少的训练时间获得更高的推荐性能。HRCD[14]模型将自编码器与时间感知的隐因子模型相结合,利用堆栈自编码器学习项目特征解决冷启动问题。基于自编码器的混合协同过滤[15]模型根据内容信息和隐式用户反馈将自编码器与矩阵分解模型结合从而进行推荐。在文献[16]中,利用栈式降噪自编码器学习隐式特征,并在学习过程中加入用户与项目的辅助信息。上述方法仅是简单的将辅助信息加入模型,未考虑每个用户打分行为受各因素的影响程度不同。本文模型则将注意力机制融入降噪自编码器模型中,动态学习辅助信息与用户偏好的权重,更准确地构造最终隐藏层向量,达到了更佳的预测效果。
1.2 注意力机制
注意力机制被广泛用于自然语言处理以及图像领域中,用于推荐领域的相关文章较少,直至2017年Google mind团队发表相关论文,引起了大家对注意力机制的广泛关注,相关文章也大量涌现[17]。Xiao等人[18]将注意力机制引入神经因子分解模型,提高了系统解释性和表示能力。Kang等人[19]提出一种基于注意力机制的序列预测模型,从用户交互中选出少量历史数据即可预测下一项目。Chen等人[20]利用注意力机制对多媒体推荐的隐形反馈进行建模。Seo等人[21]提出一种基于双重注意力机制的卷积神经网络模型学习用户偏好。Zhu等人[22]利用注意力机制学习用户动态特征。Cui等人[23]提出一种节点图神经网络推荐模型,通过注意力机制学习各个节点的兼容性得分,从而更准确地推荐合适项目。这些方法虽然取得了不错的效果,但是仅考虑了用户交互项目,无法解决冷启动问题。本文不仅利用注意力模型学习用户偏好,还融入了用户辅助向量,无论用户是否有历史数据,均可实现准确推荐。这使得本文算法在保证精度的同时解决了冷启动问题。
2 降噪自编码器推荐算法
2.1 算法架构
基于双重注意力机制的降噪自编码器是在自编码推荐算法的基础上提出的。推荐架构如图1所示。用户辅助信息、交互信息、历史评分作为该模型的输入,通过多层网络学习用户偏好与隐藏层向量,最终补全评分矩阵。
因普通降噪自编码器只利用了评分信息,忽略了用户辅助信息的影响,本文利用word2vec和卷积神经网络模型处理用户辅助信息。为了得到较准确的用户偏好,使用注意力机制从用户高分交互项目提取用户偏好向量。将用户偏好向量、辅助信息向量与降噪自编码器的隐藏层向量再次输入注意力机制模型,最终获得更精确的预测评分。算法伪代码如算法1所示。
图1 降噪自编码器架构
算法1 推荐算法 Input: Rating matrix R, user set User, item set Item, rating constant a, user auxiliary information X, item auxiliary information Y. Output: Prediction rating matrix R’. 1: Processing X, Y by word2vec to obtain user and item auxiliary information matrix U, I 2: function History (R, User, Item, I, a) 3: for u in User do 4: for i in Item do 5: if R(u, i)>a then 6: preference.append (I[i]) 7: end if 8: end for 9: end for 10:return preference 11:end function 12: function Encoder attention (R, U, Pf, preference) 13: Repeat 14: compute Pf according to Eqns.(1,2,3,4) 15: compute h1 according to Eqns.(9) 16: compute h∗ according to Eqns.(10,11,12) 17: compute R’ according to Eqns.(13) 18: for each parameter in Pf,h1, h∗, R’do 19: update parameter; 20: end for 21: return R’ 22: end function
2.2 信息预处理
用户评分受到诸多因素的影响,例如用户年龄、性别、地区以及电影名称、类别等,因此辅助信息在算法中显得尤为重要。为了获得用户与项目的辅助信息向量,需要对文本信息进行处理。用户与项目辅助信息如表1和表2所示。
表1 用户信息
表2 电影信息
将以上辅助文本信息均利用word2vec方法转化为向量,但电影标题需先除去无关信息,如年份。并将处理后的电影标题矩阵输入卷积神经网络,提取标题特征向量。若一个电影有多个类型向量则将类型向量相加获得最终类型向量表示。用户年龄、性别、职位等数字信息则转化为相应个数的向量,如年龄共分为7类,转化为7个a维向量。将处理后的用户与项目的多个辅助信息向量分别输入全连接层获得最终用户与项目辅助向量,由U和I表示,过程如图2所示。图2(a)为用户信息处理流程图,图2(b)为项目信息处理流程图。
(a) 用户信息处理流程图
图3 基于注意力机制的用户偏好模型图
2.3 获取用户偏好
为了获取准确的用户偏好,利用注意力机制处理用户交互项目,如图3所示。根据用户历史评分挑选出用户偏爱的n个项目,将项目矩阵输入注意力机制模型中,首先将项目矩阵经过激活函数处理,计算注意力系数并进行归一化处理,将得到的注意力系数与对应项目向量相乘,最终将获得不同注意力的项目向量相加得到用户偏好矩阵。公式如下:
(1)
(2)
(3)
(4)
2.4 基于注意力机制的降噪自编码器
2.4.1 自编码器
自动编码器(autoencoder,AE)采用前馈神经网络算法,由编码器和解码器两部分组成,包括输入层、隐藏层和输出层。自动编码器拥有3层全连接神经网络结构,输入层将n维输入向量x通过编码函数fθ映射到隐藏层h,具体计算过程如式(5)所示:
h=fθ(x)=s(Wx+b)
(5)
其中,W为输入层到隐藏层的权重,b为隐藏层神经元的偏置,s为sigmoid激活函数。
输出层则将h反向变换,得到原始输入x的重构y,如式(6)所示:
y=gθ(h)=s(W′h+b′)
(6)
其中,W′和b′为输出层的权重与偏置。通过不断地调整各层参数,可得到最小重构误差J,即输入输出尽可能接近。
J=∑x∈DL(x,y)
(7)
其中,D为输入的向量合集,L为重构误差函数。
2.4.2 加入注意力机制
如图4所示,将用户评分Ru加入高斯噪声后输入编码器得到隐藏层h1,将其与用户辅助向量I、用户最终偏好向量Pf输入注意力机制,计算其注意力系数并将数值映射到[0,1]区间内,将处理后的注意力系数与对应向量相乘,并将获得不同注意力系数的向量相加得到新的隐藏层向量h*,输入解码器获得完整预测评分R,公式如下:
(8)
(9)
(10)
Am=softmax(MWAm)
(11)
h*=Am·M
(12)
R=f(W*h*+b*)
(13)
图4 融入注意力机制的隐藏层模型
3 实验数据
3.1 数据集
实验使用的数据集为movielens,来源于movielens电影视频网站上用户对电影的评分,由grouplens小组整理得来,被广泛用于测试推荐算法的性能中。具体情况如表3,共有近10万条评分信息。
表3 数据集信息
3.2 评价标准
推荐算法性能的重要度量标准是评分预测准确度。平均绝对误差(MAE)和均方根误差(RMSE)两个标准都是用于观察预测评分与真实评分的偏离程度,数值越小表明算法性能越好。定义如下:
(14)
(15)
其中,N为预测的评分数量,r*为算法评分预测值,r为用户实际评分值。为了使算法性能对比更全面,本文同时记录了MAE与RMSE。
3.3 实验环境
本文实验均在处理器为Intel(R) Core(TM) i3-4170 CPU @3.70 GHz,内存为4 GB,操作系统为Ubuntu 17.10的台式计算机上进行,编程语言为python。
3.4 实验设计
在数据集上随机抽取80%作为训练集,剩余数据作为测试集,观察调整隐藏层节点数、学习率、batch size、误差优化方法等参数下的算法性能,结果如图5和图6所示。隐藏层节点过少时,网络训练性能过差,但节点过多时,网络训练时间延长,且容易陷入局部极小点。学习率是模型较为重要的参数,过小时学习速率太低,收敛速度慢,学习率过大则会导致模型无法收敛,因此本文测试了学习率在0.1~0.00001范围内的模型性能来判断最佳学习率。batch size数值过小时花费时间长,震荡范围大,反之易陷入局部最小值。而不同的优化算法对性能也有着较大影响,因此本文采用了常用的几种优化算法进行测试。从下图可以看出隐藏层为600,学习率为0.001,批样本数为100,优化算法为Adam时,算法性能最优。
图5 不同参数对RMSE的影响
图6 不同参数对MAE的影响
同样随机抽取20%的数据作为测试集,使用Autorec-U、Autorec-I、NRR、LSTM-A作对照方法,并根据参考文献分别设定各个算法的最优参数,进行对照实验,如图7和图8所示。Autorec-U是用户端的自动编码器算法,将用户评分集合输入自动编码器以补全用户评分矩阵从而进行推荐。Autorec-I为项目端的自动编码器算法,将项目评分集合输入自动编码器以补全项目评分矩阵从而进行推荐。NRR是基于门控递归神经网络的推荐算法,通过提取用户与项目的特征进行评分预测。LSTM-A是融合注意力LSTM的协同过滤推荐算法,用自编码器与长短期记忆网络提取用户与项目特征,融入概率矩阵分解模型中预测评分。
图7 不同算法RMSE对比图
图8 不同算法MAE对比图
从图7和图8可以看出,无论是RMSE还是MAE,本文算法均优于其他算法。
4 结 论
传统推荐方法精度较低,忽略了用户对不同项目的偏好差异,针对这些问题,本文提出了基于双重注意力机制的降噪自编码器推荐算法。利用双重注意力机制获得用户潜在的项目偏好与用户辅助信息、评分隐藏层、用户偏好对评分的不同影响,最终获得更准确的评分矩阵。为了测试本文方法的推荐性能,通过实验演示了方法本身的调优过程,并从预测准确度方面同其他方法进行对比。实验结果显示,本文方法在预测精度方面优于其他方法。未来可考虑增加其他因素,例如调整用户近期评分权重可能会进一步增加评分精度。