기본 순환 구조
RNN은 시퀀스를 한 번에 한 토큰씩 처리하면서 은닉 상태 h를 유지해 지금까지 본 내용을 요약해. 각 단계의 계산은 h_t = f(W_h h_{t-1} + W_x x_t + b)로 나타낼 수 있어. 모든 단계에 같은 가중치를 적용한다는 뜻이야. CNN이 공간 전체에서 매개변수를 공유하듯, RNN은 시간 전체에서 매개변수를 공유해.
기본 RNN은 단순하고 우아하지만, 시퀀스가 길어지면 기울기 소실이 심각해져. 대표적인 개선 방법이 LSTM(1997)과 GRU(2014)야. 둘 다 게이트 구조를 추가해 기울기가 시간축을 따라 더 멀리 흐르도록 해.
팁: 시퀀스를 다룰 때는 RNN이 당연한 선택처럼 보일 수 있어. 실제로 2014~2017년에는 지배적인 아키텍처였지. 하지만 이후 Transformer가 거의 모든 분야에서 RNN을 압도했어. 오늘날 RNN은 주로 어텐션의 제곱 비용이 부담스러운 매우 긴 시퀀스, 토큰당 일정한 연산량이 중요한 임베디드 시스템, 순차 롤아웃과 자연스럽게 맞물리는 RL에 쓰여.
LSTM 셀의 구조와 코드
LSTM 셀은 두 개의 상태 벡터를 유지해. 은닉 상태 h는 출력이고, 셀 상태 c는 장기 메모리야. Forget, 입력, 출력의 3개 게이트가 어떤 정보를 어디로 흘릴지 조절해. 핵심은 망각 게이트야. 덕분에 정보가 사라지지 않은 채 수백 시간 단계을 지나도록 필요한 내용만 선택적으로 유지하거나 버릴 수 있어.
2026년에도 RNN이 맞는 경우
한 번에 한 토큰씩 고정된 메모리로 처리하는 스트리밍 추론에서는 여전히 유용해. Mamba와 S5처럼 매우 긴 문맥에서 Transformer와 경쟁할 수 있는 RNN-like 상태 공간 모델도 있어. 일부 음악과 오디오 생성 파이프라인에서도 쓰여. 그 밖의 시퀀스 과제는 대부분 Transformer로 옮겨갔어.
원칙: LSTM과 GRU의 구조는 한 번 제대로 익혀둬. 첫 번째 선택으로 꺼내 들 일은 드물지만, 레거시 코드와 RL agent, 단계마다 일정한 연산 비용이 중요한 임베디드 시스템에서 만나게 될 거야.