如何在跨域推荐中使用对比学习?

2022-09-19 10:08:16 浏览数 (1)

标题:Contrastive Cross-domain Recommendation in Matching 链接:https://arxiv.org/pdf/2112.00999.pdf 代码:https://github.com/lqfarmer/CCDR 会议:KDD 2022 公司:腾讯

1. 导读

跨域推荐(CDR)是借助源域在目标域中提供更好的推荐结果。然而,匹配(matching,即候选生成)模块中的CDR在知识迁移和表征学习上受数据稀疏性和流行度偏差的影响。本文提出了一种对比跨域推荐 (CCDR) 框架,用于CDR中的匹配。具体来说,我们构建了一个巨大的多元化偏好网络来捕获反映用户不同兴趣的多种信息,并设计了一个域内对比学习(intra-CL)和三个域间对比学习(inter-CL)任务,以更好地表征学习和知识转移。域内对比学习通过图增强在目标域内实现更有效和平衡的训练,而域间对比学习从用户、分类和邻居三方面构建不同类型的跨域交互。

2. 方法

2.1 问题定义和总体框架

2.1.1 匹配中的CDR

本文专注于经典两阶段推荐系统的匹配模块。匹配是排序前的第一步,从大量的候选商品中有效地检索数百个商品。它更关心是否检索到好的商品(通常通过命中率来衡量),而不是排序模块考虑的特定top-n商品排名(通常通过 NDCG 或 AUC 衡量)。

2.1.2 总体框架

CCDR 使用三种类型的损失进行训练,包括原始的源/目标单域损失、域内 CL 损失和域间 CL 损失。

  • (1)首先针对每个域分别构建一个全局多元化偏好网络,作为用户偏好的来源。这个多样化的偏好网络包含用户、商品、标签、类别、媒体和单词等各种对象及其交互,从而从不同方面带来用户多样化的偏好。
  • (2)通过 GNN 聚合器和基于邻居相似性的损失训练单域匹配模型。
  • (3)由于冷启动域缺乏足够的用户行为,在目标域内引入域内 CL ,使用基于数据增强的子图训练更可靠的节点表示。
  • (4)为了增强跨域知识迁移,通过对齐两个域之间的用户、分类及其邻居设计了三个域间 CL 任务,它们与多样化的偏好网络很好地配合。

2.2 多样化的偏好网络

传统的匹配和 CDR 模型通常严重依赖用户-商品交互来学习 CTR 目标和跨域映射。但是,由于流行度偏差问题,它会降低匹配的多样性。它没有充分利用除不同域之间的用户之外的其他连接(例如,标签、单词、媒体)。

本节为每个域构建了一个全局多样化偏好网络,将推荐中的 6 类重要对象作为节点,将它们的异构交互作为边。具体来说,使用 item、user、tag、category、media 和 word 作为节点。标签和类别是代表用户细粒度和粗粒度兴趣的商品分类法。媒体表示商品的生产者。词反映了从商品的标题或内容中提取的商品的语义信息。为了缓解数据稀疏性和加速离线训练,根据用户的基本资料将用户聚合到用户组中(所有具有相同性别-年龄-位置属性的用户都聚集在同一个用户组中)。这些用户组在 CCDR 中被视为用户节点。

对于边的构建,考虑以下六个与商品相关的交互:

  • (a)用户-商品边(U-I)。如果一个商品与用户组交互至少 3 次,则生成此边。同时考虑多种用户行为(即点击、点赞、分享)来构建具有不同权重的边。
  • (b)商品-商品边 (I-I)。I-I 边引入了会话中用户行为的序列信息。如果两个商品出现在会话中的相邻位置,则构建它。
  • (c)分类-商品边 (T-I)。T-I 边连接商品及其标签。它捕获商品的细粒度分类信息。
  • (d)类别-商品边 (C-I)。它记录商品的粗粒度分类信息。
  • (e)媒体-商品边 (M-I)。它将商品与其生产者/来源联系起来。
  • (f)词-商品边 (W-I)。它从标题中突出显示商品的语义信息。

每条边都是无向的,但根据边的类型和强度(例如,U-I 边的计数)进行经验加权。与传统的 U-I 图相比,多样化偏好网络通过这些异构的交互作用从不同方面描述商品。这种多样化偏好网络具有以下优点:

  • (1)它带来了额外的信息作为用户-商品交互的补充,共同提高了准确性和多样性。
  • (2)它可以通过用户、标签、类别和单词在不同域之间建立更多潜在的桥梁。

2.3 单域GNN聚合器

2.3.1 基于GNN的聚合器

本文采用 GAT作为多样化偏好网络的聚合器,为所有异构节点随机初始化

e_i^0

。对于每个节点

e_i

和他的邻居节点

e_k in N_{e_i}

,通过加权聚合得到下一层的表征,公式如下,σ为sigmoid函数,f()为leakyrelu激活函数,||为拼接。

boldsymbol{e}_{i}^{x}=sigmaleft(sum_{e_{k} in N_{e_{i}}} alpha_{i k}^{x} boldsymbol{W}^{x} boldsymbol{e}_{k}^{x-1}right)
alpha_{i k}^{x}=frac{exp left(fleft(boldsymbol{w}^{x^{top}}left[boldsymbol{W}^{x} boldsymbol{e}_{i}^{x-1} | boldsymbol{W}^{x} boldsymbol{e}_{k}^{x-1}right]right)right)}{sum_{e_{l} in N_{e_{i}}} exp left(fleft(boldsymbol{w}^{x^{top}}left[boldsymbol{W}^{x} boldsymbol{e}_{i}^{x-1} | boldsymbol{W}^{x} boldsymbol{e}_{l}^{x-1}right]right)right)},

2.3.2 基于优化的邻居相似度

在实际的 CDR 场景中,用户对(冷启动)目标域中的商品的历史行为通常较少。传统的基于embedding的匹配方法,如矩阵分解(MF),无法从稀疏的用户-商品交互中获得足够的监督信息,因此无法学习可靠的用户和搜表征进行匹配。为了从行为、会话、分类、语义和数据源方面捕获更多信息,在多样化偏好网络上进行基于邻居相似性的损失 。如图 2 所示,这种损失将所有节点投射到相同的潜在空间中,使所有节点与其邻居相似。它将所有类型的边视为无监督信息,以指导除用户-商品交互之外的训练。损失函数如下,

e_i

为聚合后的节点表征,

e_k

为其邻居节点,

e_j

随机采样的负样本

L_{N}=-sum_{e_{i}} sum_{e_{k} in N_{e_{i}}} sum_{e_{j} notin N_{e_{i}}}left(-log left(sigmaleft(boldsymbol{e}_{i}^{top} boldsymbol{e}_{j}right)right) log left(sigmaleft(boldsymbol{e}_{i}^{top} boldsymbol{e}_{k}right)right)right)

2.4 域内对比学习

在域内对比学习中,对每个节点聚合进行基于子图的数据增强,采用经典图增强中的动态节点/边丢失。对于一个节点

e_i

,采样两个邻居集

N_{e_i}

N'_{e_i}

进行GNN聚合,得到两个节点表征

e_i

e_i'

e_i'

e_i

的域内正样本,不同的子图采样侧重于

e_i

的不同邻居。从

e_i

的同一批次中的其他样本中随机采样到负样本

e_j

。基于infoNCE构建损失函数如下,

L_{text {intra }}=-sum_{B} sum_{e_{i} in B} log frac{exp left(operatorname{sim}left(boldsymbol{e}_{i}, boldsymbol{e}_{i}^{prime}right) / tauright)}{sum_{e_{j}^{prime} in S_{B i}} exp left(operatorname{sim}left(boldsymbol{e}_{i}, boldsymbol{e}_{j}^{prime}right) / tauright)}

2.5 域间对比学习

image.png

2.5.1 基于用户的域间对比学习

从用户角度,每个用户

u_i

有两个用户表征

u_i^s

u_i^t

在源域和目标域中通过前面的GAT学习。尽管用户在两个域中可能有不同的偏好和行为模式,但源域表征与其目标域表征应该比任何其他表征

u_j^t

更相似,因此损失函数构建如下,

L_{i n t e r_{u}}=-sum_{u_{i}} log frac{exp left(operatorname{sim}left(boldsymbol{u}_{i}^{s}, boldsymbol{u}_{i}^{t}right) / tauright)}{sum_{u_{j} in S_{u_{i}}} exp left(operatorname{sim}left(boldsymbol{u}_{i}^{s}, boldsymbol{u}_{j}^{t}right) / tauright)}

2.5.2 基于分类的域间对比学习

CCDR 构建了一个多样化的偏好网络,该网络在不同的域中引入了更多的桥梁。假设不同域中的相同标签/类别/单词应该具有相同的含义。与上述基于用户的方式类似,构建基于分类的损失函数,公式如下,

L_{text {inter }_{t}}=-sum_{t_{i}} log frac{exp left(operatorname{sim}left(boldsymbol{t}_{i}^{S}, boldsymbol{t}_{i}^{t}right) / tauright)}{sum_{t_{j} in S_{t_{i}}} exp left(operatorname{sim}left(boldsymbol{t}_{i}^{S}, boldsymbol{t}_{j}^{t}right) / tauright)}

2.5.3 基于邻居的域间对比学习

除了跨域的用户和分类的明确对齐之外,还有一些基本对象,例如没有明确映射的商品。在两个域中未对齐的节点之间引入更多隐式的跨域知识迁移路径。假设不同域中的相似节点应该有相似的邻居(例如,相似的商品可能有相似的用户、分类法和生产者)。因此,设计了一种基于邻居的域间对比学习,它在不同域中的对象之间建立间接(多阶)连接。准确地说,将

E_A

定义为整体对齐的节点集(包括用户、标签、类别和单词)。损失函数如下,对于源域中的节点表征

e_i^s

,其目标域邻居的表征

e_k^t

是正样本,而其他目标域表征

e_j^t

是负样本。

L_{text {inter }}=-sum_{e_{i} in E_{A}} sum_{e_{k} in N_{e_{i}}^{t}} log frac{exp left(operatorname{sim}left(boldsymbol{e}_{i}^{s}, boldsymbol{e}_{k}^{t}right) / tauright)}{sum_{e_{j} notin N_{e_{i}}^{t}} exp left(operatorname{sim}left(boldsymbol{e}_{i}^{s}, boldsymbol{e}_{j}^{t}right) / tauright)}

2.6 多任务优化

总体损失函数构建如下,

L_{N_s}

,

L_{N_t}

分别为源域和目标域的匹配损失函数。

L=lambda_{1} L_{N_{s}} lambda_{2} L_{N_{t}} lambda_{3} L_{text {intra }} lambda_{4} L_{text {inter }}
L_{inter}=L_{inter_u} L_{inter_t} L_{inter_n}

3. 结果

0 人点赞