Review-Aware Neural Recommendation with Cross-Modality Mutual Attention
来源:CIKM 21
摘要:双塔神经网络广泛应用于评论感知的推荐系统中(如图一的DeepCoNN模型),其两个编码器分别从评论中学习用户和项目的表示。然而,作者认为这种这种体系结构隔离了两个编码器之间的信息交换,导致推荐精度不佳。为此,作者提出了一种新型的带有跨模态注意力的评论感知神经网络NRCMA,其将从评论中学来的用户和项目信息与用户项目的id信息进行交互以选择更有价值的信息。
出发点:作者认为评论的意义不是固定的,对于不同的商品,相同的评论也可能导致不同的评分。如图二,对于洗衣机和包包,用户给出的评论都是漂亮且质量中等水平,但是洗衣机的评分仅有1分,包包的评分却有4分。作者分析这是因为用户对于这两种物品的关注点不同,用户更注重洗衣机的质量而非外表,而包包最重要的是外观好看。
因此,作者认为传统双塔模型中隔离用户和项目编码器的做法不是最优的,在这样的编码方式中,用户和项目只能从他自身有关的所有评论中学习特征,即强制认为用户采用相同的评论时评分也是相同的,缺少了用户对于不同项目交互时的侧重方向的考量。
模型介绍:
假设推荐系统有N个用户,M个项目,则有评分矩阵∈,其中∈{1,...,5}表示用户u对于项目i的评分。该模型分为四个部分,分别是嵌入层,单词级注意层,评论级注意层以及预测层。
Embedding Layer
由于项目编码器与用户编码器的处理方法类似,故只以用户编码器为例,这里的Embedding层分为两部分,分别是IDEmbedding和WordEmbedding。首先看IDEmbedding,将所有id初始化为one-hot向量,此时用户u的表示为,然后通过转换矩阵映射到低维空间中:
(1)
这里的即为用户u的IDEmbedding。
对于WordEmbedding,给出评论 = {}表示用户u发表的第k条评论,其中表示第t个单词,是一个使用Glove(一种word embedding 方法)技术得到的维的向量。于是,评论可以表示为矩阵 = {}。为了获取上下文信息,对评论矩阵进行卷积操作来获得评论特征矩阵:
(2)
其中,*表示卷积操作,表示第j个卷积核,则为卷积核的数量。最终通过卷积操作得到评论的特征矩阵 = {w1',w2',...,wT'}。
Word-level Attention Layer
在这一层中,作者使用词级别注意力来学习单词的权重。具体来说,在用户编码器中,作者使用评论对应的项目i的IDEmbedding来作为相互注意机制的query,得到注意力向量如下:
(3)
其中,表示词级别的注意力参数矩阵,是偏置。然后,使用来执行单词级注意力机制,以突出显示描述用户与给定项目相关的偏好的重要词,如下:
(4)
(5)
上式中,为单词级特征矩阵中的第c列,为转换矩阵,则表示第c个单词的最终注意权重。(4)(5)式的现实意义为:对于不同的具体项目,每个单词可能享有不一样的重要性,这与作者之前提出的观点相同。再利用该注意力权重来计算整个评论的特征向量:
(6)
Review-level Attention Layer
在上面的处理中,作者已经得到了每条评论的特征向量,为了强调提供更多语义信息的评论,作者添加了评论级别的注意层来计算不同评论的不同重要性。实际上的处理方法与词级别的处理方法相同:
(7)
(8)
(9)
最后,我们利用该注意力权重来聚合用户u发布的所有评论,来作为用户的最终表示:
(10)
Rating Prediction Layer
在本层中,作者将最终的用户特征和项目特征连接起来,输入到FM中进行评级预测:
(11)
(12)
上式其实就是DeepFM的原理式。其中表示第i个特征,表示全局偏差,表示特征偏差,<>表示第i个特征与第j个特征的二阶交互,其实就是让特征两两相乘再给予权重。
损失函数
损失函数采用的是均方误差MSE:
(13)
实验
数据集如下:
参数设置:
对于作者的模型,作者将单词嵌入的维数设置为300,ID嵌入的维数设置为32,CNN滤波器的数量设置为80,CNN的窗口大小设置为3,注意向量的维数设置为80。
实验效果及对比模型:
IDEmbedding维数对结果的影响:
可以看到MSE指标先降低后提升,作者分析其原因可能是低维嵌入限制了相互注意的学习能力,而高维嵌入则使模型存在过拟合问题。总体而言,性能曲线不会随ID嵌入维数的变化而发生显著波动,这说明NRCMA对这种超参数不是很敏感。