RNN,如:循环神经网络
LSTM,如:长短期记忆单元
ReLU 如:整流线性单元
Leaky ReLU,如:输入负值时不会“死亡”的修改后的 ReLU。
在实践中,机器学习从业者很少使用 vanilla RNN,理由是梯度消失问题(梯度在没有太多时间步长后几乎消失,因为它们是小数,彼此相乘很多,因此基本上无法训练)作为原因. 众所周知,LSTM 通过其更复杂的架构来解决这个问题,这种架构能够实现梯度之间的加法关系而不是乘法关系;后者是梯度消失问题的罪魁祸首。
然而,使用人工神经网络,已知 ReLU 可以很好地解决这个问题,因为它们的梯度要么是“关闭”(0),要么是“开启”(1)。Leaky ReLU 的梯度很小,而不是“关闭”。他们解决了这个问题,因为梯度不饱和。
那么,当 RNNs + ReLU 应该能够解决问题的时候,为什么我们还需要像 LSTMs 这样复杂的模型呢?仅仅是 LSTM 的表现要好得多,而我们没有很好的理由说明为什么吗?