3

我正在使用 TensorFlow 解决多目标回归问题。具体来说,在具有逐像素标记的卷积网络中,输入是图像,标签是“热图”,其中每个像素都有一个浮点值。更具体地说,每个像素的地面实况标记的下限为零,虽然在技术上没有上限,但通常不会大于 1e-2。

如果没有批量归一化,网络能够给出合理的热图预测。通过批量归一化,网络需要很长时间才能达到合理的损失值,而它所做的最好的事情就是使每个像素都成为平均值。这是使用tf.contrib.layers conv2dandbatch_norm方法,并batch_norm传递给conv2d's normalization_fn(或者在没有批量标准化的情况下不传递)。我曾在另一个(单值)回归网络上短暂尝试过批量标准化,但当时也遇到了麻烦(尽管我没有进行广泛的测试)。一般来说,在回归问题上使用批量标准化有问题吗?有没有通用的解决方案?

如果不是,可能是什么原因导致此类应用程序的批量标准化失败?我尝试了各种初始化、学习率等。我希望最后一层(当然不使用批量标准化)可以使用权重将倒数第二层的输出缩放到适当的回归值。做不到这一点,我从该层删除了批处理规范,但没有任何改进。我尝试了一个使用批量归一化的小分类问题,并没有发现任何问题,所以这似乎是合理的,这可能是由于回归问题的性质造成的,但我不知道这如何会导致如此巨大的差异。是否已知批量标准化在回归问题上存在问题?

4

1 回答 1

0

我相信你的问题出在标签上。Batch norm 将在 0 和 1 之间缩放所有输入值。如果标签没有缩放到相似的范围,任务将更加困难。这是因为它需要 NN 学习不同尺度的值。

通过从倒数第二层移除批范数,任务可能会略有改进,但您仍然需要一个 NN 层来学习缩小其输入值,同时随后归一化回 0 - 1 范围(与您的目标相反)。

要解决此问题,请对标签应用 0 - 1 缩放器,使您的上限不再是 1e-2。在推理过程中,使用相同的函数将预测转换回来以获得实际预测。

于 2020-12-01T14:43:25.697 回答