论文笔记:Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks


1、背景

    随着深度学习的发展,人们探索出了一系列的方法来处理序列化数据,RNN是其中的一个代表。但是对于序列化推荐,RNN的处理方式有很大的不足,如其最后编码后的隐向量很难理解,并且很难学习到用户细粒度的偏好,如不知道到底喜欢商品的哪个属性,是价格还是质量,又或者是性价比。

    为了解决这个问题,论文作者提出一个带有键值对记忆网络的RNN模型架构。其中RNN模型用于捕捉序列化的用户偏好,而键值对记忆网络用于捕捉商品属性级的用户偏好,这两个vector组合在一起作为最终的用户偏好表示,从而解决了这个问题。

2、模型定义

U表示用户集合,I表示items集合,将用户与item的交互按时间排序,可以得到\left\{i_{1}^u,...i_{t}^u,...,i_{n}^u \right\},其中i_{t}^u代表在t时刻与u产生交互的item.将item与KG结合,形成一个大图。这样我们的任务定义为:给定交互序列\left\{i_{1}^u,...i_{t}^u,...,i_{n}^u \right\},我们推断user将会在n+1时刻点击的item

3、模型结构

模型由两部分组成:

【1】A GRU-based Sequential Recommender

论文中说明如下:

【2】Augmenting Sequential Recommender with Knowledge-Enhanced Memory Networks

这里我们假设对所有item来说,他们具有相同的属性,比如:电影都具有演员、导演、上映时间等属性,这样网络就可以被概括为一个数组,\left\{(k_1,v_1^u),· · · ,(k_A,v_A^u)\right\},其中key代表某一个属性,而value代表这个属性的值,这里需要注意的是,value的值是与用户相关的,即不同用户具有不同的vlue,但是因为所有item具有相同的属性,因此key对于所有用户来说是共享的。这个相当于对一个用户来说,她对某一个属性具有自己的用户偏好。

key值是预处理的,在整个训练过程中保持不变,采用transE的方式,我们可以得到KG中entiey和relation的embedding。我们认为entity的属性是与relation的含义相关的,因此我们直接将relation embedding作为key值,k_a=r_a,a是某一个属性。

这个记忆网络涉及两个操作,read和write。read操作是从记忆网络读出value,然后经过一系列运算,得到m_t^u,他是指用户u在t时刻从记忆网络得到的值,然后执行p_t^u=h_t^u\oplus m_t^u,其中h_t^u是GRU的输出。其中,read可简单概括为

write操作是指每当新的交互item到来之后,value矩阵必须更新,可概括为

e_a^i是指item到来之后,对a属性value值的更新。这里之所以选择将e_i+r_a的结果作为e_a^i,是因为item在某个属性上的取值可能有多个,比如e_{Avatar} + r_{dir ectedby} ≈ e_{J amesCameron},这里的导演可能有多个。

【3】The Complete Sequential Recommender

为了充分利用item的辅助信息,我们采用\tilde{q_i}=q_i+e_i 编码item,最后分数计算采用

MLP是多层感知机,目的是将p_t^u和\tilde{q_i} 映射到相同的空间

采用BPR loss,AdaGrad优化策略

4、实验部分


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。