| 作者:朱勇椿
现实生活中,一家公司通常拥有不同领域的业务,比如字节跳动有抖音、今日头条、西瓜视频,微信有看一看、公众号、视频号。而多个领域中可能有的领域数据多有的领域数据少,跨领域推荐(cross-domain recommendation)就旨在使用数据充足的领域数据帮助数据不足的领域进行更好的推荐。
跨领域领域推荐通常有两种设定,一种是共享用户的场景,比如看一看和视频号都是微信的产品,它们之间有很多共享的用户,这也称作基于用户的跨领域推荐。还有一种是共享物品的场景,比如腾讯视频和爱奇艺有很多公共的电影,这也称作基于物品的跨领域推荐。
大多数跨领域推荐方法实际上既可以用于共享用户的场景也可以用于共享物品的场景,因此这里我们不再按照场景划分,而是按照方法划分。编者本身是做迁移学习、推荐系统的,在本文的最后会简单谈谈编者对跨领域推荐的一些理解。
一、基于映射的跨领域推荐方法
跨领域推荐系统需要考虑如何连接两个领域的推荐系统,而基于映射的跨领域推荐方法则显式使用映射函数来建模两个领域间的联系。
1.1 CST[1]
这是一篇较早的跨领域推荐方法,发表于2010年的AAAI,该方法的思想近几年的话来说就是对user embedding和item embedding进行预训练。
具体来说,该方法先在源领域预训练一个SVD矩阵分解模型:
在源领域训练好后,用源领域训练好的embeding来初始化目标领域和源领域共享的用户和物品,接着使用目标领域的数据进行微调:
同时约束共享的用户和物品不要偏离初始化的embedding太远(编者认为,在真实场景大规模数据下,不加这个约束会更好,随着目标领域的数据增多,没有必要再限制必须和源领域在同一特征空间)。
1.2 EMCDR[2]
这篇文章主要针对跨领域冷启动场景,换句话说一个用户(物品)在源领域有交互数据,在目标领域没有交互数据,如何做推荐。针对跨领域推荐的场景,不同领域中的同一个用户的表示或者同一个物品的表示是存在联系的,因此EMCDR直接使用一个显示的映射函数来建模这种联系。具体而言,该方法先分别在源领域和目标领域各自训练一个矩阵分解的模型,得到用户的表示U和物品的表示V。再将领域共享的用户在源领域的表示通过映射函数映射到目标领域,希望映射后的用户表示接近目标领域的用户表示:
文中使用RMSE作为该损失函数,对于物品侧也是同理。在这篇文章之后又出现了大量基于映射的跨领域推荐方法。
1.3 SSCDR[3]
这篇文章认为,EMCDR中的映射函数是基于共享用户或者共享物品学到的,但是在现实生活中,两个领域的共享用户或者物品只占有很小的比例(低于5%),因此这样会导致映射函数学得不够好。因此这篇文章提出了一种半监督的方法,利用非共享用户的数据,来学习映射函数,增强映射函数的鲁棒性。
1.4 TMCDR[4]
这篇文章也指出EMCDR中,使用共享的用户和物品来训练映射函数,容易导致映射函数过拟合,泛化性能不好,因此为了增强映射函数的泛化性能,这篇文章提出了一种基于梯度的元学习的方法来训练映射函数,使得训练好的映射函数在没见过的用户和物品上有更好的泛化性能。
二、协同训练多领域的跨领域推荐方法
这一类方法不再显式地建模两个领域间的关系,而是直接联合训练多个领域的数据,这类方法和多任务学习的框架很相似,主要涉及都在于模型结构上的知识共享、知识迁移。
2.1 CMF[5]
这是一篇很早期做跨领域推荐的方法,准确地说该方法不仅可以用于跨领域推荐还可以用于多任务推荐等推荐任务。具体来说,该方法将两个领域的数据联合起来进行矩阵分解,通过共享的中间变量V(可以是共享的用户也可以是物品)实现知识迁移的效果。
2.2 Conet[6]
这篇文章主要考虑如何在深度神经网络中实现跨领域推荐,因此这篇文章提出了一种新的网络结构,在两个领域的结构中交互信息,实现领域间对偶知识迁移的效果。
2.3 AFT[7]
还有很多类似Conet的跨领域推荐的方法,在结构上针对知识迁移进行改进。但是大多数这类方法在实验中都只测试目标领域上的效果,实际上我们可以看到在结构上的设计并没有针对目标领域的特定设计,实质上对源领域也应该有同样的效果,但是实验并没有评估源领域上的效果,下面介绍的AFT在实验上同时测评了多个领域上的效果,并且有线上实验的效果。这篇文章是微信看一看团队应用在召回的工作,该方法将领域编码为domain embedding,利用到用户在不同领域的行为序列,使用transfomer来编码用户在不同领域的行为。另外还提出了一种基于对抗的筛选样本的方法。
三、总结
现在推荐系统的演进有这样一个趋势,从单任务到多任务,从单领域到多领域,前几期分享了单任务单领域上的冷启动推荐、序列推荐、特征交互,还分享了多任务推荐。这一期我们分享了跨领域推荐。这也是编者认为推荐系统演进的一个方向,先在单领域单任务上做好,然后考虑多个任务之间如何相互帮助,再考虑多个领域之间怎么相互帮助。多任务推荐和跨领域推荐之间是什么关系呢?多任务推荐中的任务通常是指一些优化目标,比如CTR,CVR联合优化,而跨领域推荐则指不同的推荐系统领域。事实上多任务推荐和跨领域推荐有的方法是很相似的,跨领域推荐第二类方法考虑多个领域数据联合训练,这类方法实际上和多任务的方法非常相似,比如上面提到的Conet也是可以考虑用来做多任务推荐的,而多任务的MMoE一类的方法也能来做跨领域推荐,但是通常跨领域推荐不会去和多任务推荐的模型比,并且也不会列出源领域的效果,事实上我们希望能够看到对源领域是否也有帮助以及和相似的多任务方法的一个比较。从现在的研究进展来看,编者认为跨领域推荐和多任务推荐是远不如单领域单任务推荐成熟的,还有很多可以研究的问题,比如今年KDD[7,8]在跨领域推荐中引入序列信息,将debias和跨领域推荐结合[9]等等。
[1] Transfer learning in collaborative filtering for sparsity reduction. AAAI2010.
[2] Cross-Domain Recommendation: An Embedding and Mapping Approach. IJCAI2017.
[3] Semi-supervised learning for cross-domain recommendation to cold-start users. CIKM2019.
[4] Transfer-Meta Framework for Cross-domain Recommendation to Cold-Start Users. SIGIR2021.
[5] Relational Learning via Collective Matrix Factorization Categories and Subject Descriptors. KDD2008.
[6] Conet: Collaborative cross networks for cross-domain recommendation. CIKM2018.
[7] Adversarial Feature Translation for Multi-domain Recommendation. KDD2021.
[8] Dual Attentive Sequential Learning for Cross-Domain Click-Through Rate Prediction. KDD2021.
[9] Debiasing Learning based Cross-domain Recommendation. KDD2021.
更多论文,欢迎访问https://github.com/hongleizhang/RSPapers