题外话: 多任务学习可以说是机器学习的终极目标之一, 就像物理学家在追求统一所有力一样, 个人认为机器学习也在追求一个模型解决几乎所有问题. 虽然我们现在还离这个目标很远, 但是多任务学习在实际应用中是非常有价值的, 对于像BERT这么复杂的模型, 用一个模型解决多个问题才能物尽其用啊. (稍稍推广下bert-multitask-learning)

这是Intel在NIPS 2018上发表的关于多任务学习的文章: Multi-Task Learning as Multi-Objective Optimization. 多任务学习其实有很多种做法, hard parameter sharing, soft parameter sharing等等, 但是个人认为hard parameter sharing更加具有实用价值, 这里不展开说了. 这篇文章属于用hard parameter sharing 做多任务学习, 通过loss weighting来提升效果, 而本文的主要贡献是对这个weight的快速计算. 作者在文章中说了以下事情:

  1. 介绍了用多目标优化解决多任务学习的一般形式
  2. 介绍了怎么比较多任务学习结果的优劣: 帕累托最优
  3. 将帕累托最优的求解转化成任务权重的求解
  4. 证明如何简化该计算

文章的idea其实很简单, 但是理论比较多, 如果对理论不感兴趣的话了解一下作者做了什么工作就好了: 通过链式法则的推导, 并证明了, 在梯度为full rank的情况下, 我们不需要对每个任务的向后传播都算到底(所有层), 只需要算到共享模型的最后一层, 用这个去解出各个任务的权重, 既能加快速度, 又能得到一个比较好的解. 下面我会尝试总结一下作者的推导过程.

符号解释

  • : 任务以及任务集合
  • : 模型参数, 共享的模型参数
  • : 任务权重
  • : 学习率
  • :
    的最后一层输出
  • : 损失函数
  • : 输出空间和任务t的标签空间

多目标优化解决多任务学习的一般形式

多任务学习可以一般可以表示为最小化下面式子:

帕累托最优

我们可以想象, 对于不同的

的取值, 我们可以学到不同的参数
, 那么我们怎么判断参数之间的优劣呢? 显然的, 如果对于参数
, 在每个任务上的表现都大于等于
, 那么我们就认为
要好(dominiate). 按照这个条件, 如果参数
不差于任何参数,那么
则称为

帕累托最优.

用求解任务权重解帕累托最优

这是问题的第一步转换, 理论基础是这篇文章(我没看). 文章证明了, 下面式子的解要么是帕累托静止点(帕累托最优的必要条件), 要么是一个能优化所有任务的好的优化方向.

我们可以看到,

的梯度和
是没啥关系的,
只作用在
的梯度上, 因此向后传播的过程为:
  1. 对所有

    做一般的gradient descent
  2. 解出上面式子, 并对
    的gradient descent.

计算过程写下来就是原文里面的Algorithm 2:

简化上述计算

从Algorithm 2第8行可以看到, 对于share parameters的梯度, 需要对每个任务都算一遍, 当任务比较多的时候, 运算复杂度高, 因此, 作者提出了第二步转换, 也是本文的主要工作.

复合函数求导的链式法则可得上界:

其中Z为输入的最后一层的表示. 去掉与alpha不想关的项, 可得:

然后作者证明了

在full rank 的情况下, MGDA-UB(Multiple Gradient Descent Algorithm – Upper Bound, 就是上面的那个公式)的解要么是Pareto stationary point(Pareto optimal的必要条件), 要么是一个能优化所有任务的好的优化方向. 那么算法修改的地方是Algorithm 2中的第8行的梯度计算, 从对所有share parameters算梯度改成对最后一层表示的梯度.

实验结果

作者在MultiMNIST和CelebA数据集上取得了超过single task的结果. 训练时间也极大地缩短了(任务越多, 训练时间差距越大). 从作者的实验结果也可以看到, 简单的average的效果其实是不如single task的.

需要注意的是, 在本文我忽略了很多过程, 只把我认为的最关键的部分拿了出来, 主要是为了简单叙述一下作者简化计算的方法.

原文链接: https://github.com/JayYip/deep-learning-nlp-notes/blob/master/%E7%94%A8%E5%A4%9A%E7%9B%AE%E6%A0%87%E4%BC%98%E5%8C%96%E8%A7%A3%E5%86%B3%E5%A4%9A%E4%BB%BB%E5%8A%A1%E5%AD%A6%E4%B9%A0.md

多目标机器学习_NIPS2018 - 用多目标优化解决多任务学习相关推荐

  1. pareto最优解程序_NIPS 2018 | 作为多目标优化的多任务学习:寻找帕累托最优解

    原标题:NIPS 2018 | 作为多目标优化的多任务学习:寻找帕累托最优解 选自arXiv 作者:Ozan Sener.Vladlen Koltun 参与:李诗萌.王淑婷 多任务学习本质上是一个多目 ...

  2. pareto最优解程序_作为多目标优化的多任务学习:寻找帕累托最优解

    多任务学习本质上是一个多目标问题,因为不同任务之间可能产生冲突,需要对其进行取舍.本文明确将多任务学习视为多目标优化问题,以寻求帕累托最优解.而经过实验证明,本文提出的方法可以在现实假设下得到帕累托最 ...

  3. 多目标进化优化_SDIM 学术讲座|分解多目标优化与帕累托多任务学习

    分解多目标优化与 帕累托多任务学习 2020年11月4日晚,香港城市大学电脑学系讲座教授.博士生导师.IEEE Fellow张青富教授应我院王振坤教授的邀请,在线举办了一场主题为"分解多目标 ...

  4. 基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

    我国高分辨率对地观测系统重大专项已全面启动,高空间.高光谱.高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源.未来10年全球每天获取的观测 ...

  5. PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

    我国高分辨率对地观测系统重大专项已全面启动,高空间.高光谱.高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源.未来10年全球每天获取的观测 ...

  6. 双碳目标下综合能源系统低碳运行优化调度Matlab程序

    双碳目标下综合能源系统低碳运行优化调度Matlab程序 包含光伏.风电.热电联产.燃气锅炉.电锅炉.电储能.碳捕集设备,考虑碳交易 以系统运行成本最小为目标进行调度 没有具体参考文献,这个只是一个授之 ...

  7. Azure机器学习——计算目标03:使用 Azure机器学习工作室配置计算目标

    使用 Azure机器学习工作室配置计算目标 查看计算目标 创建计算目标 附加计算目标 使用计算目标 总结 在 Azure机器学习--创建Azure机器学习服务一节中给大家介绍过Azure机器学习工作室 ...

  8. 目标跟踪介绍(单目标)

    Abstract 视觉跟踪技术是计算机视觉领域(人工智能分支)的一个重要课题,有着重要的研究意义:且在军事制导.视频监控.机器人视觉导航.人机交互.以及医疗诊断等许多方面有着广泛的应用前景.随着研究人 ...

  9. 【CV】小目标检测问题中“小目标”如何定义?其主要技术难点在哪?

    前言: 目标检测是计算机视觉领域中的一个重要研究方向,同时也是解决分割.场景理解.目标跟踪.图像描述和事件检测等更高层次视觉任务的基础.在现实场景中,由于小目标是的大量存在,因此小目标检测具有广泛的应 ...

最新文章

  1. epplus保存为流_c# – 另存为使用EPPlus?
  2. 鸿蒙安卓数据互通吗,假如鸿蒙与安卓之间不能够实现游戏账号互通,你还会为其买单吗?...
  3. 实用MYSQL语句收集
  4. oracle安装缺少,安装oracle11g R2 缺少依赖包
  5. 【codevs1073】家族,胡写并查集
  6. Visual Studio 单元测试之二---顺序单元测试
  7. c语言数据结构练习复数操作
  8. MATLAB数值微积分与方程求解
  9. 通达OA2016之进销存管理,为企业开启"精准营收"新模式
  10. 2020h黑苹果 y7000p_【黑苹果】联想Lenovo Legion Y7000 Y530系列笔记本,EFI文件下载
  11. UCSC Xena:癌症基因组学数据分析平台
  12. stm32 系统进入stop模式_STM32开发笔记78: 2种STOP模式的唤醒方法
  13. 小熊派鸿蒙开发板,小熊派-鸿蒙#183;季开发板入门(一)
  14. NeRF神经辐射场学习笔记(十)— BungeeNeRF(CityNeRF)实现以及代码注释
  15. 阿里云 大数据DataWorks开发套件的相关操作
  16. html里面的view怎么修改,asp.net mvc 3-在局部视图中修改MVC 3 ViewBag不会保留到_Layout.cshtml...
  17. opencv-python 线稿素描提取
  18. Python pandas 染色体 SNP 位点提取 并排序
  19. 夜雨数竞笔记-不定积分(1)-换元法-倒代换
  20. 路飞学城结算中心实现

热门文章

  1. 回港二次上市,会是内容社区平台的更优选吗?
  2. linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
  3. 计算机在线考试系统的参考文献,基于JSP的在线考试系统
  4. mysql脚本简书,mysql一键安装脚本
  5. linux的有趣命令,Linux有趣小命令之艺术字
  6. mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释
  7. Python字符串和正则表达式中的反斜杠(‘\‘)问题
  8. Python 模块初始化的时候,发生了什么?
  9. 将Python字符串生成PDF
  10. Python爬虫数据分析三剑客:Numpy、pandas、Matplotlib