한양과학기술고등학교

에듀테크 프로젝트 대시보드

순환 신경망 (RNN)

🧠 왜 "순환"이 필요할까?

일반 신경망은 입력 하나를 독립적으로 처리하지만, 문장·음성·주가처럼 순서가 있는 데이터는 "이전 정보"를 기억해야 한다.

일반 신경망 (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 in range(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의 순차 처리 한계를 어떻게 극복했는지 이어서 볼 수 있다.