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 的效能。