이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 대규모 훈련 — 거대한 모델을 효율적으로 → 최적화 심화 학습
폭발하는 그래디언트(exploding gradient)를 방지하고 학습률 스케줄링 전략을 구현합니다.
딥러닝 학습 도중 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의 게이트 메커니즘이 소실 문제를 완화하지만, 폭발은 여전히 발생할 수 있어요.
그래서 가장 직접적인 해결책이 바로 그래디언트 클리핑이에요.
그래디언트의 크기를 안전한 범위로 제한해서 폭발을 막는 거예요.
다음 슬라이드에서 클리핑이 정확히 어떻게 동작하는지 알아볼게요.
선생님: 그래디언트 폭발이 알엔엔에서 특히 심한 이유가 뭘까요?
학생: 시퀀스 길이가 곧 네트워크 깊이라서 같은 가중치 행렬을 T번 곱하니까요.
선생님: 맞아요! 고유값이 1.5인 행렬을 100번 곱하면 대략 얼마나 커지나요?
학생: 1.5의 100승이니까 약 4곱하기 10의 17승이요. 천문학적이에요.
선생님: 그렇죠. 그런데 고유값이 정확히 1이면 문제가 없을까요?
학생: 이론적으론 안정적이지만, 실제로는 학습 중 가중치가 계속 변하니까 고유값도 변해서 완벽히 유지하기 어려워요.