为什么tanh在简单的神经网络中表现优于relu

时间:2018-02-18 08:18:37

标签: neural-network

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

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

    简单地说,将500x9图像传递给使用backpropagation的训练函数,然后进行100次迭代,将重量改为learning_rate*derivative_of_loss_wrt_corresponding_weight

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

    我得出结论,因为tanh的固定测试数据集的准确度高于relu。此外,100个时期后的损失值略低于tanh。

    预计不会表现得更好吗?

1 个答案:

答案 0 :(得分:1)

  

预计不会表现得更好吗?

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

此外,如果您使用经过优化的架构和一组参数以便在一个激活函数中运行良好,那么在交换不同的激活函数后,您可能会得到更差的结果。

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

最后要注意的是:在我所看到的MNIST示例架构中,具有RELU激活的隐藏层通常后跟Dropout层,而具有sigmoid或tanh激活的隐藏层则不然。尝试在隐藏图层后添加dropout,看看是否可以改善RELU的结果。请参阅Keras MNIST示例here