如果我们主要使用 LSTMs 而不是 RNNs 来解决梯度消失问题,为什么我们不能只使用带有 RNNs 的 ReLUs/leaky ReLUs 呢?

机器算法验证 机器学习 神经网络 lstm 循环神经网络 人工智能
2022-03-31 09:04:40

RNN,如:循环神经网络

LSTM,如:长短期记忆单元

ReLU 如:整流线性单元

Leaky ReLU,如:输入负值时不会“死亡”的修改后的 ReLU。

在实践中,机器学习从业者很少使用 vanilla RNN,理由是梯度消失问题(梯度在没有太多时间步长后几乎消失,因为它们是小数,彼此相乘很多,因此基本上无法训练)作为原因. 众所周知,LSTM 通过其更复杂的架构来解决这个问题,这种架构能够实现梯度之间的加法关系而不是乘法关系;后者是梯度消失问题的罪魁祸首。

然而,使用人工神经网络,已知 ReLU 可以很好地解决这个问题,因为它们的梯度要么是“关闭”(0),要么是“开启”(1)。Leaky ReLU 的梯度很小,而不是“关闭”。他们解决了这个问题,因为梯度不饱和。

那么,当 RNNs + ReLU 应该能够解决问题的时候,为什么我们还需要像 LSTMs 这样复杂的模型呢?仅仅是 LSTM 的表现要好得多,而我们没有很好的理由说明为什么吗?

1个回答

我认为这里有些混乱。神经网络(比如 softmax)中梯度消失的原因与 RNN 完全不同。使用神经网络,您会得到消失的梯度,因为大多数初始条件会使您的输出最终位于 softmax 层的最左侧或最右侧,从而给它一个非常小的梯度。一般来说,很难选择合适的初始条件,所以人们选择使用leaky ReLu,因为他们没有上述问题。

而对于 RNN,问题在于您反复将 RNN 应用于自身,这往往会导致指数膨胀或收缩。例如看这篇论文:

关于训练循环神经网络的难度https ://arxiv.org/abs/1211.5063

上述论文的建议是:如果梯度太大,则将其裁剪为较小的值。如果梯度太小,请通过软约束对其进行正则化以使其不消失。

有很多关于 LSTM 的研究,以及很多关于为什么 LSTM 往往优于 RNN 的理论。这是一个很好的解释:http ://r2rt.com/written-memories-understanding-deriving-and-extending-the-lstm.html#fnref2