neural-network - 神经网络回归 : scaling the outputs or using a linear layer?

标签 neural-network regression non-linear-regression

我目前正在尝试使用神经网络进行回归预测。

但是,我不知道处理此问题的最佳方法是什么,因为我读到有 2 种不同的方法可以使用 NN 进行回归预测。

1) 一些网站/文章建议添加一个线性的最后一层。 http://deeplearning4j.org/linear-regression.html

我认为我的最后一层看起来像:

layer1 = tanh(layer0*weight1 + bias1)

layer2 = identity(layer1*weight2+bias2)

我还注意到,当我使用这个解决方案时,我通常会得到一个预测,即批量预测的平均值。当我使用 tanh 或 sigmoid 作为倒数第二层时就是这种情况。

2) 一些其他网站/文章建议将输出缩放到 [-1,1][0,1] 范围并使用 tanh 或 sigmoid作为最后一层。

这两种解决方案可以接受吗?应该更喜欢哪一个?

谢谢, 保罗

最佳答案

我更喜欢第二种情况,在这种情况下,我们使用归一化和 sigmoid 函数作为输出激活,然后将归一化的输出值缩减为它们的实际值。这是因为,在第一种情况下,要输出较大的值(因为在大多数情况下实际值很大),从倒数第二层映射到输出层的权重必须很大。因此,为了更快的收敛,必须使学习率更大。但这也可能导致早期层的学习出现分歧,因为我们使用了更大的学习率。因此,建议使用归一化的目标值,以便权重很小并且它们可以快速学习。 因此,简而言之,第一种方法学习速度较慢,或者如果使用较大的学习率,可能会发散,而第二种方法使用起来相对更安全,学习速度也很快。

关于neural-network - 神经网络回归 : scaling the outputs or using a linear layer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931772/

相关文章:

python - PyTorch 中带有 dropout 正则化的逻辑回归

python - 让 statsmodels 在系数 t 检验中使用异方差校正标准误差

regression - Julia 混合效应模型中随机斜率的相互作用

r - 如何在 ggplot 中绘制线性回归的残差线?

r - 如何从 nls 计算 95% 的预测区间

machine-learning - 使用 TensorFlow 进行非线性回归,结果呈直线

validation - 神经网络训练这么快就停止了

python - 用于多任务学习神经网络的 Keras 的顺序与功能 API

r - 优化 R 中的非线性 Langmuir 参数估计

python - 类型错误 : Unrecognized keyword arguments: {'show_accuracy' : True} #yelp challenge dataset