为了解决前馈神经网络中梯度消失的问题,可以使用 ReLU 激活函数。
当我们谈论解决 RNN 中的梯度消失问题时,我们使用了更复杂的架构(例如 LSTM)。在这两者中,激活函数都是 tanh。我们不能在 RNN 中使用 ReLU 而不是 tanh 来解决梯度消失问题,而不是选择更复杂的架构吗?
为了解决前馈神经网络中梯度消失的问题,可以使用 ReLU 激活函数。
当我们谈论解决 RNN 中的梯度消失问题时,我们使用了更复杂的架构(例如 LSTM)。在这两者中,激活函数都是 tanh。我们不能在 RNN 中使用 ReLU 而不是 tanh 来解决梯度消失问题,而不是选择更复杂的架构吗?
我们不能在 RNN 中使用 ReLU 而不是 tanh 来解决梯度消失问题,而不是选择更复杂的架构吗?
是的你可以。我希望它对梯度消失有一点帮助,但通常不如 LSTM 有效。此外,如果在反馈循环中没有某种有界函数,使用 ReLU 的基本 RNN 将很容易受到爆炸值的影响,当反馈在多个时间步长上运行时导致非常大的错误 - 所以你可能需要一些调整,比如梯度裁剪考虑到这一点。
如果您已经有问题要分析,已经准备好数据并决定了顶层架构(例如,有多少循环层,这是否是 seq2seq 类型的模型等),那么将 LSTM 与基本 RNN 进行比较应该相对容易使用 ReLU。不同的超参数很可能适合每种架构,因此您可能需要进行搜索,您可以比较每个模型的最佳结果,或者查看参数数量或训练时间等内容。
我预计许多研究人员已经尝试过这种比较,尽管我在快速搜索中找到的示例似乎使用 tanh 来表示简单的 RNN。
即使在简单的 RNN 架构中使用 ReLU,我怀疑通过大多数措施和在大多数问题中,LSTM 或 GRU 架构会表现得更好。会有一些 RNN 表现更好的边缘情况,例如,如果您的目标是在训练期间快速达到一定的准确度,而不一定最终获得最佳准确度。