CIKM'21 Review-Aware Neural Recommendation with Cross-Modality Mutual Attention

Review-Aware Neural Recommendation with Cross-Modality Mutual Attention

来源:CIKM 21

摘要:双塔神经网络广泛应用于评论感知的推荐系统中(如图一的DeepCoNN模型),其两个编码器分别从评论中学习用户和项目的表示。然而,作者认为这种这种体系结构隔离了两个编码器之间的信息交换,导致推荐精度不佳。为此,作者提出了一种新型的带有跨模态注意力的评论感知神经网络NRCMA,其将从评论中学来的用户和项目信息与用户项目的id信息进行交互以选择更有价值的信息。


图1 DeepCoNN模型

出发点:作者认为评论的意义不是固定的,对于不同的商品,相同的评论也可能导致不同的评分。如图二,对于洗衣机和包包,用户给出的评论都是漂亮且质量中等水平,但是洗衣机的评分仅有1分,包包的评分却有4分。作者分析这是因为用户对于这两种物品的关注点不同,用户更注重洗衣机的质量而非外表,而包包最重要的是外观好看。


图2 对于不同的物品,相同的评论评分不同

    因此,作者认为传统双塔模型中隔离用户和项目编码器的做法不是最优的,在这样的编码方式中,用户和项目只能从他自身有关的所有评论中学习特征,即强制认为用户采用相同的评论时评分也是相同的,缺少了用户对于不同项目交互时的侧重方向的考量。

模型介绍


图3 NRCMA模型

    假设推荐系统有N个用户,M个项目,则有评分矩阵RR^{N*M} ,其中R_{ui}∈{1,...,5}表示用户u对于项目i的评分。该模型分为四个部分,分别是嵌入层,单词级注意层,评论级注意层以及预测层。

Embedding Layer

    由于项目编码器与用户编码器的处理方法类似,故只以用户编码器为例,这里的Embedding层分为两部分,分别是IDEmbedding和WordEmbedding。首先看IDEmbedding,将所有id初始化为one-hot向量,此时用户u的表示为v_{u}^U,然后通过转换矩阵P_u∈R^{N*K}映射到低维空间中:

                                                            p_u = P_u^Tv_u^U                     (1)

    这里的p_u即为用户u的IDEmbedding。

    对于WordEmbedding,给出评论r_{u,k} = {w_1,w_2,...,w_t}表示用户u发表的第k条评论,其中w_t表示第t个单词,是一个使用Glove(一种word embedding 方法)技术得到的k_w维的向量。于是,评论r_{u,k}可以表示为矩阵M_{u,k} = {w_1,w_2,...,w_T}。为了获取上下文信息,对评论矩阵进行卷积操作来获得评论特征矩阵C∈R^{k_c*T}:

                                        C_j = \sigma (W_j * M_{u,k} + b_j),1\leq j\leq k_c              (2)

    其中,*表示卷积操作,W_j表示第j个卷积核,k_c则为卷积核的数量。最终通过卷积操作得到评论的特征矩阵C_{u,k} = {w1',w2',...,wT'}。

Word-level Attention Layer

    在这一层中,作者使用词级别注意力来学习单词的权重。具体来说,在用户编码器中,作者使用评论对应的项目i的IDEmbeddingq_i来作为相互注意机制的query,得到注意力向量\beta_k如下:

                                                \beta_k = Relu(W^{(w)}q_i + b^{(w)})                      (3)

    其中,W^{(w)}表示词级别的注意力参数矩阵,b^{(w)}是偏置。然后,使用\beta_k来执行单词级注意力机制,以突出显示描述用户与给定项目相关的偏好的重要词,如下:

                                                                b_c = \beta_kB_1y_c         (4)

                                                \alpha_c = \frac{exp(b_c)}{\sum\nolimits_{j=1}^Texp(b_j)},\alpha_c ∈(0,1)          (5)

    上式中,y_c为单词级特征矩阵C_{u,k}中的第c列,B_1为转换矩阵,\alpha_c则表示第c个单词的最终注意权重。(4)(5)式的现实意义为:对于不同的具体项目,每个单词可能享有不一样的重要性,这与作者之前提出的观点相同。再利用该注意力权重来计算整个评论的特征向量:

                                                             d_{u,k} = \sum_{j=1}^T\alpha_jy_j        (6)

Review-level Attention Layer

    在上面的处理中,作者已经得到了每条评论的特征向量,为了强调提供更多语义信息的评论,作者添加了评论级别的注意层来计算不同评论的不同重要性。实际上的处理方法与词级别的处理方法相同:

                                                \beta_u = Relu(W^{(d)}q_i + b^{(d)})                   (7)

                                                    b_k = \beta_uB_2d_{u,k}                                    (8)

                                                \alpha_k = \frac{exp(b_k)}{\sum\nolimits_{j=1}^Lexp(b_j)},\alpha_k ∈(0,1)              (9)

    最后,我们利用该注意力权重来聚合用户u发布的所有评论,来作为用户的最终表示:

                                                    d_{u}^U = \sum_{j=1}^L\alpha_jd_{u,j}                     (10)

Rating Prediction Layer

    在本层中,作者将最终的用户特征d_u^U和项目特征d_i^I连接起来,输入到FM中进行评级预测:

                                                        o = d_u^U \oplus d_i^I                       (11)

                        \hat{R}_{u,i} = w_0 + \sum_{i=1}^{\vert o \vert } w_io_i + \sum_{i=1}^{\vert o \vert }\sum_{j=i+1}^{\vert o \vert }<v_i,v_j>o_io_j                 (12)

    上式其实就是DeepFM的原理式。其中o_i表示第i个特征,w_0表示全局偏差,w_i表示特征偏差,<v_i,v_j>表示第i个特征与第j个特征的二阶交互,其实就是让特征两两相乘再给予权重。

损失函数

    损失函数采用的是均方误差MSE:

                                            MSE = \frac{1}{N}\sum_{(u,i∈R)}(R_{u,i} - \hat{R}_{u,i})^2                             (13)

实验

    数据集如下:


图4 数据集

参数设置:

    对于作者的模型,作者将单词嵌入的维数设置为300,ID嵌入的维数设置为32,CNN滤波器的数量设置为80,CNN的窗口大小设置为3,注意向量的维数设置为80。

实验效果及对比模型:


图5 实验效果


图6 与其他模型结构对比

IDEmbedding维数对结果的影响:


图7 ID嵌入维度对结果的影响

    可以看到MSE指标先降低后提升,作者分析其原因可能是低维嵌入限制了相互注意的学习能力,而高维嵌入则使模型存在过拟合问题。总体而言,性能曲线不会随ID嵌入维数的变化而发生显著波动,这说明NRCMA对这种超参数不是很敏感。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容