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

Machine learning 在最后一层使用线性激活函数与像tanh这样的激活函数相比有什么好处吗?,machine-learning,neural-network,computer-vision,deep-learning,conv-neural-network,Machine Learning,Neural Network,Computer Vision,Deep Learning,Conv Neural Network,我理解这个决定取决于任务,但让我解释一下 我正在设计一个模型,该模型使用一个卷积神经网络从给定的仪表板视频帧预测转向角,该神经网络的末尾有密集的层。在最后一个密集层中,我只有一个单元可以预测转向角 我的问题是,对于我的任务,下面的任一选项是否会显示性能的提升 a。获取地面真实转向角,转换为弧度,并使用tanh挤压它们,使其介于-1和1之间。在我的网络的最后一个密集层中,使用tanh激活函数 b。获取地面真实转向角。这些原始角度介于-420和420度之间。在最后一层中,使用线性激活 我试着从逻辑上

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

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

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

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

b。获取地面真实转向角。这些原始角度介于-420和420度之间。在最后一层中,使用线性激活

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


让我知道你的想法

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

尽管如此,偏见仍然需要学习,从性能上可以看出,学习较小的值更容易。从这个意义上讲,我宁愿选择
[-1,1]
目标范围超过
[-420420]
。但是
tanh
可能不是最佳激活函数:

  • 使用
    tahn
    (就像使用
    sigmoid
    ),背部支撑时的饱和神经元。选择
    tahn
    而没有具体原因可能会损害您的训练
  • 使用
    tahn
    向前和向后传球需要计算
    exp
    ,这也相对昂贵
我的选择是(至少在最初,直到其他变量证明效果更好)压缩基本真值,完全不激活(我认为这就是你所说的线性激活):让网络自己学习
[-1,1]
范围

一般来说,如果您在隐藏层中有任何激活功能,
ReLu
已被证明比
sigmoid
工作得更好,尽管最近还提出了其他现代功能,例如
leaky ReLu
PRelu
ELU
,等等。您可以尝试其中任何一种