CFM: Convolutional Factorization Machines for Context-Aware Recommendation
摘要
因子分解机是一种基于内积的感知推荐系统,通过内积建模二阶交互特征。但是,它仍然不足以捕获高阶非线性信号。最近很多工作都用神经网络增强FM性能。这些方案假设嵌入层彼此独立,并以隐式的方式建模高阶交互。这篇论文,提出卷积因子分解机模型解决上述问题。CFM通过外积建模二阶交互,产生图像类数据,捕捉嵌入层之间的相关性。然后,所有生成图像数据被堆叠起来,形成交互矩阵集合,在此基础上,应用卷积学习高阶交互信号。此外,论文还利用自我关注机制执行特征(pooling)池化,减少时间复杂度,论文在三个数据集进行了实验证明了方法有显著改进。
介绍
描述用户行为数据时,除了用户/项目ID,还提供了丰富的上下文信息。包括但不限于,人口描述,项目属性,时间/地点信息,历史记录和最近交易信息。通用的方法是将他们转化为高维特征向量,在特征输入上建立模型。
不同于图像和音频中自然发现的连续实值特征,感知推荐系统输入大多是离散的,就导致高维且稀疏的特征向量。
现有特征建模分为两类:
1手动构造交叉特征。2自动学习特征交互,将特征学习为嵌入,将特征交互表示为嵌入之上的函数。
论文为了减少构造交叉特征的工作量,提出CMF自动学习特征交互。专业来说,特征嵌入首先被送入self-attention池化(pooling)层,可以大大降低计算量,削弱了噪音特征的影响,然后,用外积建模二阶交互模型,生成了一个二维矩阵set.和内积相比,更容易捕获嵌入层之间相关性,将生成的矩阵堆叠起来,得到一个三维矩阵---编码了所有二阶交互。为了显式学习高阶信号。论文在三维矩阵上使用卷积,并叠加多层卷积神经网络。
论文利用self-attention对特征池化操作,降低计算量和时间复杂度。
Convolutional Factorization Machine
原始FM模型仅仅以线性方式,通过内积建模二阶交互。CMF:
最后一项是核心交互组件,下面会介绍如何学习。
输入和嵌入层
输入感知向量x,包括用户ID,历史项目multi-hot features,然后,每个特征,通过嵌入层映射到D维密集向量表示 。
Self-Attention Pooling Layer
对特征进行池化(Pooling)操作对每一个field学习单个嵌入。以往的池化操作包括最大池化和平均池化,但是这样不能有效捕获不同特征重要性。故论文提出注意力机制(通过MLP映射)
将隐藏层映射到注意力得分。
的重要性通过归一化注意力得分函数实现:
上式计算的,就作为的池化核函数(核函数代表特征重要度):
Interaction Cube
池化层之后,论文使用交互矩阵集(3D立方)表示特征交互,和由外积进行交互。
总结:
1MLP多层感知机获取重要度矩阵(作为池化基进行第一步池化)
2对特征矩阵进行池化,获得(多通道矩阵)
3和外积(特征交互),作为卷积操作。
多维数据交互的优点:
1外积更能捕获维度相关性
2显式方案模拟高阶交互-立方体不同层之间交互。代表层,后的下标,代表层内元素。
3.卷积核是多维矩阵,故能将层数降维。
卷积操作:
1.卷积(3维卷积核)
2.偏差,激活函数RELU
3.第一层 卷积核形状:[2,2,14] 步长[2,2,1] (对应宽高深)
后序卷积核和步长 形状:[2,2,2]
三维卷积输出的是一维向量,然后采用全连接层进行映射:
损失函数:
Top-k推荐
是对应的负采样样本,是激活函数。
首先采集 正样本,(通过mini-batch),包括用户上下文感知和项目属性。然后对每一个特定的用户,随机采集负样本。然后结合负样本特征建立负样本和用户的交互。最后,正的交互和负的交互都fed to训练,得到损失。
Data
Dataset |
#users |
#items |
#transactions |
#fields |
Frappe |
957 |
4,082 |
96,203 |
10 |
Last.fm |
1,000 |
20,301 |
214,574 |
4 |
MovieLens |
6,040 |
3,665 |
939,809 |
4 |
Experiments
RQ1 Does CFM model outperform state-of-the-art methods
for CARS top-k recommendation?
RQ2 How do the special designs
of CFM (i.e., interaction
cube and 3DCNN) affect the model performance?
RQ3 What’s the effect of the
attention-based feature pooling?
Experimental Settings
Frappe
app推荐数据
数据包含96203app使用日志,每个日志包含10个上下文特征域,包含用户ID,项目ID,时间,其他信息。
Last.fm
音乐推荐数据集
提取了最新的1000用户听歌记录
用户上下文描述为:用户ID,用户90分钟内听的音乐ID,项目属性包括,音乐ID,艺术家ID(歌手)
MovieLens
评价指标
leave-one-out
对于last.fm和movielens数据,用户最新交互取出做测试,剩下的做训练集。对frappe,因为没时间戳信息,故任意选择一个交互做测试,推荐性能指标HR、NDCG(它将更高的分数分配给排名靠前的项目)
参数设置
性能对比
Interaction Cube的性能评价(特征外积)
为证明立方有效性,论文将交互三维矩阵转化为二维矩阵/或在深度方向执行最大池化操作,结果不如CMF好。
CFM>平铺>最大池化>FM 证明了CNN外积学习的有效性
Study of Feature Pooling(注意力部分)
自我关注机制执行池化。替换为最大池化和均值池化进行对比。注意力池会为不同特征分配不同的重要性。保留了丰富的特征信息,削弱了噪音的影响。
CMF和没有特征池的模型比较。发现:特征池可以减少训练时间,带来好的推荐质量。
总结
新的上下文感知推荐算法,结合了FM和CNN,关键设计是,一个基于外积的交互立方体。
原文:https://www.cnblogs.com/liheyong/p/12111512.html