ReLU 用于解决 RNN 中梯度消失的问题?

数据挖掘 深度学习 lstm rnn 激活函数
2021-10-06 06:00:03

为了解决前馈神经网络中梯度消失的问题,可以使用 ReLU 激活函数。

当我们谈论解决 RNN 中的梯度消失问题时,我们使用了更复杂的架构(例如 LSTM)。在这两者中,激活函数都是 tanh。我们不能在 RNN 中使用 ReLU 而不是 tanh 来解决梯度消失问题,而不是选择更复杂的架构吗?

2个回答

我们不能在 RNN 中使用 ReLU 而不是 tanh 来解决梯度消失问题,而不是选择更复杂的架构吗?

是的你可以。我希望它对梯度消失有一点帮助,但通常不如 LSTM 有效。此外,如果在反馈循环中没有某种有界函数,使用 ReLU 的基本 RNN 将很容易受到爆炸值的影响,当反馈在多个时间步长上运行时导致非常大的错误 - 所以你可能需要一些调整,比如梯度裁剪考虑到这一点。

如果您已经有问题要分析,已经准备好数据并决定了顶层架构(例如,有多少循环层,这是否是 seq2seq 类型的模型等),那么将 LSTM 与基本 RNN 进行比较应该相对容易使用 ReLU。不同的超参数很可能适合每种架构,因此您可能需要进行搜索,您可以比较每个模型的最佳结果,或者查看参数数量或训练时间等内容。

我预计许多研究人员已经尝试过这种比较,尽管我在快速搜索中找到的示例似乎使用 tanh 来表示简单的 RNN。

即使在简单的 RNN 架构中使用 ReLU,我怀疑通过大多数措施和在大多数问题中,LSTM 或 GRU 架构会表现得更好。会有一些 RNN 表现更好的边缘情况,例如,如果您的目标是在训练期间快速达到一定的准确度,而不一定最终获得最佳准确度。

RELU 只能解决部分 RNN 的梯度消失问题,因为梯度消失问题不仅仅是由激活函数引起的。

在此处输入图像描述

在此处输入图像描述

等于

在此处输入图像描述

参见上面的函数,隐藏状态导数将取决于激活和 Ws,如果 Ws 的最大特征值 < 1,则长期依赖的梯度将消失。

检查链式乘法部分,Ws 将被多次相乘