论文:https://arxiv.org/pdf/2001.06782.pdf
在多任务学习中,由于不同任务梯度之间的更新方向不同,两个梯度在方向上存在冲突,从而导致一个不同任务之间的更新梯度存在冲突。
作者提出了PCGrad (projecting conflicting gradients),即将任务的梯度投影到具有冲突梯度的任何其他任务的梯度的法线平面上。 在一系列具有挑战性的多任务监督和多任务 RL 问题上,这种方法在效率和性能方面取得了实质性的进展。
算法思想也比较简单:
这边我们来推导一下法平面的投影是如何计算的:
如上图, 我们设要求的投影向量(蓝色虚线)为 x。绿色的向量和 gj同向,我们可以视它为agj。那么就有:xgj=(gi+agj)gj=gigj+a∣∣gj∣∣2=0 即 a=−gigj/∣∣gj∣∣ 即 x=gi−(gigj/∣∣gj∣∣2)gj
最后来看看效果吧~如下图所示,图b是任务1的目标的等高线图,图c是任务2的目标等高线图。图C是使用Adam优化目标梯度更新轨迹,可以看到当下时刻两个任务梯度方向是存在冲突的。而图e使用Adam+PCGrad,可以看到目标梯度更新轨迹穿越等高线就非常顺滑了。
具体实验结果如下图,紫色为作者的结果。可以看到最终效果非常好,而且收敛很快: