폭발적인 기울기는 심층 신경망(NN), 특히 순환 신경망(RNN)과 매우 심층적인 아키텍처를 훈련하는 동안 흔히 발생하는 문제입니다. 경사 하강과 같은 최적화 알고리즘이 모델 가중치를 업데이트하는 데 사용하는 신호인 경사도가 역전파 중에 기하급수적으로 커질 때 발생합니다. 이렇게 지나치게 큰 기울기는 손실 함수를 최소화하여 모델을 더 나은 성능으로 유도하는 대신 가중치를 급격하게 업데이트하여 불안정한 학습과 모델 수렴 불량으로 이어집니다. 민감한 다이얼을 미세하게 조정하려고 하는데 손이 계속 심하게 흔들린다고 상상해 보세요. 이는 폭발적인 그라데이션이 학습 과정에 미치는 영향과 비슷합니다.
그라데이션이 폭발하는 원인
폭발적인 그라데이션 문제에는 여러 가지 요인이 있을 수 있습니다:
- 딥 네트워크 아키텍처: 레이어가 많은 네트워크에서는 역전파 과정에서 그라데이션이 반복적으로 곱해집니다. 이러한 그라디언트의 크기가 지속적으로 1보다 크면 그 곱이 기하급수적으로 증가하여 폭발적으로 커질 수 있습니다. 이는 긴 시퀀스를 처리하는 RNN에서 특히 많이 발생합니다.
- 가중치 초기화: 가중치를 잘못 초기화하면 그라데이션이 큰 값에서 시작되어 폭발할 가능성이 높아질 수 있습니다.
- 활성화 함수: 특정 활성화 함수는 네트워크 아키텍처 및 초기화와 관련하여 신중하게 선택하지 않으면 더 큰 그라데이션 값에 기여할 수 있습니다.
- 높은 학습률: 학습 속도가 크다는 것은 가중치를 업데이트하는 동안 더 큰 단계가 수행된다는 것을 의미합니다. 그라데이션이 이미 큰 경우 학습 속도가 높으면 업데이트가 증폭되어 불안정성과 그라데이션 폭발을 일으킬 수 있습니다. 따라서 하이퍼파라미터를 적절히 조정하는 것이 중요합니다.
결과 및 탐지
폭발하는 그라데이션은 몇 가지 문제가 되는 방식으로 나타납니다:
- 불안정한 훈련: 모델의 성능이 업데이트마다 큰 폭으로 변동하여 수렴하지 못합니다.
- 대규모 가중치 업데이트: 모델 가중치가 크게 변경되어 이전 학습이 취소될 수 있습니다.
- NaN 손실: 매우 큰 값으로 인해 숫자 오버플로가 발생하면 손실 함수가 NaN(Not a Number)이 되어 학습 프로세스가 완전히 중단될 수 있습니다. 수치 안정성이 중요한 문제가 됩니다.
- 수렴의 어려움: 모델이 손실을 효과적으로 최소화하는 좋은 매개변수 집합을 찾는 데 어려움을 겪습니다.
폭발하는 그래디언트를 감지하려면 손실 함수의 갑작스러운 급증을 관찰하거나, 그래디언트의 크기(그래디언트 표준)를 확인하거나, 매우 큰 가중치 값을 발견하는 등 훈련 과정을 모니터링해야 하는 경우가 많습니다. 이러한 메트릭을 시각화하는 데는 TensorBoard와 같은 도구가 유용할 수 있습니다.
완화 기술
다행히도 몇 가지 기술을 통해 그라데이션 폭발을 효과적으로 방지하거나 완화할 수 있습니다:
- 그라데이션 클리핑: 가장 일반적인 솔루션입니다. 그라데이션의 크기(표준)에 대해 미리 정의된 임계값을 설정하는 것이 포함됩니다. 역전파 중에 그라데이션 노름이 이 임계값을 초과하면 임계값에 맞게 축소되어 지나치게 커지는 것을 방지합니다. PyTorch 쉽게 구현할 수 있는 유틸리티를 제공합니다.
- 가중치 정규화: L1 또는 L2 정규화와 같은 기술은 가중치의 크기에 따라 손실 함수에 페널티를 추가하여 가중치가 너무 커지는 것을 방지합니다.
- 배치 정규화: 배치 정규화: 배치 정규화는 네트워크 내 레이어에 대한 입력을 정규화하여 활성화 및 그라데이션의 분포를 안정화하여 폭발 가능성을 줄입니다.
- 적절한 웨이트 초기화: 자비에/글로트 초기 화 또는 히 초기화와 같이 확립된 초기화 방식을 사용하면 처음부터 그래디언트를 합리적인 범위로 유지하는 데 도움이 될 수 있습니다.
- 학습 속도 조정하기: 학습 속도를 낮추면 가중치 업데이트의 크기를 줄일 수 있어 학습이 더 안정적으로 이루어질 수 있습니다. 학습 속도 스케줄링과 같은 기술도 유용합니다.
- 아키텍처 선택: 그라데이션 문제가 발생하기 쉬운 RNN의 경우, 그라데이션 흐름을 제어하는 내부 메커니즘이 있는 LSTM(장단기 메모리) 또는 GRU(게이트 반복 유닛) 와 같은 아키텍처를 사용하는 것이 도움이 될 수 있습니다. 딥 CNN의 경우, 잔여 네트워크(ResNet) 와 같은 아키텍처는 스킵 연결을 사용하여 그라데이션 흐름을 용이하게 합니다.
실제 사례
- 기계 번역: 기계 번역을 위한 RNN 또는 트랜스포머 훈련에는 잠재적으로 긴 문장을 처리하는 작업이 포함됩니다. 그라데이션 클리핑과 같은 기술이나 LSTM과 같은 아키텍처가 없으면 여러 시간 단계에 걸쳐 오류를 역전파할 때 그라데이션이 폭발적으로 증가하여 텍스트의 장거리 종속성을 학습할 수 없게 됩니다.
- 딥 이미지 인식: 이미지넷과 같은 대규모 데이터 세트에서 복잡한 이미지 인식 작업을 위해 매우 심층적인 컨볼루션 신경망(CNN)을 훈련 할 때, 특히 초기화나 학습 속도를 주의 깊게 관리하지 않으면 기울기가 폭발적으로 증가하여 문제가 발생할 수 있습니다. 일괄 정규화 및 잔여 연결과 같은 기술은 다음과 같은 모델에서 표준으로 사용됩니다. Ultralytics YOLO 와 같은 모델에서는 학습 중에 안정적인 그라데이션 흐름을 보장하기 위해 표준으로 사용됩니다.
폭발하는 그라데이션과 사라지는 그라데이션
폭발하는 그래디언트는 종종 소실되는 그래디언트와 함께 논의됩니다. 두 가지 모두 역전파 중에 그라디언트 흐름을 방해하여 딥 네트워크의 학습을 방해하지만, 서로 반대되는 현상입니다:
- 폭발하는 그라데이션: 그라데이션이 제어할 수 없을 정도로 커져 불안정한 업데이트와 발산으로 이어집니다.
- 사라지는 그라데이션: 그라데이션이 기하급수적으로 작게 축소되어 이전 레이어의 가중치 업데이트를 효과적으로 방지하고 학습 과정을 지연시킵니다.
이러한 기울기 문제를 해결하는 것은 최신 인공지능(AI)에 사용되는 강력하고 심층적인 모델을 성공적으로 훈련하는 데 필수적이며, 여기에는 Ultralytics HUB와 같은 플랫폼을 사용하여 개발 및 훈련된 모델도 포함됩니다. 더 많은 모델 훈련 팁은 설명서에서 확인할 수 있습니다.