前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KDD'23 蚂蚁 | SAMD:异构多场景推荐方法

KDD'23 蚂蚁 | SAMD:异构多场景推荐方法

作者头像
秋枫学习笔记
发布2023-08-18 12:40:09
4820
发布2023-08-18 12:40:09
举报
文章被收录于专栏:秋枫学习笔记秋枫学习笔记

标题:SAMD: An Industrial Framework for Heterogeneous Multi-Scenario Recommendation 地址:https://dl.acm.org/doi/pdf/10.1145/3580305.3599955 会议:KDD 2023 公司:蚂蚁 代码:https://github.com/yangli268038/SAMD

1.导读

以往我们关注的多场景模型主要是针对数据分布相似的同质场景,平等地将知识迁移到不同场景中。本文关注不同场景之间的异构性,从而提出场景感知的模型无关元蒸馏方法SAMD。SAMD通过建模场景关系和异构知识提取,在异构场景中提供场景感知和模型无关的知识共享。

  • 首先得到每个场景的综合表征,
  • 然后提出一种新的元蒸馏范式来进行场景感知知识共享。
    • 元网络首先建立潜在场景关系,并为每个场景生成知识共享策略。
    • 然后,异构知识提取利用场景感知策略,在不受模型架构限制的情况下,通过中间特征蒸馏在异构场景之间共享知识。

文末有省流版哦~

2.方法

如图3所示,SAMD包含以下几个组件:场景相似性表征、场景感知元网络和异构知识提取。

  • SAMD首先基于各个场景的历史数据训练通用模型。
  • 然后,训练场景相似性表征模块,通过同时考虑场景相关属性和用户场景关系,生成综合表征,分别可视为显式相似性和隐式相似性。
  • 为了在场景之间共享场景感知知识,场景感知元网络首先通过软聚类对关系进行建模,该软聚类为每个场景分配多聚类概率。
  • 元网络以场景表征和聚类表征为输入,建立异构知识提取中使用的场景与知识共享权重之间的映射。

2.1 知识提取

首先获取各个场景的通用知识,因此基于各个场景的历史数据训练一个通用模型,即总的模型(白话说就是用所有数据先训练一个模型,如DNN),损失函数采用常规的交叉熵损失函数。

\mathcal{L}_{c e}=\sum_{(u, i) \in \mathcal{D}_{g}}-y \log \hat{y}-(1-y) \log (1-\hat{y})

2.2 场景相似性表征

如前文所述,包含显示和隐式两种相似性表征。如图3所示,显式表征反映场景的固有属性,可以将其定义为场景的静态属性用户连接的场景之间存在潜在的关系。场景-用户-场景的这种互补的潜在关系可以看作是一种隐含的相似性。(白话说:显示就是场景自带的,固有的属性;隐式就是通过用户连接反应的场景之间的关系)

2.2.1 显示相似性

给定当前场景的m个属性,则显示表征ER可以表示为下式,其中e为各个属性的embedding,表示拼接,W为权重,τ是激活函数,然后显示相似度可以通过衡量不同场景的显示表征ER来得到相似度。

E R_{i}=\tau\left(W_{\exp }\left[e_{s_{1}} \oplus e_{s_{2}} \oplus \cdots \oplus e_{s_{m}}\right]^{\top}\right), \quad E R_{i} \in \mathbb{R}^{d}

2.2.2 隐式相似性

为了充分利用隐含的相似性,通过通过swing算法构建场景和用户的关系。根据不同场景下共现用户的数量来衡量隐含相似度。如果场景i和j经常与同一用户交互,可能存在潜在的连接。为了缓解活跃用户带来的偏差,利用用户的权重因子来缓解活跃用户建立的链接的强度。场景之间i和j的相似性可以定义为下式,其中表示和场景i交互的用户的集合,w是活跃度权重,表示用户u访问场景的集合,α是平滑系数

Sim(i,j)=\sum_{u\in U_i\cap U_j}\sum_{v\in U_i\cap U_j}w_u*w_v\frac{1}{\alpha+|S_u\cap S_v|}

通过对相似度Sim进行排序,可以得到对于场景i而言最相似的G个场景,然后可以计算隐式表征为下式,即将相似的G个场景的显示表征做池化和非线性化后得到隐式表征。

IR_i=\tau(W_{imp}[MeanPooling(\{ER\}_G)]),\quad IR_i\in\mathbb{R}^d

最后将显示表征和隐式表征拼接后得到最终表征

2.3 场景感知模型无关的知识共享

2.3.1 场景感知元网络

如图4所示,元网络首先使用基于场景表征的软聚类来挖掘场景之间的潜在关系。然后,元网络建立了场景和迁移策略之间的映射连接,指导异构知识的提取。

2.3.1.1 软聚类模块

不同的场景之间会存在一些共性信息和一些差异性信息,单纯使用场景表征无法表达这些信息,软聚类用于挖掘不同场景之间的关系。令聚类个数为K,则聚类中心的表征矩阵为,然后将不同场景的表征映射到不同的聚类中,其中。然后,对每个emb做softmax归一化

q_i=\tau(W_pT_i), q_i\in\mathbb{R}^K

经过softmax后,相当于得到了当前场景属于不同聚类的概率,然后基于这些概率对聚类中心进行加权求和得到当前场景的聚类表征,公式如下,

C_i=\sum_{k=1}^K{p^k_i\cdot E_k}
2.3.1.2 元函数

在得到场景emb和聚类表征后,元函数以这两个为输入得到迁移策略,公式如下,其中g()为全连接元网络(白话说就是做维度变换),场景emb和聚类emb拼接后得到2d的维度,g()通过θ进行维度变化。为前面训练的通用模型的层数,为场景子模型i的层数,则进一步进行非线性变换和维度转换得到场景化i的迁移策略。

W_T^i=g(T_i\oplus C_i;\theta_m)W_d^i

Note: 作者希望通过这种方式,在场景中不仅可以迁移通用模型中的公共知识,还可以基于场景关系迁移相似性信息,但问题是这边是否需要考虑不同场景的负向迁移问题。

2.3.2 模型无关异构知识提取

与logits层的蒸馏相比,深度神经网络的中间特征包含更多的信息。因此,SAMD采用基于特征的蒸馏来利用通用模型中所有层的信息。基于特征的蒸馏的损失函数可以表示为下式,其中表示有层的场景i的子模型,为有层的通用模型, 表示迁移权重,表示子模型i的第m层,将模型某一层的输出转换成更易迁移的形式,如attention map,FSP矩阵等,L()为损失函数,如L1/L2或MMD等。

\mathcal{L}_{fd}=\sum_{m=1}^{M_i}\sum_{n=1}^{M_g}w_{mn}\mathcal{L}(\Phi_i(\mathcal{F}_i^m(x)),\Phi_g(\mathcal{F}_g^n(x)))

如图5所示,为了利用通用模型中所有层的信息,迁移权重w可以采用三种方式。

  • All2all蒸馏是一种简单的方法,它为每一层分配相同的权重,忽略了层之间的信息差异。
  • 语义相似度被用来自动生成迁移权重。语义相关的层(颜色相近的层)应该被赋予高迁移权重(暗线)。
  • 这些蒸馏模式忽略了场景的关系,并平等地对待每个子模型。本节所提的异构知识蒸馏方法利用了迁移策略。通过这种方式,迁移策略可以引导蒸馏模块将场景感知的层次知识从通用模型迁移到子模型。反过来,蒸馏模块将更新元网络,以生成更好的迁移策略。损失函数如下
\mathcal{L}=\sum_{i=1}^N\sum_{x\in\mathcal{D}_i}\mathcal{L}_{fd}(\mathcal{F}_i(x),\mathcal{F}_g(x))+\sum_{i=1}^N\sum_{x,y\in\mathcal{D}_i}\mathcal{L}_{ce}(\mathcal{F}_i(x),y)

3.结果

image.png

4.总结

本文是针对多场景推荐提出的方法,主要的思路是在场景知识迁移的时候考虑不同场景之间的关系。

  • 基于所有场景的数据训练一个通用模型(基础模型)
  • 在基础模型之上,考虑知识迁移
    • 软聚类,基于上面得到的场景emb进行软聚类,得到该场景的聚类表征。令聚类个数是K个,初始化K个中心,然后每次将场景emb映射到K个簇,基于中心emb得到聚类表征
    • 构建元函数,基于场景表征和聚类表征得到迁移权重
    • 基于迁移权重,将基础模型的知识迁移到不同的场景中
    • 显式表征采用场景固有属性
    • 隐式表征:基于场景中的用户活跃度和不同场景的用户的交集计算场景之间的相似度,找到和当前场景最相似的N个场景,以这N个场景的显式表征进行池化得到当前场景的隐式表征
    • 显式和隐式表征拼接后得到场景表征
    • 场景表征,通过显式和隐式表征来对不同场景信息进行表征。
    • 知识迁移
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导读
  • 2.方法
    • 2.1 知识提取
      • 2.2 场景相似性表征
        • 2.2.1 显示相似性
        • 2.2.2 隐式相似性
      • 2.3 场景感知模型无关的知识共享
        • 2.3.1 场景感知元网络
        • 2.3.2 模型无关异构知识提取
    • 3.结果
    • 4.总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档