【问题标题】:optimizing multiple loss functions in pytorch在pytorch中优化多个损失函数
【发布时间】:2022-03-04 07:58:34
【问题描述】:

我正在 PyTorch 中训练一个具有不同输出的模型,我有四种不同的位置(以米为单位)、旋转(以度为单位)和速度损失,以及模型必须预测的布尔值 0 或 1 .
AFAIK,这里有两种定义最终损失函数的方法:

one - 损失的朴素加权总和

two - 每个损失的定义系数以优化最终损失。

所以,我的问题是如何更好地权衡这些损失以获得最终损失,正确吗?

【问题讨论】:

    标签: python optimization pytorch loss-function loss


    【解决方案1】:

    这不是关于编程的问题,而是关于多目标设置中的优化问题。您描述的两个选项归结为相同的方法,即损失项的线性组合。但是,请记住,还有许多其他方法,包括动态损失权重、不确定性权重等……在实践中,最常用的方法是线性组合,其中每个目标都获得一个权重,该权重通过网格搜索或随机搜索。

    您可以查看这项关于多任务学习的调查,其中展示了一些方法:多任务学习密集预测任务:调查,Vandenhende , T-PAMI'20。

    这是一个活跃的研究方向,因此,您的问题没有明确的答案。

    【讨论】:

      【解决方案2】:

      这是一个有趣的问题。正如@lvan 所说,这是多目标中的优化问题。

      多损失/多任务如下:

      l(\theta) = f(\theta) + g(\theta)
      

      l是total_loss,f是类损失函数,g是检测损失函数。

      不同的损失函数有不同的刷新率。随着学习的进行,两种损失函数减少的速率是相当不一致的。通常一个下降得很快,另一个下降得非常慢。

      有一篇论文专门讨论这个问题:

      Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

      论文的主要思想是估计每个任务的不确定性,然后自动降低损失的权重。

      我的母语不是英语。希望您能理解我的回答并为您提供帮助。

      【讨论】:

        猜你喜欢
        • 2021-02-20
        • 2020-08-10
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 2019-03-16
        • 2021-09-29
        相关资源
        最近更新 更多