分享神经网络中设计loss function的一些技巧

2019 年 1 月 22 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击文末“阅读原文”立刻申请入群~


作者:刘诗昆、Alan Huang

原文:https://www.zhihu.com/question/268105631

知乎话题:神经网络中,设计loss function有哪些技巧?


本文主要解决以下问题:

1、multitask时,如何控制各部分loss的权重?(如目标检测任务中的框回归loss+分类loss)

2、multitask时,起始训练各loss的数量级不同对收敛存在着哪些影响?

3、根据任务修改loss时,如改进tripet loss,时常出现神经网络作弊的情况,该如何设计loss?


知乎刘诗昆:

https://www.zhihu.com/question/268105631/answer/333738561

理解多任务学习: Understanding Multi-task learning


Multi-task learning 核心的问题通常是可简单分为两类:

  1. How to share: 这里主要涉及到基于 multi-task learning 的网络设计。

  2. Share how much: 如何平衡多任务的相关性使得每个任务都能有比 single-task training 取得更好的结果。


题主的问题主要落在第二类,尽管这两个问题通常同时出现也互相关联。对于 multi-task learning 更加粗略的介绍以及和 transfer learning 的关系请参看我之前的回答:刘诗昆:什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?

(https://www.zhihu.com/question/41979241/answer/123545914)

其中同样包括了 task weighting 的一些讨论,以下再做更加细节的补充。


网络设计和梯度平衡的关系: The Relationship Between Network Design and Gradient Balancing


无论是网络设计还是平衡梯度传播,我们的目标永远是让网络更好的学习到 transferable, generalisable feature representation 以此来缓解 over-fitting。为了鼓励多任务里多分享各自的 training signal 来学泛化能力更好的 feature,之前绝大部分研究工作的重点在网络设计上。直到去年才有陆续一两篇文章开始讨论 multi-task learning 里的 gradient balancing 问题。


再经过大量实验后,我得出的结论是,一个好的 gradient balancing method 可以继续有效增加网络的泛化能力,但是在网络设计本身的提高强度面前,这点增加不足一提。更加直白的表达是:


Gradient balancing method 一定需要建立在网络设计足够好的基础上,不然光凭平衡梯度并不会对网络泛化能力有着显著的改变。


梯度统治: Gradient Domination


在 multi-task learning 里又可根据 training data 的类别再次分为两类:


  • one-to-many (single visual domain): 输入一个数据,输出多个标签。通常是基于 image-to-image 的 dense prediction。一个简单的例子,输入一张图片,输出 semantic segmentation + depth estimation。

  • many-to-many (multi visual domain):输入多个数据,输入各自标签。比如如何同时训练好多个图片分类任务。


由于不同任务之间会有较大的差异,平衡梯度的目标是为了减缓任务本身的由于 variance, scale, complexity 不同而导致的差异。


在训练 multi-task 网络时候则会因为任务复杂度的差异出现一个现象,我把他称之为: Gradient Domination, 通常发生在 many-to-many 的任务训练中。因为图片分类可以因为图片类别和本身数据数量而出现巨大差异。而基于 single visual domain 的 multi-task learning 则不容易出现这个问题因为数据集是固定的。


最极端的例子: MNIST + ImageNet 对于这种极端差异的多任务训练基本可以看成基于 MNIST initialisation 的网络对于 ImageNet 的 finetune。所以这种情况的建议就是:优先训练复杂度高的数据集,收敛之后再训练复杂度低的数据集。当然这种情况下,多任务学习也没有太大必要了。


对于一些差别比较大但是还是可接受范围的比如:SVHN + CIFAR100。这种情况的 gradient balancing 就会出现一定的效果但也取决于你输入数据的方式。输入数据的通常方法,例如在这篇文章里:Incremental Learning Through Deep Adaptation 

(https://arxiv.org/pdf/1705.04228.pdf)就是通过一个 dataset switch 来决定更新哪一个数据集的参数。对于这种方法,起始 learning rate 调的低,网络本身就会有一个较好的下降速率。


动态加权梯度传播: Adaptive Weighting Scheme


即使光对优化网络调参并不能给多任务学习有着本质的改变。在考虑最 straightforward 的 loss:


我们的目标是学习好一个够根据训练效果动态变化使得平衡网络的梯度传播。


这个问题目前只有两篇文章做出了相关成果,

  • Weight Uncertainty(https://arxiv.org/pdf/1705.07115.pdf): 

    这个是通过 Gaussian approximation 的方式直接对修改了 loss 的方式,并同时以梯度传播的方式来更新里面的两个参数。实际实验效果也还不错,在我复现的结果来看能有显著的提升但是比较依赖并敏感于一个合适的的 learning rate 的设置。


  • GradNorm (https://arxiv.org/pdf/1711.02257.pdf): 是通过网络本身 back-propagation 的梯度大小进行 renormalisation。这篇文章写的比较草率并被最近的 ICLR 2018 拒绝收录了。个人期待他的更新作品能对方法本身有着更细节的描述。

  • Dynamic Weight Average: 我对于 GradNorm 一个更加简约且有效的改进,细节将会被补充。


一些总结

平衡梯度问题最近一年才刚刚开始吸引并产出部分深入研究的工作,这个方向对于理解 multi-task learning 来说至关重要,也可以引导我们去更加高效且条理化的训练多任务网络。但在之前,更重要的事情是理解泛化能力本身,个人觉得 multi-task learning 的核心目标不在于训练多个任务并得到超越单任务学习的性能,而是通过理解 multi-task learning 学习的过程重新思考并加深理解深度学习里 generlisation 的真正意义和价值。


知乎Alan Huang

https://www.zhihu.com/question/268105631/answer/335246543


对于 gradient balancing问题, 我这边再额外补充一些。


multi-task learning 中, tasks之间彼此的相容性对结果也会有一些影响。当两个任务矛盾的时候, 往往结果会比单任务还要差不少。


Multi-task learning 还需要解决的是Gradient domination的问题。 这个问题产生的原因是不同任务的loss的梯度相差过大, 导致梯度小的loss在训练过程中被梯度大的loss所带走。  题主所说的问题1和2都是指这个问题。


如果一开始就给不同的Loss进行加权, 让它们有相近的梯度, 是不是就能训练的好呢?   结果往往不是这样的。 不同的loss, 他们的梯度在训练过程中变化情况也是不一样的;而且不同的loss, 在梯度值相同的时候, 它们在task上的表现也是不同的。在训练开始的时候,虽然balance了, 但是随着训练过程的进行, 中间又发生gradient domination了。  所以要想解决这个问题, 还是要合适地对不同loss做合适的均衡。


实践中应该要如何调整呢? 其实很简单:


假设我们有两个task, 用A和B表示。   假设网络设计足够好, 容量足够大, 而且两个任务本身具有相关性,能够训得足够好。


如果A和B单独训练, 他们在收敛的时候的梯度大小分别记为 Grad_a, Grad_b, 那么我们只需要在两个任务一起训练的时候, 分别用各自梯度的倒数(1/Grad_a, 1/Grad_b)对两个任务做平衡, 然后统一乘一个scalar就可以了。(根据单任务的收敛时候的loss梯度去确定multi-task训练中不同任务的权重。)


因为loss的梯度在训练中通常会变小(这里用通常是因为一般mean square error等loss是这样, 其他有的Loss并不是。), 如果我们确定这个网络在multi-task训练的时候能够达到原来的效果, 我们就只需要把平衡点设在两个任务都足够好的时候。 这样网络在训练过程中, 就自然能够达到那个平衡点, 即使一开始的时候会有gradient domination出现。


最后展示一下我们multi-task learning比较成功的例子:

演示视频: https://www.zhihu.com/question/268105631/answer/335246543





*延伸阅读

算力限制场景下的目标检测实战浅谈

结构化数据的迁移学习:嫁接学习(分享竞赛大牛经验技巧)

有关语义分割的奇技淫巧有哪些?

图像分类算法优化技巧:Bag of Tricks for Image Classification


每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击左下角“阅读原文”立刻申请入群~


登录查看更多
34

相关内容

多任务学习(MTL)是机器学习的一个子领域,可以同时解决多个学习任务,同时利用各个任务之间的共性和差异。与单独训练模型相比,这可以提高特定任务模型的学习效率和预测准确性。多任务学习是归纳传递的一种方法,它通过将相关任务的训练信号中包含的域信息用作归纳偏差来提高泛化能力。通过使用共享表示形式并行学习任务来实现,每个任务所学的知识可以帮助更好地学习其它任务。
专知会员服务
73+阅读 · 2020年5月21日
专知会员服务
107+阅读 · 2020年5月21日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
最新!Yann Lecun 纽约大学Spring2020深度学习课程,附PPT下载
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
零样本图像分类综述 : 十年进展
专知会员服务
122+阅读 · 2019年11月16日
小目标检测相关技巧总结
极市平台
28+阅读 · 2019年8月15日
神经网络训练tricks
极市平台
6+阅读 · 2019年4月15日
图像分类:常用分类网络结构(附论文下载)
极市平台
13+阅读 · 2019年4月8日
从最优化的角度看待 Softmax 损失函数
极市平台
30+阅读 · 2019年2月21日
一文读懂神经网络(附PPT、视频)
数据派THU
17+阅读 · 2018年3月25日
从零开始:教你如何训练神经网络
机器之心
5+阅读 · 2017年12月11日
深度学习超参数简单理解
计算机视觉战队
4+阅读 · 2017年11月28日
A General and Adaptive Robust Loss Function
Arxiv
7+阅读 · 2018年11月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
6+阅读 · 2018年1月11日
VIP会员
相关VIP内容
专知会员服务
73+阅读 · 2020年5月21日
专知会员服务
107+阅读 · 2020年5月21日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
最新!Yann Lecun 纽约大学Spring2020深度学习课程,附PPT下载
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
零样本图像分类综述 : 十年进展
专知会员服务
122+阅读 · 2019年11月16日
相关资讯
小目标检测相关技巧总结
极市平台
28+阅读 · 2019年8月15日
神经网络训练tricks
极市平台
6+阅读 · 2019年4月15日
图像分类:常用分类网络结构(附论文下载)
极市平台
13+阅读 · 2019年4月8日
从最优化的角度看待 Softmax 损失函数
极市平台
30+阅读 · 2019年2月21日
一文读懂神经网络(附PPT、视频)
数据派THU
17+阅读 · 2018年3月25日
从零开始:教你如何训练神经网络
机器之心
5+阅读 · 2017年12月11日
深度学习超参数简单理解
计算机视觉战队
4+阅读 · 2017年11月28日
Top
微信扫码咨询专知VIP会员