多目标建模总结

news2024/11/13 9:35:11

1. 概述

在推荐系统中,通常有多个业务目标需要同时优化,常见的指标包括点击率CTR、转化率CVR、 GMV、浏览深度和品类丰富度等。为了能平衡最终的多个目标,需要对多个目标建模,多目标建模的常用方法主要可以分为:

  • 多模型的融合
  • 多任务学习
    • 底层共享表示的优化
    • 任务序列依赖关系建模

多模型的融合是根据不同的指标训练不同的模型,最终对多个模型的结果做融合;多任务学习是目前处理多目标建模使用较多的方法,相较于多模型的融合,多任务学习能做到端到端的学习,同时能够节约建模的时间,因为多个模型可以同时建模。在多任务学习中,又可以细分成底层共享表示的优化和任务序列依赖关键的建模。在底层共享表示的优化中,以MMoE(Multi-gate Mixture-of-Experts)[1]和PLE(Progressive Layered Extraction)[2]两种网络结构较为常用。在任务序列依赖关系建模中,以阿里的ESMM[3]较为典型。

在多目标的建模过程中,如果不同的学习任务之间较为相关时,多个任务之间可以共享一部分的信息,这样最终能够提升整体的模型学习效果。但是如果多个任务之间的相关性并不强,或者说多个任务之间存在某种冲突,这样通过部分的共享就会起到事与愿违的效果,这便是通常所说的在多任务建模中出现的负迁移(negative transfer)现象,即在相关性不强或者无相关性的多任务环境下进行信息共享,最终影响整体的网络效果;另一方面,在多任务建模过程中,还存在一种被称为跷跷板现象(seesaw phenomenon),简单来说就是在对多个目标进行优化的过程中,一个任务指标的提升伴随着另外一些任务指标的下降。出现这种现象的主要原因是多个任务之间出现较多的共享。因此,很多的改进算法都在致力于解决这两个问题。

2. 多目标建模的常用方法

2.1.多模型的融合

多模型的融合是指根据不同的任务单独训练不同的模型,最终根据最终的目标将各模型的结果相加或者相乘后进行融合排序。以CTR和CVR为例,最终的目标通常是CTCVR,因此,可以分别训练一个CTR模型和CVR模型,如下图所示:

在这里插入图片描述

通常在实际的任务中会根据不同任务的重要性,对该任务赋予不同的权重。这种方案最主要的优点是相对较为简单,每次单独训练一个模型,只需要调优该模型,不需要考虑其它目标。缺点也是很明显的,主要有如下的几个方面:

  • 多个模型结果的融合,这里面涉及到超参数的选择,通常可以采取grid search的方案确定超参;
  • 每次调优一个模型,而不更新组合并不一定会带来最终效果的提升;
  • 没有考虑两个数据之间的关系,如上述的CTR与CVR之间存在顺序的关系;

2.2. 多任务学习

对于多模型融合存在的问题,通过多任务学习能够在一定程度上解决这些问题,首先,在多任务学习中,由于将多个模型合并成一个模型,这样能够减少维护成本及减少资源;对于数据较为稀疏的任务,通过多任务学习的方式,能够提高模型的效果;

2.2.1. 底层共享表示的优化

在底层共享表示优化中,目前业界主流的多目标建模的网络结构是MMoE[1]和PLE[2]两种,其中MMoE的网络结构如下图c所示:

在这里插入图片描述

在上图a中是Shared-Bottom model,任务A和任务B共享部分的网络结构,假设这部分的共享网络结构由 f ( x ) f\left ( x \right ) f(x)表示, h A ( f ( x ) ) h^A\left ( f\left ( x \right ) \right ) hA(f(x))表示的是任务A的输出, h B ( f ( x ) ) h^B\left ( f\left ( x \right ) \right ) hB(f(x))表示的是任务B的输出,综上,Shared-Bottom Model可由下式表示:

y k = h k ( f ( x ) ) y_k=h^k\left ( f\left ( x \right ) \right ) yk=hk(f(x))

通过在底层共享网络,能够起到互相补充学习的作用,上层的任务之间相关性越高,对于模型的学习也会越充分,但是,如果上层的任务之间的相关性很差,这种情况对于最终的效果却是起到了抑制的作用,即上面提到的负迁移现象,这也是多任务学习难以训练的一个原因。在很多的图像相关的任务中,就存在这样的结构,以人脸检测任务为例,在人脸检测任务重包括了三个方面的目标,分别为face classification,bounding box regression和facial landmark localization,这三个任务可以共享底层的CNN网络,以MTCNN[4]模型为例,其中的O-Net的网络结构如下图所示:

在这里插入图片描述

最终的损失函数为:

m i n    ∑ i = 1 N ∑ j ∈ { d e t , b o x , l a n d m a r k } α j β i j L i j min\; \sum_{i=1}^{N}\sum_{j\in \left \{ det,box,landmark \right \}}\alpha _j\beta _i^jL_i^j mini=1Nj{det,box,landmark}αjβijLij

其中, α j \alpha _j αj β i j \beta _i^j βij是两个超参,这两个超参在参考[4]中是根据经验值确定的, L i j L_i^j Lij表示的是第 j j j个任务的损失函数。

上图b中是One-gate MoE model,相比于Shared-Bottom model,有两点优化,第一,引入多个Shared Bottom组成MoE结构;第二,引入门控网络Gate函数。One-gate MoE Model可由下式表示:

y k = h k ( ∑ i = 1 n g ( x ) i f i ( x ) ) y_k=h^k\left ( \sum_{i=1}^{n}g\left ( x \right )_if_i\left ( x \right ) \right ) yk=hk(i=1ng(x)ifi(x))

在底层共享网络的基础上,引入了多个Shared Bottom,对于不相关的任务联合学习效果不佳问题,能够通过类似集成方法的方式针对不同上层任务选择不同的底层共享网络,使得不同任务具有不同的底层网络。但是在One-gate的模型下,仍然存在一些问题,如多个任务对于底层的分布是一致的。

上图c中是Multi-gate MoE model,MMoE是在One-gate MoE Model的基础上,针对每一个任务独享一个门控网络,Multi-gate MoE Model可由下式表示:

y k = h k ( ∑ i = 1 n g k ( x ) i f i ( x ) ) y_k=h^k\left ( \sum_{i=1}^{n}g^k\left ( x \right )_if_i\left ( x \right ) \right ) yk=hk(i=1ngk(x)ifi(x))

MMoE针对每个任务有单独的门控网络 g k ( x ) i g^k\left ( x \right )_i gk(x)i,同时在底部共享几个专家网络,通过不同的门控网络去控制专家网络对于不同任务的权重贡献,这样不同的任务对于多个专家的分布是不同的,能够有效对任务之间的联系进行建模。然而,在MMoE模型中,只是强调对于上层任务的共性构建底层专家,对于上层任务的差异却没有区别对待,CGC便是基于这样的目的被提出的模型,CGC模型的结构如下图所示:

在这里插入图片描述

在CGC的网络结构中,其底层网络包括了shared experts和task-specific expert两个部分,且每一个expert部分都是由多个expert组成,上层针对每一个任务都有一个门控网络,且门控网络的输入是共享的experts和该任务对应的experts。由此可见,在CGC网络中,既包含了task-specific网络针对特定任务独有的信息,也包含了shared网络共享的信息。为了与MMoE中的表达式一致,修改在参考[2]中的表达式,因此CGC网络可以表示为:

y k = h k ( ∑ i = 1 m k + m s g k ( x ) i f i ( x ) ) y_k=h^k\left ( \sum_{i=1}^{m_k+m_s}g^k\left ( x \right )_if_i\left ( x \right ) \right ) yk=hk(i=1mk+msgk(x)ifi(x))

其中,对于专家输出 f i ( x ) f_i\left ( x \right ) fi(x)中,包含了两个部分,一个是特定任务对应的专家,另一部分是共享的专家。为了能够得到更具有泛化能力的网络,可以将上述网络构建得更深,这便有了PLE结构,PLE是在CGC网络结构的基础上,由single-level衍生为multi-level。具体的PLE网络结构如下图所示:

在这里插入图片描述

除了第一个Extraction Network的输入是原始的Input,其余的Extraction Network的输入是上一个Extraction Network的输出,即包含两个大的部分,即特定任务对应的专家网络输出,如上图中的Experts A和Experts B的输出,另外一个是共享专家网络的输出,如上图中的Experts Shared的输出。在多任务重,其损失函数为各任务损失的加权求和,即为:

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个任务的权重,具体对于 ω k \omega _k ωk的设置可以见参考[2]。

2.2.2. 任务序列依赖关系建模

对于CTR,CVR这样的多任务情况下,两个任务之间是存在相互依赖关系的,假设 x \mathbf{x} x表示的是一条曝光样本, y ∈ { 0 , 1 } y\in \left\{ 0,1\right\} y{0,1}表示的是该曝光样本是否被点击, z ∈ { 0 , 1 } z\in \left\{ 0,1\right\} z{0,1}表示的是该样本在曝光点击后是否有转化,对点击率(CTR)建模是预估点击率: p C T R = p ( y = 1 ∣ x ) pCTR=p\left ( y=1\mid \mathbf{x} \right ) pCTR=p(y=1x),对CVR建模是预估转化率: p C V R = p ( z = 1 ∣ y = 1 , x ) pCVR=p\left ( z=1\mid y=1,\mathbf{x} \right ) pCVR=p(z=1y=1,x)。然而上述的诸如MMoE或者PLE的模型中并未考虑任务之间的序列依赖关系。对于CVR的建模,在训练时只能利用点击后的样本,而预测时,是在整个样本空间,这样导致训练和预测样本分布不一致,即样本选择性偏差。同时点击样本只占整个样本空间的很小比例,存在样本稀疏性问题。

在CTR,CVR这个多任务场景下,ESMM(Entire space multi-task model)[3]模型就是为解决上述两个问题而提出,在ESMM模型的建模过程中引入两个辅助任务,即:CTR建模和CTCVR建模。对于点击转化率(CTCVR): p C T C V R = p ( y = 1 , z = 1 ∣ x ) pCTCVR=p\left ( y=1,z=1\mid \mathbf{x} \right ) pCTCVR=p(y=1,z=1x),pCTR,pCVR和pCTCVR三者之间的关系为:

p ( z = 1 ∣ y = 1 , x ) = p ( y = 1 , z = 1 ∣ x ) p ( y = 1 ∣ x ) p\left ( z=1\mid y=1,\mathbf{x} \right )=\frac{p\left ( y=1,z=1\mid \mathbf{x} \right )}{p\left ( y=1\mid \mathbf{x} \right )} p(z=1y=1,x)=p(y=1x)p(y=1,z=1x)

ESMM的网络结构如下图所示:

在这里插入图片描述

在ESMM模型结构中,有两个特点,第一,在ESMM结构中包含了两个塔,左侧是一个CVR任务的塔,右侧是一个CTR任务的塔,因为不直接对CVR建模,因此输入空间师整个曝光样本空间;第二,在两个塔的底层Embedding层是参数共享的,这样能缓解传统的CVR建模过程中面临的数据稀疏问题。ESMM的损失函数为:

L ( θ c v r , θ c t r ) = ∑ i = 1 N l ( y i , f ( x i ; θ c t r ) ) + ∑ i = 1 N l ( y i & z i , f ( x i ; θ c t r ) × f ( x i ; θ c v r ) ) \begin{align*} L\left ( \theta _{cvr},\theta _{ctr} \right ) &= \sum_{i=1}^{N}l\left ( y_i,f\left ( \mathbf{x}_i;\theta _{ctr} \right ) \right )\\ &+ \sum_{i=1}^{N}l\left ( y_i\&z_i,f\left ( \mathbf{x}_i;\theta _{ctr} \right )\times f\left ( \mathbf{x}_i;\theta _{cvr} \right ) \right ) \end{align*} L(θcvr,θctr)=i=1Nl(yi,f(xi;θctr))+i=1Nl(yi&zi,f(xi;θctr)×f(xi;θcvr))

其中, θ c v r \theta _{cvr} θcvr表示的是CVR塔中的参数, θ c t r \theta _{ctr} θctr表示的是CTR塔中的参数, y i y_i yi表示的是样本 x i \mathbf{x}_i xi在CTR任务上的label, z i z_i zi表示的是样本 x i \mathbf{x}_i xi在CVR任务上的label, f ( x i ; θ c t r ) f\left ( \mathbf{x}_i;\theta _{ctr} \right ) f(xi;θctr)表示的样本 x i \mathbf{x}_i xi在CTR塔中的结果, f ( x i ; θ c v r ) f\left ( \mathbf{x}_i;\theta _{cvr} \right ) f(xi;θcvr)表示的是样本 x i \mathbf{x}_i xi在CVR塔中的结果。

3. 总结

多目标建模已经成为当前推荐系统中的标配,在多目标建模过程中,需要考虑多个目标之间的相互关系,以选择合适的多目标建模方法,同时,在多目标的损失函数的设计上,也存在很多的优化方案,需要根据具体的应用场景选择合适的损失函数,以达到对具体任务的优化。

参考文献

[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.

[3] Ma X, Zhao L, Huang G, et al. Entire space multi-task model: An effective approach for estimating post-click conversion rate[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1137-1140.

[4] Zhang K, Zhang Z, Li Z, et al. Joint face detection and alignment using multitask cascaded convolutional networks[J]. IEEE signal processing letters, 2016, 23(10): 1499-1503.

[5] 网易严选跨域多目标算法演进

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

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

相关文章

Linux常用命令——top命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) top 显示或管理执行中的程序 补充说明 top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可…

C primer plus学习笔记 —— 13、存储类别、内存管理

文章目录存储类别定义、声明和初始化的区别作用域翻译单元和文件链接属性存储期存储类别多文件共享全局变量函数的存储类别存储类别的选择分配内存(malloc、free)malloc和calloc创建数组方式free的重要性举例存储类别 int a 1; int *p &a; int ra…

【Stm32野火】:野火STM32F103指南者开发板烧写官方示例程序LCD无法点亮?LCD示例程序无法使用?

项目场景: 大家好,最近在使用野火STM32F103指南者开发板的时候发现官方的示例程序LCD驱动代码居然无法直接驱动LCD点亮,这让我百思不得其解,以下就是我的踩坑填坑的过程,希望对大家有所帮助。 野火官方资料下载文档链接…

systemd介绍

systemd是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序。功能包括:支持并行化任务;同时采用 socket 式与 D-Bus 总线式激活服务;按需启动守护进程(daemon&a…

与Oracle不一样的union

与Oracle不一样的union一、引言二、实验探寻union2.1 再现DM8案例2.2 再现Oracle案例2.3 实验结论一、引言 前三日,同事call我聊发文查询优化排序问题,当时联想到union自身的特性(合并去重,默认排序输出结果集)&#…

(考研湖科大教书匠计算机网络)第一章概述-第五节2:计算机网络体系结构之OSI参考模型和TCPIP参考模型

文章目录一:OSI参考模型(1)应用层(Application Layer)(2)表示层(Presentation Layer)(3)会话层(Session Layer)&#xff0…

STC32G 单片机系列通用定时器的用法及编程

STC32G单片机与STC15系列单片机一样有T0~T4共5个通用定时器。其功能大致相同,与STC15系列单片机定时器不同的是STC32G单片机的定时器每个都多了一个8位预分频器,如下:这样定时器可作为一个24位定时器使用,做计数器使用与分频器就没…

【Flink】浅谈Flink背压问题(1)

概述 在多线程的情况下有一个典型的模,型生产者消费者模型,该模型主要由生产者、消费者和一个大小固定的队列组成。生产者向队列发送数据,消费者从队列中取出数据并处理。 针对上述模型,如果队列属于有限长度,当消费者…

UE5执行Python脚本插件

1.启用UE5的Python脚本编辑器: 在Edit里面找到Plugins,然后打开插件管理器,搜索Python,找到 Python Editor Script Plugin并启用它。该插件也可能会自动启用(至少我的UE5是这样的),如果已经自动启用&#…

python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)

机器学习入门 机器学习中需要理论性的知识,如数学知识为微积分(求导过程,线性回归的梯度下降法),线性代数(多元线性回归,高纬度的数据,矩阵等),概率论(贝叶斯算法),统计学(贯穿整个学习过程)&a…

Nginx使用(五)配置高可用集群示例

一、条件(1)需要两台Nginx服务器(2)需要keepalived(3)需要虚拟ip二、准备工作(1)需要两台服务器(2)在两台服务器安装nginx(3)在两台服…

Linux应用基础与实训小结

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

ElasticSearch安装及基本使用

文章目录0. 学习资料1. 概念2. 安装ESdocker安装1. **下载镜像**2. **创建实例**3. **浏览器访问:**4. 测试使用Kibana安装1. 下载镜像2. 创建实例3. 效果3. 检索_cat保存查询通过id查询乐观锁操作更新删除批量操作**导入测试数据**4. 进阶搜索基本检索参考文档基本…

将数据从Java Bean复制到另一个Java Bean

JavaBean复制的几种方式1:概述在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值…

P2T: Pyramid Pooling T ransformer for Scene Understanding

论文链接: https://arxiv.org/abs/2106.12011 中文版本: https://mmcheng.net/wp-content/uploads/2022/08/22PAMI_P2T_CN.pdf 代码链接: https://github.com/yuhuan-wu/P2T P2T: Pyramid Pooling T ransformer for Scene Understanding一、摘…

2023年网络安全比赛--JavaScript安全绕过中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.使用渗透机场景kali中工具扫描服务器,将服务器上apache版本号作为flag提交; 2.使用渗透机场景windows7访问服务其场景中的网站(网站路径为IP/javascript),找到网站首页中flag并提交; 3.使用渗透机场景windows7根据第二题的…

2. 拍照的基础知识

1. 单反相机的全称为单镜头反光相机 单反相机的原理就体现在“单”和“反”上,单字就是单镜头,就是说单反相机只能安装一个镜头,光线或是影像通过单反镜头进行来取景的。 对于“反”来说就是相机系统内部有一个反光板。光线通过单反镜头投射…

你应该知道的 7 个最受欢迎的 Python 机器学习库

2023年你应该知道的 7 个最受欢迎的 Python 机器学习库 33/100 发布文章 weixin_38037405 未选择任何文件 new 有一句谚语“你不必重新发明轮子”,工具库就是最好的例子。它可以帮助您以简单的方式编写复杂且耗时的功能。在我看来,一个好的项目会使用一些…

LeetCode分类刷题----字符串篇

字符串字符串1.反转字符串344.反转字符串541.反转字符串||2.替换空格剑指offer05.替换空格3.翻转字符串里的单词151.反转字符串里的单词4.左旋转字符串剑指 Offer 58 - II. 左旋转字符串5.实现strStr函数()28.实现strStr()函数6.重复的子字符串459.重复的子字符串字符串 1.反转…

YOLOv1学习笔记

来源:投稿 作者:ΔU 编辑:学姐 论文笔记 《You Only Look Once:Unifified, Real-Time Object Detection》 Joseph Redmon∗ , Santosh Divvala∗†, Ross Girshick , Ali Farhadi∗† University of Washington∗ , Allen Institute for A…