关于多任务学习中的均衡loss方法之一

6,099次阅读
没有评论

共计 1651 个字符,预计需要花费 5 分钟才能阅读完成。

下面这个一段文字也是我在一个社区的网站看到的,介绍了一点资讯在mtl上的优化,比较在意的就是在loss权衡,毕竟优化的目标除了二分类还有时常等不同量纲的目标,而且综合考虑起到最优的效果。其实在之前就看到图像算法领域出现了focal loss也是相同的想法。
MTL领域,在网络结构的迭代与创新方面,有很多优秀工作,如ESMM[1]、MMOE[2]、DUPN[3]、PLE[4]等;同时,多任务学习Loss的优化也是我们可以探索尝试的方向。最简单的方式是直接对不同任务的Loss直接相加,然而不同任务的Loss量级可能不同,导致整个训练过程被某个任务主导;进一步地,对不同任务的Loss加权相加,这也意味着权重在整个训练过程保持不变。实际上,不同任务学习的难易程度不同,且可能处于学习的不同阶段。
因此,更好的组合方式应该是动态地,根据不同任务学习的阶段,学习的难易程度,甚至是学习的效果来进行调整。
在此方面,很多研究者也做出了尝试。Chen Z等[5]提出以梯度标准化(Gradient Normalization)的思想来使得不同的任务以相近的速度来学习。具体地,除了任务本身的Loss,还定义了Gradient Loss,后者以每个任务的学习速度来调整该任务的梯度更新速度,而梯度更新速度受到Loss权重的影响,所以在优化Gradient Loss的过程可动态调整每个任务Loss的权重。Liu S[6]希望不同任务以相近的速度来进行学习,以Loss变化速率表征训练速度,同时不同任务Loss的权重定义为训练速度的单调函数。Guo M[7]则是希望更难学习的任务的Loss具备更高的权重,根据准确率等定义任务的难易程度,同时Loss的权重与任务的训练难度正相关。Sener O[8]将MTL的任务当做multi-objective optimization的问题来处理,寻找帕累托最优解。Kendall A和Gal Y[9]通过不确定性(uncertainty)来调整损失函数中的加权参数,使得每个任务中的Loss量级接近。其作者之一Yarin Gal教授在贝叶斯深度学习领域造诣颇深。
我们借鉴了任务不确定性对Multi-task Loss加权方法,对已上线的多目标模型,加入动态加权机制。
这里的不确定性指任务依赖型不确定。例如,我们有一份包含了学生复习时间、期中成绩、期末成绩的数据,通过期中成绩预测期末成绩和通过复习时间预测期末成绩这两个任务具备不同的难度,也即有不同的不确定性。那么如何量化这个不确定性呢。假设根据数据 d 训练出任务 t 的模型为 f ,当输入为 x 时,模型对应的输出为 f(x)  ;考虑了任务不确定性后,模型的输出为 {f(x) ,σ^2 } ,这个 σ 为数据 d 所自带的方差,用于描述模型在数据上的不确定性。而模型将会以无监督学习的方式学习此方差。
经过推导[9],我们可以得到损失函数:
关于多任务学习中的均衡loss方法之一
可以看出,在每个任务的损失函数中将会学习一个噪声参数。且此方法可以接受多任务(回归或分类均可),并统一不同损失的尺度。这样,我们就可以直接对其相加得到总损失,得到:
关于多任务学习中的均衡loss方法之一
任务不确定性加权的Multi-task Loss,通过把原本的Loss除以 σ^2 ,在一定程度上对任务带来的不确定性消除。而  log(σ^2 ) 起到正则化的作用,防止网络为了最小化Loss而把 σ 预测成很大的值。加上了这个类似正则化项后,只有在原本Loss足够大的时候,σ 值才会增加。通过这种方式,网络就具备了学习任务不确定性的能力。直观上来看,σ 越大,任务的不确定性越大,则任务的权重越小,即噪声大且难学的任务权重会变小。
该方法仅增加了个位数的待训练参数,且不会引入额外的权重超参。同时,仅需要对模型中的Loss函数进行改写既可实现。
在兴趣点预估的MTL时,我们尝试了以任务不确定性对Multi-task Loss进行加权的方法。实践表明,其能帮助模型更好地联合优化Ctr任务与Dwell任务,在业务指标(人均点击、停留时长)上均带来了正向收益。

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2021-09-22发表,共计1651字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码