Pytorch里面多任务Loss是加起来还是分别backward? | Pytorch | 深度学习
当你在深度学习中进入“多任务学习(Multi-task Learning)”的领域,第一道关卡可能不是设计网络结构,也不是准备数据集,而是:多个Loss到底是加起来一起backward,还是分别backward?
这个问题看似简单,却涉及PyTorch计算图的构建逻辑、自动求导机制、内存管理、任务耦合性、优化目标权衡等多重复杂因素。
1. 多任务学习中的Loss定义
1.1 多任务Loss形式
在一个多任务模型中,我们一般会有若干个子任务,设任务数为 ,每个任务都有一个对应的Loss函数 ,我们最终优化的Loss是:
其中, 是任务的权重系数。
1.2 PyTorch中的基本写法
在PyTorch中,多任务Loss通常如下所示:
loss_task1 = criterion1(output1, target1)
loss_task2 = criterion2(output2, target2)
total_loss &