RNN은 무엇을 배우는가?
RNN은 문장을 처리할 때마다 Hidden State를 계산합니다. 그러나 Hidden State는 모델에 계속 저장되는 지식이 아닙니다. 실제 학습 대상은 모델 내부의 가중치와 편향입니다.
모델 내부에 저장되며 학습 과정에서 계속 수정되는 파라미터입니다.
- 입력을 어떻게 계산할지 결정
- 여러 학습 데이터에 걸쳐 유지됨
- 학습이 끝난 뒤 모델 파일에 저장됨
가중치(Weight)란 무엇인가?
가중치는 입력된 숫자 가운데 어떤 특징을 얼마나 강하게 반영할지 결정하는 숫자들의 집합입니다. RNN에서는 대부분 행렬(Matrix) 형태로 저장됩니다.
지금 계산에 들어오는 데이터입니다.
입력의 각 특징을 어떤 방식으로 변환할지 결정합니다.
RNN 안에는 어떤 가중치가 있을까?
RNN의 핵심 계산에는 역할이 다른 세 종류의 가중치가 사용됩니다.
Wₓₕ · 입력 가중치
현재 토큰의 임베딩 벡터를 Hidden State 계산에 반영합니다.
Wₕₕ · 순환 가중치
이전 Hidden State의 정보를 새 Hidden State에 반영합니다.
Wₕᵧ · 출력 가중치
Hidden State를 분류 결과나 다음 토큰 확률로 변환합니다.
Wₓₕ, Wₕₕ, Wₕᵧ가 모든 시간 단계에서 공유됩니다.
순전파(Forward Pass)란 무엇인가?
순전파는 현재 모델이 가진 가중치를 사용해 입력을 처리하고 예측 결과를 만드는 과정입니다. 이 단계에서는 아직 가중치를 수정하지 않습니다.
현재 가중치로 문장을 읽고 예측한다
문장 The movie was not good을 예로 들어 보겠습니다.
각 시간 단계에서 현재 입력 xₜ와 이전 Hidden State hₜ₋₁에
현재 가중치를 적용해 새 Hidden State hₜ를 계산합니다.
x₁Wₓₕx₁ + Wₕₕh₀h₁x₂Wₓₕx₂ + Wₕₕh₁h₂x₃Wₓₕx₃ + Wₕₕh₂h₃x₄Wₓₕx₄ + Wₕₕh₃h₄x₅Wₓₕx₅ + Wₕₕh₄h₅h₅
Wₕᵧh₅ + bᵧ
예측이 맞았는지 확인한다
모델의 예측
현재 Weight로 계산한 결과
실제 정답
학습 데이터의 정답
손실(Loss)은 무엇을 알려 줄까?
왜 마지막 가중치만 수정하면 안 될까?
good만 보면
긍정적인 단어이므로 모델이 긍정으로 예측한 이유를 설명할 수 있습니다.
not good을 함께 보면
문제는 not을 처리한 앞쪽 계산에서 시작되었을 수 있습니다.
잘못된 예측의 원인이 출력 가중치에만 있는 것은 아닙니다.
입력 가중치 Wₓₕ와 순환 가중치 Wₕₕ가
부정 정보를 충분히 유지하지 못했을 수도 있습니다.
시간을 거슬러 기울기를 계산한다
마지막 출력에서 계산된 손실을 기준으로
h₅ → h₄ → h₃ → h₂ → h₁의 순서로 계산을 거슬러 올라갑니다.
이때 각 Hidden State와 Weight를 조금 바꾸었을 때
최종 손실이 얼마나 달라지는지를 나타내는 기울기(Gradient)를 계산합니다.
Loss = 1.27
∂L / ∂h₁
∂L / ∂h₂
∂L / ∂h₃
∂L / ∂h₄
∂L / ∂h₅
기울기를 이용해 가중치를 수정한다
기울기는 Weight를 조금 바꿨을 때 Loss가 어느 방향으로 변하는지를 알려 줍니다. 옵티마이저는 이 정보를 이용해 Loss가 줄어드는 방향으로 Weight를 조금씩 수정합니다.
RNN 학습 과정을 단계별로 확인하기
순전파
손실 계산
BPTT
Weight 갱신
한 번의 수정으로 학습이 끝나지는 않는다
학습 과정에서 자주 생기는 오해
Embedding Table도 함께 학습될 수 있는가?
Wₓₕ, Wₕₕ, Wₕᵧ에 초점을 맞췄습니다.
Hidden State는 언제까지 유지되는가?
문장이 길어지면 학습 신호는 어떻게 될까?
BPTT는 마지막 출력의 손실을 앞쪽 시간 단계까지 전달합니다. 그러나 문장이 길어질수록 기울기가 여러 단계를 통과하면서 지나치게 작아지거나 커질 수 있습니다.
학습 내용 정리
- Hidden State는 문장을 처리하는 동안 계산되는 중간 결과입니다.
- 실제로 학습되는 것은 Weight와 Bias 같은 모델 파라미터입니다.
- RNN의 핵심 Weight는
Wₓₕ,Wₕₕ,Wₕᵧ입니다. - 순전파는 현재 Weight로 입력을 처리하고 예측 결과를 만드는 과정입니다.
- 순전파 중에는 Weight가 수정되지 않습니다.
- Loss는 예측과 정답의 차이를 나타내며 Weight 수정의 기준이 됩니다.
- BPTT는 출력 손실을 앞쪽 시간 단계로 전달해 기울기를 계산합니다.
- 옵티마이저는 기울기를 이용해 Loss가 줄어드는 방향으로 Weight를 조금씩 수정합니다.
- 이 과정을 많은 데이터에 반복하면서 RNN의 예측 성능이 향상됩니다.