多目标建模算法PLE

news2024/10/5 19:18:10

1. 概述

在现如今的推荐系统或者搜索中,都存在多个目标,多目标的算法在现如今的系统中已然成为了标配。在多目标的建模过程中,如果不同的学习任务之间较为相关时,多个任务之间可以共享一部分的信息,这样最终能够提升整体的模型学习效果。但是如果多个任务之间的相关性并不强,或者说多个任务之间存在某种冲突,这样通过部分的共享就会起到事与愿违的效果,这便是通常所说的在多任务建模中出现的负迁移(negative transfer)现象,即在相关性不强或者无相关性的多任务环境下进行信息共享,最终影响整体的网络效果,MMoE[1]便是在这样的情况下被提出。在MMoE中,通过共享多个专家(expert)实现信息的共享,同时针对每一个上层任务(task)都有对应的门控函数(gate),学习到多个专家对于特定任务的贡献程度,即专家的分布。以此,实现了对任务之间的关联和区别的学习。

然而,在多任务建模过程中,还存在另外一种现象,称为跷跷板现象(seesaw phenomenon)。简单来说,跷跷板现象就是在对多个目标进行优化的过程中,一个任务指标的提升伴随着另外一些任务指标的下降。出现这种现象的主要原因是多个任务之间出现较多的共享,MMoE算法中也不能有效解决这样的一个问题。PLE(Progressive Layered Extraction)[2]模型在MMoE的基础上通过对共享的网络结构优化,在原先的共享部分,又增加了task-specific的部分,同时,为了增强网络的效果,构造了多层的网络结构。

2. 算法原理

2.1. Customized Gate Control

为解决上述提出的两个问题,参考[2]中首先提出了CGC(Customized Gate Control)网络。在CGC网络中,在共享专家网络的基础上,又针对特定的任务有特定的专家网络,以此增强每个任务的效果。CGC的网络结构如下图所示:

在这里插入图片描述

在CGC的网络结构中,其底层网络包括了shared experts和task-specific expert两个部分,且每一个expert部分都是由多个expert组成,上层针对每一个任务都有一个门控网络,且门控网络的输入是共享的experts和该任务对应的experts。由此可见,在CGC网络中,既包含了task-specific网络针对特定任务独有的信息,也包含了shared网络共享的信息,以上图为例,假设 [ E ( k , 1 ) T , E ( k , 2 ) T , ⋯   , E ( k , m k ) T ] \left [ E_{\left ( k,1 \right )}^T,E_{\left ( k,2 \right )}^T,\cdots, E_{\left ( k,m_k \right )}^T \right ] [E(k,1)T,E(k,2)T,,E(k,mk)T]为指定任务 k k k对应的多个专家的输出, [ E ( s , 1 ) T , E ( s , 2 ) T , ⋯   , E ( s , m s ) T ] \left [ E_{\left ( s,1 \right )}^T,E_{\left ( s,2 \right )}^T,\cdots, E_{\left ( s,m_s \right )}^T \right ] [E(s,1)T,E(s,2)T,,E(s,ms)T]为共享部分的多个专家的输出,这两个输出组合成上层门控网络的输入 S k ( x ) S^k\left ( x \right ) Sk(x)

S k ( x ) = [ E ( k , 1 ) T , E ( k , 2 ) T , ⋯   , E ( k , m k ) T , E ( s , 1 ) T , E ( s , 2 ) T , ⋯   , E ( s , m s ) T ] S^k\left ( x \right )=\left [ E_{\left ( k,1 \right )}^T,E_{\left ( k,2 \right )}^T,\cdots, E_{\left ( k,m_k \right )}^T, E_{\left ( s,1 \right )}^T,E_{\left ( s,2 \right )}^T,\cdots, E_{\left ( s,m_s \right )}^T \right ] Sk(x)=[E(k,1)T,E(k,2)T,,E(k,mk)T,E(s,1)T,E(s,2)T,,E(s,ms)T]

门控网络的计算输出 g k ( x ) g^k\left ( x \right ) gk(x)为:

g k ( x ) = w k ( x ) S k ( x ) g^k\left ( x \right )=w^k\left ( x \right )S^k\left ( x \right ) gk(x)=wk(x)Sk(x)

其中, w k ( x ) = S o f t m a x ( W g k x ) w^k\left ( x \right )=Softmax\left ( W_g^kx \right ) wk(x)=Softmax(Wgkx),且 W g k ∈ R ( m k + m s ) × d W_g^k\in \mathbb{R}^{\left ( m_k+m_s \right )\times d} WgkR(mk+ms)×d

2.2. Progressive Layered Extraction

在深度学习中,为了使得模型能够具有更好的泛化能力,通常的方法是构建更深的网络。同样,为了能够得到更具有泛化能力的网络,可以将上述网络构建得更深,这便有了PLE结构。简单来说,PLE结构可以看做是CGC网络结构的扩展,由single-level的CGC衍生为multi-level的PLE。具体的PLE网络结构如下图所示:

在这里插入图片描述
与CGC网络相比,除了第一个Extraction Network的输入是原始的Input,其余的Extraction Network的输入是上一个Extraction Network的输出,即包含两个大的部分,即特定任务对应的专家网络输出,如上图中的Experts A和Experts B的输出,另外一个是共享专家网络的输出,如上图中的Experts Shared的输出。

2.3. 损失函数

在多任务重,其损失函数为各任务损失的加权求和,即为:

L k ( θ 1 , ⋯   , θ K , θ s ) = ∑ k = 1 K ω k L k ( θ k , θ s ) L_k\left ( \theta _1,\cdots ,\theta _K,\theta _s \right )=\sum_{k=1}^{K}\omega _kL_k\left ( \theta _k,\theta _s \right ) Lk(θ1,,θK,θs)=k=1KωkLk(θk,θs)

其中, ω k \omega _k ωk为第 k k k个任务的权重,对于权重的设置,参考[2]中给出了如下的迭代公式:

ω k ( t ) = ω k , 0 × γ k t \omega _k^{\left ( t \right )}=\omega _{k,0}\times \gamma _k^t ωk(t)=ωk,0×γkt

其中, γ k \gamma _k γk为更新率。对于任务 k k k的损失函数 L k ( θ k , θ s ) L_k\left ( \theta _k,\theta _s \right ) Lk(θk,θs),参考[2]中给出了如下的公式:

L k ( θ k , θ s ) = 1 ∑ i δ k i ∑ i δ k i    l o s s k ( y ^ k i ( θ k , θ s ) , y k i ) L_k\left ( \theta _k,\theta _s \right )=\frac{1}{\sum_{i}\delta _k^i}\sum_{i}\delta _k^i\;loss_k\left ( \hat{y}_k^i\left ( \theta _k,\theta _s \right ),y_k^i \right ) Lk(θk,θs)=iδki1iδkilossk(y^ki(θk,θs),yki)

因为存在不同任务上的样本空间不一致的问题,因此在特定的任务中计算损失函数时,选择在其空间上的样本,即对于 δ k i \delta _k^i δki,其取值为 0 0 0或者 1 1 1,表示的是第 i i i个样本是否属于第 k k k个任务的样本空间。

3. 总结

为了解决多任务模型中普遍存在的负迁移和跷跷板现象,在MMoE模型的基础上提出了CGC模型,在共享专家的基础上增加了针对特定任务的专家网络,可以针对特定任务学习到独有的网络部分,从而避免任务之间的相互影响,同时为了进一步提升整体网络的泛化效果,在CGC的基础上通过堆叠Extraction Network构造了更深的网络结构,进一步提升多任务模型的学习效果。

参考文献

[1] Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1930-1939.

[2] Tang H, Liu J, Zhao M, et al. Progressive layered extraction (ple): A novel multi-task learning (mtl) model for personalized recommendations[C]//Fourteenth ACM Conference on Recommender Systems. 2020: 269-278.

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

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

相关文章

Vue7-el和data的两种写法

1.el的两种写法 1创建Vue实例的时候通过el指定属性 2. 创建Vue实例之后,通过vm.$mount(#demo)进行挂载 console.log(v):此处的v是Vue的实例对象 在往下看__proto__属性,这里是Vue构造类的方法,其中的方法vue实例都可以使用,比如$…

Spring cache整合Redis详解 动态设置失效时间

文章目录1.spring cache简介2.spring cache集成redis3.spring cache与redisTemple统一格式4.SpEL标签5.Cacheable注解实现6.CachePut注解实现7.CacheEvict注解实现8.Caching注解实现9.自定义key生成器KeyGenerator10.自定义前缀CacheKeyPrefix11.多个CacheManager实现不同失效时…

【微信小程序】收藏功能的实现(条件渲染、交互反馈)

🏆今日学习目标:第十九期——收藏功能的实现(条件渲染、交互反馈) 😃创作者:颜颜yan_ ✨个人主页:颜颜yan_的个人主页 ⏰预计时间:35分钟 🎉专栏系列:我的第一个微信小程序 文章目录…

django框架

目录简介MVC与MTV模型MVCMTV创建项目目录生命周期静态文件配置(无用)启动django[启动](https://www.cnblogs.com/xiaoyuanqujing/articles/11902303.html)路由分组无名分组有名分组路由分发反向解析反向解析结合分组名称空间re_path与path自定义转换器视…

vue3项目怎么写路由 + 浅析vue-router4源码

在SPA项目里,路由router基本是前端侧处理的,那么vue3项目中一般会怎么去写router呢,本文就来讲讲vue-router4的一些常用写法,以及和Composition API的结合使用,同时简单讲讲实现原理,让你轻松理解前端route…

【04】FreeRTOS的任务挂起与恢复

目录 1.任务的挂起与恢复的API函数 1.1任务挂起函数介绍 1.2任务恢复函数介绍(任务中恢复) 1.3任务恢复函数介绍(中断中恢复) 2.任务挂起与恢复实验 3.任务挂起和恢复API函数“内部实现”解析 3.1vTaskSuspend() 3.2&#…

Prometheus基础

一、何为Prometheus Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年…

【基础】Netty 的基础概念及使用

Netty基本概念理解阻塞与非阻塞同步与异步BIO 与 NIOReactor 模型Netty 基本概念Netty 的执行流程Netty 的模块组件Netty 工作原理Netty 的基本使用Netty ServerNetty Client参考文章基本概念理解 阻塞与非阻塞 阻塞与非阻塞是进程访问数据时的处理方式,根据数据是…

系分 - 案例分析 - 系统维护与设计模式

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 案例分析 - 系统维护与设计模式典型例题 1题目描述参考答案典型例题 2题目描述参考答案系分 - 案例分析 - 系统维护与设计模式 典型例题 1 题目描述 某企业两年前自主研发的消防集中控制软件系统…

05-requests添加Cookies与正则表达式

第5讲 requests添加Cookies与正则表达式 整体课程知识点查看 :https://blog.csdn.net/j1451284189/article/details/128713764 本讲总结 request代理使用 request SSL request添加Cookies 数据解析方法简介 数据解析:正则表达式讲解 一、requests 代理 …

【23种设计模式】学习汇总(未完结+思维导图)

获取思维导图翻至底部底部,基本概览博客内容(暂未完全完善,期待你的持续关注) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一.相关内容 在软件工程中&#xf…

关系型数据库RDBMS | 字节青训营笔记

一、经典案例 1、红包雨案例 每年春节,抖音都会有红包雨获得 2、事务 事务(Transaction): 是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性 BEGIN; UPDATE account table SET balance balance - 小目标 WHERE name “抖音; UPDATE…

指数加权平均、动量梯度下降法

目录1.指数加权平均(exponentially weighted averages)这里有一年的温度数据。如果想计算温度的趋势,也就是局部平均值(local average),或者说移动平均值(moving average),怎么做?:当天的温度,:…

交换机的基本原理(特别是动态ARP、静态ARP、代理ARP)

第六章:交换机的基本配置 二层交换设备工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的。二层交换设备不同的接口发送和接收数据独立,各接口属于不…

esxi宿主机进入维护模式虚拟机不会自动释放【不会自动迁移出去】解决方法、查看辨别宿主机本地空间和存储池、esxi进入存储内部清理空间

文章目录说明虚拟机不自动释放处理过程报错说明宿主机进入维护模式说明手动迁移报错说明直接启动虚拟机报错说明解决方法报错原因分析解决方法查看辨别宿主机本地空间esxi进入存储内部清理空间进入存储池内存储内部空间清理及原则存储空间说明说明 我当前的esxi主机版本为5.5 …

7亿人养活的眼镜行业,容不下一家县城小店

文|螳螂观察 作者| 青月 如果要盘点那些被暴利眷顾的行业,眼镜零售肯定榜上有名。 从上市企业的财报数据来看,国内眼镜零售行业的首家上市公司——博士眼镜,2021年前三季度的平均毛利率超过60%;国内镜片第一股明月眼镜在2021年…

【C进阶】文件操作

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C语言进阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们…

小程序应用生命周期

小程序应用生命周期生命周期介绍应用生命周期钩子函数参数对象页面生命周期页面生命周期-页面参数组件生命周期生命周期介绍 定义 一个组件或者页面生老病死的过程一堆会在特定时期触发的函数 分类 应用生命周期页面生命周期组件生命周期 应用生命周期钩子函数 属性说明onL…

Xpath Helper 在新版Edge中的安装及解决快捷键冲突问题

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

vue2源码分析-keep-alive组件

简介 keep-alive是Vue.js的一个内置组件。它能够将指定的组件实例保存在内存中,而不是直接将其销毁,它是一个抽象组件,不会被渲染到真实DOM中,也不会出现在父组件链中。 具体用法咱们这里就不再细说了,今天主要是探讨…