0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解多任务学习的方法与现实

深度学习自然语言处理 来源:炼丹笔记 作者:十方 2021-04-09 10:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家在做模型的时候,往往关注一个特定指标的优化,如做点击率模型,就优化AUC,做二分类模型,就优化f-score。然而,这样忽视了模型通过学习其他任务所能带来的信息增益和效果上的提升。通过在不同的任务中共享向量表达,我们能够让模型在各个任务上的泛化效果大大提升。这个方法就是我们今天要谈论的主题-多任务学习(MTL)。

所以如何判定是不是多任务学习呢?不需要看模型结构全貌,只需要看下loss函数即可,如果loss包含很多项,每一项都是不同目标,这个模型就是在多任务学习了。有时,虽然你的模型仅仅是优化一个目标,同样可以通过多任务学习,提升该模型的泛化效果。比如点击率模型,我们可以通过添加转化样本,构建辅助loss(预估转化率),从而提升点击率模型的泛化性。

为什么多任务学习会有效?举个例子,一个模型已经学会了区分颜色,如果直接把这个模型用于蔬菜和肉类的分类任务呢?模型很容易学到绿色的是蔬菜,其他更大概率是肉。正则化算不算多任务?正则化的优化的loss不仅有本身的回归/分类产生的loss,还有l1/l2产生的loss,因为我们认为“正确且不过拟合”的模型的参数应该稀疏,且不易过大,要把这种假设注入到模型中去学习,就产生了正则化项,本质也是一个额外的任务。

MTL两个方法

第一种是hard parameter sharing,如下图所示:

f855993c-98d3-11eb-8b86-12bb97331649.png

比较简单,前几层dnn为各个任务共享,后面分离出不同任务的layers。这种方法有效降低了过拟合的风险: 模型同时学习的任务数越多,模型在共享层就要学到一个通用的嵌入式表达使得每个任务都表现较好,从而降低过拟合的风险。

第二种是soft parameter sharing,如下图所示:

f86393b6-98d3-11eb-8b86-12bb97331649.png

在这种方法下,每个任务都有自己的模型,有自己的参数,但是对不同模型之间的参数是有限制的,不同模型的参数之间必须相似,由此会有个distance描述参数之间的相似度,会作为额外的任务加入到模型的学习中,类似正则化项。

多任务学习能提效,主要是由于以下几点原因:

隐式数据增强:每个任务都有自己的样本,使用多任务学习的话,模型的样本量会提升很多。而且数据都会有噪声,如果单学A任务,模型会把A数据的噪声也学进去,如果是多任务学习,模型因为要求B任务也要学习好,就会忽视掉A任务的噪声,同理,模型学A的时候也会忽视掉B任务的噪声,因此多任务学习可以学到一个更精确的嵌入表达。

注意力聚焦:如果任务的数据噪声非常多,数据很少且非常高维,模型对相关特征和非相关特征就无法区分。多任务学习可以帮助模型聚焦到有用的特征上,因为不同任务都会反应特征与任务的相关性。

特征信息窃取:有些特征在任务B中容易学习,在任务A中较难学习,主要原因是任务A与这些特征的交互更为复杂,且对于任务A来说其他特征可能会阻碍部分特征的学习,因此通过多任务学习,模型可以高效的学习每一个重要的特征。

表达偏差:MTL使模型学到所有任务都偏好的向量表示。这也将有助于该模型推广到未来的新任务,因为假设空间对于足够多的训练任务表现良好,对于学习新任务也表现良好。

正则化:对于一个任务而言,其他任务的学习都会对该任务有正则化效果。

多任务深度学习模型

Deep Relationship Networks:从下图,我们可以看到卷积层前几层是预训练好的,后几层是共享参数的,用于学习不同任务之间的联系,最后独立的dnn模块用于学习各个任务。

f88c2d4e-98d3-11eb-8b86-12bb97331649.png

Fully-Adaptive Feature Sharing:从另一个极端开始,下图是一种自底向上的方法,从一个简单的网络开始,并在训练过程中利用相似任务的分组准则贪婪地动态扩展网络。贪婪方法可能无法发现一个全局最优的模型,而且只将每个分支分配给一个任务使得模型无法学习任务之间复杂的交互。

f89bdcf8-98d3-11eb-8b86-12bb97331649.png

cross-stitch Networks: 如上文中所谈到的soft parameter sharing,该模型是两个完全分离的模型结构,该结构用了cross-stitch单元去让分离的模型学到不同任务之间的关系,如下图所示,通过在pooling层和全连接层后分别增加cross-stitch对前面学到的特征表达进行线性融合,再输出到后面的卷积/全连接模块。

f8b228dc-98d3-11eb-8b86-12bb97331649.png

A Joint Many-Task Model:如下图所示,预定义的层级结构由各个NLP任务组成,低层级的结构通过词级别的任务学习,如此行分析,组块标注等。中间层级的结构通过句法分析级别的任务学习,如句法依存。高层级的结构通过语义级别的任务学习。

f8cabf14-98d3-11eb-8b86-12bb97331649.png

weighting losses with uncertainty:考虑到不同任务之间相关度的不确定性,基于高斯似然最大化的多任务损失函数,调整每个任务在成本函数中的相对权重。结构如下图所示,对像素深度回归、语义和实例分割。

f8f02e34-98d3-11eb-8b86-12bb97331649.png

sluice networks: 下图模型概括了基于深度学习的MTL方法,如硬参数共享和cross-stitch网络、块稀疏正则化方法,以及最近创建任务层次结构的NLP方法。该模型能够学习到哪些层和子空间应该被共享,以及网络在哪些层学习了输入序列的最佳表示。

f90a94e0-98d3-11eb-8b86-12bb97331649.png

ESSM: 在电商场景下,转化是指从点击到购买。在CVR预估时候,我们往往会遇到两个问题:样本偏差和数据系数问题。样本偏差是指训练和测试集样本不同,拿电商举例,模型用点击的数据来训练,而预估的却是整个样本空间。数据稀疏问题就更严重了,本身点击样本就很少,转化就更少了,所以可以借鉴多任务学习的思路,引入辅助学习任务,拟合pCTR和pCTCVR(pCTCVR = pCTR * pCVR),如下图所示:

f9222772-98d3-11eb-8b86-12bb97331649.png

对于pCTR来说,可将有点击行为的曝光事件作为正样本,没有点击行为的曝光事件作为负样本

对于pCTCVR来说,可将同时有点击行为和购买行为的曝光事件作为正样本,其他作为负样本

对于pCVR来说,只有曝光没有点击的样本中的梯度也能回传到main task的网络中

另外这两个子网络的embedding层是共享的,由于CTR任务的训练样本量要远超过CVR任务的训练样本量,从而能够缓解训练数据稀疏性问题。

DUPN:模型分为行为序列层、Embedding层、LSTM层、Attention层、下游多任务层(CTR、LTR、时尚达人关注预估、用户购买力度量)。如下图所示

f988fc86-98d3-11eb-8b86-12bb97331649.png

f9c070b2-98d3-11eb-8b86-12bb97331649.png

f9cefc54-98d3-11eb-8b86-12bb97331649.png

MMOE: 如下图所示,模型(a)最常见,共享了底层网络,上面分别接不同任务的全连接层。模型(b)认为不同的专家可以从相同的输入中提取出不同的特征,由一个Gate(类似) attention结构,把专家提取出的特征筛选出各个task最相关的特征,最后分别接不同任务的全连接层。MMOE的思想就是对于不同任务,需要不同专家提取出的信息,因此每个任务都需要一个独立的gate。

fa157c56-98d3-11eb-8b86-12bb97331649.png

PLE:即使通过MMoE这种方式减轻负迁移现象,跷跷板现象仍然是广泛存在的(跷跷板现象指多任务之间相关性不强时,信息共享就会影响模型效果,会出现一个任务泛化性变强,另一个变弱的现象)。PLE的本质是MMOE的改进版本,有些expert是任务专属,有些expert是共享的,如下图CGC架构,对于任务A而言,通过A的gate把A的expert和共享的expert进行融合,去学习A。

fa58e4dc-98d3-11eb-8b86-12bb97331649.png

最终PLE结构如下,融合了定制的expert和MMOE,堆叠多层CGC架构,如下所示:

fa8c8c92-98d3-11eb-8b86-12bb97331649.png

参考文献

1. An overview of multi-task learning in deep neural networks. Retireved from https://arxiv.org/pdf/1706.05098.pdf

2. Long, M., & Wang, J. (2015)。 Learning Multiple Tasks with Deep Relationship Networks. arXiv Preprint arXiv:1506.02117. Retrieved from http://arxiv.org/abs/1506.02117

3. Lu, Y., Kumar, A., Zhai, S., Cheng, Y., Javidi, T., & Feris, R. (2016)。 Fully-adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attribute Classification. Retrieved from http://arxiv.org/abs/1611.05377

4. Misra, I., Shrivastava, A., Gupta, A., & Hebert, M. (2016)。 Cross-stitch Networks for Multi-task Learning. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. https://doi.org/10.1109/CVPR.2016.433

5. Hashimoto, K., Xiong, C., Tsuruoka, Y., & Socher, R. (2016)。 A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks. arXiv Preprint arXiv:1611.01587. Retrieved from http://arxiv.org/abs/1611.01587

6. Yang, Y., & Hospedales, T. (2017)。 Deep Multi-task Representation Learning: A Tensor Factorisation Approach. In ICLR 2017. https://doi.org/10.1002/joe.20070

7. Ruder, S., Bingel, J., Augenstein, I., & Søgaard, A. (2017)。 Sluice networks: Learning what to share between loosely related tasks. Retrieved from http://arxiv.org/abs/1705.08142

8. Entire Space Multi-Task Model: An Effective Approach forEstimating Post-Click Conversion Rate. Retrieved from: https://arxiv.org/pdf/1804.07931.pdf

9. Perceive Your Users in Depth: Learning Universal User Representations from Multiple E-commerce Tasks. Retrieved from: https://arxiv.org/pdf/1805.10727.pdf
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多任务
    +关注

    关注

    0

    文章

    18

    浏览量

    9300
  • AUC
    AUC
    +关注

    关注

    0

    文章

    9

    浏览量

    6962
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123890

原文标题:一文"看透"多任务学习

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高导热灌封胶如何验证?详解导热系数的精准测试方法与影响因素 | 铬锐特实业

    高导热灌封胶导热系数如何精准验证?本文详解ASTM D5470等主流测试方法、影响实测值的关键因素及专业判断标准,帮助您甄选真正可靠的产品。 | 铬锐特实业
    的头像 发表于 12-04 11:37 43次阅读
    高导热灌封胶如何验证?<b class='flag-5'>详解</b>导热系数的精准测试<b class='flag-5'>方法</b>与影响因素 | 铬锐特实业

    分享一个嵌入式开发学习路线

    拓展期(3-4个月) 学习嵌入式操作系统(RTOS)和物联网通信技术,能开发“多任务、联网”的复杂项目,理解企业级嵌入式开发的“架构思维”。这一阶段的学习需要一定的自律和毅力,但与学历无关。 嵌入式
    发表于 12-04 11:01

    多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?

    多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?
    发表于 12-04 06:37

    学习RTOS的意义?

    RTOS实现多任务管理。 嵌入式操作系统有众多的软件组件,可以极大的加速项目进度,避免重复造车轮。 2.技能需要 掌握操作系统,和基于RTOS的编程,实现更好的职业规划,对个人发展是必不可少的。 在招聘网
    发表于 11-27 08:16

    freertos关闭任务调度的方法

    #include \"FreeRTOS.h\" #include \"task.h\" /* 关闭任务调度 */ void
    发表于 11-17 06:47

    一句话,多个命令同时执行,AI语音模组也能多任务处理?

    、 Ai-WV02-32S   将语音识别、唤醒、语义理解等核心功能, 浓缩在一颗小小的模组中。 安信可AI语音模组支持 MCP 协议(Multi Command Processing,多命令并行处理) ,让语音交互从“单线程”进化为真正的“多任务协同”! 一句话唤醒“多任务
    的头像 发表于 10-31 14:45 238次阅读
    一句话,多个命令同时执行,AI语音模组也能<b class='flag-5'>多任务</b>处理?

    爱普科技PSRAM加速wisun无线模块多任务处理

    爱普科技256Mb PSRAM(如APS256XXN-OBR-BG)为WiSUN无线模块提供高速数据缓存与临时存储解决方案,其166MHz速率、1.8V低功耗及小尺寸封装显著提升模块在智能电网、工业自动化中的多任务处理能力和稳定性。
    的头像 发表于 10-14 09:25 210次阅读
    爱普科技PSRAM加速wisun无线模块<b class='flag-5'>多任务</b>处理

    揭秘LuatOS Task:多任务管理的“智能中枢”

    Task任务作为LuatOS的核心组成部分,通过智能化的任务管理机制,实现任务的创建、调度与协同运行,让复杂应用得以高效并行处理,满足实时场景下的严苛需求。 sys核心库是LuatOS运行框架库
    的头像 发表于 08-28 13:48 391次阅读
    揭秘LuatOS Task:<b class='flag-5'>多任务</b>管理的“智能中枢”

    同步任务开发指导

    。 由于TaskPool偏向于单个独立的任务,因此当各个同步任务之间相对独立时推荐使用TaskPool,例如一系列导入的静态方法,或者单例实现的方法。如果同步
    发表于 06-19 07:57

    快速入门——LuatOS:sys库多任务管理实战攻略!

    在嵌入式开发中,多任务管理是提升系统效率的关键。本教程专为快速入门设计,聚焦LuatOS的sys库,通过实战案例带你快速掌握多任务创建、调度与同步技巧。无论你是零基础新手还是希望快速提升开发效率
    的头像 发表于 05-29 14:36 586次阅读
    快速入门——LuatOS:sys库<b class='flag-5'>多任务</b>管理实战攻略!

    BEVFusion —面向自动驾驶的多任务多传感器高效融合框架技术详解

    BEVFusion 技术详解总结——面向自动驾驶的多任务多传感器高效融合框架原始论文:*附件:bevfusion.pdf介绍(Introduction)背景:自动驾驶系统配备了多种传感器,提供互补
    的头像 发表于 02-26 20:33 5963次阅读
    BEVFusion —面向自动驾驶的<b class='flag-5'>多任务</b>多传感器高效融合框架技术<b class='flag-5'>详解</b>

    详解温度传感器校准方法

    温度测量是现代科技的基础,而校准则是确保测量准确的关键。让我们深入探讨温度传感器校准的技术细节,揭开这项精密科学的神秘面纱。 校准方法详解 定点法校准 这是最精确的校准方法之一,利用纯物质的相变点
    的头像 发表于 02-11 14:35 2664次阅读

    精密空调操作使用方法详解

    精密空调操作使用方法详解
    的头像 发表于 02-10 14:44 1876次阅读
    精密空调操作使用<b class='flag-5'>方法</b><b class='flag-5'>详解</b>

    Linux计划任务cron详解

    cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的
    的头像 发表于 02-07 15:31 1526次阅读
    Linux计划<b class='flag-5'>任务</b>cron<b class='flag-5'>详解</b>

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度学习相比,传统方法在给定问题上的开发和测试速度更快。
    的头像 发表于 12-30 09:16 1968次阅读
    传统机器<b class='flag-5'>学习方法</b>和应用指导