我试图实现一个神经网络,我想要优化的两个成本函数。 能否请您告诉我您对以下方法的看法:
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执行一次迭代。
谢谢。
答案 0 :(得分:1)
通常有两个目标,您希望您的模型进行优化,典型的解决方案是通过加权总和将它们组合成单个成本函数:
C = a*C1 + b*C2
选择a
和b
以确保一个字词不占主导地位。
通过这种方式,您可以计算单个渐变,并使用它来更新每个训练步骤的权重。
编辑:如果你没有得到好的结果那么1.你没有正确加权组件,一个主导梯度,或2.功能根本不兼容没有什么好办法可以同时减少两者。 @sascha在评论中给出了一个简单的例子:C1 = x和C2 = -x。
编辑2:如果您正在更新关于C1的渐变的参数,然后关于C2的渐变,那么这与我建议的非常相似,因为渐变总和是梯度的总和。
但是,如果您在第一步之后重新计算渐变,那么这可能会导致解决方案不稳定,因为第二步可能是"撤消"第一步的工作,反之亦然,特别是在成本函数不兼容的情况下。在我的方法中,你更有可能达到最低限度。但这两种方法非常相似,如果你遇到问题,可能是由于我提到的原因之一。