多目标建模loss为什么最好同时收敛?

多目标的多个loss是否同时收敛最好?

假设

  • task A的独有参数 W a W_a Wa
  • task B的独有参数 W b W_b Wb
  • task A和 task B的共享的参数 W s W_s Ws

那么
l o s s = l o s s a + l o s s b loss = loss_a + loss_b loss=lossa+lossb
假设损失函数为 f f f,带入参数 W a W_a Wa W b W_b Wb W s W_s Ws,则有
= l o s s = f l o s s a ( W A , W B , W S ) + f l o s s b ( W A , W B , W S ) =loss= f_{loss_a}(W_A, W_B, W_S) + f_{loss_b}(W_A, W_B, W_S) =loss=flossa(WA,WB,WS)+flossb(WA,WB,WS)
当A先收敛后,A的loss f l o s s a f_{loss_a} flossa应该最小,对Task A而言,此时的 W a W_a Wa W b W_b Wb W s W_s Ws是最优的。但是此时B还没有收敛,B在继续走向收敛之路时,在loss的驱动下,候会使得刚才对于Task A最优的 W a W_a Wa W b W_b Wb W s W_s Ws发生变化,也就是会导致A的loss又不是最优的了。

结论

  • 如果收敛速度不一样,收敛慢的task会对收敛快的task产生一个梯度的拉扯,导致已经收敛的task被迫再次回到为收敛的状态。(所谓梯度冲突、参数撕扯

最好的情况是什么?

  • 最优最好的做法就是,一起收敛。如何一起收敛呢?当然是用多目标loss的优化方法了

多目标loss优化的方法

多目标建模loss为什么最好同时收敛?_第1张图片
多目标建模loss为什么最好同时收敛?_第2张图片
多目标建模loss为什么最好同时收敛?_第3张图片
多目标建模loss为什么最好同时收敛?_第4张图片
多目标建模loss为什么最好同时收敛?_第5张图片

你可能感兴趣的:(算法,python,开发语言)