我正在尝试实现一个我想要优化两个成本函数的神经网络。您能否让我知道您对执行以下方法的方法的想法:
for i in it
...
min lose_1 // modified the weight matrix W
min loss_2 // modified the weight matrix W (the last matrix resulting by minimized the loss_1)
end
所以,我用成本函数1执行一种反向传播的迭代,然后带有成本函数2。
。谢谢。
通常拥有两个目标来优化两个目标,而典型的解决方案是将它们通过加权总和组合到单个成本函数中:
C = a*C1 + b*C2
选择a
和b
以确保一个术语不占主导地位。
这样,您可以计算一个梯度并使用它来更新每个训练步骤的权重。
编辑:如果您没有得到好的结果,则要么1。不能同时最大程度地减少两者的好方法。@sascha在评论中给出了一个微不足道的例子:c1 = x and c2 = -x。
编辑2:如果您要针对C1的梯度更新参数,然后相对于C2的梯度,这与我建议的非常相似,因为总和是梯度的总和。
但是,如果您要在第一步之后重新计算梯度,那么这可能会导致不稳定的解决方案,因为第二步可能是"撤消"第一步的工作,反之亦然,尤其是在成本正常的情况下不兼容。在我的方法中,您更有可能达到最低限度。但是这两种方法都非常相似,如果您遇到问题,这可能是我提到的原因之一。