为什么在简单的神经网络中 tanh 的性能比 relu 好

use*_*666 3 neural-network

这是我
使用的英语大写字母 EMNIST 数据库的场景。
我的神经网络如下

  1. 输入层有 784 个神经元,它们是图像 28x28 灰度图像除以 255 的像素值,因此值将在 [0,1] 范围内
  2. 隐藏层有 49 个神经元与之前的 784 个完全连接。
  3. 输出层有 9 个神经元,表示图像的类别。
  4. 损失函数定义为输出层 softmax 的交叉熵。
    将所有权重初始化为 [-1,+1] 中的随机实数。

现在我500 fixed samples为每个班级做了训练。

简单地说,将500x9图像传递给训练函数,该函数使用backpropagation100 次迭代改变权重learning_rate*derivative_of_loss_wrt_corresponding_weight

我发现当我在神经元上使用 tanh 激活时,网络学习速度比 relu 学习速度快0.0001

我得出结论,因为 tanh 在固定测试数据集上的准确率高于 relu 。此外,tanh 在 100 轮之后的损失值略低。

难道 relu 的表现不是更好吗?

Imr*_*ran 5

难道 relu 的表现不是更好吗?

一般来说,没有。RELU 会在很多问题上表现得更好,但不是所有问题。

此外,如果您使用经过优化以在一个激活函数上表现良好的架构和参数集,则在交换不同的激活函数后可能会得到更糟糕的结果。

通常,您需要调整架构和参数(例如学习率)以获得可比较的结果。这可能意味着在您的示例中更改隐藏节点的数量和/或学习率。

最后一个注意事项:在我看到的 MNIST 示例架构中,具有 RELU 激活的隐藏层通常跟在 Dropout 层之后,而具有 sigmoid 或 tanh 激活的隐藏层则不然。尝试在隐藏层之后添加 dropout,看看使用 RELU 是否能改善您的结果。请参阅此处的Keras MNIST 示例。