Multi-task Learning 多目标学习-网络设计和损失函数优化( 二 )


二、损失函数优化
现有的损失函数优化方法大概有如下几类
1、 ——梯度标准化
:forlossin deep》 ICML 2018
论文参考链接:
希望不同的任务Loss量级接近;不同的任务以相近的速度来进行学习 。
【评价】
优点: 既考虑了loss的量级,又考虑了不同任务的训练速度 。
缺点:每一步迭代都需要额外计算梯度,当W选择的参数多的时候,会影响训练速度;
此外,该loss依赖于参数的初始值;如果初始值变化很大的话,paper建议可以采用其他值代替,比如分类任务,可以用 l o g ( C ) log(C) log(C)来代替初始值,C是类别数量 。
其梯度损失( Loss)函数定义为,各个任务实际的梯度范数与理想的梯度范数的差的绝对值和,可表示为:
其中 G i w ( t ) G_i^w(t) Giw?(t)是任务i梯度标准化的值,是任务i的权重 w i ( t ) w_i(t) wi?(t)与loss L的乘积对 L i ( t ) L_i(t) Li?(t)参数W求梯度的L2范数,G i w ( t ) G_i^w(t) Giw?(t)可以衡量某个任务loss的量级; G  ̄ W ( t ) \ G_W(t) GW?(t)是全局梯度标准化的值(即所有任务梯度标准化值的期望值),通过所有 G i w ( t ) G_i^w(t) Giw?(t)求均值实现 。
计算完 Loss后,通过以下函数对w i ( t ) w_i(t) wi?(t) 进行更新(GL指 Loss):
w i ( t + 1 ) = w i ( t ) + λ ? G r a d i e n t ( G L , w i ( t ) ) w_i(t+1)=w_i(t)+\*(GL,w_i(t)) wi?(t+1)=wi?(t)+λ?(GL,wi?(t))
α是超参数,α 越大,对训练速度的平衡限制越强
2 、——动态加权平均
参见论文:《End-to-End Multi-Taskwith 》,CVPR 2019
论文作者知乎:(Multi-taskand : 过去,现在与未来)
直观来看,loss缩小快的任务,则权重会变小;反之权重会变大 。
w k ( t ) w_k(t) wk?(t) 代表了每个任务i的权重,L n ( t ) L_n(t) Ln?(t)α n t \{n}t αn?t分别代表任务k在t时刻的loss,和训练速度,n代表任务数,t足够大时,w趋近于1
【评价】
优点:只需要记录不同step的loss值,从而避免了为了获取不同任务的梯度,实现简单,运算较快 。
缺点:没有考虑不同任务的loss的量级,需要额外的操作把各个任务的量级调整到差不多 。
3、Task——动态任务优先级
参见论文:《 taskfor》,ECCV 2018,Cites:53
DTP希望让更难学的任务具有更高的权重
其不同任务的权重为
F L ( p c ; γ 0 ) = ? ( 1 ? p c ) γ 0 l o g ( p c ) FL(p_c;\)=-(1-p_c)^{\} log(p_c) FL(pc?;γ0?)=?(1?pc?)γ0?log(pc?)
4、 ——不确定性加权
论文地址:《Multi-taskusingto weighfor sceneand 》
Keras 实现参见:
其他有价值的参考链接:
让“简单”的任务有更高的权重
最终的loss为
其中,δ 1 \ δ1?和δ 2 \ δ2 是两个任务中,各自存在的不确定性 。
因此,δ 2 \delta^2 δ2越大,任务的不确定性越大,则任务的权重越小,即噪声大且难学的任务权重会变小 。
【评价】
优点:不确定性建模似乎可以适用于标签噪声更大的数据,而DTP可能在干净的标注数据里效果更好
缺点:参考:
5、帕累托最优( )
参见论文:Multi-Taskas Multi-()
地址为:
task- 方法都基于一些特定的,很难保证在 MTL取得 . 在该论文中,作者将 MTL 问题看做是多目标优化问题,其目标为取得.
论文的损失函数为
是指任何对其中一个任务的效果变好的情况,一定会对其他剩余所有任务的效果变差 。作者利用了一个叫(MGDA) 的方法来寻找这个point 。大致方式是,在每次计算 task-后,其得到来更新共享参数 。这个如果存在,则整个并未收敛到。这样的收敛方法保证了 共享参数不会出现让每一个任务的 loss 收敛更加平滑 。