前言
最近在写一篇文章,是一篇深度学习与安全相结合的文章,模型的输出会交给两个损失函数(availability & security)进行损失计算,进而反向传播。起初的想法是直接将两项损失进行加权平均,共同进行反向传播,后面又尝试了先A后B和先B后A的方式。发现模型训练的效果不是很好,因为这两个损失在进行下降时是一种相互制约的关系,如图1所示(侧面也反映了自己设计的连个损失方向是对的)。在epoch到达30w次之后,两者分道扬镳。
考虑到多任务之间的制约,尝试使用多目标优化的方法对两个损失函数进行优化,以获得使两种损失同时较小的一种嵌入,然后再将此满足条件的嵌入作为模型的训练目标,分步完成模型的训练。但是在研究了多目标优化的算法之后,打消了这个念头,因为我模型的输出维度很高,他是一张图的邻接矩阵的一维展开(adj.view(-1)),是百万维级别的,所以使用传统多目标优化的方法(例如遗传算法)过于复杂,所以就发现了这一篇名为Multi-Task Learning as Multi-Objective Optimization的文章。下面简单的介绍一下这篇文章。
Multi-Task Learning as Multi-Objective Optimization
作者在文章的摘要中说:“多任务学习本质上是一个多目标的问题,因为不同的任务可能会发生冲突,需要进行权衡。一个常见的折衷办法是优化一个代