模型Loss值除了在学习率过高、batch size过大等情况下可能不收敛,还有一种比较基础的情况,也就是模型的Loss函数本身出了问题。
这里也不是指使用的Loss函数不正确,而是当模型中存在复数个Loss函数时,Loss函数之间可能会相互影响。实际情况下,假设有三个Loss函数分别为Loss_fn_a()、Loss_fn_b()、Loss_fn_c(),其返回的Loss值分别为Loss_a、Loss_b、Loss_c,可能出现Loss_a下降,Loss_b和Loss_c都不变的情况,此时可以尝试先屏蔽Loss_fn_a(),测试其余两个Loss值是否正常下降,如果在屏蔽了Loss_fn_a()的情况下,后两个Loss值正常下降,那么应该是Loss_fn_a()与后两个损失函数冲突,若后两个Loss值仍不下降,那么大概率就是后两个损失函数之间存在冲突。
在多个损失函数之间存在冲突的情况下,首先需要验证损失函数的设计逻辑是否存在问题,其次如果每个损失函数独立出来都是正确的优化逻辑,那么就应该分析各个损失函数之间的主从关系,然后对不同的损失值加权重,将主要的损失值权重设置为较大,然后就是愉快的调参时间(*^_^*)
文章讨论了在深度学习模型中,当使用多个Loss函数时可能出现的不收敛问题。这可能是由于Loss函数之间相互影响导致的冲突。解决方法包括验证每个Loss函数的逻辑,调整损失函数的权重,以及通过屏蔽部分Loss来识别冲突源。在确定损失函数的主从关系后,通过调整权重进行优化参数调试。
2万+

被折叠的 条评论
为什么被折叠?



