Machine learning 我是否需要在最后一层之前添加ReLU函数来预测正值?

Machine learning 我是否需要在最后一层之前添加ReLU函数来预测正值?,machine-learning,deep-learning,Machine Learning,Deep Learning,我正在开发一个使用线性回归预测年龄的模型。我知道年龄是从0到100,这是一个可能的值。我在最后一层中使用conv1x1来预测实际值。我是否需要在卷积1x1的输出之后添加一个ReLU函数,以保证预测值为正值?目前,我没有添加ReLU,一些预测值变成负值,如-0.02-0.4…没有令人信服的理由为输出层使用激活函数;通常,您只想直接使用倒数第二层输出的合理/合适的损耗函数。具体来说,RELU不能解决您的问题(或者最多只能解决“一半”),因为它仍然可以预测100以上。在这种情况下——预测连续结果——有

我正在开发一个使用线性回归预测年龄的模型。我知道年龄是从0到100,这是一个可能的值。我在最后一层中使用conv1x1来预测实际值。我是否需要在卷积1x1的输出之后添加一个ReLU函数,以保证预测值为正值?目前,我没有添加ReLU,一些预测值变成负值,如-0.02-0.4…

没有令人信服的理由为输出层使用激活函数;通常,您只想直接使用倒数第二层输出的合理/合适的损耗函数。具体来说,RELU不能解决您的问题(或者最多只能解决“一半”),因为它仍然可以预测100以上。在这种情况下——预测连续结果——有一些标准损失函数,如平方误差或L1范数

如果您真的想使用这个最终层的激活函数,并且总是关心在有界的间隔内预测,那么您可以尝试将乙状结肠函数(介于0到100之间)进行缩放。然而,这里的sigmoid并没有什么特别之处——任何有界函数,例如有符号连续随机变量的任何CDF,都可以类似地使用。尽管对于优化来说,一些容易微分的东西很重要


为什么不从像平方误差损失这样简单的事情开始呢?当您需要实际进行预测时(而不是在培训/测试期间),总是可以将超出范围的预测“钳制”在[0-100]之内(我们可以给它起一个像“doubly RELU”这样的花哨名字),但是如果您遇到很多这样的错误,模型可能有更基本的问题。

没有令人信服的理由为输出层使用激活功能;通常,您只想直接使用倒数第二层输出的合理/合适的损耗函数。具体来说,RELU不能解决您的问题(或者最多只能解决“一半”),因为它仍然可以预测100以上。在这种情况下——预测连续结果——有一些标准损失函数,如平方误差或L1范数

如果您真的想为这最后一层使用激活函数,并且担心总是在有界的时间间隔内进行预测,那么您可以尝试将sigmoid函数放大(到0到100之间)。然而,这里的sigmoid并没有什么特别之处——任何有界函数,例如有符号连续随机变量的任何CDF,都可以类似地使用。尽管对于优化来说,一些容易微分的东西很重要


为什么不从像平方误差损失这样简单的事情开始呢?当您需要实际进行预测时(而不是在培训/测试期间),总是可以将超出范围的预测“钳制”在[0-100]之内(我们可以给它起一个像“doubly RELU”这样的花哨名字),但是如果您遇到很多这样的错误,模型可能有更基本的问题。

您应该使用sigmoid激活函数,然后将目标输出规格化为[0,1]范围。这既解决了积极性问题,也解决了有限性问题


然后,您可以轻松地对神经网络输出进行非规范化,以获得[0,100]范围内的输出。

您应该使用sigmoid激活函数,然后将目标输出规范化为[0,1]范围。这既解决了积极性问题,也解决了有限性问题


然后,您可以轻松地对神经网络输出进行反规范化,以获得[0,100]范围内的输出。

即使对于回归问题,也可以在输出之前使用sigmoid层(给出[0:1]范围内的预测),然后再进行反规范化(这里,如果您认为最大年龄为100,只需乘以100)

本课程将介绍此技巧。
我个人认为这些经验非常好。

即使对于回归问题,在输出(给出[0:1]范围内的预测)之前使用一个sigmoid层,然后再进行非规范化(这里,如果您认为最大年龄为100,只需乘以100)也是很好的(用于优化)

本课程将介绍此技巧。
我个人认为这些课程非常好。

我正在使用MSE损耗。你觉得L1损失可能更好?我用MSE损失。所以你认为L1缺失可能更好?谢谢你的建议。假设我用这个模型来预测房价,范围是inf,而不是0到100。你是否认为只要将基本真实价格标准化为0:1,并以0:1进行预测?我不在乎实际价格,我只在乎小损失。谢谢你的建议。假设我用这个模型来预测房价,范围是inf,而不是0到100。你是否认为只要将基本真实价格标准化为0:1,并以0:1进行预测?我不在乎实际的价格,我只在乎小小的损失。