作者 | Chilia 整理 | NewBeeNLP
什么是跨域推荐呢?一句话概括就是:跨域推荐(Cross-Domain Recommendation)是 迁移学习 在推荐系统中的一种应用。
跨域推荐的目的一般是下面几个:
域的相似性可以从如下几个方面来看:
下面,介绍四种常见的跨域推荐解决方案。
对于那些两个域中有重叠user/item的情况,可以共享、融合不同域中相同user/item的embedding表示,来使得embedding包含每个领域中的信息。如何 结合 不同领域中的embedding,是值得仔细研究的问题。
代表论文:A Graphical and Attentional Framework for Dual-Target Cross-Domain Recommendation[1] [ijcai, 2020]
这篇论文属于dual-target迁移,即 同时 提升源域和目标域的准确率。亮点有两个:
(1)使用图网络来建模user-item, user-user, item-item的关系
(2)更精细地合并不同域的重合user/item embedding(使用 attention 机制)
下面来详细介绍模型结构。
对于不同领域间有重叠user/item的情况,可以以这些重叠user/item作为 桥梁 ,链接起不同的领域。这样,我们就得到了 一个所有领域共享的异构图 ,形如下图:
代表论文:HeroGRAPH: A Heterogeneous Graph Framework for Multi-Target Cross-Domain Recommendation \[recsys 2020\][2]
这篇文章还是为了解决协同过滤中的sparsity issue,只不过针对的是多个域的共同学习。如果有n个域的话,采用上文所述的pairwise迁移方法就需要构建 个域之间的关系,可不可以直接把所有域的关系都综合起来呢?
可以构建一个所有域共享的异构图,如果user对某个item有交互,那么user-item之间就有边,边的权重可以是正则化后的rating;user-user和item-item边的权重是它们属性特征的相似度。这里,重叠的用户充当着链接起多个域的“桥梁”:
模型结构如下:
对于每个user/item分别学习两个embedding:
之后,把两个embedding用某些方法拼接/融合在一起,利用双塔模型计算user-item相似度。
适用场景:存在多个数据较为充足的 源域 ,以及数据较为稀疏的 目标域 ,想要提高目标域上的 冷启动 推荐性能,而冷启动用户大多在源推荐领域有交互记录。
代表论文:Cross-Domain Recommendation: An Embedding and Mapping Approach[3] [ijcai 2017]
首先在每个领域对user-item的rating矩阵进行矩阵分解,得到每个域内user/item的embedding;之后利用 重叠实体 (以用户为例)训练一个由源领域到目标领域的 映射函数 ,试图使源域映射后的用户embedding接近目标域的用户embedding。这个映射函数可以是线性的( 图中step2 Linear mapping),也可以是非线性的(图中step2 MLP mapping)。训练完成后利用得到的映射函数便可以 将冷启动用户映射到目标领域 ,进行推荐。
利用多个领域的数据同时对多个领域上的模型进行训练,通过模型间的信息交互使得每个领域的模型的推荐性能得到提高,类似 多任务学习 。
代表论文:CoNet: Collaborative Cross Networks for Cross-Domain Recommendation[4]
场景:用户在app商店下载app;同时在网上阅读新闻 -- 我们都用最简单的MLP来预估两个域上的CTR(注意这个任务是CTR预估,属于精排而非召回)。
那么,如何同时提高这两个域的推荐精度呢?最直接的transfer learning的思想就是把一个网络的前若干层直接拷贝到另一个网络做初始化,然后再在此基础上做微调。但是,这引入了一个很强的假设,即这两个域前几层的分布是一样的,然而事实并非如此。所以,我们可以用更为复杂的mapping来代替这种identical mapping。
模型结构如下:
如果不看中间的红色虚线的话,我们会发现这就是两个最简单的CTR预估模型,即把user、item的特征拼接起来,然后输入MLP中得到预测结果。此时由于利用了两个域中的共同user,所以user embedding是共享的,两个任务的梯度都可以反传来更新user embedding,此时问题退化为shared-bottom多任务学习,共享的底层参数就是user embedding。
那么,能不能利用两个任务也来指导中间hidden layer的学习呢?本模型使用类似 Cross-stitch 网络,第L+1层隐藏层同时由本任务的第L层隐藏层和对方任务的第L层隐藏层决定:
这样,两个域的预测loss都可以反传来更新两个模型的 隐藏层 参数,起到了正则化和增加训练集的目的。
(注:这个模型和多任务CTR预估中的SNR比较类似,都是对不同子网络的输出进行组合又输入到了下一层子网络,形成子网络的组合。)
[1]Graphical and Attentional Framework for Dual-Target Cross-Domain Recommendation: https://www.ijcai.org/proceedings/2020/0415.pdf
[2]HeroGRAPH: A Heterogeneous Graph Framework for Multi-Target Cross-Domain Recommendation [recsys 2020]: https://ceur-ws.org/Vol-2715/paper6.pdf
[3]Cross-Domain Recommendation: An Embedding and Mapping Approach: https://www.ijcai.org/proceedings/2017/0343.pdf
[4]CoNet: Collaborative Cross Networks for Cross-Domain Recommendation: https://www.ijcai.org/proceedings/2017/0343.pdf