일반 신경망은 입력 하나를 독립적으로 처리하지만, 문장·음성·주가처럼 순서가 있는 데이터는 "이전 정보"를 기억해야 한다.
일반 신경망 (Feedforward)
입력 → 은닉층 → 출력. 매번 완전히 새로운 계산. 이전 입력을 전혀 기억하지 못한다.
예: 사진 한 장을 보고 고양이인지 판단 — 순서 개념이 없음.
순환 신경망 (RNN)
매 시점 은닉 상태(h)를 다음 시점으로 넘겨준다. 즉 "지금까지 읽은 내용"을 요약한 벡터를 계속 들고 다닌다.
예: 문장을 한 글자씩 읽으며 다음 글자를 예측.
시간 축으로 펼친 RNN (Unrolled)
ht = tanh( Wxh·xt + Whh·ht-1 + bh ) —
같은 가중치(W)를 모든 시점에서 재사용한다. 화살표가 옆으로 이어지는 것이 "순환"의 실체.
현재 은닉 상태 벡터 ht (실제 계산값)
step 0 / 입력 문자: —
역전파 시 기울기 크기 (Vanishing Gradient)
tanh의 미분값은 항상 1보다 작아서, 여러 시점을 거슬러 곱해질수록 기울기가 기하급수적으로 0에 가까워진다.
긴 문장일수록 초반 정보를 학습하기 어려워지는 이유 — LSTM·GRU는 이 문제를 게이트 구조로 완화한다.
순전파 의사코드
for t inrange(len(sequence)):
x_t = encode(sequence[t]) # 문자를 숫자 벡터로
h_t = tanh(Wxh @ x_t + Whh @ h_prev + bh) # 같은 W를 매 스텝 재사용!
y_t = softmax(Why @ h_t + by) # 다음 문자 예측 확률 (선택)
h_prev = h_t # 은닉 상태를 다음 스텝으로 전달
순차 모델 3종 비교
모델
정보 전달 방식
병렬 처리
장기 의존성
Feedforward
없음 (매번 독립)
가능
불가능
RNN
은닉 상태를 순서대로 전달
불가능 (순차적)
약함 (기울기 소실)
Self-Attention
모든 위치를 한 번에 직접 참조
가능
강함
→ 셀프 어텐션 페이지에서 RNN의 순차 처리 한계를 어떻게 극복했는지 이어서 볼 수 있다.