我目前正在尝试使用神经网络进行回归预测。
然而,我不知道什么是最好的方法来处理这个问题,因为我读到有两种不同的方法可以用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函数作为输出激活,然后将归一化的输出值缩放到它们的实际值。这是因为,在第一种情况下,要输出大值(因为在大多数情况下实际值都很大),从倒数第二层映射到输出层的权重必须很大。因此,为了更快地收敛,必须使学习率更大。但这也可能导致早期层的学习发散,因为我们使用的是更大的学习率。因此,建议使用归一化目标值,以便权重很小,并且它们可以快速学习。因此,简而言之,如果使用更大的学习率,第一种方法学习缓慢或可能会发散,另一方面,第二种方法使用起来相对安全且学习迅速。