深度学习 - 44.Gate 与 MMOE 实现多目标学习

news2025/2/22 12:40:37

目录

一.引言

二.摘要 Abstract

三.介绍 Introduction

四.相关工作 RELATED WORK

1.DNN 中的多任务学习

2.SubNet 集成与 Expert 混合

3.多任务学习应用

五.建模方法 MODELING APPROACHES

1.Shared-bottom Multi-task Model

2.Mixture-of-Experts

3.Multi-gate Mixture-of-Experts

六.数据实验 REAL DATA EXPERIMENTS

1.基线模型 Baseline

2.参数调优 Hyper-Parameter

3.人口收入数据 Census-income Data

4.大规模内容推荐 Large-scale Content Recommendation

七.总结 CONCLUSION


一.引言

MMOE 是 Google 在 2018 年提出的一篇基于多任务学习的论文,全名为:Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts,其介绍了通过引入 Gate 实现不相关任务的多任务学习问题,下面对论文做简要回顾。

二.摘要 Abstract

基于神经网络的多任务学习已经成功地应用于许多现实世界的大规模应用,例如如推荐系统中我们可以建立深度模型,同时学习用户对 Item 的点击率、点赞率、收藏率等等。

现实场景下,多任务模型的预测质量往往对任务之间的关系很敏感。论文提出一种新的多任务学习方法:Multi-gate Mixture-of-Experts (MMoE) 模型,明确地学习从数据中建模任务关系。我们将 Mixture-of-Experts (MoE) 混合专家结构用于多任务学习,通过在所有任务中共享专家子模型,同时还拥有一个经过训练的 Gate 门控网络来优化每个 MoE 的输出占比。

三.介绍 Introduction

• 多任务学习问题

许多大型推荐系统已经使用 DNN模型进行多任务学习,多任务学习模型可以通过使用正则化和迁移学习来提高对所有任务的模型预测。然而许多基于 DNN 的多任务学习模型对数据分布差异和任务间关系等因素都很敏感。且任务差异带来的内在冲突实际上会损害至少部分任务的预测,特别是在所有任务之间广泛共享模型参数时。

• 原有解决方式

最早的研究通过假设每个任务的特定数据生成过程来研究多任务学习中的任务差异,根据假设测量任务差异,然后根据任务差异的大小提出建议。最近的一些研究提出了新的建模技术来处理多任务学习中的任务差异,而不依赖于明确的任务差异测量。然而,这些技术通常涉及到为每个任务添加更多的模型参数,以适应任务差异,由此新增的额外参数量级很大,额外的计算成本在生产环境中很难接受。

• 多门-混合专家模型

Multi-gate Mixture-of-Experts (MMoE) 结构的多任务学习方法,受到 Mixture-of-Experts (MoE)模型和最近的MoE层的启发。MMoE显式地对任务关系建模,并学习特定于任务的功能,以利用共享表示。它允许自动分配参数以捕获共享任务信息或特定于任务的信息,从而避免了为每个任务添加许多新参数的需要。

四.相关工作 RELATED WORK

1.DNN 中的多任务学习

多任务模型可以学习不同任务之间的共性和差异,这样做可以提高每个任务的效率和模型质量。

- 共享底层模型结构

模型具有共享底层模型结构,底层隐藏层在任务之间共享。这种结构极大地降低了过度调试的风险,但由于所有任务共享参数可能由于任务间的差异对优化条件造成影响。

- 合成数据生成

为了了解任务相关性对模型质量的影响,已有研究采用合成数据生成的方法,对不同类型的任务相关性进行操作,以评估多任务模型的有效性。

- 增加对应任务参数

最近的一些方法在特定于任务的参数上添加不同类型的约束。例如在两组参数之间添加 L2 约束、为每个任务学习特定的隐藏层嵌入组合、使用张量分解模型为每个任务生成隐层参数等等。相比于共享参数,该模式下的不同任务拥有更多特定参数,可以获得更好的性能。然而,大量的任务特定参数需要更多的训练数据以及工程师对业务任务的深刻理解,对大规模推荐模型不太友好。

2.SubNet 集成与 Expert 混合

在 DNN 中,将混合专家模型转化为基本的构建模块 (MoE层),并将它们堆叠在DNN中已被证明能够提高模型性能。MoE 层根据该层在训练时间和服务时间的输入选择 Expert 即 SubNet。通过引入门控网络的稀疏性,该模型不仅建模能力更强,而且降低了计算成本。通过使用 SubNet (专家)集成来实现迁移学习,同时节省计算量。

3.多任务学习应用

由于分布式机器学习系统的发展,许多大规模的现实应用已经采用了基于 DNN 的多任务学习算法,并观察到质量的显著提高。在多语言机器翻译任务中,由于模型参数共享,训练数据有限的翻译任务可以通过与训练数据量大的任务联合学习来改进。在构建推荐系统时,多任务学习被发现有助于提供上下文感知的推荐。与这些先前的工作类似,我们在现实世界的大规模推荐系统上评估了MMoE,该模型方法确实是可伸缩的,并且与其他最先进的建模方法相比具有良好的性能。

五.建模方法 MODELING APPROACHES

1.Shared-bottom Multi-task Model

如图 a 所示,该模型架构在许多多任务学习中广泛采用,论文将模型视为多任务建模中具有代表性的基线方法。给定 K 个任务,该模型由一个共享底部网络 (表示为函数 f) 和 K 个 Tower 塔网络组成,其中 K = 1,2,... 模型共享底层网络,塔式网络建立在共享底层的输出上,然后每个任务 Tower 的淡出输出与 Output K 遵循对应的任务。对于任务 K,模型可表示为:

其中共享体现在公用一个 f(x),多任务体现在多个 h^K 上,以开头的点击率、点赞率的多任务为例:

2.Mixture-of-Experts

混合专家模型可以采用如下公式表示:

其中 g(x)i 表示 g(x) 输出的第 i 个 logit,表示对应专家 fi 的概率。这里 f 是 n 个专家网络,可以理解为集成学习的多个基学习器,g 表示集合所有专家结果的门控网络。更具体地说,门控网络 g 根据输入产生了专家的概率分布,而最终输出是所有专家输出的加权和。MoE Layer 具有与 MoE 模型相同的结构,但接受前一层的输出作为输入和输出到后续层。然后以端到端的方式训练整个模型。

3.Multi-gate Mixture-of-Experts

多门专家混合 (MMoE) 模型,其关键思想史将共享底层网络替换为 MoE 层,同时为每个任务添加一个单独的门控网络 Gate K 用于捕捉不同任务时不同专家的贡献度:

图 c 显示了 MMoE 模型结构,实现由具有 ReLU 激活的相同多层感知器组成。门控网络是输入的简单线性变换,带有softmax层:

 其中 y_k 为最终输出,h^k 为 K 个任务,f^k(x) 为第 K 个任务的多个 Expert 的混合输出,每个 f_i(x) 对应一个 Expert,g^k(x)_i 代表门控网络基于第 K 个任务生成的 Expert 专家概率分布。

Tips:

• 相比于 Shared-bottom Multi-task Model

与 Shared-bottom Model 相比,MMoE 的 N 个 Expert  网络也是 K 个任务共享的,而门控网络通常是轻量级的所以 MMoE 与一些多任务 Baseline 在计算量和参数量上并无太多差异,适用于工业场景。

• 相比于 Mixture-of-Experts

相比于 MoE K 个任务共享一个 Gate 门控网络外,MMoE 为每个任务准备一个单独的 Gate 门控网络,比较符合 Expert 对不同任务的权重存在差异的假设,通过不同的 Gate 可以学习到不同的 Expert 组合方式,从而捕捉到任务之间的相关性与差异。

六.数据实验 REAL DATA EXPERIMENTS

1.基线模型 Baseline

除了Shared-Bottom 多任务模型,我们还将我们的方法与几个最先进的多任务深度神经网络模型进行了比较,这些模型试图从数据中学习任务关系。

- L2-Constrained 正则

这种方法是为具有两个任务的跨语言问题而设计的。在这种方法中,用于不同任务的参数 θ 由 L2 约束软共享。设 yk 为任务 k 的真值标记,k∈1、2,则任务 k 的预测表示为:

θ 为模型参数,最终目标函数为:

其中 y1、y2 是任务 1 和任务 2 的基本真值标签,α 是超参数。该方法利用 α 的大小对任务关联度进行建模。

- Cross-Stitch "十字绣" 网络

这种方法通过引入 "十字绣" 单元来共享两个任务之间的知识。十字绣单元从任务 1 和任务 2 中获取分离的隐藏层 x1 和 x2 的输入,分别通过以下公式输出:

其中,\alpha_{j,k}  j, k = 1、2 是一个可训练参数,表示任务 k 到任务 j 的交叉传递。任务 1 和任务 2 分别向上级发送任务 x1 和任务 x2。

- Tensor-Factorization 张量因子分解

该方法将多个任务的权重建模为张量,并利用张量分解方法实现任务间参数共享。这里实现了 Tucker 分解来学习多任务模型,例如,给定输入隐藏层大小为 m,输出隐藏层大小为 n,任务数为 k,则 m × n × k 张量的权重 W 由下式导出:

其中大小为 r1 × r2 × r3 的张量S,大小为 m × r1的矩阵 U1,大小为 n × r2 的 U2,大小为 k ×  r3 的 U3 是可训练参数。所有这些都是通过标准反向传播一起训练的。r1、r2 和 r3 是超参数。

2.参数调优 Hyper-Parameter

为了使比较公平,我们通过为每层隐藏单元的数量设置相同的上界 (2048) 来约束所有方法的最大模型大小。对于MMoE,它是 "专家数量" × "每个专家的 Hidden"。我们的方法和所有基线方法都是使用 TensorFlow 实现的。我们调整了所有方法的学习率和训练步骤数。我们还调优了一些特定于方法的超参数:

• MMOE: 专家数量,每个专家隐藏单位的数量。

• L2-Constrained: 隐层的大小。L2约束的权值 α。

• Cross-Stitch: 隐层的大小。L2约束的权值 α。

• Tensor-Factorization: r1, r2, r3 表示 Tuck 分解,隐藏层大小。

3.人口收入数据 Census-income Data

UCI 人口普查收入数据集提取自 1994 年人口普查数据库。它包含 299285 个美国成年人的人口统计信息实例,总共有40个特性。通过设置一些特征作为预测目标,我们从这个数据集中构建了两个多任务学习问题,并计算了 10,000 个随机样本上任务标签的 Pearson 相关性绝对值:

- Multi-Task-A

Output1:预测收入是否超过$50K;

Output2:预测此人的婚姻状况是否从未结过婚。

绝对 Pearson 相关性:0.1768。

- Multi-Task-B

Output1:预测学历是否为大学以上;

Output2:预测此人的婚姻状况是否从未结过婚。

绝对 Pearson 相关性:0.2373。

考虑到任务相关性 (通过 Pearson 相关性粗略测量) 在两组中都不是很强,Shared-Bottom 模型几乎总是多任务模型中最差的 (除了张量分解)。L2-Constrained 和 Cross-Stitch 对每个任务都有单独的模型参数,并对如何学习这些参数添加了约束,因此比 Shared-Bottom 表现得更好。在第二组中,MMoE 在所有方面都优于其他多任务模型。

4.大规模内容推荐 Large-scale Content Recommendation

模型在 Google 的大型内容推荐系统上进行实验,其中推荐是由数十亿用户的数亿个独特项目生成的。具体来说,给定用户当前消费某种商品的行为,该推荐系统的目标是向用户显示下一步消费的相关商品列表。我们设置的深度排名模型是针对两种类型的排名目标进行优化的:

(1) 优化与用户粘性相关的目标,如点击率和用户粘性时间。

(2) 对满意度相关目标进行优化,如相似率等。

我们的训练数据包括数千亿的用户隐式反馈,比如点击和点赞。如果单独训练,每个任务的模型需要学习数十亿个参数。因此,与单独学习多个目标相比,Shared-Bottom 架构具有较小的模型大小的好处。事实上,这种 Shared-Bottom 模型已经在生产中使用了。

• 模型试验

表中显示了参与度子任务的 AUC 分数和 R-Squared 分数。@2M 代表训练 200万步,其中包含 100 亿个样本、BatchSize = 1024,@4M、@6M 同理。MMoE 在这两个指标上都优于其他模型。

• Gate 理解

为了更好地理解门是如何工作的,下图展示了每个任务的 softmax 门的分布。可以看到,MMoE 学习了这两个任务之间的差异,并自动平衡了共享和非共享参数。由于满意度子任务的标签比参与度子任务的标签更稀疏,因此满意度子任务的大门更关注于单个专家:

七.总结 CONCLUSION

多门专家混合模型 Multi-gate MoE, MMoE 明确地从数据中建模学习任务关系,该方法可以更好地处理任务相关性较低的情况。且 MMoE 的训练更容易,效果也优于常见的 BaseLine 多任务学习模型。

• Expert 模型

常规情况下每一个 Expert 是一个小规模的全连接神经网络,不同 Expert 都有着不同的预测方向与相同的输出维度,当然放在广义的集成学习上看,Expert 可以是任何模型,只要输出维度相同即可。

• Gate Layer

Gate Layer 生成 Expert 概率分布并进行加权求和,这里引入了集成的思想,类似于多个 Expert 贡献力量。极端情况下可以修改为只激活一个 Expert 的意见,此时退化为常规模型。我们可以 Gate 输出分析不同 Expert 对不同任务的偏向。

• 任务相关性

文中多次提高多任务之间的相关性,对于相关性类似的任务,共享参数可以优化效率并且可复用性高,此时 MoE 与 MMoE 效果近似,而当任务相关性较低时,MMoE 的多 Gate 机制优与单 Gate 的 MoE,说明 Multi-Gate 的模式对于任务相关性不同造成的参数冲突有一定效果。

• Softmax 权重

Gate 门输出的权重是通过端到端训练得到的,其学习了数据中蕴含的任务逻辑,如果我们有先验信息认为某个 Expert 的意见比较可靠,则可以手动修正 Softmax 处得到的多个 Expert 的权重。

论文参考:https://dl.acm.org/doi/10.1145/3219819.3220007

多任务学习讲解:多目标模型讲解

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

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

相关文章

NOPI用法之自定义单元格背景色(3)

NPOI针对office2003使用HSSFWorkbook,对于offce2007及以上使用XSSFWorkbook;今天我以HSSFWorkbook自定义颜色为例说明,Office2007的未研究呢 在NPOI中默认的颜色类是HSSFColor,它内置的颜色有几十种供我们选择,如果不…

模态分解算法 EMD、EEMD、CEEMD

一、模态分解算法EMD算法介绍 (一)模态分解相关的算法有以下几类 IMF 固有模态函数\EMD经验模态分解\EEMD集合经验模态分解\CEEMD 互补集合经验\(EEMD的标准形式)CEEMDAN自适应噪声完备集合经验模态分解\VMD 变分模态分解 &…

Crypko.ai:动漫角色生成和设计平台

【产品介绍】 Crypko.ai是一个基于GAN(生成对抗网络)的高质量动漫角色生成和设计平台,可以让用户通过简单的操作,创造出各种风格和特征的动漫角色,并且可以对角色的头发、脸部、衣服、风格等进行编辑和调整。 Crypko.a…

【GNN】谱域图卷积

谱域图卷积 1. 谱域卷积的背景知识 1.1 谱域图卷积实现思路 f 1 ( t ) ⋆ f 2 ( t ) F − 1 [ F 1 ( w ) F 2 ( w ) ] f_1(t) \star f_2(t) F^{-1}[F_1(w)F_2(w) ] f1​(t)⋆f2​(t)F−1[F1​(w)F2​(w)] 1.2 如何定义图上的傅里叶变换 经典傅里叶变换: x ( …

人工智能+自助餐:一种有效减少食物浪费的创新方案

一、案例背景: 自助餐是一种受欢迎的餐饮形式,可以满足不同顾客的口味和需求。但是,自助餐也存在着浪费食物的问题,有的顾客拿得多吃得少,有的顾客只吃部分食物,剩下的扔掉。据统计,2022年中国…

【算法竞赛】实现约瑟夫问题的四种方法(附手绘图详解)

💌 博客内容:实现约瑟夫问题的四种方法 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家&…

视频剪辑配乐技巧 视频剪辑配音推荐

视频是视觉加听觉的艺术,视频的背景音乐不同,所呈现的效果也不同。接下来为大家带来大家视频剪辑配乐技巧,视频剪辑配音推荐的相关内容。 一、视频剪辑配乐技巧 视频剪辑时选好了配乐,视频就成功了一半。那如何找到合适的配乐呢…

yapi一键安装 文档开源系统

访问 GitHub - Ryan-Miao/docker-yapi: Docker build and run yapi as serviceDocker build and run yapi as service. Contribute to Ryan-Miao/docker-yapi development by creating an account on GitHub.https://github.com/Ryan-Miao/docker-yapi git clone https://githu…

Class类

package com.hspedu.reflection.class_;import com.hspedu.Cat;import java.util.ArrayList;/*** author 韩顺平* version 1.0* 对Class类特点的梳理*/ public class Class01 {public static void main(String[] args) throws ClassNotFoundException {//看看Class类图//1. Cla…

python版电报API接入从零到一(有彩蛋)

文章链接 编号分类文章及链接介绍作者来源分类撰写日期收录日期F1框架python版telegram接入开源botpython-telegram-botGithub2023-04-24 申明:本文仅作试验研究用,不对参考本文操作产生的各种结果承担任何责任。 Q&A 使用Telegram的API需要交费吗…

三顾茅庐,七面阿里,成功上岸25k16薪,我行你也行~

写在片头:声明,勿杠 首先简单说一下,这三次面试阿里并不是一次性去面的,实际上第一次面试时候还在大四,找的实习岗,不太清楚是什么部门,别问我为什么还记得面试题,有记录和复盘的习惯…

什么是OADM光分插复用器

文章导读: 什么是OADM光分插复用器 光分插复用器的功能 光分插复用器的类型(FOADM, TOADM) OADM的应用 1、什么是OADM光分插复用器 由不同的光通道进出单模光纤。 它的主要功能是在不影响其他波长信道传输的情况下,选择性地下载或…

Vue(监测数据改变、收集表单数据、过滤器)

一、监测数据改变原理 1. 监测对象数据改变原理 当数据发生改变之后:直接会显示数据改变(一种强硬写法) let data { name: "北京大学", address: "北京" };// 以下通过temp进行监视:还得还原temp值&#xf…

k8s 部署 ldap 服务

1、创建挂载卷,将数据和配置进行持久化存储 1.1、使用nfs作为共享存储 [rootlocalhost openldap_yaml]# cat /etc/exports /dump_file/openldap_db 172.21.53.0/24(rw,sync,no_root_squash,no_all_squash) /dump_file/openldap_conf 172.21.53.0/24(rw,sync,no_roo…

【Linux常见指令以及权限理解】基本指令(1)

写在前面: 相信看完上一个博客,我们已经成功搭建好了Linux环境, 如果没有可以去看看:Linux环境搭建。 接下来我会讲述Linux的常见指令以及权限理解相关内容。 这篇文章会介绍一些常用的Linux指令并穿插一些操作系统的概念理解…

巧用千寻位置GNSS软件|一文教会横断面测量

测横断面主要用于线路工程和水利工程的前期设计中,在线路平曲线设计好之后,千寻位置GNSS软件可用于在中桩处测定垂直于线路中线方向原地貌的地面起伏的数据,本期就为大家介绍具体的操作技巧。 点击【测量】->【测横断面】,选择…

ByteHouse云数仓版查询性能优化和MySQL生态完善

ByteHouse云数仓版是字节跳动数据平台团队在复用开源 ClickHouse runtime 的基础上,基于云原生架构重构设计,并新增和优化了大量功能。在字节内部,ByteHouse被广泛用于各类实时分析领域,最大的一个集群规模大于2400节点&#xff0…

( 栈和队列) 20. 有效的括号 ——【Leetcode每日一题】

❓20. 有效的括号 难度:简单 给定一个只包括 (,),{,},[,]的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合…

决策树入门、sklearn实现、原理解读和算法分析

文章目录 决策树入门决策树sklean实现决策树算法单/多变量决策树CART分类树算法 决策树分析复杂度控制特征重要性决策树特点 决策树入门 总算来到心心念念的决策树了。工作中一直在用xgb模型,今天开始,终于可以尝试去理解其背后的算法原理了。不过xgb较…

软件开发全套文档案例分享

写在前面 在日常项目开发过程中,会产生大量的过程文档,比如开发过程中的文档、管理过程中的文档、产品相关文档等等,那这些文档我们日常怎么去管理呢?怎么去做规划呢?如何做成通用标准呢?小编特地整理了一…