融合三重注意力和评论评分的深度推荐算法
2022-06-02张宗海於跃成
张宗海,於跃成,冯 申
(江苏科技大学计算机学院,江苏 镇江 212100)
0 引 言
随着在线内容越来越多,推荐系统已经被越来越多的网站和应用程序用于缓解信息过载。协同过滤(CF)曾经是一种占主导地位的推荐方法,侧重于通过评分、点击和消费等历史记录对用户偏好和商品特征进行建模,以相似群体的偏好为依据进行当前用户的推荐[1]。矩阵分解方法(MF)基于用户评分矩阵,将用户偏好和项目特征表示为公共潜在空间中的潜在因素向量[2]。然而,CF和MF中的评分仅反映了用户对某一商品的总体满意度,没有解释原因。而且,MF方法没有在项目的各个方面实现用户偏好的细粒度建模,从而导致了难以解释的推荐和评分稀疏的冷启动问题[2-3]。
使用评论文本可以有效缓解上述问题。在大多数购物网站中,用户可以自由撰写评论。评论通常包含有关商品特性的大量信息(例如质量、材料和颜色),有时还包含指导性建议。这些建议对那些准备购买的人有很大的参考价值,评论也解释了用户为什么会给商品打出相应分数。现有的许多模型整合了用户评论,以提高潜在因素建模的性能[4-6],并生成解释[7-9]。文献[5]中的WSTM模型使用了一个潜在主题模型[10],主题的潜在分布来自项目的所有评论组成的文档。SCVR[8]这一类模型根据特定的项目特征生成满足用户兴趣的特征层面的解释。这些方法虽然取得了很好的效果,但也存在一些固有的局限性。一个很重要的问题是没有对评论信息进行有效筛选。在大量的评论信息中,有用性较差的评论信息不仅会带来噪声,破坏推荐系统的性能,而且对用户也不是很有用。因此,如何过滤干扰信息,有效地挖掘评论中的重要信息是本文研究工作的一个重点。
为了提取用户对商品的方面偏好,研究者们已经提出了各种不同的方法。ReEL[9]和MSRE[11]等基于方面的模型依赖外部领域知识来识别评论中的方面信息,建模用户偏好。基于主题的方法应用主题模型自动提取方面信息,将用户偏好和项目特征集成到方面重要性上[5-6,12]。由于强大的学习能力,研究人员将深度学习技术应用于评论处理,例如HRDR[7]、Transnets[13]、JRL[14]、ADRS[15]、ABOM[16]。TransNets[13]将用户和项目的评论分别作为2个并行CNN的输入,以学习用户项目表示进行评分预测。ADRS[15]将评论文本输入CNN进行自适应特征学习。ABOM[16]使用多通道深度卷积神经网络(MCNN)提取方面信息。这类深度学习方法有效地提取了用户和项目的非线性特征,而且能够关注到特定目标的特征信息。尽管这些方法获得了很好的性能,但是它们忽略了一个事实:用户对某个方面的关注或偏好对于不同的项目并不相同。它们假设用户方面注意向量在遇到不同项目时保持不变,是一种静态向量。然而,现实情况中当2个项目A、B属于同一类别时,用户可能非常关心项目A的方面k,而不是非常关心项目B的方面k,转而更在乎项目B的另一方面j。例如,面对2台电脑,对于价格高的电脑用户最在意是否美观,而对于价格低的电脑用户最在意CPU性能,对外观的要求则不高。因此,如何实现用户方面感知的细粒度建模,准确捕捉用户对不同项目各个方面的不同关注度是非常有必要的。
为了克服上述局限性,本文提出一种融合三重注意力和评论评分的方面感知深度推荐模型ANAP。该模型在评论文本输入神经网络之前和特征提取之后,分别构造2种不同的注意力网络从评论文本中提取重要信息,剔除无用信息。词注意层通过融合词的上下文信息来衡量词的重要性,降低非关键词的影响。特征注意层通过抑制相似度较高的通道,加强相似度较低的通道,提高模型对评论文本中重要特征的关注度。为了准确体现用户偏好,该模型构造了一个注意力交互网络来处理基于评论和评分提取的、异构融合之后的用户和项目特征,计算用户对不同项目各个方面的不同关注度。这个关注度对于每个用户-项目对是唯一的,而且是动态的,有效克服了在遇到不同项目时对同一方面关注不变的缺点,实现了用户方面感知的细粒度建模。
1 相关工作
1.1 卷积神经网络
卷积神经网络(CNN)是一种特殊的深层神经网络模型,拥有强大的容错、并行处理和自学习能力,善于挖掘数据局部特征,提取全局训练特征和分类,在众多领域取得了巨大的成功[17-18]。CNN主要由输入层、卷积层、池化层和全连接层组成,具体模型结构如图1所示。
图1 卷积神经网络模型结构图
输入层是对输入数据的矩阵表示。例如,对于长度为n的评论文本,输入层表示为:
E∈Rn×c
(1)
其中,c为词向量的维度。在卷积层中,多个卷积核滑过给定输入数据,计算卷积核和输入的滑动窗口的逐个元素相乘的总和,得到卷积核特征向量图:
z=f(W·x+b)
(2)
其中,x为卷积核窗口评论文本矩阵,W、b分别为权重矩阵和偏置,f为激活函数。一旦该局部特征被提取,它与其它特征之间的位置关系就被确定。池化层是CNN非常重要的一层网络。使用卷积层提取到的特征数据进行分类器训练通常会产生极大的计算量。因此,需要进行下采样对卷积结果进行降维处理,将卷积特征划分为数个n×n的不相交区域,用这些区域的最大(或平均)特征来表示降维后的卷积特征。这些降维后的特征更容易进行分类。全连接层是CNN的最后一层,用于对提取到的特征进行分类。
1.2 注意力机制
神经网络中的注意力是基于人类视觉注意的一种机制。通过将注意力的权重可视化,可以解释模型在生成描述符时看到的是图像或文本的哪一部分,解释模型正在做什么。软注意的主要思想是学习如何将注意权重分配给一组特征(求和标准化为1),较高(较低)的权重表示相应的特征对于最后的任务是相对重要(相对不重要)的。假设存在目标任务序列Q={q1,q2,…,qM}和源文本序列V={v1,v2,…,vN},源文本针对任务qt的注意力可以通过以下3个步骤进行计算。
1)计算任务qt和每个源文本vi的注意力得分eti,目前主要的计算方法有点积、缩放点积、拼接和相加等:
(3)
2)使用softmax等归一化函数处理注意力得分,得到每个文本的权重αti:
(4)
3)将权重αti加权求和得到最终的注意力输出:
Attention(qt,V)=∑iαtivi
(5)
其中,W、Y表示可学习的参数矩阵,w表示参数向量。
基于注意力机制的神经网络已成功应用于图像标注、文本分类等各种任务中。例如,基于注意力的CNN被用来对图像进行“编码”,而带有注意力的循环神经网络被用来生成字幕[19]。为了更好地刻画用户的偏好,ACF使用了2个注意力模块来学习和选择用户购买的多个项目中信息量最大的部分;ACF还将注意力模块与经典的隐式反馈CF模型结合[20]。后来,注意力还被用来建模评论文档的信息分布,结合CNN进行自动特征提取,在评分预测任务中取得了最先进的结果[21]。Cheng等人[12]强调了在不同方面(针对不同项目)考虑不同用户关注度的重要性,并提出了面向方面的评分预测模型。但是,该模型仅基于评论并且使用启发式算法来估计方面注意的权重。本文构造了一个方面感知的注意力交互网络,它使用从评论和评分中提取的特征,计算用户对不同项目的各个方面给予的不同关注度,准确捕捉用户偏好。实验结果表明,与已有的方法相比,本文的ANAP模型获得了更高的评分预测精度。
2 ANAP模型构建
本文提出了一种融合三重注意力和评论评分的方面感知深度推荐模型ANAP,模型结构如图2所示。ANAP由2个独立的特征学习模块组成:基于评论的特征学习模块和基于评分的特征学习模块。为了充分利用评论中的重要信息,本文在基于评论的特征学习模块中构造了2种不同的注意力网络:词级别的词注意层和特征级别的特征注意层;为了捕捉用户对项目的不同关注向量,构造了一种注意力交互网络处理用户和项目特征。在下文中,首先对2个特征学习模块进行介绍,其次详细描述注意力交互模块,最后基于得到的用户-项目表示进行评分预测。由于用户和项目的建模过程是相同的,所以本文将重点描述用户的建模过程。
图2 ANAP模型结构图(⊗表示基于元素的乘积,⊕表示异构特征的融合)
2.1 相关定义
对于一个用户u和一个项目i,每个用户-项目交互可以被表示为一个四元组{u,i,xu,i,ru,i},其中xu,i表示用户u对项目i的文本评论,ru,i表示用户u对项目i的数字评分。聚合一个用户的所有评论表示为Xu;同样,聚合一个项目的所有评论表示为Si。定义一个二元组{u,Xu}表示用户的行为,u表示用户,Xu表示该用户的评论文本集;同样,定义一个二元组{i,Si}表示项目的属性,i表示项目,Si表示该项目的评论文本集。主要目标是得到未知用户-项目对的预测评分,即给定用户u对他/她之前未交互过的项目i的未知评分。表1说明了模型中使用的关键符号及其定义。
表1 关键符号及其定义
2.2 基于评论的特征学习
2.2.1 评论聚合文本的词向量表示
给定评论文本xu,i={x1,x2,x3,…,xn},它由n个单词组成。与依赖词袋假设的基于主题建模的方法不同,为了使单词的顺序和上下文在嵌入的文档中保持不变,本文使用已经在大型语料库上预先训练的词向量模型Word2Vec[22]来初始化xu,i中每个单词的词向量,然后将这些词向量按照它们在评论文本中的出现顺序连接起来得到评论xu,i的评论文本矩阵E={e1,e2,e3,…,en}。因此,用户u的所有评论构成的文本文档对应的文本矩阵Du可以记为:
Du=E1⊕E2⊕E3⊕…⊕Em
(6)
其中,m表示用户u的所有评论的数量。词向量嵌入的具体算法过程如算法1所示。
算法1 评论文本词向量生成
输入:所有评论文本{u,i,xu,i,ru,i}
输出:用户评论文本矩阵Du、项目评论文本矩阵Di
1. FOR评论文本集合中的每一个用户u∈UDO
2. IFu={u,i,xu,i,ru,i}[0] THEN
3.将评论xu,i词向量化生成评论文本矩阵Eu,i
4.执行操作(1):Du=Du⊕Eu,i
5. END IF
6. END FOR
7. FOR评论文本集合中的每一个项目i∈IDO
8. IFi={u,i,xu,i,ru,i}[1] THEN
9.将评论xu,i词向量化生成评论文本矩阵Ei,u
10.执行操作(1):Di=Di⊕Ei,u
11.END IF
12.END FOR
13.RETURNDu,Di
其中,{u,i,xu,i,ru,i}[0]表示四元组的第1个元素,{u,i,xu,i,ru,i}[1]表示四元组的第2个元素。
2.2.2 融合上下文关系的词注意层
在本文的模型中,通过一个滑动的注意窗口来学习评论中哪些单词更具信息性。词注意层通过融合单词的上下文来计算当前单词在当前文本中的注意权重,使CNN能够捕捉到评论文本中的重点信息进行训练,减少非必要信息的干扰。
以用户评论文本矩阵Du={e1,e2,e3,…,eL}为例,其长度为L,取第i个单词为中心词ei,滑动窗口宽度为q,第i个单词的注意权重s(i)可以由参数矩阵Wa和偏置ba计算如下:
(7)
s(i)=δ(Xa,i*Wa+ba),i∈[1,L]
(8)
其中,*表示元素相乘和求和的运算,δ表示非线性激活函数,使用Sigmoid函数作为激活函数。s(i)是第i个单词的注意权重,如果一个给定单词的分数低于另一个单词的分数,则可以解释为:在ANAP模型中,得分较低的单词不如得分较高的单词重要。
wi=s(i)ei,i∈[1,L]
(9)
(10)
2.2.3 CNN特征提取
(11)
其中,*是卷积运算,bj是偏置项,f是激活函数。在本文模型中,使用ReLU作为激活函数,公式为:
f(x)=max{0,x}
(12)
(13)
在最大池化操作之后,卷积的结果被减少为一个固定大小的向量。该模型使用多个卷积核来获取各种特征,卷积层的输出向量记为:
Ou={o1,o2,o3,…,ot}
(14)
2.2.4 特征注意层
为了增强网络的表示能力,使更重要的评论特征信息得到关注,本文通过构建一个注意力网络建模通道之间的相互依赖关系,自适应地重新校准通道方向的特征响应。通过这种注意力网络,可以学习使用全局信息来有选择性地强调重要特征,抑制不太有用的特征,提高特征表示准确率。
如图3所示,首先,将用户评论文本矩阵经过CNN特征提取得到的特征图Ou和Oi(大小为:C×H×W)进行形状转换,得到特征图G(大小为:C×1×(H×W));其次,通过G中的通道相互点乘运算,产生相似性矩阵GGT;最后,为了抑制相似度较高的通道,加强相似度较低的通道,将GGT中最大的特征值与每一个特征值相减计算得到注意权重att:
图3 特征注意层原理示意图
att=softmax(max(GGT)-GGT)
(15)
将上一小节通过CNN特征提取得到的特征Ou进行加权得到新的特征,最终特征则表示为新特征与原始输入特征之和,公式如下:
Hu=α·(att•Ou)+Ou
(16)
其中,α为可学习参数,•表示向量的内积。
2.3 基于评分的特征学习
(17)
(18)
其中,Qu和Qi分别表示基于评分的用户和项目特征。
2.4 注意力交互
首先融合基于评论和评分提取的异构信息特征。融合后的用户和项目特征表示为:
pu=Hu+Qu
(19)
qi=Hi+Qi
(20)
其中,pu∈RK和qi∈RK分别为用户u和项目i的特征表示向量。
注意力交互部分是捕捉目标用户对目标项目不同方面的注意力向量,通过考虑用户对不同项目的各个方面给予的不同关注度,计算用户偏好的动态注意向量,实现更加细粒度的特征建模,得到用户-项目对的表示,用于随后的评分预测。设F=[f1,f2,…,fK]表示用户-项目对的输出表示,由下式可得到:
F=au,i⊗(pu⊗qi)
(21)
其中,⊗表示元素的乘积,au,i∈RK是用户u对项目i的关注向量,从方程中可以看出fk=au,i,k·pu,k·qi,k,其中fk表示F中的第k个因子,表示pu和qi之间每个因子的相互作用,存在一个关注权重au,i,k来捕捉项目i的这个方面k对于用户u的重要性,即用户u对项目i的方面k的关注度。因此,fk对于每个用户-项目对是唯一的。
依赖融合之后的基于评论和评分的特征(即pu和qi)来捕获用户u对项目i的各个方面的注意力,注意力向量计算如下:
(22)
(23)
2.5 评分预测
在这一节,本文通过多层感知机(Multilayer Perceptron, MLP)进行评分预测。将通过注意力交互网络处理得到的交互特征向量F输入全连接层,即:
vI=σI(WI(σI-1(WI-1…σ1(W1F+b1))+bI-1)+bI)
(24)
(25)
其中,Wc和bc分别是权重矩阵和偏置。
2.6 学习过程
在这一节,本文使用了带有平方损失的回归作为目标函数,进行模型参数的学习,具体为:
(26)
算法2 ANAP模型的训练过程
1. BEGIN
2. FORt∈(1,T) DO
3.对{u,i,xu,i,ru,i}进行抽样得到β0,大小为B
5.采取渐变步长对J进行优化
6. END FOR
7. UNTILJ收敛或足够小
8. END
3 实验与分析
3.1 数据集
本文在公开的Amazon产品数据集上进行了实验,数据记录包括对产品的评论、评分和元数据。在以前的研究中,这个数据集被广泛用于基于评论和评分的评分预测。在实验中,使用了6个数据集:手机、办公用品、宠物用品、宝贝用品、运动与户外用品、家庭与厨房用品,重点关注5核版本,每个用户或项目至少有5条评论。这6个数据集分别具有不同的规模和主题,其中家庭与厨房用品数据集最大(大约有54万条评论),办公用品数据集最小(大约有5万条评论),数据集的一些统计数据如表2所示。
表2 数据集的各项数据统计
3.2 基线方法
为了验证本文所提出模型的性能,将该模型与以下几个优秀的推荐方法进行了比较。
1) PMF-MAI[2]。基于多辅助信息的概率矩阵分解(PMF-MAI)模型是一种标准的矩阵分解方法,将用户-项目交互矩阵上的概率矩阵分解与由多个辅助信息构建的一组特征上的线性回归相融合用于推荐。
2) DTMF[23]。将评论的潜在主题向量与矩阵分解的潜在因子向量进行映射,对融合评分和评论信息进行推荐预测。
3) TransNets[13]。基于2个并行CNN,分别从用户和项目评论中学习用户和项目的特征表示用于评分预测,通过引入一个额外的潜在层来表示目标用户-目标项目对。
4)D-attn[24]。双重注意机制用于感知用户和项目潜在特征的可解释性。
5) Ante-RNN[25]。以并行方式联合学习具有文本对齐的图像表示和具有主题注意机制的文本表示,用于基于注意力建模最近项目之间的相关性推荐。
6) CARL[26]。上下文感知的表示学习模型使用CNN来学习用户项目对的相关特征,基于特征交互进行评分预测。
7) ABOM[16]。使用多通道深度卷积神经网络(MCNN)来更好地提取方面信息,并通过计算用户在各个方面的情绪极性来生成特定于方面的评分,用于最后的整体评分预测。
3.3 评价指标
为了评价模型的性能,本文采用了平均绝对误差(MAE)作为评价指标:
(27)
3.4 参数设置
本文参照基线方法的相关工作调整相应的参数。在PMF-MAI模型中借助高斯函数初始化用户和项目的潜在特征。对于深度学习模型,本文进行了参数灵敏度分析实验(参见3.5.2),潜在特征的维度在[8,16,32,64,128]范围中测试,丢失率在[0.1,0.2,0.3,0.4,0.5]范围中搜索,训练批的大小在[50、100、150、200]中测试。在CNN文本训练模型中,本文使用TransNets模型中设置的超参数,卷积核数为100,滑动窗口大小为3。所有模型的单词嵌入维数设为100。对于本文模型,正则化参数在[0.001,0.01,1,10,100]范围中测试。此外,实验的所有组件都是使用Pytorch库在Python3中实现的。
3.5 结果分析
3.5.1 性能比较分析
本文模型与基线方法在6个Amazon产品数据集上的性能表现如表3(潜在特征维度:32,丢失率:0.3)所示,最优结果进行了加粗显示,从结果中可以发现以下几点。
表3 所有方法在6个数据集上的性能比较
1)在6个数据集中,ANAP模型均超过了基线方法,PMF-MAI的性能最差。PMF-MAI模型在引入辅助信息之后,相比传统的PMF模型已经有了较大的性能提升,但是相比其他考虑评论文本的基线方法,性能还有较大差距。这表明在评分的基础上引入评论能更好地解释用户的评分行为,证明了本文模型中将评分和评论统一到一个框架中的有效性。
2)在基于评论的基线方法中,TransNets和D-attn是2种基于CNN的方法,相比基于主题模型的DTMF,它们的性能得到了很大提升。原因主要有2点:①CNN等深度学习技术能对用户和商品进行非线性建模,而传统方法仅仅能学习线性特征;②深度学习技术能通过dropout等方法有效降低过拟合的影响。与TransNets相比,D-attn模型的性能有了很大的提高,表明注意力机制可以帮助深度学习筛选重要信息,更好地捕捉用户偏好和项目属性。与TransNets和D-attn相比,另外3种深度学习模型Ante-RNN、CARL和ABOM有了显著的改进。Ante-RNN和CARL表明学习用户和项目评论中各个特性之间存在的相关性可以更好地体现用户的偏好。ABOM模型则体现了准确感知用户在各个方面的情绪极性的重要性。
3)根据表3的实验数据,本文提出的模型在6个数据集中获得了最好的MAE得分。同样是使用CNN进行评论文本处理来提取特征,ANAP模型的平均绝对误差相比TransNets和CARL分别提升了22.04个百分点和8.16个百分点。这表明,在特征提取过程中,加入注意力网络对单词和评论特征中的干扰信息进行过滤能更深入地挖掘数据。基于注意力机制和深度学习的D-attn和Ante-RNN也取得了不错的效果。但是相比ANAP,D-attn仅仅对单词信息进行了选择和过滤,Ante-RNN仅仅考虑了评论文本的上下文关联,没有考虑到在特征提取过程中不同的特征通道会有不同的相关性,这正是本文加入特征注意层的有用之处。ABOM在所有基线方法中取得了最佳表现,它使用多通道深度卷积神经网络(MCNN)更好地提取了方面信息,然后计算用户在各个方面的情绪极性,但是情绪极性的计算是基于用户对不同项目的相同方面会给予相同的关注度。然而,现实情况中用户对于某个特定方面的关注有时在不同项目中是会发生变化的。ANAP则通过注意力交互网络来捕捉这种变化,进行方面感知的细粒度建模。相比ABOM,ANAP的平均绝对误差提升了4.86个百分点。这一结果表明,ANAP取得了比ABOM更优的性能。
3.5.2 参数影响分析
在这一节,本文分析参数调整对于模型性能的影响。由于篇幅有限,本文选择了在手机和运动与户外用品2个数据集上的实验结果进行展示,另外4个数据集上的结果与这2个数据集类似。在对比8个模型的实验结果之后,本文选择了其中4个有代表性的模型分析潜在特征维度和丢失率的影响。
(a) 手机数据集
(b) 运动与户外用品数据集
本文首先探讨不同潜在特征维度的影响,如图4所示。首先,纳入评论的方法都比PMF-MAI具有更好的性能,并且差距很大,这表明了在偏好建模中利用评论的有效性。其次,同样是使用神经网络模型,引入注意力机制的方法取得了比一般处理方法(TransNets)相对更好的性能,这证明了注意力机制很好的降噪过滤功能。另外,随着潜在特征维度的增加,TransNets性能会有明显波动,其他方法性能相对平稳。
图5表示不同丢失率情况下各个深度学习模型的性能变化。结果表明,通过设置适当的丢失率,所有的方法都可以得到明显的改善。这证明了丢失率在防止过拟合方面的能力,可以实现更好的泛化。在几个数据集上测试发现,ANAP在丢失率设置为0.3的情况下有较好的表现,数据集越小,性能表现对于丢失率更敏感。
(a) 手机数据集
(b) 运动与户外用品数据集
3.5.3 信息突显影响分析
为了验证单词注意层和特征注意层对模型性能的影响,本文对ANAP模型做了不同的改变。NoneA表示无单词注意层和特征注意层;WordA表示只有单词注意层;FeatureA表示只有特征注意层;BothA表示同时包含2层。注意,其它模型参数保持不变。图6是性能比较结果,只显示了其中4个数据集的结果。从图中可以观察到:BothA的推荐性能最好;其次WordA和FeatureA各有优劣,相差不大;最差的是不包含注意层的模型。结果表明,通过单词注意层和特征注意层能够有效区分信息词,降低噪声干扰,突显更重要的特征,从而更准确地学习用户和项目的特征表示。
图6 信息突显的影响对比
3.5.4 方面感知影响分析
为了验证用户对不同项目的相同方面会给予不同的关注度,本文对ANAP模型做了2种改变:NoneAspA表示用户对不同项目的相同方面会给予相同的关注度,不使用注意力网络;AspA表示用户对不同项目的相同方面会给予不同的关注度,使用注意力网络。本文也只显示了在4个数据集上的性能比较,如图7所示。从图中可以观察到:在不同数据集上,考虑用户关注的差异均能带来较大的性能改进。结果表明,用户对不同项目的相同方面会给予不同的关注度。通过计算用户的关注差异,能有效提高推荐系统的性能。
图7 方面感知的影响对比
4 结束语
本文提出了一种融合三重注意力和评论评分的方面感知深度推荐模型ANAP。在该模型中,本文通过构造2种不同的注意力网络词注意层和特征注意层,用于区分基于评论的特征提取中的信息词,强化对重要评论特征的关注,有效降低了非关键信息的影响。然后,通过构造一个注意力交互网络处理从评论和评分中学习的用户和项目特征,计算用户对不同项目的各个方面的不同关注度,取得了较好的效果。在6个真实数据集上的实验表明,与已有的最新方法相比,本文的模型获得了更高的评分预测精度。由于用户的偏好是有时效性的,在下一步的研究中,将重点考虑用户的偏好随着时间的推移而发生的改变;同时考虑使用中文语料库,验证本文的推荐模型在中文环境下的应用。