神经网络回归:缩放输出还是使用线性层?

3
我目前正在尝试使用神经网络进行回归预测。
然而,我不知道如何处理这个问题,因为我看到有两种不同的方法可以用神经网络进行回归预测。
1) 一些网站/文章建议添加一个最终层,该层是线性的。 http://deeplearning4j.org/linear-regression.html 我认为我的最终层应该是这样的:
layer1 = tanh(layer0*weight1 + bias1)

layer2 = identity(layer1*weight2+bias2)

我注意到当我使用这个解决方案时,通常会得到一个预测值,它是批处理预测的平均值。而且,当我将tanh或sigmoid作为倒数第二层时,情况就是如此。
其他一些网站/文章建议将输出比例缩放到[-1,1]或[0,1]范围内,并使用tanh或sigmoid作为最后一层。
这两种解决方案都可行吗?应该选择哪种?
谢谢, 保罗
1个回答

8
我更倾向于第二种情况,其中我们使用归一化和sigmoid函数作为输出激活,然后将归一化的输出值按比例缩放回其实际值。这是因为在第一种情况下,为了输出大值(因为在大多数情况下实际值都很大),从次后层到输出层的权重映射必须很大。因此,为了更快地收敛,必须提高学习率。但是这也可能导致早期层的学习发散,因为我们使用了更大的学习率。因此,建议使用标准化目标值,以便权重较小且学习速度较快。 因此,简而言之,第一种方法学习速度较慢或者如果使用更大的学习率可能会发散,另一方面,第二种方法相对较安全,且学习速度较快。

抱歉回复晚了,但感谢您的回答。 我尝试将输出值缩放,然后在sigmoid函数的[0,1]范围内和tanh函数的[-1,1]范围内进行反缩放。 准确度结果的差异并不是很大,但如果使用非缩放值,模型似乎经常会发散,而使用缩放输出则从未发生过。 - Paul Rolin
我们可以考虑在最后使用ReLU层,这样会有什么不同呢? - faizan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接