본문 바로가기
C.W.K.
Stream
Lesson 10 of 12 · published

LSTM과 GRU

~18 min · lstm, gru, gating

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

게이트의 핵심

기본 RNN은 긴 시퀀스에서 기울기가 사라지는 문제가 있어. 같은 가중치 행렬이 모든 시간 단계을 거치며 계속 곱해지기 때문이야. LSTM (1997)은 별도의 셀 상태 c_t를 추가해 값이 시간축을 따라 거의 변하지 않은 채 흐를 수 있게 해. 그리고 학습되는 게이트 3개(forget, 입력, 출력)가 무엇을 잊고, 무엇을 더하고, 무엇을 읽어낼지 결정해.

핵심은 망각 게이트야. 각 차원에서 0~1 사이의 시그모이드 값을 갖는 벡터가 이전 셀 상태에 원소별로 곱해져. 어떤 차원의 망각 게이트가 1에 가까우면 해당 메모리는 여러 단계를 지나도 살아남아. 0에 가까우면 즉시 지워져. 이 게이트를 지나는 역전파는 tanh 층을 지나는 역전파보다 훨씬 수월해.

팁: 'LSTM'을 블랙박스 같은 이름으로만 알고 있어서 구조를 명확히 이해하고 싶다면 이렇게 보면 돼. 기본 RNN 셀에 시그모이드 게이트 3개와 상태 벡터 하나를 더한 구조야. 수식도 슬라이드 한 장에 들어가. 직관적으로는 '제어 가능한 갱신을 통해 여러 시간 단계 동안 살아남는 값'이라고 생각하면 돼.

GRU — 더 가벼운 친척

GRU (Cho et al., 2014)는 망각 게이트와 입력 게이트를 하나의 갱신 게이트로 합치고, 별도의 셀 상태를 없앴어. 매개변수가 더 적고 일부 과제에서는 표현력이 약간 떨어질 수 있지만, 실전 성능은 LSTM과 매우 비슷해. 순환 구조가 필요하지만 선택을 오래 고민하고 싶지 않을 때 좋은 기본값이야.

PyTorch에서는 한 줄로 쓸 수 있어. nn.LSTM이나 nn.GRU를 사용하고, 둘을 서로 서로 바꿔 끼울 수 있는 대체품처럼 다루면 돼. 어느 쪽을 고르느냐가 큰 차이를 만드는 경우는 드물어. 팀이 이미 익숙하게 쓰는 쪽을 선택해.

2026년에도 여전히 강한 분야

토큰당 비용이 일정한 스트리밍 추론에서는 여전히 강점이 있어. Transformer 어텐션은 토큰당 O(n)이지만 RNN은 O(1)이야. 관측값을 순서대로 소비하는 RL 정책과 일부 임베디드 ASR 파이프라인에서도 쓰여. 다만 일반적인 시퀀스 작업은 대부분 Transformer로 옮겨갔어.

원칙: LSTM과 GRU는 2026년에도 유능한 베테랑이지만 이제 주인공은 아니야. 레거시 코드를 읽을 수 있을 만큼은 제대로 알아두고, 새 작업에는 Transformer나 Mamba 계열 상태 공간 모델을 먼저 고려해.

Code

서로 바꿔 쓸 수 있는 LSTM·GRU 시퀀스 인코더·python
import torch
import torch.nn as nn

x = torch.randn(8, 50, 64)              # [B, T, in_dim]

lstm = nn.LSTM(input_size=64, hidden_size=128, num_layers=2,
               batch_first=True, bidirectional=False)
out_lstm, (h, c) = lstm(x)
print("LSTM out:", out_lstm.shape)       # [8, 50, 128]
print("LSTM h:",   h.shape)              # [num_layers, B, hidden]
print("LSTM c:",   c.shape)              # [num_layers, B, hidden]

gru = nn.GRU(input_size=64, hidden_size=128, num_layers=2,
             batch_first=True)
out_gru, h_gru = gru(x)
print("GRU out:", out_gru.shape)         # [8, 50, 128]
print("GRU h:  ", h_gru.shape)           # [num_layers, B, hidden]

External links

Exercise

같은 과제에서 LSTM과 GRU 시퀀스 분류기를 각각 학습해. 검증 정확도와 학습 시간을 비교해. 두 결과는 매우 비슷해야 해. 인터넷에서 사람들이 주장하는 것만큼 둘 중 무엇을 선택하느냐가 중요한 경우는 드물어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.