如何约束神经网络的输出值?

人工智能 神经网络 深度学习 喀拉斯 激活函数 网络设计
2021-11-10 12:33:39

我正在训练一个深度神经网络。神经网络的输出值有一个限制(例如输出必须在 0 到 180 之间)。我认为一些可能的解决方案是在层的末尾使用 sigmoid、tanh 激活。

有没有更好的方法来限制神经网络的输出值?

1个回答

有很多方法可以限制网络的输出。

使用激活层是一个很好的选择。如果您对输出层进行 sigmoid,则输出被限制在 [0,1] 之间,您可以将其乘以 180 以适应您的输出。由于该层是优化过程的一部分,因此可以正确学习梯度。

但是,它存在一些问题,即 sigmoid 不是线性曲线,并且在 0 附近非常陡峭。也许您可以考虑类似 ReLU 的东西,但也有最大值。这使您的输出在 [0,180] 之间呈线性关系,并且在优化过程中也会学习到。

您也可以在没有任何激活层的情况下裁剪输出。这很简单并且有效,但优化过程认为输出 180 或 180000 之间没有区别。这可能会导致问题,具体取决于您的问题。