多场景建模:腾讯3MN

news2024/12/23 13:38:01

3MN: Three Meta Networks for Multi-Scenario and Multi-Task Learning in Online Advertising Recommender Systems

背景

推荐领域的多场景多任务学习:维护单模型即可节省资源也可节省人力;各个场景的数据共享,理论上面学习是更加充分的

问题&挑战
  1. 怎么学习复杂的多任务、多场景之间的关系MSMT(Multi-Scenario Multi-Task Learning),即(场景-场景、场景-任务、任务-任务之间的相互关系)
  2. 单个模型如何解决多个场景多个任务的不同数据分布问题(例如,来自不同媒体的用户不同,点击广告的意愿也不同;即使用户来自同一媒体,他们也点击广告的意愿通常会与他们下载应用程序的意愿不同)
  3. 不同场景下的样本分布严重不均,来自主流媒体的样本通常比小规模媒体要多得多,样本充足的场景怎么帮助哪些相关但是样本少的场景
解决方案
Three Meta Networks-based solution (3MN)

提出的三个场景自适应组件解决了挑战1,极大地提升了多任务的性能。第二个挑战由场景任务自适应主干网络及分类器解决,主干网络利用场景任务信息抽取分场景的任务特有、任务共享特征,场景自适应分类器利用这些特征提升分场景的多任务预测性能。第三个挑战由场景自适应embedding层解决,以一个自动的方式来选择不同场景下的Embedding维度。

在这里插入图片描述
点评:这篇文章是把元网络用到了极致,底层、中间层、顶层都注入了场景知识,实现场景的自适应匹配

方案详情
Scenario-Adaptive Embedding Layer

step1:Unified Embedding Dimensions.
以往的每个特征在Embedding层都映射到一个固定维度的特征向量上面,这里为了场景自适应匹配维度,设计了根据场景来选择合适的维度。
具体就是预先设置一组维度列表 { α 1 , α 2 , . . . , α a } \{\alpha_1, \alpha_2, ..., \alpha_a\} {α1,α2,...,αa},长度为 ∣ α ∣ |\alpha| α,对于每个输入的特征,产生 ∣ α ∣ |\alpha| α个embedding向量
x i = E m b e d d i n g i ( x )      i ∈ { 1 , 2 , . . . , ∣ α ∣ } \mathbf x_i = \mathrm {Embedding}_i(\mathbf x) \ \ \ \ i \in \{1,2, ..., |\alpha|\} xi=Embeddingi(x)    i{1,2,...,α}
然后使用一个形状转换层将形状转为统一的尺寸
x i ~ = x i W i + b i      i ∈ { 1 , 2 , . . . , ∣ α ∣ } \widetilde {\mathbf x_i} = \mathbf x_i \mathbf W_i + \mathbf b_i \ \ \ \ i \in \{ 1,2,..., |\alpha| \} xi =xiWi+bi    i{1,2,...,α}
然后使用BatchNorm对这 ∣ α ∣ |\alpha| α个向量进行处理,避免出现由形状转换引起的极端数值变化
x i ‾ = B a t c h N o r m ( x i ~ ) \overline {\mathbf x_i} = \mathrm {BatchNorm} ( \widetilde {\mathbf x_i} ) xi=BatchNorm(xi )

step2:Scenario-Adaptive Embedding Dimension Selection
然后将 ∣ α ∣ |\alpha| α个向量进行加权求和得到特征最终的embedding向量
x s a e m b = ∑ i = 1 ∣ α ∣ p i ‾ x i ‾ \mathbf x_{sa_emb} = \sum_{i=1}^{|\alpha|} \overline {\mathbf {p_i}} \overline {\mathbf {x_i}} xsaemb=i=1αpixi
这里的权重 p i ‾ \overline {\mathbf {p_i}} pi是由元网络得到的,而元网络的输入是场景特征,因此能做到场景自适应的选择不同Embedding维度。
W 1 , b 1 , W 2 , b 2 = M e t a N e t e m b ( x s c e n e ) \mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{emb}} (\mathbf x_{scene}) W1,b1,W2,b2=MetaNetemb(xscene)

p = f 1 ( σ ( W 2 T ( σ ( W 1 T E m b e d d i n g ( x s e l e c t e d ) ) + b 1 ) + b 2 ) ) \mathbf p = f_1(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \mathbf x_{selected})) + b_1) + \mathbf b_2)) p=f1(σ(W2T(σ(W1TEmbedding(xselected))+b1)+b2))

其中 x s e l e c t e d \mathbf x_{selected} xselected是用户及item的一些频次统计特征,也就是基于user、item、scene三者来选择不同维度的Embedding

p ∈ R ∣ α ∣ ∗ n f i e l d \mathbf p\in R^{|\alpha| * n^{field}} pRαnfield,先reshape成 R n f i e l d ∗ ∣ α ∣ R^{n^{field}*|\alpha| } Rnfieldα,然后经过softmax后再拆分成 α \alpha α
p 1 ‾ , p 2 ‾ , . . . , p ∣ α ∣ ‾ = S p l i t ( S o f t m a x ( R e s h a p e ( p ) ) ) \overline {\mathbf {p_1}},\overline {\mathbf {p_2}},...,\overline {\mathbf {p_{|\alpha|}}} = \mathrm {Split} (\mathrm { Softmax}( \mathrm {Reshape ( \mathbf p)} )) p1,p2,...,pα=Split(Softmax(Reshape(p)))

Scenario&Task-Adaptive Backbone Network

类似于PLE的结构,有任务特有和任务共享的专家
Shared and Specific Experts.
首先BN处理下
x b n = B a t c h N o r m ( x s a e m b ) \mathbf x_{bn} = \mathrm {BatchNorm} (\mathbf x_{sa_emb}) xbn=BatchNorm(xsaemb)
然后任务特有的专家和任务共享的专家
e i , j = T a s h S p e c E x p e r t i ( x b n ) \mathbf e_{i,j} = \mathrm {TashSpecExpert_i}(\mathbf x_{bn}) ei,j=TashSpecExperti(xbn)
s k = T a s h S h a r e E x p e r t k ( x b n ) \mathbf s_{k} = \mathrm {TashShareExpert_k}(\mathbf x_{bn}) sk=TashShareExpertk(xbn)

Scenario&Task-Adaptive Expert Selection

对专家进行加权融合
x t i ~ = p t i ~ X t i \widetilde {\mathbf x_{t_i}} = \widetilde{ \mathbf p_{t_i}} \mathbf X_{t_i} xti =pti Xti
这里的专家即
X t i = [ e i , 1 T , e i , 2 T , . . . , e i , n n i T , s 1 T , s 2 T , . . . , s n s e T ] \mathbf X_{t_i} = [ \mathbf e_{i,1}^T, \mathbf e_{i,2}^T, ..., \mathbf e_{i,n^{n_i}}^T, \mathbf s_1^T, \mathbf s_2^T, ..., \mathbf s_{n^{se}}^T] Xti=[ei,1T,ei,2T,...,ei,nniT,s1T,s2T,...,snseT]

各个专家的权重 p t i ~ \widetilde{ \mathbf p_{t_i}} pti 是场景自适应的,也是由元网络得到的,元网络的输入是场景信息和任务信息

p t i = f 2 ( σ ( W 2 T ( σ ( W 1 T E m b e d d i n g ( x b n ) ) + b 1 ) + b 2 ) ) \mathbf p_{t_i} = f_2(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \mathbf x_{bn})) + b_1) + \mathbf b_2)) pti=f2(σ(W2T(σ(W1TEmbedding(xbn))+b1)+b2))
W 1 , b 1 , W 2 , b 2 = M e t a N e t b a c k b o n e ( [ x s c e n e   ∣ ∣   x t a s k ] ) \mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{backbone}} ([\mathbf x_{scene} \ || \ \mathbf x_{task}]) W1,b1,W2,b2=MetaNetbackbone([xscene ∣∣ xtask])

p t i ‾ = S o f t m a x ( p t i ) \overline {\mathbf p_{t_i}} = \mathrm {Softmax}(\mathbf p_{t_i}) pti=Softmax(pti)

Scenario&Task-Adaptive Classifiers

得到专家的加权输出后,再通过各自任务的tower层,得到最终任务的输出

o t i = f 3 ( σ ( W 2 T ( σ ( W 1 T E m b e d d i n g ( x t i ~ ) ) + b 1 ) + b 2 ) ) \mathbf o_{t_i} = f_3(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \widetilde {\mathbf x_{t_i}})) + b_1) + \mathbf b_2)) oti=f3(σ(W2T(σ(W1TEmbedding(xti ))+b1)+b2))
W 1 , b 1 , W 2 , b 2 = M e t a N e t c l a s s i f y ( [ x s c e n e   ∣ ∣   x t a s k ] ) \mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{classify}} ([\mathbf x_{scene} \ || \ \mathbf x_{task}]) W1,b1,W2,b2=MetaNetclassify([xscene ∣∣ xtask])

MSMT Meta Networks

详解 meta 网络也有三个组件, meta embedding layer, meta backbone network, and meta fully-connected layers
在这里插入图片描述

meta embedding layer
x e m b = E m b e d d i n g ( [ x s c e n e   ∣ ∣   x t a s k ] ) \mathbf x_{emb} = \mathrm {Embedding} ([\mathbf x_{scene} \ || \ \mathbf x_{task}]) xemb=Embedding([xscene ∣∣ xtask])

meta backbone network

x m e t a = L a y e r N o r m ( D r o p o u t ( M H ( x e m b ) ) ) + x e m b \mathbf x_{meta} = \mathrm {LayerNorm} ( \mathrm {Dropout} ( \mathrm {MH} (\mathbf x_{emb}) ) ) + \mathbf x_{emb} xmeta=LayerNorm(Dropout(MH(xemb)))+xemb

x m e t a ‾ = M L P ( x m e t a ) \overline {\mathbf x_{meta}} = \mathrm {MLP} (\mathbf x_{meta}) xmeta=MLP(xmeta)

meta fully-connected layers 得到最终的权重
W i , b i = W i m e t a x m e t a ‾ + b i m e t a     i ∈ { 1 , 2 } \mathbf W_i, \mathbf b_i = \mathbf W_i^{meta} \overline {\mathbf x_{meta}} + \mathbf b_i^{meta} \ \ \ i \in \{1,2\} Wi,bi=Wimetaxmeta+bimeta   i{1,2}
其中 W i m e t a \mathbf W_i^{meta} Wimeta b i m e t a \mathbf b_i^{meta} bimeta是元网络FCN的参数
这里产出的 W i , b i \mathbf W_i, \mathbf b_i Wi,bi就是上面用到的权重

实验&消融分析

数据集
在这里插入图片描述
实验效果
在这里插入图片描述
各个组件消融分析
在这里插入图片描述
专家选择权重的可视化
在这里插入图片描述
不同embedding尺寸选择权重的可视化
在这里插入图片描述
SA embedding layer加在base模型上的效果增益
在这里插入图片描述

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

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

相关文章

RK3568 Android Launcher3定制修改

1.去掉Google搜索栏 目录packages/apps/Launcher3/src_build_config/com/android/launcher3/BuildConfig.java 修改如下: 2.Launcher首页去掉抽屉菜单,所有应用都放到桌面 第一步:禁止上滑显示抽屉 在目录packages/apps/Launcher3/quickste…

大模型学习与实践笔记(十四)

使用 OpenCompass 评测 InternLM2-Chat-7B 模型使用 LMDeploy 0.2.0 部署后在 C-Eval 数据集上的性能 步骤1:下载internLM2-Chat-7B 模型,并进行挂载 以下命令将internlm2-7b模型挂载到当前目录下: ln -s /share/model_repos/internlm2-7b/ ./ 步骤2&…

非阿里云注册域名如何在云解析DNS设置解析?

概述 非阿里云注册域名使用云解析DNS,按照如下步骤: 添加域名。 添加解析记录。 修改DNS服务器。 DNS服务器变更全球同步,等待48小时。 添加解析记录 登录云解析DNS产品控制台。 在 域名解析 页面中,单击 添加域名 。 在 …

虚拟创业团队如何建设

虚拟创业团队如何建设 一、目标设定 在组建虚拟创业团队之前,明确团队目标是至关重要的。目标应具体、可衡量、可实现,并与团队成员共享。通过设定共同的目标,团队成员能够更好地理解团队愿景,明确个人职责,并朝着同…

CRG设计之复位

1. 前言 CRG(Clock and Reset Generation,时钟复位生成模块) 模块扮演着关键角色。这个模块负责为整个系统提供稳定可靠的时钟信号,同时在系统上电或出现故障时生成复位信号,确保各个模块按预期运行。简而言之,CRG模块就像是SoC系…

第九节HarmonyOS 常用基础组件16-Blank

1、描述 空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column/Flex时生效。 2、接口 Blank(min?: number | string) 3、参数 参数名 参数类型 必填 描述 min number|string 否 空白填充组件…

SeaTunnel集群安装

环境准备 服务器节点 节点名称 IP bigdata1 192.168.1.250 bigdata4 192.168.1.251 bigdata5 192.168.1.252 Java环境(三个节点都需要) java1.8 注意:在安装SeaTunnel集群时,最好是现在一个节点上将所有配置都修改完&a…

【Prometheus】Prometheus的二进制部署+Grafana

目录 一、Prometheus概述 1、概念 2、核心组件prometheus server: 3、Prometheus的特点: 4、prometheus的存储引擎:TSDB 5、Prometheus组件: 6、Prometheus的工作流程: 7、Prometheus的局限性,以及和…

MG7050HAN 基于声表的差分多输出 晶体振荡器 (HCSL)

基于MG7050 HAN的声表差分多输出晶体振荡器(HCSL),采用两路或四路差分HCSL(高速电流驱动逻辑)输出,可以减少外部扇出缓冲区,特别适用于需要超低抖动、高频率范围内稳定工作的应用场合。其输出特性曲线超低抖动&#xf…

OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?

使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…

数学公式OCR识别php 对接mathpix api 使用公式编译器

数学公式OCR识别php 对接mathpix api 一、注册账号官网网址:https://mathpix.com 二、该产品支持多端使用注意说明(每月10次) 三、api 对接第一步创建create keyphp对接api这里先封装两个请求函数,get 和post ,通过官方…

matlab appdesigner系列-仪器仪表4-旋钮(离散)

旋钮(离散),或叫分档旋钮,跟旋钮的连续性相区别,呈分档性。 示例:模拟空调档位切换 操作步骤: 1)将旋钮(离散)、信号灯、标签拖拽到画布上,并设…

自然语言处理(NLP)技术使用

自然语言处理(NLP)技术使用 以下是一些自然语言处理(NLP)技术的例子:以上只是一些NLP技术的例子,还有许多其他的技术和应用,如文本分类、文本生成、问答系统等。NLP技术的发展正逐渐改变人们与计…

MySQL解决 恢复从备份点到灾难点之间数据恢复

CSDN 成就一亿技术人! 今天分享一期 mysql中 备份之后发生灾难造成数据丢失 那么如何恢复中间的数据呢? 数据库数据高于一切(任何数据是不能丢失的) CSDN 成就一亿技术人! 目录 1.准备测试数据库 2.备份数据库 观…

JMeter GUI:测试计划和工作台

什么是测试计划? 测试计划是您添加 JMeter 测试所需元素的地方。 它存储运行所需测试所需的所有元素(如线程组、计时器等)及其相应的设置。 下图显示了测试计划的示例 测试计划是您添加 JMeter 测试所需元素的地方。 它存储运行所需测试…

UI界面设计新手指南 | 零基础快速入门教程

随着互联网的快速发展,许多互联网相关的职位应运而生,其中UI界面设计师是互联网的核心职位之一。UI界面设计已经渗透到我们生活的方方面面,包括网站、应用程序或其他数字平台上的按钮和菜单布局、配色方案和排版。许多人认为 UI界面设计只是关…

算法-枚举专栏

(Acwing 140场周赛 5462) 1. 给定一个长度为 的正整数数列 你可以对其中任意个(可以是 个)元素进行修改。 但是,每个元素最多只能修改一次,每次修改:要么令其加 ,要么令其减 。…

数据结构之最短路径

数据结构之最短路径 1、单源点最短路径2、每对顶点间的最短路径 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应…

【Python笔记-设计模式】建造者模式

一、说明 又称生成器,是一种创建型设计模式,使其能够分步骤创建复杂对象。允许使用相同的创建代码生成不同类型和形式的对象。 (一) 解决问题 对象的创建问题:当一个对象的构建过程复杂,且部分构建过程相互独立时,可…

idea 创建 spring boot

1.创建步骤 2. 编码添加 2.1 这是自动生成的启动函数 package com.example.comxjctest4;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {publi…