ReLU 层是否适用于浅层网络?

机器算法验证 神经网络
2022-03-25 17:54:54

我目前正在训练一个 5 层的神经网络,我遇到了一些 tanh 层的问题,想试试 ReLU 层。但我发现 ReLU 层变得更糟。我想知道是因为我没有找到最佳参数还是仅仅因为 ReLU 只适用于深度网络?

谢谢!

4个回答

更改激活函数会与您所做的所有其他配置选择交互,从初始化方法到正则化参数。您将不得不再次调整网络。

当你用 ReLU 替换 sigmoid 或 tanh 时,通常你还需要:

  1. 显着降低学习率,通常降低 1/100。这是因为 ReLU 输出不受限制地增长,并且对高学习率的抵抗力要小得多。
  2. 将参数(即权重)的数量增加大约 2 倍或更多。这是因为dead relu问题。
  3. 由于 LR 低得多,您可能不得不增加 epoch 的数量。
  4. 您通常需要比随机初始化更好的初始化方法,例如 Glorot init 或 He init。很多时候你可以在没有这个的情况下度过难关,但代价是收敛速度要慢得多。
  5. 很可能您还需要更强大的正则化,例如 dropout,这同样是因为更多的参数和增加的 epoch 数量。

所以总而言之,事情并不像用 ReLU 交换 sigmoid/tanh 那样简单。添加 ReLU 后,您需要进行上述更改以补偿其他影响。

ReLU 即 Rectified Linear Unittanh都是应用于神经层的非线性激活函数。两者都有各自的重要性。它只取决于我们想要解决的手头问题和我们想要的输出。有时人们更喜欢使用 ReLU 而不是 tanh,因为ReLU 涉及的计算量较少

当我开始学习深度学习时,我有一个问题,为什么我们不只使用线性激活函数而不是非线性答案是输出将只是输入隐藏层的线性组合,不会产生任何影响,因此隐藏层将无法学习重要特征。

例如,如果我们希望输出位于 (-1,1) 范围内,那么我们需要 tanh如果我们需要 (0,1) 之间的输出,则使用 sigmoid 函数ReLU 的情况下,它会给出 max{0,x}。还有许多其他的激活函数,比如leaky ReLU。 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

现在,为了为我们的目的选择合适的激活函数以提供更好的结果,这只是一个实验和实践的问题,这在数据科学世界中被称为调优。

在您的情况下,您可能需要调整参数,这称为 参数调整,例如隐藏层中的神经元数量、层数等。

ReLU 层是否适用于浅层网络?

是的,ReLU 层当然适用于浅层网络。

我想知道是因为我没有找到最佳参数还是仅仅因为 ReLU 只适用于深度网络?

我相信我可以放心地假设您的意思是超参数而不是参数。

具有 5 个隐藏层的神经网络并不浅。你可以深思熟虑。

搜索“最佳”超参数的超参数空间是一项永无止境的任务。最好的意思是让网络达到全局最小值的超参数。

我同意 Sycorax 的观点,一旦你改变了激活函数,你需要再次调整网络。通常,对于同一任务,可以在许多不同的超参数配置中实现相当的性能。