论文阅读:Group Recommendation with Latent Voting Mechanism

Abstract

之前的方法大多是 predsefined 的策略,对于 ad-hoc 的组群(或称 cold-start groups)则无能为力。组群推荐是动态的,每个成员的权重不同,且同一用户在不同组的权重也是不同的。本文针对 Occasional Group Recommendation (OGR),要解决偏好聚合与数据稀疏的问题,故提出 GroupSA,一是将决策视为投票过程,模拟决策的形成;二是使用了 user-item、user-user 的数据,弥补数据稀疏性问题。

Introduction

最近一些工作,如 AGREE 和 SIGR 使用了原始的注意力机制来学习决策过程,但有两个重要问题:

  1. 忽视了组群成员之间的交互(争论、投票)
  2. 没有考虑成员的专业知识技能

文中描述了组群的决策过程:先是朋友之间充分交换意见,然后投票选择一些当前话题下的专家,让专家们来决定。

GroupSA使用了自注意力机制。

贡献:

  • 注意力网络建模成员的投票方式
  • 使用 item aggregation 以及 social aggregation 来提升用户表示,从而解决数据稀疏问题
  • 优化的时候 group 和 user 的推荐任务同时(交替)进行,提升训练效果
  • 实验数据好

Methodologies

Task Definition

各有m,n和k个,第 t 组的用户集合用 表示,总共有 个成员。总共会产生三类交互:user-item、group-item 和 user-user,分别用 以及 进行表示,其中

Overview

框架总共是三部分:voting scheme modeling, user modeling 以及 the joint optimization technique

Voting Scheme Modeling

通过划分 个 sub-voting 的过程来模拟决策的形成( 是组群成员人数),每个 sub-voting 过程都要学习两方面内容:

  • 用户对于一个物品的内在感知、看法观点,这在讨论过程中是不变的
  • 在其他用户眼中,这个用户能具有多大程度的代表性(类似总统选举)

为了收集到其他用户对于当前用户 的观点看法,定义了第 个 sub-voting-group,它排除了当前用户 ,这就可以使用自注意力机制了;此外还有 自己的观点,用的是 sub-group(包含了 )。在讨论过程中用户也有可能改变主意,所以总共加有 层注意力层

多层的叠加可以学习更复杂的特征

网络第一层输入是 ,第 层输出是 ,对于第 层而言,有:

定义 之间的注意力权重和分数:


在一个用户 的观点下的 sub-group 的表示向量 就是:

现实中人们的决策也会受到朋友间关系的影响,所以增加一个 social bias matrix ,对于用户 来说,注意力分数修改为:



其中 就表示用户 之间是否有朋友关系(当然这里也可以是 soft representation)。再加上之后的 操作,加上 实际上是乘上了一个 0 或 1 的系数。

注意力:把组群中离主流用户较远的用户的权重降低,也就是减少 outlier 的影响

此处是我认为的 novelty 所在

意思就是没有朋友关系的话我直接忽视他们之间的注意力权重

用户视角下的 sub-group 表示向量,然后第二层是一个 FFN:

这里还用“残差网络+layer normalization”(也就是图中的 Add&Normalize)处理attention+FFN两层的结果,之后网络可以继续叠加,所以每个子层的输出相当于是

这里的网络结构是完全学习的Transformer

layer normalization 与 batch normalization 的对比如下:

Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。

这样做的好处是可以加速收敛。深度学习有这么一个说法:每一层的数据分布都类似的情况下,网络可以更快地收敛。

这里面究竟怎么normalization的,看图便知,但也要结合代码再看看

每个 sub-group 的偏好意见 都要动态地聚合起来:

其中 就是给每个成员不同的权重 ,该权重是通过双层网络+计算的:


是concat操作, 就是目标item的embedding

User Modeling

分成两个图结构:user-item和user-user,对应着 item aggregation 和 social aggregation

接下来的事情大同小异了

Item Aggregation

是通过聚合用户 交互过的所有 item 向量()得到的,具体的聚合方法和前面类似:

每个user-item 对都给一个权重, 就是目标 user 的表示向量

Social Aggregation

和之前的一样,就是用社交朋友的向量表示这个目标用户:

Final User Latent Factor

由于 item space 和 social space 的语义不同,不能直接合并,于是用户隐向量表示需要用网络来转一转:



Model Optimization

首先这里因为同时获得了用户的表征向量,所以不仅能做组群推荐,顺便也可以做个人的推荐任务

把目标的组群和物品的向量concat在一起,再过几层网络:

然后是 pair-wise 损失函数:

其中 分别是 交互过的和没有交互过的item(负样本总共采样 个),该函数目的在于拉大正负样本间的距离。但是组群的交互记录很稀疏,因此用到了 user 的交互信息。同样地,把目标用户和item的embedding concat起来,放进MLP中:

得到的 就是用户 对于物品 的打分。

此外,之前得到用户隐向量 和item隐向量 也是concat之后经过MLP,得到 ,然后有:

损失函数:

训练的时候先优化 ,再优化 ,使用随机梯度下降

Experiment

两个数据集 Yelp 和 Douban-Event