多任务学习模型的优化

有多个task就有多个loss,常见的MTL模型loss可以直接简单的对多个任务的loss相加:
L = ∑ i L i L=\sum_{i} L_{i} L=i∑​Li​
显然这种做法有很大问题,因为不同task的label分布不同,同时不同task的loss量级也不同,整个模型很可能被一些loss特别大的任务主导。最简单的方法是加权loss,人工设计权重:
L = ∑ i w i ∗ L i L=\sum_{i} w_{i} * L_{i} L=i∑​wi​∗Li​
但是这样这个权重在整个训练周期中都是固定的,不同训练阶段权重可能变化,动态权重则为:
L = ∑ i w i ( t , θ ) ∗ L i L=\sum_{i} w_{i}(t, \theta) * L_{i} L=i∑​wi​(t,θ)∗Li​
t是训练的step,theta是模型其他参数。但是这种做法也不一定有人工设计权重好。

一些设计 w i ( t , θ ) w_{i}(t, \theta) wi​(t,θ) 的方法:

《End-to-End Multi-Task Learning with Attention》 CVPR 2019

CVPR 2019的《End-to-End Multi-Task Learning with Attention》提出的Dynamic Weight Averaging(DWA),核心公式如下所示:
r n ( t − 1 ) = L n ( t − 1 ) L n ( t − 2 ) w i ( t ) = N exp ⁡ ( r i ( t − 1 ) / T ) ∑ n exp ⁡ ( r n ( t − 1 ) / T ) \begin{gathered} r_{n}(t-1)=\frac{L_{n}(t-1)}{L_{n}(t-2)} \\ w_{i}(t)=\frac{N \exp \left(r_{i}(t-1) / T\right)}{\sum_{n} \exp \left(r_{n}(t-1) / T\right)} \end{gathered} rn​(t−1)=Ln​(t−2)Ln​(t−1)​wi​(t)=∑n​exp(rn​(t−1)/T)Nexp(ri​(t−1)/T)​​
$L_{n}(t-1) 是任务 n 在 t − 1 时的训练 l o s s ,因此 是任务 n 在 t-1 时的训练loss,因此 是任务n在t−1时的训练loss,因此r_{n}(t-1) $ 是此时loss的下降速度,$r_{n}(t-1) $越小,训练速度越快。(已经开始收敛,loss=0时结束了)

w i ( t ) w_i(t) wi​(t)代表不同任务loss的权重,直观理解就是loss收敛越快的任务,权重越小,权重的平均程度由温度系数T控制

《Dynamic task prioritization for multitask learning》 ECCV 2018

DTP(Dynamic Task Prioritization):
w i ( t ) = − ( 1 − k i ( t ) ) γ i log ⁡ ( k i ( t ) ) w_{i}(t)=-\left(1-k_{i}(t)\right)^{\gamma_{i}} \log \left(k_{i}(t)\right) wi​(t)=−(1−ki​(t))γi​log(ki​(t))
$k_i(t) $ 表示第t步的某衡量kpi值,取值维0~1之间,比如在分类任务中KPI可以是训练集上的准确率等,可以反应模型在这个任务上的拟合程度,γ是人工调节的温度系数。直观理解就类似focal loss,优化的越好的任务,获得的权重越小。

《Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks》 ICML 2018

影响力最大的是GradNorm。其核心思想相对前述的DWA和DTP更为复杂,核心观点为

  • 不仅考虑loss收敛的速度,进一步希望loss本身的量级能尽量接近

  • 不同的任务以相近的速度训练(与gradient相关)

从带参数的动态权重 $L=\sum_{i} w_{i}(t, \theta) * L_{i} $出发,作者还定义了一个训练权重 $w_i(t,\theta) $ 相关的 gradient loss。(定一个loss用来优化训练loss的权重)

w i ( t ) w_i(t) wi​(t) 刚开始初始化为1 或者超参,然后用gradient loss来优化。

首先得到任务 i 在 t 时刻的 梯度的2范数,以及所有任务的平均值
G W ( i ) ( t ) = ∥ ∇ W ( w i ( t ) L i ( t ) ) ∥ 2 G ˉ W ( t ) = A V G ( G W ( i ) ( t ) ) \begin{gathered} G_{W}^{(i)}(t)=\left\|\nabla_{W}\left(w_{i}(t) L_{i}(t)\right)\right\|_{2} \\ \bar{G}_{W}(t)=A V G\left(G_{W}^{(i)}(t)\right) \end{gathered} GW(i)​(t)=∥∇W​(wi​(t)Li​(t))∥2​GˉW​(t)=AVG(GW(i)​(t))​
其中W是模型参数的子集,也是需要应用Gradient Normalization的参数集,一般是选择模型中共享参数的最后一层。然后得到不同任务loss的训练速度:
L ~ i ( t ) = L i ( t ) / L i ( 0 ) r i ( t ) = L ~ i ( t ) / A V G ( L ~ i ( t ) ) \begin{gathered} \tilde{L}_{i}(t)=L_{i}(t) / L_{i}(0) \\ r_{i}(t)=\tilde{L}_{i}(t) / A V G\left(\tilde{L}_{i}(t)\right) \end{gathered} L~i​(t)=Li​(t)/Li​(0)ri​(t)=L~i​(t)/AVG(L~i​(t))​
$r_{i}(t) $衡量任务训练的速度, $r_{i}(t) $ 越大,表明任务训练的越慢。这点和DWA的思想接近,但是这里使用的是第一步的loss,而不是DWA中的前一步loss。

最终gradient loss为:
L g r a d ( t ; w i ( t ) ) = ∑ i ∣ G W ( i ) ( t ) − G ˉ W ( t ) ∗ [ r i ( t ) ] α ∣ 1 L_{g r a d}\left(t ; w_{i}(t)\right)=\sum_{i}\left|G_{W}^{(i)}(t)-\bar{G}_{W}(t) *\left[r_{i}(t)\right]^{\alpha}\right|_{1} Lgrad​(t;wi​(t))=i∑​∣ ∣​GW(i)​(t)−GˉW​(t)∗[ri​(t)]α∣ ∣​1​

  • $\bar{G}{W}(t) *\left[r{i}(t)\right]^{\alpha} $表示理想的梯度标准化后的值。**这里的gradient loss只用于更新 $w_{i}(t) ∗ ∗ 。 **。 ∗∗。w_{i}(t) $还会经过最终的重normalize,使得 $\sum_{i} w_{i}(t)=N $,N是任务的数量。
  • α是设定恢复力强度的超参数,即将任务的训练速度调节到平均水准的强度。如果任务的复杂程度很不一样,大致人物之间的学习速率大不相同,就应该使用较高的alpha来进行较强的训练速率平衡;反之对于多个相似的任务,应该使用较小的α。
  • 从gradient loss的定义来看, $r_i(t) $ 越大,表明训练越快,gradient loss越大;$\left|G_{W}^{(i)}(t)-\bar{G}{W}(t)\right| 表明 l o s s 量级的变化,不论 表明loss量级的变化,不论 表明loss量级的变化,不论G{W}^{(i)}(t) $过大或者过小都会导致gradient loss变大。
  • 所以gradient loss 希望:1、不同任务的loss的量级接近;2、不同任务以相近的速度训练(收敛速度)

【多任务优化】DWA、DTP、Gradnorm(CVPR 2019、ECCV 2018、 ICML 2018)相关推荐

  1. CVPR 2019 | 旷视研究院提出Re-ID新方法VPM,优化局部成像下行人再识别

    全球计算机视觉三大顶级会议之一 CVPR 2019 将于当地时间 6 月 16-20 日在美国洛杉矶举办.届时,旷视研究院将带领团队远赴盛会,助力计算机视觉技术的交流与落地.在此之前,旷视每周会介绍一 ...

  2. CVPR 2019 | 旷视研究院提出新型损失函数:改善边界框模糊问题

    全球计算机视觉三大顶会之一 CVPR 2019 (IEEE Conference on Computer Visionand Pattern Recognition)将于 6 月 16-20 在美国洛 ...

  3. CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准

    点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经第一时间报道过Softer-NMS:CMU&旷视最新论文提出定位更加精确的目标检测算法,当时引起了不少读者对Softer-NMS的兴 ...

  4. 全景分割(Panoptic Segmentation)(CVPR 2019)

    全景分割(Panoptic Segmentation)(CVPR 2019) 摘要 1. 导言 2. 相关工作 3. 全景分割格式 4. 全景分割度量 4.1 片段匹配 4.2 PQ计算 4.3 与现 ...

  5. 商汤62篇论文入选CVPR 2019,一览五大方向最新研究进展

    (图源自视觉中国) 作为与ICCV.ECCV并称为计算机视觉领域三大国际会议之一,本届CVPR大会共收到5265篇有效投稿,接收论文1300篇,接收率为25.2%. 商汤科技CVPR 2019录取论文 ...

  6. CVPR 2019超全论文合集新鲜出炉!| 资源帖

    整理 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 实不相瞒,这是一个资源福利帖--CVPR 2019 接收论文超全合集! 此前关于 CVPR 2019 论文和合集出过不少,但是这 ...

  7. CVPR 2019开源论文 | 基于“解构-重构”的图像分类学习框架

    作者丨白亚龙 单位丨京东AI研究院研究员 研究方向丨表示学习.图像识别 基于深度卷积图像识别的相关技术主要专注于高层次图像特征的理解,而对于相似物体之间的细节差异和具有判别意义的区域(discrimi ...

  8. CVPR 2019 | 腾讯AI Lab解读六大前沿方向及33篇入选论文

    导语:本文将分组介绍计算机视觉顶级会议 CVPR 中腾讯 AI Lab 的重点研究方向和入选论文. 计算机视觉顶级会议 CVPR 2019 将于 6 月 15 日– 6 月 21 日在加利福尼亚州长滩 ...

  9. CVPR 2019 | 腾讯AI Lab 6大前沿方向33篇入选论文解读

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自腾讯 AI Lab 公众号(tencent_ailab),分组介绍了CVPR 2019 中腾讯 AI Lab 的6大重点研究方向和入选的33篇 ...

最新文章

  1. SES机箱管理知识回顾(四)之SES Over SAS
  2. mysql 5.7临时表空间_深度解析MySQL 5.7之临时表空间
  3. 快速清除SQL Server数据库日志的方法
  4. 详解@EnableEurekaServer和@EnableDiscoveryClient 或 @EnableEurekaClient注解
  5. 【百家稷学】深度学习计算机视觉生产实习(山西农业大学暑期实训)
  6. 读取excel文件错误
  7. Android 高级Drawable资源---复合Drawable----级别列表Drawabled
  8. 搭建ssh框架的步骤
  9. python登录脚本_selenium+python实现自动登录脚本
  10. 关于Action模型驱动无法获取属性的问题
  11. virtualbox 中ubantu虚拟机范文win7文件夹
  12. easyUI 数据表格datagrid的使用
  13. 思科交换机基本配置命令
  14. js正则判断域名和IP的端口路径是否正确
  15. MSDN 我告诉你(资源库)
  16. 如何在国内快速访问Github
  17. Windows高级工程师:GDI+绘图;基础入门大全
  18. cass块参照怎么改颜色_【干货】CASS自定义图斑填充技巧
  19. eclipse如何汉化
  20. 关于go在函数退出后子协程的退出问题

热门文章

  1. Niagara基于javascript的控件开发
  2. 小花经过春雨的一番滋润
  3. 丰富的层次感,打造190㎡现代简约居住空间
  4. 将open目录及子目录和文件删除
  5. 跟着团子学SAP:SAP用户状态管理详解(含权限分配等) OK02
  6. 【C/C++】ifndef/define/endif的作用
  7. 工作中要怎样与同事相处呢?
  8. 崩坏3卡池模拟器及毕业期望概率计算(含保底)
  9. Autoware1.14-摄像头目标检测YOLO-V3
  10. JS正则表达式-附身份证号码验证(简易版)