社交注意记忆网络:模拟面级别和朋友级别的区别
原文链接:Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation, WSDM’19
1. 摘要
社会中的连接有助于提升推荐系统的性能,但是,现有的模型中没有能够很好地研究推断用户偏好
的两个问题:第一,用户的偏好可能只是在某方面和他朋友的偏好部分匹配,尤其是当考虑到一个用户有不同的兴趣时。第二,对于一个个体来说,他朋友对他的影响程度可能是不同的,在模拟他的偏好时,并不是所有的朋友都有同等的帮助。
为了解决上述问题,我们提出了新型的社交注意记忆网络(SAMN),特别地,设计了一个基于注意力的记忆模块
去学习 user-friend 向量,可以捕获用户和他朋友共享的不同方面的注意力。设计了一个朋友级别的注意力组件
,自适应地选择信息丰富的朋友进行用户建模。这两个组件被融合在一起,互相增强,从而得到一个更好的扩展模型。
举例:
userA 和 userB 的信任关系建立在 movie 上,userA 和 userC 的信任关系建立在 basketball 上。
2. 模型架构
目标:基于隐式反馈和社交网络进行推荐。
考虑了 aspect-level 和 friend-level 两种情况,来提高模型的表现性能和泛化能力。
- 在嵌入层(Embedding Layer)用户和项被转化成密集向量表示(dense vector representation)
- 基于注意力的记忆模块(attention-based memory module)用来解决面级别的差别(
aspect-level differences)造成的问题,朋友向量 f(i,l) 在一个增强的记忆矩阵 M 上使用神经注意力机制生成,依赖于用户和朋友,并学习表示用户和朋友之间的偏好关系。 - 朋友级别的注意力组件(friend-level attention component)用于选择信息丰富朋友来更好的推断用户的偏好。
- 模型通过 pairwise ranking 和 negative sampling strategy 进行优化。
2.1 Attention-based Memory Module
用户和朋友可能只在某个方面由相同的偏好,尤其是考虑到用户有不同兴趣的时候。然而用户-朋友对的显示关系在隐式数据中是不可用的(我们不知道他们分享的兴趣是什么方面的)。受到近来记忆网络和注意力机制发展的启发,我们设计了基于注意力的记忆模块来学习用户和朋友之间的关系向量
。
2.1.1 Joint Embedding
给定 user-friend 对 ( ui , u(i,l) ),模型先用下面的操作去学习用户和他朋友的联合嵌入向量
s ∈ Rd,其中分母用来标准化并且使得产生的向量具有相同的规模。这个操作也可以换成别的,比如 MLP 或者 element-wise product without normalization。
2.1.2 Key Addressing
注意向量
α ∈ RN 的每个元素 αj (表示用户朋友对用户在第 j 方面的影响程度)通过下面的方式计算,其中 Ki ∈ Rd 从 key matrix K ∈ RN×d 得到。
2.1.3 Generating Friend Vector
朋友向量 u(i,l) 先通过记忆矩阵(memory matrix)M ∈ RN×d 扩展一个矩阵 F ∈ RN×d,F 可以理解为用户在不同潜在面(latent aspect)的偏好,N 可以看作是潜在面的数量。
最后,为了生成朋友向量
,使用注意分数来计算 F 的加权表示。输出的特定关系向量 f(i,l) 可以看作用户的第 l 个朋友对用户 i 偏好的影响向量。
2.2 Friend-level Attention
朋友级注意的目标是给用户的朋友分配非均匀的权重
,当用户与不同的项目交互时,权重会发生变化。
我们使用两层网络计算用户 ui ,当前项 vj 和朋友 f(i,l) 的注意力分数 β(i,l):
其中,Si 表示用户 i 在社交网络中的所有朋友,W1 ∈ Rd×k , W2 ∈ Rd×k , W3 ∈ Rd×k,b ∈ Rk , h ∈ Rk 是模型参数。
最后通过求和便可以得到用户 i 的表示:
3. 模型学习
3.1 Prediction
采用了经典的矩阵分解(MF)方法来预测用户 I 对 项 j 的评分:
根据预测评分对 items 进行排名,取 Top-K 进行推荐。
3.2 Optimization
The pairwise ranking loss: