RNN逐个token处理序列,在每一步更新其隐藏状态:h_t = f(h_{t-1}, x_t)。隐藏状态是到目前为止所有已见内容的压缩表示。问题在于:随着序列变长,隐藏状态必须将越来越多的信息压缩到固定大小的向量中,而反向传播过程中早期token的梯度信号会消失(“梯度消失问题”)。
长短期记忆网络(LSTM,1997年)和门控循环单元(GRU,2014年)通过引入门机制来解决梯度消失问题——这些门是学习得到的机制,控制保留、更新或遗忘哪些信息。LSTM有一个单独的细胞状态,可以在多步之间不变地传递信息,由门控制访问。GRU通过合并细胞状态和隐藏状态来简化LSTM,同时保持类似的性能。
RNN顺序处理token——token 5必须等token 1-4处理完毕才能开始。这使得它们在并行硬件(GPU)上天生缓慢。Transformer使用注意力机制同时处理所有token,训练速度大幅提升。注意力还直接连接每个token与其他所有token,无需依赖压缩的隐藏状态即可解决长距离依赖问题。权衡在于:Transformer的内存使用量与序列长度呈二次方增长,而RNN使用常量内存。这就是SSM(Mamba)令人感兴趣的原因——它们提供了类似RNN的效率和类似Transformer的性能。