多场景多任务建模(三): M2M(Multi-Scenario Multi-Task Meta Learning)

news2024/11/23 0:33:01

多场景建模: STAR(Star Topology Adaptive Recommender)

多场景建模(二): SAR-Net(Scenario-Aware Ranking Network)

前面两篇文章,讲述了关于多场景的建模方案,其中可以看到很多关于多任务学习的影子,我们也介绍了两者的区别:

  • 多任务学习通常是聚焦于单独一个domain(场景、领域)内的不同任务的处理,即不同任务的label空间是不同的;
  • 而多场景建模则是关注于多个domain的同一个任务的建模,比如CTR,即不同场景的label空间是一样的,但数据分布是不同的。

多场景 v.s. 多任务

然后,这两种在生产环境中其实是经常一起出现的,比如下面的场景,一个广告主可能会在多个场景下操作,并且会在这些场景下产生不同的行为,而模型便需要去预测广告主在对应场景下的多种行为,然后根据不同的行为去给他们提供不同的工具。

那么,今天这篇文章就在前面多场景建模的基础上,开启关于多场景多任务学习的扩展系列。

概述

Leaving No One Behind: A Multi-Scenario Multi-Task Meta Learning Approach for Advertiser Modeling

CIKM’22:https://arxiv.org/abs/2201.06814

这篇论文的业务场景与平常的用户点击率预估不同,不是针对用户建模,而是聚焦于广告主,目标在于理解广告主的需要和效果(performance),并且task是属于回归问题,但其实这两者的很多实践是互通,可以互相借鉴。

广告主建模通常涉及多种任务,比如预测广告主的消耗、活跃率和促销产品的曝光等等,并且电子商务平台往往提供多种营销场景,比如赞助搜索、展示广告和直播广告等,同时广告主在这些场景的行为是分散的。

这便催生了综合考虑多场景和多任务的广告主建模的必要性,但同时考虑多场景和多任务存在着一些挑战:

  1. 老生常谈的问题,每一个场景或者每一种任务单独建模,成本很高,难以扩展。即使是使用前面的多场景建模或者多任务学习,同样是存在这个问题的,因为仍然需要一个场景建模去一个多任务模型,或者一种任务去建模一个多场景模型
  2. 新的场景或者样本很少的小场景建模难度较高。对于小场景,样本数量很少很分散,难以训练一个可靠的模型,对新场景的预测存在更大的精度问题,因此如何迁移不同场景之间的信息,同时保持场景自己的特性便成了问题所在
  3. 场景间的多任务相关性是复杂的,难以精确捕获。给定一个任务,比如不同场景下的广告主的消耗,场景间的关联可能是正向、负向的,或者是没有关联的,更进一步,这些相关性还涉及多种任务,可能还会演变和变化。如下图:

不同任务下场景对的相关性

为了克服这些挑战,论文提出了M2M,一种多场景多任务的元学习模型,它的整体结构如下图所示:

  1. backbone network是来学习广告主相关的特征和任务特征的表征;
  2. 元学习机制包括一个元注意力层和一个元残差网络,分别来捕获复杂多样的场景间相关性和增强场景特定特征的表征能力
  3. 最后,还在多任务上使用了一种联合泊松损失(joint Poisson loss)来优化模型

这里的骨干网络(backbone network)是采用MTL的基础结构,多专家的门控/注意力机制,也就是M2M在MTL的基础下引入了元学习单元,如下图所示:

符号定义

  1. 场景属性集合: S = { s 1 , s 2 , . . . , s l } S=\{s_1,s_2,...,s_l\} S={s1,s2,...,sl},广告主在不同营销场景的场景相关信息
  2. 广告主画像集合: A = { a 1 , a 2 , . . . , a m } A=\{a_1,a_2,...,a_m\} A={a1,a2,...,am}
  3. 多类型的行为序列: X b = { X b t } t = 1 T X_b=\{X_b^t\}^T_{t=1} Xb={Xbt}t=1T,表示在一段时间T内的多种类型的行为信息, X b t = { x b 1 t , x b 2 t , . . . , x b m t } X_b^t=\{x^t_{b1},x^t_{b2},...,x^t_{bm}\} Xbt={xb1t,xb2t,...,xbmt} 表示在时间t广告主的特征
  4. 多类型的效果(performance)序列: X p = { X p t } t = 1 T X_p=\{X_p^t\}^T_{t=1} Xp={Xpt}t=1T,表示在一段时间T内的多种类型的执行信息, X p t = { x p 1 t , x p 2 t , . . . , x p m t } X_p^t=\{x^t_{p1},x^t_{p2},...,x^t_{pm}\} Xpt={xp1t,xp2t,...,xpmt} 表示在时间t广告主的特征

具体地可以参照下图:

特征描述

1. Backbone Network

Backbone Network

1.1 Shared Bottom Embedding.

这里还是常规做法,因为 { X b , X p } \{X_b,X_p\} {Xb,Xp} 包含连续值的特征,比如页面浏览、点击、消耗,第一步便是将这些连续值特征进行离散化,然后转化为高维的one-hot向量,接着使用embedding layer映射为低维的密集表征。

这样,每一个时间序列即每一个行为就对应得到了固定大小的低维向量,同时还加入位置embedding来捕获历史执行和行为序列的顺序或时间信息,但论文是将特征embedding与位置embedding进行拼接,而不是相加。

1.2 Transformer Layer.

上一步对特征映射到低维表征后,便使用transformer layer来学习每一个时间序列的更加深层次的表征,来捕获与其他时间序列的相关性,众所周知,相比于RNN和LSTM,transformer更高效和有效。

transformer layer仍然是常规的做法,由多个Self-attention Layer组成的multi-head self-attention。(论文的公式写错了,V是在softmax之后的)

Self-attention Layer

  • Q,K,V分别表示输入embedding的query、key和value
  • d为K的维度的缩放因子
  • Q,K,V这三个矩阵是时间序列特征embedding的同等维度下的线性映射,如下式 h e a d i head_i headi

multi-head self-attention

  • h是注意力头的数量

  • X为输入的时间序列特征embedding

  • W i Q , W i K , W i V W^Q_i,W^K_i,W^V_i WiQ,WiK,WiV 为上述提到的 h e a d i head_i headi 的Q,K,V线性映射的参数矩阵

  • 并且,由于存在后面的Expert View Representation,transformer layer不加入额外的非线性单元

最后,将学习到行为序列和效果序列特征的表征进行拼接:

1.3 Expert View Representation.

经过transformer layer之后得到的序列特征表征会与其他特征表征进行拼接,然后输入到MMoE网络,构建拥有不同的共享表征的混合专家层:

E i E_i Ei 是第i个专家的输出,k为专家的数量

1.4 Task View Representation.

除了embedding特征之外,论文还将所有task嵌入到相同的空间,扮演task的“锚点”来引入task的先验知识来影响特征信息的权重。由于没有在测试集中加入任何特定的label信息,因此提取的task表征是全局而非局部的。

具体地,将task信息的one-hot转换到低维的密集表征,然后输入到一个带有LeakyReLU激活函数的feed-forward layer:

T t T_t Tt 是第t个task的锚点embedding,m是task的数量

1.5 Scenario Knowledge Representation.

场景知识表征是广告主的广告场景的知识表征,论文在这里不单使用广告主营销场景的属性,还加入广告主的画像信息,来更好地学习多任务,其表征层仍然是feed-forward layer:

2. Meta Learning Mechanism

Meta Learning Mechanism

为了更好地从不同的序列特征中刻画场景特定的表征,论文提出了一种元学习机制,包含两个组件:

  • 元注意力模块:meta attention module,放置在底层,来捕获多样的场景之间的关联
  • 元残差塔模块:meta residual tower module,放置在上层,来增强捕获场景表征的能力

具体地,整个元学习机制架构如下图:

Meta Learning Mechanism

2.1 Meta Unit

在元学习机制中,Meta Unit是一个基础组件,充斥着整个元学习模块。

Meta Unit的作用是显式建模不同场景的相关信息。如上图[Meta Learning Mechanism]所示,使用场景知识 S ~ \tilde{S} S~作为输入,来更好地捕获场景间的关联。meta unit会将场景知识转换为动态的权重和偏置参数,用于后续的meta attention和meta tower,具体如下式:

  • h i n p u t h_{input} hinput是d维的输入向量, σ \sigma σ是非线性激活函数,K是meta unit的层数

  • W ( i ) ∈ R d × d , b ( i ) ∈ R d W^{(i)} \in \mathcal{R}^{d \times d},b^{(i)} \in \mathcal{R}^d W(i)Rd×db(i)Rd 是projection参数,由场景知识生成,经过一层全连接网络,然后reshape改变维度得到,如下式:

最后,meta unit的输出可以使用 M e t a Meta Meta 函数来表示:

不同于常规的实现:将场景相关信息作为输入去建模,meta unit结合场景知识来为每个特定场景生成动态的参数权重,通过获得场景特定的表征,这种显式的建模方式,可以显著提升新场景或者小场景的表现

2.2 Meta Attention Module

Meta Attention在元学习机制的底部,其目的在于为backbone network生成的多个专家特征学习不同的贡献权重。

直觉上来看,每一种task依赖于共享特征的不同部分,但是忽视场景因素,直接计算注意力分数是不准确的,因为不同场景的训练样本数量是不同的,并且对于某种特定的task,不同场景的数据分布可能是动态的,然而传统的注意力模块能够建模task和特征之间的关联,而场景特定的差异是被忽略的。

论文提出的meta attention致力于计算注意力分数的同时,能够捕获场景的信号,帮助注意力模块学习为不同的场景产生动态的注意力权重。

具体地,为了根据给定的场景相关信息来建模注意力分数的不同模式,论文在attention模块中加入了上一小节的meta unit:

  • E i , T t E_i,T_t EiTt 分别是上一节中backbone network产出的专家特征表征向量和task锚点embedding,它们的维度分别是 d 1 d_1 d1 d 2 d_2 d2
  • 隐藏层向量 v ∈ R d 1 + d 2 v \in \mathcal{R}^{d_1+d_2} vRd1+d2 将隐藏层向量映射为权重标量

最终的第t个task的表征 R t R_t Rt 便是由多个专家特征表征向量通过它们对应的注意力权重进行加权求和:

由于提取了场景知识,并且使用了这些信息去生成权重和偏置,因此meta attention模块不仅能够建模task和特征之间的相关性,也是具备捕获复杂的场景之间的关联的能力的。

2.3 Meta Tower Module

经过元注意力模块之后,获得聚合后的隐表征,M2M接着使用一个meta residual tower module来区分不同的场景,这个模块同样有着meta unit。

因为对于一个特定的task,特征模式会因场景而异,一个简单的共享feed-forward网络是无法有效捕获不同的场景信息,因此论文才引入了meta residual tower module:

  • R t R_t Rt 是上一个小节中第t个task的attention输出
  • σ \sigma σ 是一个非线性激活函数
  • L是残差网络的层数

3. Optimization

3.1 损失函数

Poisson Loss

M2M的损失函数包括两部分:

  • 第一部分是每个task的loss乘以权重 λ t \lambda_t λt,然后求和。loss使用了适用于labels服从泊松分布的Poisson Loss
  • 第二部分是对 W 1 , W 2 W_1,W_2 W1,W2 的正则惩罚项, W 1 , W 2 W_1,W_2 W1,W2 分别指meta unit和其他网络的参数, α \alpha α 则表示正则惩罚项的权重

3.2 超参数

  • 底层共享的embedding layer使用的维度为16
  • transformer模块使用了2个注意力头
  • feature views和task views表征的维度为256
  • 全部激活函数都使用了LeakyReLU
  • batch size为256,学习率为 2 × 1 0 − 3 2 \times 10^{-3} 2×103,Adam作为优化器,Adam的参数分别为: β 1 = 0.9 , β 2 = 0.998 , ε = 1 × 1 0 − 9 \beta_1=0.9,\beta_2=0.998,\varepsilon=1 \times 10^{-9} β1=0.9,β2=0.998,ε=1×109
  • 梯度裁剪范围为:[3, -3],训练了10轮

3.3 metrics

常规的回归问题通常使用MAPE (Mean Absolute Percentage Error)来评估微观的平均效果,NMAE (Normalized Mean Absolute Error)来评估宏观的平均效果,但是部分task,比如曝光和点击等,会出现不可计算的MAPE,因此使用SMAPE (Symmetric Mean Absolute Percentage Error)来代替MAPE:

  • N是广告主的数量, y ^ i , y i \hat{y}_i,y_i y^iyi分别是第i个广告主的预估和真实标签。

实验结果

不同模型效果对比

不同组件的消融实验

超参数实验

总结

M2M是针对多任务多场景业务而提出的框架,能够建模不同task与特征的关联的同时,引入场景知识来捕获场景间的关联

1、底层的backbone network采用MTL结构+transformer layer

2、M2M提出了应对多任务多场景的高效的元学习机制:

  • meta unit作为其中的基础组件,为不同场景产生动态的参数
  • meta attention模块注入场景知识(meta unit)来为task计算不同场景下的多个experts的注意力分数
  • meta tower模块为特定task进一步特征交叉的同时加入场景知识(meta unit)

3、可以应用于存在多种不同类型行为序列的场景,如论文中针对广告主的两种序列:登录、投标等行为序列以及GMV、RIO等效果序列

4、另外,发现论文对transformer layer后的序列embeddings聚合方式没有提及;并且在meta unit中,为了计算场景动态权重 W ( i ) ∈ R d × d W^{(i)} \in \mathcal{R}^{d \times d} W(i)Rd×d,需要的参数矩阵 V w V_w Vw O ( N 3 ) O(N^3) O(N3) 级别的: d S ~ × ( d E × d E ) d^{\tilde{S}} \times (d^{E} \times d^{E}) dS~×(dE×dE),参数量是比较大的。

代码实现

transformer layer后的序列embeddings聚合方式:使用 S ~ \tilde{S} S~ 去做一个target attention,即 S ~ \tilde{S} S~作为Q,序列embeddings作为K和V。

recommendation/multidomain/m2m.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2216688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OGG错误:ORA-28000:the account is locked

问题描述 问题分析 从错误看,应该是ogg的角色锁定了,需要解锁 解决方案 解锁用户 SQL> alter user GGR_OGSREPO account unlock;

【Spring】Spring实现加法计算器和用户登录

加法计算器 准备工作 创建 SpringBoot 项目&#xff1a;引入 Spring Web 依赖&#xff0c;把前端的页面放入项目中 **<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport"…

Linux介绍及常用命令

Linux 系统简介 1969 年&#xff0c;AT&T 公司的⻉尔实验室P MIT 合作开发的 Unix&#xff0c;在于创建⼀个⽤于⼤型、并⾏、多⽤户的操作系统Unix 的推⼴&#xff1a;从学校⾛进企业Unix 的版本要两个&#xff1a; AT&T System V ——就是俗称的 系统 5Berkley Soft…

Linux中文件的理解

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年10月16日 &#x1f4e8; 博主码云地址&#xff1a;渣渣C &#x1f4d5;参考书籍&#xff1a…

如何使用Nessus软件

Nessus&#xff08;Win2022虚拟机已安装&#xff09; [ root root ] 访问https://127.0.0.1:8834 如果出现以下问题 解决方法&#xff1a; 1.在地址栏输入&#xff1a;about:config 2.在搜索框 输入&#xff1a;security.enterprise_roots.enabled 将值切换为true即可。…

Java算法竞赛之getOrDefault()--哈希表最常用API!

解释: for (char ch : magazine.toCharArray()) { charCount.put(ch, charCount.getOrDefault(ch, 0) 1); } 在Java中&#xff0c;HashMap 是一个用于存储键值对的数据结构&#xff0c;其中每个键都是唯一的。put 方法用于将指定的键与值放入 Has…

AI控制工业机器人入门教程

简介 AI控制的工业机器人正在改变现代制造业的面貌。与传统的编程控制不同&#xff0c;AI使机器人能够通过感知环境、自主决策和学习不断优化自身的操作。这篇教程将介绍实现AI控制工业机器人的必要知识和技能&#xff0c;帮助读者从基础开始构建起AI控制机器人的理解和能力。…

TypeScript新手学习教程--接口

TypeScript 也支持接口&#xff0c;跟Java类似&#xff0c;这对于学习过java&#xff0c;c#&#xff0c;php语言的人更容易上手&#xff0c;虽然类似&#xff0c;但是也有不同&#xff0c;下面开始学习。 1、 接口声明 TypeScript的核心原则之一是对值所具有的结构进行类型检…

anaconda(jupyter)安装教程

目录 一、下载anaconda安装包 二、安装程序 三、怎么使用 四、把jupyter界面语言修改成中文 一、下载anaconda安装包 anaconda官网&#xff1a;下载 Anaconda Distribution |蟒蛇 清华大学开源软件镜像站官网&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source M…

Linux服务部署,遇到的各种问题之一(测试篇)

最近服务器需要搬迁&#xff0c;所有的服务都需要迁移&#xff0c;从初始化数据盘&#xff0c;到服务部署的各种细节&#xff0c;下面我们一一来说 初始化数据盘就不用说了&#xff0c;大概率&#xff0c;作为测试接触不到。 今天来说是ubuntu显示的中文文件乱码问题如何解决…

SpringBoot集成Mongodb实现增删改查操作

目录 一、Mongodb概念 二、SpingBoot集成Mongodb 三、实现增删改查操作 一、Mongodb概念 MongoDB是一个开源的文档型数据库&#xff0c;属于NoSQL数据库中的一种。它使用BSON&#xff08;类似于JSON&#xff09;格式存储数据&#xff0c;具有高性能、高可用性和易于扩展的特…

QT--文本框 QLineEdit、qtextedit

在Qt中&#xff0c;文本框&#xff08;QLineEdit 或 QTextEdit&#xff09;和标签&#xff08;QLabel&#xff09;是两种不同的部件&#xff08;widget&#xff09;&#xff0c;它们的主要区别在于用途和功能&#xff1a; QLabel&#xff08;标签&#xff09; 用途&#xff1…

JVM(HotSpot):直接内存及其使用建议

文章目录 一、什么是直接内存&#xff1f;二、特点三、使用案例四、直接内存的管理 一、什么是直接内存&#xff1f; Direct Memory&#xff1a;系统内存 普通IO&#xff0c;运行原理图 磁盘到系统内存&#xff0c;系统内存到jvm内存。 NIO&#xff0c;运行原理图 划分了一块…

『Mysql集群』Mysql高可用集群之主从复制 (一)

Mysql主从复制模式 主从复制有一主一从、主主复制、一主多从、多主一从等多种模式. 我们可以根据它们的优缺点选择适合自身企业情况的主从复制模式进行搭建 . 一主一从 主主复制 (互为主从模式): 实现Mysql多活部署 一主多从: 提高整个集群的读能力 多主一从: 提高整个集群的…

等级保护测评师练习卷31

等级保护初级测评师试题31 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1.等级测评采用基本方法是访谈、测试、验证&#xff08;&#xff09;访谈、核查、测试 2.等级保护对象是由…

HarmonyOS 应用级状态管理(LocalStorage、AppStorage、PersistentStorage)

HarmonyOS 应用级状态管理 1. LocalStorage&#xff1a;页面级UI状态存储 1.1 概念 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态。 应用程…

【Linux】Linux下的Makefile基本操作

1.Makefile与 make介绍 在Linux中&#xff0c; Makefile 是⼀个⽂件&#xff0c; 令会在当前⽬录下找 make 是⼀个指令&#xff0c;当使⽤ Makefile ⽂件从⽽执⾏内部的内容 2.创建第一个 Makefile并使用make ⾸先&#xff0c;在当前⽬录下创建⼀个makefile文件 接下来在同级…

动态规划一>珠宝的最高价值

1.题目&#xff1a; 2.解析&#xff1a; 代码&#xff1a; /**1.创建dp表2.初始化3.填表4.返回*/public int jewelleryValue(int[][] frame) {int m frame.length, n frame[0].length;int[][] dp new int[m1][n1];//虚拟节点的值直接为0满足条件&#xff0c;已经初始化好…

字典树 计数问题(含 2022 icpc杭州 K)

//最近学了字典树&#xff0c;补一下 1.概念和实现 首先&#xff0c;字典树是一棵树&#xff08;废话&#xff09;&#xff0c;边表示字母&#xff0c;从根到叶子节点所有边的顺序组合表示字目排列顺序。 看一下图明白很多&#xff1a; 例如&#xff1a;abc这个字母排序&am…

MybatisWebApp

如何构建一个有关Mybatis的Web&#xff1f; 在这里给出我自己的一些配置。我的TomCat版本&#xff1a;10.1.28 &#xff0c;IDEA版本&#xff1a;2024.1.4 Pom.XML文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/200…