我理解这个决定取决于任务,但让我解释一下。
我正在设计一个模型,该模型使用最终具有密集层的卷积神经网络来预测来自给定仪表板视频帧的转向角。在我最后的密集层中,我只有一个预测转向角的单位。
我的问题是,对于我的任务,下面的任一选项都会显示性能提升?
一个。获取地面实况转向角,转换为弧度,并使用tanh压缩它们,使它们在-1和1之间。在我的网络的最后密集层中,使用tanh激活函数。
湾获得地面真实转向角。这些原始角度在-420到420度之间。在最后一层,使用线性激活。
我试图在逻辑上考虑它,在选项A中,由于网络处理的数字要小得多,因此损失可能会小得多。这将导致权重的较小变化。
让我知道你的想法!
答案 0 :(得分:1)
神经网络中有两种类型的变量:权重和偏差(大多数情况下,还有其他变量,例如,batchnorm所需的移动平均值和移动方差)。它们的行为有点不同,例如偏差不会被正规化器惩罚,因为它们不会变小。因此,假设网络仅以 处理小数字是不准确的。
然而,需要学习偏见,从ResNet表现可以看出,学习较小的值更容易。从这个意义上讲,我宁愿选择[-1, 1]
目标范围超过[-420, 420]
。但tanh
可能不是最佳激活函数:
tahn
(就像sigmoid
一样),在backprop期间使用饱和神经元kills the gradient。选择tahn
没有具体原因可能会伤害您的训练。tahn
的前向和后向传递需要计算exp
,这也是相对昂贵的。我的选择是(至少在最初阶段,直到其他一些变体证明效果更好)来挤压基本真值并且根本没有激活(我认为这就是线性激活的意思):让网络自行学习[-1, 1]
范围。
一般情况下,如果您在隐藏图层中有任何激活功能,ReLu
已经证明比sigmoid
效果更好,尽管最近提出了其他现代功能,例如leaky ReLu
,PRelu
,ELU
等。您可以尝试其中任何一种。