多目标的多个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优化的方法