在最后一层使用线性激活函数与像 tanh 这样的激活函数相比有什么好处吗?

问题描述 投票:0回答:1

我知道这个决定取决于任务,但让我解释一下。

我正在设计一个模型,该模型使用末端带有密集层的卷积神经网络预测给定仪表板视频帧的转向角。在我最后的致密层中,我只有一个单元可以预测转向角。

我的问题是,对于我的任务,下面的任一选项是否会显示性能提升?

  1. 获取地面真实转向角,转换为弧度,并使用 tanh 压缩它们,使它们在 -1 和 1 之间。在我网络的最后一个密集层中,使用 tanh 激活函数。

  2. 获取地面实况转向角。这些原始角度在 -420 到 420 度之间。在最后一层,使用线性激活。

我试图从逻辑上考虑,在选项 A 中,损失可能会小得多,因为网络处理的数字要小得多。这将导致重量的较小变化。

让我知道你的想法!

machine-learning neural-network computer-vision deep-learning conv-neural-network
1个回答
2
投票

神经网络中有两类变量:权重和偏差(大多数情况下,还有额外的变量,例如batchnorm所需的移动均值和移动方差)。它们的行为有点不同,例如偏差不会受到正则化器的惩罚,因此它们不会变小。因此,网络只处理 小数字的假设是不准确的。

仍然需要学习偏差,从 ResNet 性能可以看出,学习较小的值更容易。从这个意义上说,我宁愿选择

[-1, 1]
目标范围而不是
[-420, 420]
。但是
tanh
可能不是最佳激活函数:

  • 使用
    tahn
    (就像使用
    sigmoid
    ),饱和神经元会在反向传播过程中杀死梯度。没有特定原因选择
    tahn
    很可能会伤害你的训练。
  • 带有
    tahn
    的正向和反向传递需要计算
    exp
    ,这也相对昂贵。

我的选择是(至少在最初,直到其他一些变体被证明效果更好)压缩真实值并且根本没有激活(我认为这就是你所说的线性激活):让网络学习

[-1, 1]
范围本身。

一般来说,如果您在隐藏层中有任何激活函数,

ReLu
已被证明比
sigmoid
工作得更好,尽管最近提出了其他现代函数,例如
leaky ReLu
,
PRelu
,
ELU
, 等等。你可以尝试其中任何一个。

© www.soinside.com 2019 - 2024. All rights reserved.