我的推荐算法之路(9):TMCDR

一、前言

EMCDR将源域和目标域的用户偏好编码为向量,然后学习一个映射函数,该映射函数将源域中的用户向量映射为目标领域上的用户向量,基于两个领域重叠的用户,使用 MSE 损失来进行学习。这类方法往往存在如下问题:

  • 通常两个领域重叠的用户只是一小部分用户,这样学习到的映射函数会在重叠用户上过拟合,降低模型的泛化能力;
  • 使用映射导向的损失函数(MSE),对目标向量的质量有很高的要求。然而在冷启动场景中,目标向量的质量往往不尽人意,这样会导致向量表示学习中被噪声影响;

论文将跨域推荐和元学习思想结合起来,提出了一种Transfer-Meta的框架来构建用户的embedding向量,该框架分为两个阶段:Transfer阶段、Meta阶段。

原文链接:Transfer-Meta Framework for Cross-domain Recommendation to Cold-Start Users

二、TMCDR

2.1 meta learning简介

meta-learning即元学习,也可以称为“learning to learn”。常见的深度学习模型,目的是学习一个用于预测的数学模型。而元学习面向的不是学习的结果,而是学习的过程。其学习的不是一个直接用于预测的数学模型,而是学习“如何更快更好地学习一个数学模型”。

举一个现实生活的例子。我们教小朋友读英语时,可以直接让他们模仿apple、banana的发音。但是他们很快又会遇到新的单词,例如strawberry,这是小朋友就需要重新听你的发音,才能正确地读出这个新单词。我们换一种方式,这一次我们不教每个单词的发音,而是教音标的发音。从此小朋友再遇见新单词,他们只要根据音标,就可以正确地读出这个单词。学习音标的过程,正是一个元学习的过程。

2.2 Transfer阶段

Transfer阶段类似EMCDR中生成U/I embedding向量的步骤。不同的是这里使用所有的数据(而不仅是交叉域)在源域和目标域进行预训练,得到源域和目标域的U/I的embedding表示 \(u^s,v^s,u^t,v^t\)。为了验证Transfer-Meta框架的兼容性,论文中使用了MF、BPR、ListRank-MF、CML四种向量生成方法。

之后,将训练好的模型作为预训练模型,固定不动,再学习meta network。

2.3 Meta阶段

Meta阶段借鉴了元学习(meta-learning)的思想,并提出了一种Task-oriented(面向任务)的优化方法,直接使用任务标签来优化meta network。

从交叉域中的用户集抽取部分用户的数据作为task,反复在训练数据分布中抽取若干个这样的task,组成一个batch进行训练。在每个task中,将用户分为不重叠的两部分 \(U_a, U_b\) ,并得到对应的数据 \(D_a, D_b\)。这两部分用户数据分别来模拟在交叉域用户上学习知识在冷启动用户上测试这两个阶段(真正的冷启用户只有源域的信息,没有目标域的信息,不能用于做测试集,所以测试集也使用交叉域用户)。

将meta network(即与Transfer阶段相同的MF、BPR、ListRank-MF、CML四种向量生成方法)用 \(f_{\theta}(\cdot)\) 表示, \(\theta\) 表示参数。\(f_{\theta}(u_i^s)\) 表示 \(u_i^s\) 的向量(\(u_i^s\) 表示第 \(i\) 个用户源域的向量表示)。Task-oriented的损失函数优化的是 \(f_{\theta}(u_i^s)\) 而不是Transfer阶段得到的 \(u_i^s\)。Task-oriented的损失函数可以表示为(即:将Transfer阶段得到的 \(u_i^s\) 用元网络映射后与目标域的 \(v_t\) 计算loss):

\[\mho_\theta=\mathop{\sum}\limits_{x\in D_a}L_{task}(x)\]

其中,\(task\in \{MF,BPR,ListRank-MF,CML\}\)\(x\in D_a\)。另外注意的是,这里使用的U/I embedding为源域的 \(u_s\) 和目标域的 \(v_t\)。之后就可以按照元学习的双重梯度方式训练模型。task内通过交叉域用户上学习知识和在冷启动用户上测试这两个阶段学习得到每个task的 \(\theta’\);对于全部task,通过 \(\theta’\) 更新 \(\theta\)

2.4 算法流程

三、参考链接

  • https://zhuanlan.zhihu.com/p/395211316