🧠 RNN & Seq2Seq 시각화

RNN 셀 개념부터 파라미터 구성, Seq2Seq 동작까지 순서대로 살펴본다.

① RNN의 정의와 개념
순환 신경망 (Recurrent Neural Network)

RNN은 시간의 흐름에 따라 변하는 시계열 데이터나 텍스트와 같은 순차적인 정보(Sequential Data)를 처리하기 위해 설계된 인공신경망이다.

🏃‍♂️ 릴레이 바통 터치 (순환 구조)
데이터를 독립적으로 처리하는 일반 신경망과 달리, RNN은 이전 단어를 처리할 때 만들어진 은닉 상태(Hidden State, h)를 다음 단어 처리 장치로 릴레이 바통처럼 끊임없이 넘겨주며 기억을 전달한다.
⚠️ 장기 의존성 한계
문장이 너무 길어지면 앞단에서 전달해 온 기억(은닉 상태)이 여러 셀을 거치는 동안 점차 희석되거나 소실되는 장기 의존성 문제를 겪는 한계가 존재한다.
② RNN 셀 — 언롤링 개념
RNN 셀 언롤링 (Unrolling)
o RNN h x 단일 셀 unroll ot-1 ot ot+1 RNN h_{t-1} RNN h_t RNN h_{t+1} xt-1 xt xt+1 동일한 가중치 공유 (Wₓ, Wₕ) — 실제로는 하나의 셀! : seq_len 만큼 펼친 표현 (unrolled) 단일 셀
③ nn.RNN 파라미터
함수 시그니처
nn.RNN(input_size, hidden_size, num_layers=1, bidirectional=False, device=None)
input_size
vocab id Embedding dim=768 RNN input_size=768
  • 입력 벡터 1개의 차원 수
  • 임베딩 차원이 768 → input_size=768
hidden_size
RNN hidden size=1024 넓은 기억 RNN hidden size=64 좁은 기억
  • 은닉 상태 벡터의 차원 수
  • 클수록 표현력 ↑, 파라미터 수 ↑
num_layers 기본값 = 1
Layer 1 num_layers=1 Layer 1 Layer 2 Layer 3 num_layers=3 Layer 1 Layer 2 num_layers=2
  • RNN 셀의 수직 적층 수
  • 깊을수록 복잡한 패턴 학습 가능
bidirectional 기본값 = False
False (단방향) 나는 학교에 간다 True (양방향) 나는 학교에 간다 순방향 역방향 → hidden×2
  • True → 순방향 + 역방향 동시 처리
  • 출력 크기: hidden_size × 2
④ Seq2Seq 전체 동작
시퀀스-투-시퀀스 (Sequence-to-Sequence, Seq2Seq)

Seq2Seq은 하나의 시퀀스(입력 문장)를 다른 시퀀스(출력 문장)로 변환하는 모델 아키텍처이다. 입력 문장의 길이에 구애받지 않고 유연하게 대응할 수 있어 기계 번역, 요약, 챗봇 등 다양한 자연어 처리 분야의 근간이 된다.

📥 인코더 (Encoder) : 입력 압축
입력되는 단어 시퀀스를 순차적으로 처리하여 그 문맥 정보를 하나의 최종 은닉 상태 벡터(컨텍스트 벡터)에 집약하여 압축 보관한다.
📤 디코더 (Decoder) : 출력 생성
인코더가 넘겨준 컨텍스트 벡터를 최초 기억의 발판 삼아, 출력 문장의 단어들을 순서대로 예측하며 최종 번역 문장을 생성해 낸다.
💡 핵심 수식 및 활성화 함수 해설
📐 tanh (하이퍼볼릭 탄젠트)
hₜ = tanh(Wₓxₜ + Wₕhₜ₋₁ + b)
새로운 은닉 상태(기억)의 모든 값 범위를 -1에서 1 사이로 스케일링해 주는 비선형 활성화 함수이다. 매 스텝 연산이 거듭될 때 수치가 기하급수적으로 폭발하거나 0으로 수렴하여 기억이 끊기는 현상을 방지한다.
🗜️ 컨텍스트 벡터 (Context Vector)
c = h_enc_last
인코더가 입력 문장을 끝까지 다 읽고 남긴 최지막 은닉 상태(h_enc_last)이다. 입력 문장 전체의 문맥 의미가 고밀도로 축약되어 있으며, 디코더에 번역을 시작하는 '최초의 기억'으로 제공된다.
📊 softmax (소프트맥스)
yₜ = softmax(Wᵧsₜ + b)
디코더 셀이 예측한 실수 수치 벡터를 어휘 사전에 존재하는 단어별 최종 확률 분포(합이 1.0)로 정규화하는 활성화 함수이다. 이 중 확률값이 가장 높은 단어를 매 순간 번역 단어로 최종 선택하여 출력한다.
인코더 RNN 셀
컨텍스트 벡터
디코더 RNN 셀
tanh
softmax
ENCODER DECODER RNN tanh RNN tanh RNN tanh RNN RNN RNN h₁ h₂ h₃ 나는 학교에 간다 Context Vector <SOS> s₁ s₂ s₃ I go to school softmax softmax softmax
0 / 9
시작 전
  • ▶ 다음 버튼을 눌러 단계별로 진행한다.
  • 각 단계에서 활성화된 요소가 강조 표시된다.