为什么我们不能用两个成本函数串联优化神经网络模型?

时间:2018-02-18 16:18:47

标签: optimization tensorflow machine-learning neural-network backpropagation

我试图实现一个神经网络,我想要优化的两个成本函数。 能否请您告诉我您对以下方法的看法:

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执行一次迭代。

谢谢。

1 个答案:

答案 0 :(得分:1)

通常有两个目标,您希望您的模型进行优化,典型的解决方案是通过加权总和将它们组合成单个成本函数:

C = a*C1 + b*C2

选择ab以确保一个字词不占主导地位。

通过这种方式,您可以计算单个渐变,并使用它来更新每个训练步骤的权重。

编辑:如果你没有得到好的结果那么1.你没有正确加权组件,一个主导梯度,或2.功能根本不兼容没有什么好办法可以同时减少两者。 @sascha在评论中给出了一个简单的例子:C1 = x和C2 = -x。

编辑2:如果您正在更新关于C1的渐变的参数,然后关于C2的渐变,那么这与我建议的非常相似,因为渐变总和是梯度的总和。

但是,如果您在第一步之后重新计算渐变,那么这可能会导致解决方案不稳定,因为第二步可能是"撤消"第一步的工作,反之亦然,特别是在成本函数不兼容的情况下。在我的方法中,你更有可能达到最低限度。但这两种方法非常相似,如果你遇到问题,可能是由于我提到的原因之一。