“损失函数的最佳范围”:神话还是真相?

数据挖掘 深度学习 喀拉斯 张量流 损失函数
2022-02-15 12:41:07

我目前正在使用深度神经网络解决回归问题,给定输入中的 32x32x256 体积需要在输出中生成相同尺寸的第二体积,这不是分割问题,网络生成的体积由浮点数形成(更具体地说,我试图从嘈杂的 X 射线束中去除噪声)。

作为损失函数,我使用 MSE beetwen 由网络生成的体积和已经计算的没有噪声的地面体积。

在将它们提供给网络之前,已将体积标准化为 0 到 1 之间的值。

当我们开始第一次训练时,我们在 MSE 中得到非常低的值(大约 3*10^-4),但深度网络正在收敛(接近 5*10^6 的值)。

我的一位同事表示,这些(损失的)值远远低于使用 Keras 和 Adam 作为优化器的框架获得最佳结果,并建议更改损失函数以在 100 范围内获得结果 - 0.01,他建议做差的平方和而不是平均值。

起初我真的被他的说法弄糊涂了,但做了一个测试:

在将它们提供给网络之前,我没有将体积标准化为 0 到 1 之间的值,而是将它们标准化为 0 到 1000 之间的值。

在这个测试中,MSE 从大约 30'000 的值开始,并覆盖了接近 600 的值,在对数据进行非规范化之后,这个新的神经网络给出了比第一个网络更准确的结果,并且只是通过改变起始规范化!

你知道这种行为的原因吗,我的同事是对的吗?

1个回答

您到了那里的非常有趣的陈述,我不知道这种“最佳损失值”。

我可以解释它的唯一方法是使用梯度计算:梯度是使用以下方法计算的:

Grad=losslr

所以对我来说,改变损失范围与改变优化器的学习率是一样的,增加 lr 而不是增加损失函数范围,看看训练会发生什么,这可能是一个很好的实验。我不知道 Adam 优化器的微妙之处,所以我的解释可能完全错误。