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

标签 machine-learning neural-network computer-vision deep-learning conv-neural-network

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

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

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

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

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

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

让我知道你的想法!

最佳答案

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

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

  • 使用 tahn(就像使用 sigmoid),饱和神经元 kills the gradient在反向传播期间。没有具体原因的选择 tahn 可能会损害您的训练。
  • 使用 tahn 进行前向和后向传递需要计算 exp,这也相对昂贵。

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

一般来说,如果隐藏层中有任何激活函数,ReLu 已被证明比 sigmoid 效果更好,尽管最近提出了其他现代函数,例如leaky ReLuPReluELU 等。您可以尝试其中任何一个。

关于machine-learning - 与 tanh 这样的激活函数相比,在最后一层使用线性激活函数有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908744/

相关文章:

opencv - 了解 OpenCV 中的距离变换

machine-learning - CNN 能否按指定比例减小输入大小

python - 如何使用Tensorflow进行信号处理?

machine-learning - 用于实值数据的受限玻尔兹曼机 - 高斯线性单位 (glu) -

python - 如何解释 sklearn fusion_matrix 函数中的 labels 参数?

matlab - 在对同一数据集进行训练后,您对两个完全相同的神经网络有何评价?

neural-network - Caffe:带温度的 Softmax

image-processing - 图像边缘检测

neural-network - 训练一个 doc2Vec 模型实际需要多少数据?

matlab - 比较两个边界框 Matlab