多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一)

article/2025/8/21 23:21:43

多任务学习算法系列的主要内容是回顾和总结自己2019-2021间在深度学习多任务学习算法(multitask)的工业实践和遇到的常见问题,欢迎更多同学讨论和指正,同时也宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://github.com/PaddlePaddle/PaddleRec),欢迎大家点赞,关注和讨论,熟悉框架后简历会加很多分噢~

第一章首先介绍多任务的基本概念和工业实践中的动机以及应用场景。

一. What multitask

多任务学习(multitask)的定义和形式有很多种。我觉得比较直观的理解是和单任务学习相对的一种机器学习方法。

以School Data案例为例介绍单任务和多任务的区别:

(1) School Data是用来预测学生成绩的回归问题的数据集,总共有139个中学的15362个学生,其中每一个中学都可以看作是一个预测任务。

(2) 单任务学习就是忽略任务之间可能存在的关系分别学习139个回归函数进行分数的预测,或者直接将139个学校的所有数据放到一起学习一个回归函数进行预测。

(3) 而多任务学习则看重任务之间的联系,通过联合学习,同时对139个任务学习不同的回归函数,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。

一般优化多于一个的目标函数的任务都可以称为多任务(multi-task)【1】。

本文的多任务学习特指工业界推荐系统领域(搜广推)中深度学习相关的多任务学习。

二. Why multitask

多任务算法的应用场景还是很广泛的,只要是推荐技术涉及的业务,比如搜索、广告还是推荐都有需求,另外无论是成熟的大规模推荐系统还是处于上升期的初创场景对于多个目标的联合训练一般都有强需求。

常见多任务学习的动机和需求还是围绕提升(主)模型的精度(泛化能力)、资源性能和维护成本,具体如下也欢迎更多同学补充交流。

(1)多任务场景下,多个任务(相关性较强)会从不同的角度学习特征,增强模型泛化能力来提升收益,最常见的就是通过增加优化目标,比如在信息流推荐领域中的点击,时长,评论,点赞等多个维度,比如在电商领域的点击和转化。

(2)共享参数,不额外增加资源的前提下变相增加参数规模。推荐系统的核心是embedding,对于相关的多个目标,比如点击/时长等,用户及相关特征的重合或者接近的,多个任务共享这部分参数可以极大的节省离线和在线资源

(3)用数据更多的任务指导学习数据较少的任务。一般常见的就是某个任务的数据量较少,期望能通过大数据训练较好的模型指导稀疏数据场景下的模型,比如点击率和转化率,一跳场景和二跳场景。

(4)冷启模型的快速收敛。将冷启模型和收敛模型同时训练,帮助冷启模型可以在一个相对正确的方向上快速收敛

(5)有更多反馈和指导的模型(人工参与或更接近用户反馈层)指导学习其他模型。最常见的就是在精排阶段或者重排序阶段有一些"精准"评分用来指导更上层的粗排或者召回模型

(6)多个模型合并为一个模型后的线上资源多路请求可以合并为一路,减少请求资源。这个一般是架构同学的强需求,毕竟线上资源还是非常贵的。

(7)减少多模型的维护成本。有很多策略和架构同学减少维护多个"相似"模型的需求是强烈的,一般一个模型有数据链条,离线训练任务,在线任务等多个环节,如果能合并成一个任务会极大的减轻工作量。

(8)混合数据中训练不同任务。由于数据生成或者任务形式的不同,常见的需求是期望不同的数据训练不同的模型(比如mlp塔),而不是所有数据都训练每个模型,这也是多任务学习中的常见需求。不同的数据一般指不同的样本 或者一条样本的不同特征。

总结一下,本章主要介绍了多任务的概念,一般优化多于一个的目标函数的任务都可以称为多任务。多任务学习的主要动机还是围绕提升(主)模型的精度(泛化能力)、资源性能和维护成本。

后续将总结不同需求下的解决方案,包括模型层面(share-bottom, mmoe, ple, esmm等)和数据层面的解决方案(Instag),后续也会推出常见问题的章节,比如esmm的ctcvr的auc精度损失问题,多个目标的融合等。

其他文章链接:

多任务学习的经典算法 Share-Bottom: 推荐系统多任务学习(multitask)的实战总结和常见问题(二)

欢迎更多同学讨论和指正,最好还是宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://github.com/PaddlePaddle/PaddleRec)

参考文献:

【1】An Overview of Multi-Task Learning in Deep Neural Networks .

文章转自:多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一) - 知乎


http://chatgpt.dhexx.cn/article/1WdvWwXN.shtml

相关文章

VS2012下载和安装

1.下载链接 https://pan.baidu.com/s/1YR7Xk9Zlv7zQWCsERdVgIQ 提取码:stvi 2.鼠标右击【Visual Studio2012】压缩包选择【解压到Visual Studio2012】。 3.打开解压后的文件夹,鼠标右击【vs_ultimate】选择【以管理员身份运行】。 4.点击【…】可更改安…

Visual Studio 2013 详细安装教程(安装+注册)

转载自:安装注册:https://jingyan.baidu.com/article/09ea3ede3b2496c0afde3944.html IE10报错解决办法:https://jingyan.baidu.com/article/ff42efa92f79cac19e2202cd.html 1.还是老样子,首先要下载安装文件,这里提供…

使用cubemx工具的STM32对外部flash(W25Q64)的简单编程

SPI SPI简介 SPI通信原理 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为…

stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256

头文件 #ifndef W25QXX__H #define W25QXX__H #include "sys.h"#define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 #define W25Q256 0XEF18#define W25QXX_CS PAout(4)//指令表 #define W25X…

SPI专题(二)——STM32驱动FLASH(W25Q64)

前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。 github:my github 注:博客所涉及的关于 st…

STM32系列(HAL库)——F103C8T6通过SPI方式读写W25Q64—(Flash存储模块)

1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件准备 (1)W25Q64模块 (2)F1的板子,本例使用经典F103C8T6 (3)ST-link 下载器 (4)USB-TTL模块 (5)杜邦线若干 3.模块资料 (1)模块简介: W25Q64(64M-bit)&#xff0c…

SPI协议学习Cubmx——读写Flash W25Q64

这是最好的时代,这是最坏的时代; 这是智慧的时代,这是愚蠢的时代; 这是信仰的时期,这是怀疑的时期; 这是光明的季节,这是黑暗的季节; 这是希望之春,这是失望之冬&#xf…

STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例)

使用QUADSPI读写W25Q64 QUADSPI介绍硬件连接双闪存模式禁止双闪存模式使能 QUADSPI命令序列指令阶段地址阶段交替字节阶段空指令周期阶段数据阶段 QUADSPI主要信号接口协议模式单线SPI模式双线SPI模式四线SPI模式 使用QUADSPI操作W25Q64发送命令函数状态轮询函数读ID函数QUADSP…

W25Q64内部结构

和STM32片上一样 我们分析 函数接口: 擦除1个扇区 【参数必须是4096的倍数】 void SPI_FLASH_SectorErase(uint32_t SectorAddr) 擦除芯片全部 void SPI_FLASH_BulkErase(void) 写入一页【数据比256小】 pBuffer:待写入数据的指针 WriteAddr&#xff…

基于STM32F401RET6字库烧录(SPIW25Q64驱动)

目录 一、SPI&W25Q64 1-SPI介绍 2-初始化SPI 3-SPI数据接收和发送函数 4-验证SPI是否配置正确(读W25Q64的ID) 二、W25Q64简介与API函数 1 - W25Q64芯片介绍 2- W25Q64芯片管脚说明 3- W25Q64芯片工作原理 4- W25Q64芯片操作时序 三、字库烧…

STM32CubeMx开发之路—13使用SPI读写W25Q64

!!! 本文已同步到码云 - 点击此链接获取最新 - 可进入码云提交修改 !!! 附件 源码已放到码云 ! ! ! ( 请点击文首链接进入仓库 ) 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用硬件IIC读写24C02 STM32CubeMx基本配…

STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)

文章目录 1. 准备工作1.1. 所用硬件1.2. SPI 简介1.3. 生成工程1.3.1. 创建工程选择主控1.3.2. 系统配置1.3.3. 配置工程目录 2. 读写EEPROM实验(W25Q64)2.1. W25Q64 简介2.2. 代码实现 3. NRF24L01无线模块通信3.1. 模块简介3.2. SPI 配置3.2.1. SPI1 配…

STM32驱动W25Q64读写数据

STM32驱动W25Q64读写数据 一.基本参数二.通信协议1、时序:2、代码: 三.引脚定义与接线1、引脚定义2、对应接线 四.主要代码五.操作步骤与现象六.总结 一.基本参数 1.采用…

学习日记——W25Q64 FLASH—QSPI

W25Q64串行FLASH基础知识 大小:8M(Byte)(128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字 节,每个扇区16页&#xff0c…

(STM32)W25Q64存储模块

1bit表示一个二进制位,1Byte表示8个二进制位。 每一个字节需要一个地址,所以24位地址,2^24次方最大寻址范围是16M。 W25Q256是特殊型号,切换4字节寻址模式才能使用后面的16M空间。 HOLD:芯片正常读写数据时&#xff…

SPIW25Q64(精华版)

1. SPI总线 1.1 W25Q64 1.1 W25Q64简介 W25Q64 是一种具有SPI接口的FlASH存储器,具有32768个可编程页(Page256B),2048个可擦除扇区(Sector16*Page),128个可擦除块(Block16*Sector),容量为128*16*16*256B8MB(64bit),…

W25Q64简介(译)

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q…

W25Q64Flash芯片

W25Q64Flash芯片STM32操作 通讯方式:SPI通讯 大小:64是bit 换算字节是8M(Byte)(128块(Block),每块16个扇区(Sector),每个扇区4K字节(…

SPI通讯介绍 以及读写W25Q64(块,扇区,页的区别)

附工程百度网盘链接 链接:https://pan.baidu.com/s/1nCgNb5OyGpABAL657-gX0A?pwd6666 提取码:6666 介绍:摩托罗拉开发的一种通用数据总线, 四根通讯线SCK(串行时钟总线),MOSI(主机输出从机输入),MISO(主机输入从机输出),SS(从机选择)而且是同步全双…

W25Q64调试

简介 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。 引脚介绍 串行数据输入、输出和 IOs(DI、DO 和 IO0、IO1、…