我目前正在训练一个 5 层的神经网络,我遇到了一些 tanh 层的问题,想试试 ReLU 层。但我发现 ReLU 层变得更糟。我想知道是因为我没有找到最佳参数还是仅仅因为 ReLU 只适用于深度网络?
谢谢!
我目前正在训练一个 5 层的神经网络,我遇到了一些 tanh 层的问题,想试试 ReLU 层。但我发现 ReLU 层变得更糟。我想知道是因为我没有找到最佳参数还是仅仅因为 ReLU 只适用于深度网络?
谢谢!
更改激活函数会与您所做的所有其他配置选择交互,从初始化方法到正则化参数。您将不得不再次调整网络。
当你用 ReLU 替换 sigmoid 或 tanh 时,通常你还需要:
所以总而言之,事情并不像用 ReLU 交换 sigmoid/tanh 那样简单。添加 ReLU 后,您需要进行上述更改以补偿其他影响。
ReLU 即 Rectified Linear Unit和tanh都是应用于神经层的非线性激活函数。两者都有各自的重要性。它只取决于我们想要解决的手头问题和我们想要的输出。有时人们更喜欢使用 ReLU 而不是 tanh,因为ReLU 涉及的计算量较少。
当我开始学习深度学习时,我有一个问题,为什么我们不只使用线性激活函数而不是非线性?答案是输出将只是输入和隐藏层的线性组合,不会产生任何影响,因此隐藏层将无法学习重要特征。
例如,如果我们希望输出位于 (-1,1) 范围内,那么我们需要 tanh。如果我们需要 (0,1) 之间的输出,则使用 sigmoid 函数。在ReLU 的情况下,它会给出 max{0,x}。还有许多其他的激活函数,比如leaky ReLU。
现在,为了为我们的目的选择合适的激活函数以提供更好的结果,这只是一个实验和实践的问题,这在数据科学世界中被称为调优。
在您的情况下,您可能需要调整参数,这称为 参数调整,例如隐藏层中的神经元数量、层数等。
ReLU 层是否适用于浅层网络?
是的,ReLU 层当然适用于浅层网络。
我想知道是因为我没有找到最佳参数还是仅仅因为 ReLU 只适用于深度网络?
我相信我可以放心地假设您的意思是超参数而不是参数。
具有 5 个隐藏层的神经网络并不浅。你可以深思熟虑。
搜索“最佳”超参数的超参数空间是一项永无止境的任务。最好的意思是让网络达到全局最小值的超参数。
我同意 Sycorax 的观点,一旦你改变了激活函数,你需要再次调整网络。通常,对于同一任务,可以在许多不同的超参数配置中实现相当的性能。