이런 분들이 찾고 있어요
이 레슨과 관련된 학습 키워드
코드를 읽고 설명하면, 합격합니다
이 레슨과 관련된 학습 키워드
대규모 훈련 — 거대한 모델을 효율적으로 → 최적화 심화 학습
폭발하는 그래디언트(exploding gradient)를 방지하고 학습률 스케줄링 전략을 구현합니다.
그래디언트 폭발이란?
역전파(backpropagation) 과정에서 체인룰에 의해 그래디언트가 레이어를 거슬러 올라갑니다. 각 레이어에서 가중치 행렬 W를 곱하게 되는데, 이 행렬의 최대 고유값(λ_max)이 1보다 크면 그래디언트 크기가 기하급수적으로 증가합니다.
왜 RNN에서 특히 심각한가?
RNN은 시퀀스 길이 T만큼 동일한 가중치 행렬을 반복 적용합니다. λ_max = 1.5인 행렬을 100번 곱하면 약 4×10¹⁷으로 폭발합니다. CNN이나 일반 MLP와 달리, RNN의 "깊이"는 입력 시퀀스 길이에 비례하므로 통제가 어렵습니다.
폭발 vs 소실: 동전의 양면
실전에서의 증상
해결 접근법
그래디언트 폭발을 방지하는 가장 직접적인 방법이 Gradient Clipping입니다. 그래디언트의 노름이 임계값을 초과하면 크기를 줄여서 안전한 범위로 제한합니다. LSTM/GRU의 게이트 메커니즘도 이 문제를 완화하지만, 클리핑은 아키텍처와 무관하게 적용할 수 있는 범용적 해법입니다.
그림을 보세요. 딥러닝 학습 도중 loss가 갑자기 NaN으로 변해본 적 있나요?
이게 바로 그래디언트 폭발이에요.
그림 왼쪽을 보세요. 정상적인 그래디언트 흐름에서는 레이어를 거슬러 올라갈수록 값이 점차 줄어들어요.
체인룰에 의해 각 레이어에서 가중치 행렬을 곱하는데, 고유값이 1보다 작으면 안정적으로 감소하죠.
레이어 5에서 1.0이던 그래디언트가 레이어 1에서는 0.25 정도로 줄어들어요.
이제 오른쪽 빨간 영역을 보세요.
고유값이 1.5로 1보다 크면 상황이 완전히 달라져요.
레이어 5에서 1.0이던 그래디언트가 레이어 4에서 5, 레이어 3에서 26으로 폭발적으로 커지죠.
레이어 1에 도달하면 무려 759배까지 증폭돼요. 이게 그래디언트 폭발이에요.
가운데 수식 박스를 보면, 이 폭발의 원인이 명확해요.
역전파의 체인룰은 가중치 행렬을 연속으로 곱하는 구조예요.
고유값 1.5를 10번 곱하면 57.7배, 100번 곱하면 4곱하기 10의 17승이에요.
특히 알엔엔에서 치명적인데, 시퀀스 길이가 곧 네트워크 깊이이기 때문이에요.
문장 길이가 100이면 같은 가중치 행렬을 100번 곱하는 셈이죠.
실전에서 이 문제가 발생하면 loss가 갑자기 NaN으로 바뀌거나 가중치가 무한대로 발산해요.
그래디언트 노름이 천 이상으로 치솟으면 학습이 완전히 망가진 거예요.
반대로 고유값이 1보다 작으면 그래디언트 소실이 발생해요.
초기 레이어가 거의 학습되지 않아서 loss가 정체 상태에 빠지죠.
LSTM이나 GRU의 게이트 메커니즘이 소실 문제를 완화하지만, 폭발은 여전히 발생할 수 있어요.
그래서 가장 직접적인 해결책이 바로 그래디언트 클리핑이에요.
그래디언트의 크기를 안전한 범위로 제한해서 폭발을 막는 거예요.
다음 슬라이드에서 클리핑이 정확히 어떻게 동작하는지 알아볼게요.