Ⅰ 为何 RNN 无法处理长序列
RNN 无法处理长序列的问题,主要是因为它存在长期依赖(long-term dependency)的问题。在 RNN 中,每个时间步的输出都与前面的时间步有关,这种关系会随着时间步的增加而增加,从而导致梯度消失或梯度爆炸。
为了解决这个问题,一些研究者提出了一些方法,如长短时记忆网络(LSTM)和门控循环单元(GRU),它们可以更好地处理长序列数据。
Ⅱ 一文看懂RNN
本文将帮助你深入理解RNN,特别是其在处理时间序列数据方面的独特能力。假设你已经对深度学习和基础的NLP有所了解,比如word2vec。
传统的神经网络,如前馈网络,其信息仅单向传递,无法捕捉到时间序列数据中的时间关联。然而,RNN,即循环神经网络,正是为解决这一问题而设计的。它引入了循环结构,允许信息在网络内部循环,从而保留了时间序列中的序列关系。
RNN的典型结构可以通过一个直观的展开来解释。以一个序列数据(x_1, x_2, ..., x_t)为例,每个时间步的输入x_i不仅会被输入到RNN层,还结合上一时间步的隐藏状态h_{i-1}进行计算。这个过程可以用公式表示为每个h的计算,其中涉及参数W_h和W_x,以及双曲正切函数tanh。值得注意的是,尽管图示为多层结构,实际上每层仅包含一个RNN循环,参数是共享的。