深度学习的多个loss如何平衡?

在一个端到端训练的网络中,如果最终的loss = a* loss1+b*loss2+c*loss3...,对于a,b,c这些超参的选择,有没有什么方法…
关注者
6,210
被浏览
2,266,201

82 个回答

其实这是目前深度学习领域被某种程度上忽视了的一个重要问题,在近几年大火的multi-task learning,generative adversarial networks, 等等很多机器学习任务和方法里面都会遇到,很多paper的做法都是暴力调参结果玄学……这里偷偷跟大家分享两个很有趣的研究视角

  1. 从预测不确定性的角度引入Bayesian框架,根据各个loss分量当前的大小自动设定其权重。有代表性的工作参见Alex Kendall等人的CVPR2018文章 Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics,文章的二作Yarin Gal是Zoubin Ghahramani的高徒,近几年结合Bayesian思想和深度学习做了很多solid的工作。
  2. 构建所有loss的Pareto,以一次训练的超低代价得到多种超参组合对应的结果。有代表性的工作参见Intel在2018年NeurIPS(对,就是那个刚改了名字的机器学习顶会)发表的Multi-Task Learning as Multi-Objective Optimization 因为跟文章的作者都是老熟人,这里就不尬吹了,大家有兴趣的可以仔细读一读,干货满满。

多个loss引入pareto优化理论,基本都可以涨点的。

例子:Multi-Task Learning as Multi-Objective Optimization

可以写一个通用的class用来优化一个多loss的损失函数,套进任何方法里都基本会涨点。反正我们在自己的研究中直接用是可以涨的。