优化pytorch中的多个损失函数



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

一-损失的天真加权和

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

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

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

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

这是一条积极的研究路线,因此,你的问题没有确切的答案。

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

多损失/多任务如下:

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

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

不同的损失函数具有不同的刷新率。随着学习的进展,两个损失函数的下降速度是非常不一致的。通常一个下降得非常快,另一个下降的速度非常慢。

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

利用不确定性衡量场景几何和语义损失的多任务学习

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

我不是以英语为母语。希望你能理解我的回答并帮助你。

最新更新