Part 5 · Context and Sequential Models - Learning in Sequence

RNN은 문장의 흐름 속에서 학습한다

RNN은 단어 하나만 보고 학습하지 않습니다. 문장을 처음부터 끝까지 순서대로 처리한 뒤, 예측 결과와 정답을 비교하여 모든 시간 단계의 정보를 함께 학습합니다. 이 과정에서 같은 Weight를 모든 시간 단계가 공유하기 때문에, RNN은 다양한 길이의 문장을 처리하면서도 일관된 방식으로 문맥을 학습할 수 있습니다. 이러한 학습 방식은 이후 더 발전된 순차 모델과 Transformer가 등장하는 중요한 출발점이 되었습니다.

What Is Learned?

RNN은 무엇을 배우는가?

RNN은 문장을 처리할 때마다 Hidden State를 계산합니다. 그러나 Hidden State는 모델에 계속 저장되는 지식이 아닙니다. 실제 학습 대상은 모델 내부의 가중치와 편향입니다.

Weight와 Bias

모델 내부에 저장되며 학습 과정에서 계속 수정되는 파라미터입니다.

  • 입력을 어떻게 계산할지 결정
  • 여러 학습 데이터에 걸쳐 유지됨
  • 학습이 끝난 뒤 모델 파일에 저장됨
Hidden State는 계산 결과이고, Weight와 Bias는 모델이 학습해 보존하는 값입니다.
Weight

가중치(Weight)란 무엇인가?

가중치는 입력된 숫자 가운데 어떤 특징을 얼마나 강하게 반영할지 결정하는 숫자들의 집합입니다. RNN에서는 대부분 행렬(Matrix) 형태로 저장됩니다.

현재 입력 벡터

지금 계산에 들어오는 데이터입니다.

0.21
-0.44
0.73
0.18
가중치 행렬

입력의 각 특징을 어떤 방식으로 변환할지 결정합니다.

0.52
-0.11
0.08
0.31
-0.24
0.67
0.14
-0.06
같은 입력이라도 Weight가 다르면 Hidden State와 예측 결과가 달라집니다. 학습은 이 숫자들을 더 나은 값으로 조정하는 과정입니다.
RNN Parameters

RNN 안에는 어떤 가중치가 있을까?

RNN의 핵심 계산에는 역할이 다른 세 종류의 가중치가 사용됩니다.

Wₓₕ · 입력 가중치 현재 토큰의 임베딩 벡터를 Hidden State 계산에 반영합니다.
xₜ
→
Hidden 계산
Wₕₕ · 순환 가중치 이전 Hidden State의 정보를 새 Hidden State에 반영합니다.
hₜ₋₁
→
hₜ
Wₕᵧ · 출력 가중치 Hidden State를 분류 결과나 다음 토큰 확률로 변환합니다.
hₜ
→
Output
Bias는 각 계산의 기준점을 조정하는 학습 가능한 값입니다. 또한 같은 Wₓₕ, Wₕₕ, Wₕᵧ가 모든 시간 단계에서 공유됩니다.
Forward Pass

순전파(Forward Pass)란 무엇인가?

순전파는 현재 모델이 가진 가중치를 사용해 입력을 처리하고 예측 결과를 만드는 과정입니다. 이 단계에서는 아직 가중치를 수정하지 않습니다.

시험 문제를 푼다 순전파
답을 제출한다 예측
정답과 비교한다 손실
공부 방법을 고친다 가중치 갱신
순전파는 현재 모델의 실력을 확인하는 과정입니다. 예측 결과가 나온 뒤에야 손실을 계산하고 가중치를 수정할 수 있습니다.
Forward Computation

현재 가중치로 문장을 읽고 예측한다

문장 The movie was not good을 예로 들어 보겠습니다. 각 시간 단계에서 현재 입력 xₜ와 이전 Hidden State hₜ₋₁에 현재 가중치를 적용해 새 Hidden State hₜ를 계산합니다.

t = 1
The
현재 입력
x₁
Wₓₕx₁ + Wₕₕh₀
새 상태
h₁
t = 2
movie
현재 입력
x₂
Wₓₕx₂ + Wₕₕh₁
새 상태
h₂
t = 3
was
현재 입력
x₃
Wₓₕx₃ + Wₕₕh₂
새 상태
h₃
t = 4
not
현재 입력
x₄
Wₓₕx₄ + Wₕₕh₃
새 상태
h₄
t = 5
good
현재 입력
x₅
Wₓₕx₅ + Wₕₕh₄
최종 상태
h₅
최종 Hidden State h₅
→
출력 가중치 적용 Wₕᵧh₅ + bᵧ
→
예측 결과 긍정 0.72
순전파는 입력에서 시작해 Hidden State를 거쳐 예측까지 도달하는 전체 계산입니다. 이 시점까지 Weight는 그대로입니다.
Loss

예측이 맞았는지 확인한다

모델의 예측

긍정 0.72

현재 Weight로 계산한 결과

≠

실제 정답

부정 1.00

학습 데이터의 정답

손실(Loss)은 무엇을 알려 줄까?

예측 긍정 0.72
vs
정답 부정
→
손실값 예측이 얼마나 틀렸는가
Loss는 단순한 점수가 아니라 가중치를 어떻게 수정해야 할지 계산하기 위한 기준입니다.
Why Backward?

왜 마지막 가중치만 수정하면 안 될까?

good만 보면 긍정적인 단어이므로 모델이 긍정으로 예측한 이유를 설명할 수 있습니다.
not good을 함께 보면 문제는 not을 처리한 앞쪽 계산에서 시작되었을 수 있습니다.

잘못된 예측의 원인이 출력 가중치에만 있는 것은 아닙니다. 입력 가중치 Wₓₕ와 순환 가중치 Wₕₕ가 부정 정보를 충분히 유지하지 못했을 수도 있습니다.

그래서 출력에서 시작해 앞쪽 시간 단계까지 어느 계산이 손실에 영향을 주었는지 거슬러 추적해야 합니다.
BPTT

시간을 거슬러 기울기를 계산한다

마지막 출력에서 계산된 손실을 기준으로 h₅ → h₄ → h₃ → h₂ → h₁의 순서로 계산을 거슬러 올라갑니다. 이때 각 Hidden State와 Weight를 조금 바꾸었을 때 최종 손실이 얼마나 달라지는지를 나타내는 기울기(Gradient)를 계산합니다.

예측과 정답의 차이 긍정 0.72 ≠ 부정
→
출력에서 계산된 손실 Loss = 1.27
손실에서 계산된 기울기가 시간의 역방향으로 전달됩니다. ← ← ← ←
t = 1
The
h₁에 전달된 기울기 ∂L / ∂h₁
예시 크기 0.06
문장 앞부분까지 도달한 학습 신호
t = 2
movie
h₂에 전달된 기울기 ∂L / ∂h₂
예시 크기 0.18
평가 대상 정보의 영향 계산
t = 3
was
h₃에 전달된 기울기 ∂L / ∂h₃
예시 크기 0.41
상태를 연결한 계산의 영향 확인
t = 4
not
h₄에 전달된 기울기 ∂L / ∂h₄
예시 크기 0.72
부정 정보를 유지한 계산이 예측에 미친 영향
t = 5
good
출력에 가장 가까운 기울기 ∂L / ∂h₅
예시 크기 1.00
손실에서 역전파가 시작되는 지점
화살표의 방향 출력에서 문장 앞쪽으로 기울기가 전달되는 BPTT의 진행 방향을 나타냅니다.
막대의 길이 각 시간 단계까지 전달된 학습 신호의 크기를 직관적으로 나타냅니다.
기울기의 용도 각 Weight를 어느 방향으로 얼마나 수정할지 계산하는 데 사용됩니다.
막대 길이와 숫자는 기울기의 전달 과정을 이해하기 위한 예시입니다. 실제 기울기는 하나의 숫자가 아니라 Hidden State와 Weight의 형태에 대응하는 벡터 또는 행렬로 계산됩니다.
기울기는 뒤에서 앞으로 전달되지만 항상 작아지는 것은 아닙니다. 다만 많은 시간 단계를 반복해서 통과하면 지나치게 작아질 수 있으며, 이것이 다음 장에서 다룰 기울기 소실 문제입니다.
RNN을 시간 방향으로 펼친 뒤 손실을 뒤에서 앞으로 전달하며 각 Weight의 기울기를 계산하는 과정을 BPTT(Backpropagation Through Time)라고 합니다.
Weight Update

기울기를 이용해 가중치를 수정한다

기울기는 Weight를 조금 바꿨을 때 Loss가 어느 방향으로 변하는지를 알려 줍니다. 옵티마이저는 이 정보를 이용해 Loss가 줄어드는 방향으로 Weight를 조금씩 수정합니다.

현재 Weight 예: 0.52
−
학습률 × 기울기 예: 0.03
=
새 Weight 예: 0.49
위 숫자는 원리를 설명하기 위한 예시입니다. 실제 모델에서는 수많은 Weight와 Bias가 동시에 조금씩 수정됩니다.
학습은 예측 결과 자체를 고치는 일이 아니라, 다음 예측이 더 좋아지도록 모델 내부의 Weight를 바꾸는 일입니다.
Interactive Training

RNN 학습 과정을 단계별로 확인하기

순전파

아직 실행하지 않음

손실 계산

순전파 후 실행 가능

BPTT

손실 계산 후 실행 가능

Weight 갱신

BPTT 후 실행 가능
순전파 버튼을 눌러 현재 Weight로 예측을 만들어 보세요.
Repetition

한 번의 수정으로 학습이 끝나지는 않는다

현재 Weight 학습 시작 상태
순전파 예측 생성
Loss 정답과 비교
BPTT 기울기 계산
Weight 갱신 작은 수정
반복 학습 많은 데이터
Hidden State는 매 문장마다 새로 계산되지만, Weight는 여러 학습 데이터를 거치면서 계속 수정되고 축적됩니다.
Common Misunderstandings

학습 과정에서 자주 생기는 오해

Hidden State가 학습되는가? 아닙니다. Hidden State는 입력과 Weight를 사용해 계산되는 중간 결과입니다.
시간 단계마다 다른 Weight를 사용하는가? 아닙니다. 같은 Weight를 모든 시간 단계에서 공유합니다.
순전파 중에도 Weight가 바뀌는가? 아닙니다. 순전파는 현재 Weight로 예측을 만드는 과정입니다.
학습이 끝나면 무엇이 남는가? Weight, Bias, 그리고 학습 설정에 따라 Embedding Table 같은 파라미터가 모델에 남습니다.
Embedding Table도 함께 학습될 수 있는가?
그렇습니다. 일반적인 End-to-End 학습에서는 Embedding Table도 손실을 줄이는 방향으로 함께 수정될 수 있습니다. 다만 이 장에서는 RNN 내부 계산을 설명하기 위해 Wₓₕ, Wₕₕ, Wₕᵧ에 초점을 맞췄습니다.
Hidden State는 언제까지 유지되는가?
보통 하나의 문장이나 시퀀스를 처리하는 동안 유지됩니다. 새로운 독립 문장을 처리할 때는 초기 상태에서 다시 시작합니다.
From Learning to Limitation

문장이 길어지면 학습 신호는 어떻게 될까?

BPTT는 마지막 출력의 손실을 앞쪽 시간 단계까지 전달합니다. 그러나 문장이 길어질수록 기울기가 여러 단계를 통과하면서 지나치게 작아지거나 커질 수 있습니다.

마지막 손실 출력에서 시작
최근 상태 hₜ
이전 상태 hₜ₋₁
… 여러 단계 통과
초기 상태 h₁
기울기 약화 학습 어려움
긴 문장에서 앞쪽 정보까지 학습 신호가 제대로 도달하지 않는 문제는 다음 장의 기울기 소실과 장기 의존성 문제로 이어집니다.
Summary

학습 내용 정리

  • Hidden State는 문장을 처리하는 동안 계산되는 중간 결과입니다.
  • 실제로 학습되는 것은 Weight와 Bias 같은 모델 파라미터입니다.
  • RNN의 핵심 Weight는 Wₓₕ, Wₕₕ, Wₕᵧ입니다.
  • 순전파는 현재 Weight로 입력을 처리하고 예측 결과를 만드는 과정입니다.
  • 순전파 중에는 Weight가 수정되지 않습니다.
  • Loss는 예측과 정답의 차이를 나타내며 Weight 수정의 기준이 됩니다.
  • BPTT는 출력 손실을 앞쪽 시간 단계로 전달해 기울기를 계산합니다.
  • 옵티마이저는 기울기를 이용해 Loss가 줄어드는 방향으로 Weight를 조금씩 수정합니다.
  • 이 과정을 많은 데이터에 반복하면서 RNN의 예측 성능이 향상됩니다.