【论文笔记】注意力机制的协同过滤模型 Attentive Collaborative Filtering(ACF)

  • 2019 年 10 月 7 日
  • 笔记

导读

随着科技的发展,多媒体内容(图片、视频等内容)成为当今的网络信息的主要内容。为了在高度动态的环境中为用户筛选大量的多媒体内容。我们需要在网络多媒体内容中引入推荐系统,特别是基于协同过滤的系统,本文主要介绍一种加入了注意力机制的协同过滤模型 Attentive Collaborative Filtering(ACF)——旨在解决多媒体推荐中的项目与组件级隐式反馈问题。

No.1

核心思想

ACF是一种分层神经网络,它根据项目级别的项目和组件级别的内容对用户的偏好分数进行建模。ACF以贝叶斯个性化排名(Bayesian Personalized Ranking,BPR)作为基本模型,引入注意力机制,以解决多媒体推荐中的项目与组件级隐式反馈问题。主要由两个注意力模块组成:组件(component)级注意力模块,学习对于项目中的组件(component)内容的偏好评分,并且对于每个项目的内容特征进行表示;项目(item)级别的注意力模块,学习用户对于项目偏好的评分并且根据用户与之交互的项目集来表征用户。

No.2

准备工作

符号及名词解释

  • item:图片与视频
  • component :图片的一块区域或者视频的一帧.
  • item-level implicitness:用户对于item的喜好是未知的(即使是喜欢,但喜欢程度未知)
  • Component-Level implicitness:对于item的不同的component的喜好是未知的(视频的播放记录并不能说明用户喜欢这个视频的全部)。
  • 多媒体中的隐式反馈(implicit feedback):对照片的点赞、浏览的视频、下载的音乐等。
  • R:表示 user_item交互矩阵(R∈R ^ { M * N},M和N分别表示用户和项目的数量。)
  • R(i):表示与用户i交互的所有项目集合
  • U = [u_1,…,u_i]表示用户潜在向量
  • V = [v_1,…,v_l]表示项目潜在向量
  • x_{lm}:输入,表示项目l集合中第m个组件的特征
  • 丨x_{l*}丨:表示项目集合的长度
  • p_l:表示辅助项目潜在向量,被用来基于用户交互的项目集上表示用户
  • ~x_l:表示内容特征,由Component级别的注意力模块求得
  • α(i,l):项目级注意力模块权重,表示用户i在项目l中的偏好。
  • β(i,l,m):Component级注意力模块权重,表示用户i在项目l的第m个组成部分(component)的偏好程度

Bayesian Personalized Ranking( BPR )

基于贝叶斯后验优化的个性化排序算法将用户对项目的评分(显示反馈“1”,隐式反馈“0”)处理为一个pair对的集合,其中j为评分为1的物品,k为评分为0的物品。BPR不像在SVD中那样以基于点的方式学习(point-wise),而是模拟一个用户和两个项目的三元组(三元组<i,j,k>表示对用户i来说,相对于项目k用户i更喜欢项目j)。BPR的目标函数为:

其中:

  • σ是sigmoid 函数
  • λ是正则化参数
  • ^R_{ij}为 user_item交互矩阵,表示为:

丨涉及论文《BPR: Bayesian Personalized Ranking from

Implicit Feedback》

No.3

模型

框架

上图为ACF的框架,主要包含了组件(component)级注意力模块项目(item)级注意力模块。各模块的输入输出如下:

Component-Level Attention

组件级的注意力模块式利用两层神经网络来求得组件(component)级注意力权重β(i, l,m),然后根据注意权重(β(i, l,m))构建内容表示特征( ~x_l)。用户 i 的项目 l 的第m个组件特征 x_lm的注意力得分为:

其中:

  • 矩阵W_{2 *}和偏置b_2是第一层神经网络的参数;
  • 矢量w_2和偏置c_2是第二层参数;
  • ϕ( )是RELU函数

在得到注意力得分 b(i, l,m)之后需要通过使用Softmax函数进行归一化来获得最终的组件component)级权重 β(i, l,m)

在获得组件级注意力权重β(i,l,m)之后,可以得到用户i对于项目l中的哪一部分更感兴趣,即可求得用户 i 的偏好项目l的内容特征 ~x_l:

Item-Level Attention

项目级别注意力模块的目标是选择代表用户偏好的项目,然后聚合项目信息的表示以表征用户。与组件级注意模块一样,项目级别注意力模块也是使用两层神经网络来计算项目级注意力权重α( i,l)。给定用户潜在表示u_i,项目潜在向量v_l,邻域辅助项目向量p_l 和项目内容特征~x_l之后,可以得到项目级注意力得分a( i,l):

其中:

  • 矩阵W-{1 *}和偏置b_1是第一层参数;
  • 矢量w_1和偏置c_1是第二层参数;
  • ϕ( )是RELU函数

注意力得分(a(i,l))在经过Softmax归一化后可以获得最终的项目级权重α( i,l)。

则聚合项目的表示得到的用户表征为:

即最终的用户表示为:

目标函数

ACF通过优化观察到的项目(positive)和未观察到项目(non observable)之间的成对排名(pair wise)对BPR的目标函数进行了优化。ACF的目标函数可以表示为:

在RBF模型中,我们知道

在AFM中除了用u_i明确地参数化每个用户i之外,ACF还在与用户i有交互的项目集合R(i)上对用户进行建模。用户i的最终表示为:

因此,目标函数表示为:

在得到目标函数之后,可以使用梯度下降法来进行优化。该模型的伪代码为:

No.4

实验

代码地址:

https://github.com/ChenJingyuan91/ACF

虽然作者开源了代码,但只提供了模型实现部分,但对于组件内容特征的提取并未详细说明,因此此论文无法复现。

数据

论文中使用了Pinteres(图像),Vine(视频)数据集进行对比实验,数据集示例如下:

特征提取

在原始的图片(视频)不能直接进行训练,需要先提取图片(视频)中的组件特征(即论文中的x_{l*}),对于图片或者视频数据集,特征提取方法如下:

  • 图片:文中使用 ResNet152 架构中的res5 层提取得到图片的组件特征(x_{l*})。例如:对于每个图像,7×7×2048特征图可以被视为图像中49个不同区域的2048-D的49个特征向量。
  • 视频:对于每个视频,组件被认为是视频的一帧,使用ResNet-152中pool5层的输出作为每帧的特征向量。

参数设置

  • batch size: [256,512]
  • 潜在特征维度(latent feature dimension) :[32,64,128],在不指定维度时,只显示D=128的结果
  • 学习率:[0.001,0.005,0.01,0.05,0.1]
  • 正则值: [0.00001,0.0001,0.001,0.01,0.1,0]
  • K=100

评估方法

为了评估项目推荐的效果,文中使用了 leave-one-out 评估方法,只保留用户最近的一次交互作为测试集,使用top-K推荐中常用的HR@K(Hit Ratio)与NDCG@K(Normalized Discounted Cumulative Gain)作为评价指标。

  • HR:评价推荐的前 K个 items 中,有多少是能够命中用户实际偏好的。该指标是评价召回率的(值越大越好),计算公式为:
  • NDCG:

其中:

  • 若top-K中第i个位置的项目在测试集中,r_i为1,否则·为0
  • Z_k为IDCG的计算公式,Z_k表示为:

实验结果

为了更好地验证ACF模型的效果,这篇论文对比了不同模型在不同数量的预测向量、TOP-K列表的不同位置以及不同稀疏程度的用户上的表现。

除了模型对比,该论文还比较了注意机制在项目和组件级别的影响(表2)以及用户信息(U),项目信息(V和P)和内容信息(X)的影响(表3)。

从表2中可以得到项目级别的注意机制对我们的模型贡献更多。可能是由于项目级关注机制可以捕获所有用户的交互中的代表项,而组件级注意力机制可能仅在具有丰富内容的复杂项目中起作用。

从表3可以知道注意机制可以利用每个用户和项目的特征来提高推荐任务的性能。并且在提高推荐系统的性能上用户信息比项目信息更有用。

论文地址:

http://staff.ustc.edu.cn/~hexn/papers/sigir17-AttentiveCF.pdf