论文解读:MeLU:Meta-Learned User Preference Estimator for Cold-Start Recommendation

论文解读:MeLU:Meta-Learned User Preference Estimator for Cold-Start Recommendation

  推荐领域内的一个痛点问题是冷启动问题,现如今许多学术界在推荐领域内的研究都指向该问题。事实上,冷启动可以认为是一种由于用户-物品交互数据缺乏所导致的,自然而然可以想到利用小样本学习的方法,使得我们训练的模型可以在很少的样本前提下就能够给出较好的推荐效果。

一、简要信息

序号 属性
1 模型名称 MeLU
2 所属领域 推荐系统
3 研究内容 冷启动问题
4 核心内容 Few-shot Learning, Meta-Learning, Recommendation System; User Preference Estimation
5 GitHub源码 https://github.com/hoyeoplee/MeLU
6 论文PDF https://arxiv.org/pdf/1908.00413.pdf

二、全文摘要翻译

  本文提出一种推荐系统来缓解冷启动问题,其可以在很少的物品前提下来估计用户的偏好。为了在冷启动阶段识别用户的偏好,现有的推荐系统包括Netflix在最初先提供一些物品给用户,我们称之为物品候选(item evidence candidate),基于用户所选择的的物品则可以进行推荐。先前的推荐研究主要有两个不足:(1)用户只有非常少量的物品交互数据不足以进行很好的推荐;(2)不充分的候选物品被用于识别用户偏好。我们提出一种基于元学习的推荐系统MeLU可以在很少量的物品条件下估计一个新用户的偏好。另外,我们提供一种候选物品选择策略来进行个性化的偏好估计。我们在两个数据集上进行了验证,平均绝对损失降低了5.92%。我们也执行了用户调查来验证提出的方法。

三、冷启动问题

  根据是否是新用户和是否是新物品,我们可以将推荐的场景划分为四个方面:

  • 非冷启动(no Cold Start):将已有物品推荐给已有用户;
  • 物品冷启动(Item Cold Start):将新物品推荐给已有用户;
  • 用户冷启动(User Cold Start):将已有物品推荐给新用户;
  • 系统冷启动(System Cold Start):将新物品推荐给新用户;

  第一种是最为常见的,是非冷启动情况下的推荐,也是最简单的情况。剩下的三种则是冷启动场景下,分为物品冷启动、用户冷启动以及系统冷启动。

  先前解决冷启动的方法主要有:

  • popularity-based:根据热门、或者随机等方式为用户提供一定的推荐列表,试图先获取一定的反馈;
  • evidence candidate:遵循一种策略,事先获得一定的候选物品供用户选择,其次根据交互结果为用户进行推荐;

但先前的方法依然存在一些问题,本文则提出一种模型无关的元学习算法(Model-Agnostic Meta-Learning, MAML),相比协同过滤方法,其可以为用户提供不同的候选物品,即便这些用户可能具有相似的特征。

四、MAML学习过程

  元学习旨在训练一个模型可以快速地从一个新的,包含少量样本(训练阶段从未见过的)的数据集上进行学习。元学习分为三种:基于度量(Metric-based)方法、基于记忆(memory-based)方法和基于优化(optimization-based)的方法;

  给定一个待优化的模型f和分布数据,给定多个Task,每个Task负责从该数据上进行采样
  基于优化的方法:(1)局部更新:对于每个Task,从分布数据集中进行采样,并进行局部更新(local-update),每个Task均可以得到对应的训练loss;
(2)全局更新:对于所有的采样Task,每个Task再次采样得到测试集,并在测试集上根据测试loss进行对参数进行更新。

  基于优化的元学习主要包含两个集合,分别是支持集(support set)查询集(query set),两个集合分别用于计算训练loss和测试loss。在局部更新时,主要在支持集(训练过程)上进行参数优化;在全局更新时,在查询集上最小化损失。整个训练的细节可以详情下图:


【注:该图引自元学习方向 optimization based meta learning 之 MAML论文详细解读

五、MeLU:用户偏好估计

在这里插入图片描述

  • 输入层(input layer):对于离散变量,使用embedding法映射到连续空间,此处包含的embedding参数;对于连续的变量则跳过embedding层直接与其他向量进行拼接;
  • 嵌入层:根据离散的特征,通过嵌入层嵌入到连续的向量空间中;
  • 拼接层:将多个特征向量直接拼接起来;
  • 决策层:由于用户和物品的向量维度不完全一致,所以无法使用矩阵分解,而使用多层神经网络;
  • 输出层:则表示优化的目标,可以是点击率,隐式反馈、停留时长等;

  为了很好的描述,我们将输入层和嵌入层作为一个整体,其对应的训练参数用 θ 1 \theta_1 θ1 表示,决策层和输出层作为一个整体,其对应的训练参数用 θ 2 \theta_2 θ2 表示。因此,整个冷启动时的训练如下图以及对应的算法所示:

在这里插入图片描述
在这里插入图片描述

  首先初始化两个参数 θ 1 \theta_1 θ1(输入层和嵌入层参数) 和 θ 2 \theta_2 θ2(决策层和输出层参数) ,然后接下来进行多轮(Epoch)迭代训练。每一轮训练过程中,挑选一定数量的用户,对每个用户(相当于MAML中的Task)进行采样得到支持集,获得少量的交互数据后,计算在支持集上得到的训练loss,并计算对应的梯度实现局部更新。每个用户的局部更新均是在 θ 1 \theta_1 θ1 的基础上进行的,如下图的灰色箭头( ∇ L 1 , . . . \nabla\mathcal{L}_1, ... L1,...)。每个用户进行局部更新的目的是,模拟让模型对新的用户进行学习的过程。在全局更新阶段则是对所有用户再次采样得到的查询集上进行的,每个用户的查询集上均可以得到测试loss,并平均后计算梯度,如下图的 θ 1 ∗ , . . . \theta_1^*, ... θ1,...

在这里插入图片描述

  在测试阶段(或实际应用阶段),当新来一个用户,以及只有少量的交互数据的前提下,只需要进行一次采样得到支持集,进行少量的局部更新后(本文实验证明只需要一次局部更新),即可得到一个适用与该用户的模型,并可以在查询集上得到较好的效果。

  基于MeLU,作者提出一种evidence candidate选择策略,其通过计算两个value,分别是gradient-based和popularity-based,前者表示每个用户在局部更新时的梯度的1范数,并进行归一化;后者是该物品的热门情况,即该物品被用户交互的相对频率,可以反映用户-物品的交互是否频繁。如果梯度的1范数越大,或者交互越频繁,我们认为这个物品可能是该用户的偏好,给与更高的分数(两个value归一化的乘积)。

六、实验

  本文的代码公开在https://github.com/hoyeoplee/MeLU ,使用的数据集包括MovieLens和Bookcrossing两个,统计信息如图所示:

在这里插入图片描述
  评价指标则包括:

M A E = 1 ∣ U ∣ ∑ i ∈ U 1 ∣ H i ′ ∣ ∑ j ∈ H i ′ ∣ y i j − y ^ i j ∣ M A E=\frac{1}{|U|} \sum_{i \in U} \frac{1}{\left|H_{i}^{\prime}\right|} \sum_{j \in H_{i}^{\prime}}\left|y_{i j}-\hat{y}_{i j}\right| MAE=U1iUHi1jHiyijy^ij

n D C G k = 1 ∣ U ∣ ∑ i ∈ U D C G k i I D C G k i n D C G_{k}=\frac{1}{|U|} \sum_{i \in U} \frac{D C G_{k}^{i}}{I D C G_{k}^{i}} nDCGk=U1iUIDCGkiDCGki

D C G k i = ∑ r = 1 k 2 R i r − 1 log ⁡ 2 ( 1 + r ) D C G_{k}^{i}=\sum_{r=1}^{k} \frac{2^{R_{i r}}-1}{\log _{2}(1+r)} DCGki=r=1klog2(1+r)2Rir1

其中 I D C G k i IDCG_k^i IDCGki表示第 i i i 个用户所有的 D C G k i DCG_k^i DCGki 得分中的最高分, R i r R_{ir} Rir 则表示模型的为用户 i i i 预测的第 r r r 个排序的物品的值(一个rate值), U U U 表示所有的用户集合。

  针对四种推荐场景,可以得到相关的结果,其中PPR和Wide&Deep分别是一种基于用户和物品特征的冷启动推荐方法和基于记忆和泛化的推荐模型,MeLU-1和MeLU-5则分别表示局部更新的次数分别是1次和5次。

在这里插入图片描述
可以发现,当“已有物品推荐给已有用户”的场景时,在MovieLens数据集上PPR的方法的MAE最低,但PPR在另外三种冷启动场景下却非常高,说明PPR方法并不能有效的缓解冷启动问题。另外本文提出的方法在冷启动场景下均达到最好效果,且局部更新的次数越多,提升越大。

  下图则表示局部更新的次数与MAE的关系,可知,不论在哪一个数据集上,MeLU均可以在第一次局部更新后就达到一定的效果,因此无需多次更新。

在这里插入图片描述

  作者还进行了一些额外的实验来验证本文提出的模型可以有效避免基于用户和物品特征冷启动下“相似用户被推荐相似的物品”的问题。如下图,当两个用户有相似的特征时,MeLU依然可以识别出他们不同的偏好,并进行个性化的推荐。图中红色表示用户偏好的物品,蓝色表示不偏好的物品,黑色五角星表示evidence candidate,黑色圆圈则用于展示两个不同用户之间的差异:

在这里插入图片描述

  作者还制作了Demo,在MoiveLens数据集上进行了A/B测试。其中第一个page用于用户提交个人信息,第二个页面则用于获取evidence candidate,一共有20部电影,第三个page则基于第二个page获得的交互数据进行推荐(也有20部电影)。发现,如果基于popularity-based方法得到的候选物品,虽然在最初,用户会选择很多物品,但这些物品可能只是由于热门的因素而被选择,但在实际推荐过程中,并非是用户感兴趣的;而使用本文提出的方法,则可以在很少的交互数据中估计用户的偏好,从而进行个性化的推荐,在推荐过程中,MeLU给出的推荐列表被选中率则高于popularity-based的方法,如下表所示:

在这里插入图片描述 其中EC表示evidence candidate被选择的平均数量,RI表示recommended item被选择的平均数量。