본문 바로가기

02. 딥러닝

00002. 🚀 Sigmoid 함수를 쓰면 왜 기울기 소실(Gradient Vanishing)이 발생할까?

반응형

👋 안녕하세요! 오늘은 신경망에서 Sigmoid 함수를 사용할 때 기울기 소실(Gradient Vanishing) 문제가 왜 발생하는지에 대해 쉽고 재미있게 알아보겠습니다! 🧠✨


🎯 Sigmoid 함수, 너의 정체는?

Sigmoid 함수는 뉴런을 활성화(ON/OFF) 시키는 함수로, 아래와 같은 수식을 가지고 있습니다.

이 함수는 입력값 xx가 클수록 1에 가깝고, 작을수록 0에 가까워지는 특징을 가지고 있어요.
아래 그래프를 보면 더 이해하기 쉬워요! 👇

📈 Sigmoid 함수 그래프

  • 가운데 부분에서는 부드럽게 변화하지만,
  • 너무 큰 값이나 작은 값에서는 거의 변화가 없는 걸 볼 수 있어요!

⚠️ Sigmoid의 치명적인 문제: 기울기 소실(Gradient Vanishing)

🚧 1. Sigmoid의 미분값이 너무 작아져요!

신경망을 학습시키려면 **미분값(기울기, Gradient)**이 필요해요.
Sigmoid 함수를 미분하면 아래처럼 됩니다.

 

이 미분값을 살펴보면, 항상 0보다 크고 최대값이 0.25예요.
즉, 아무리 커도 0.25 이상 커질 수가 없어요! 😵

🔎 특히, xx가 너무 크거나 작으면?

 

즉, 미분값이 거의 0에 가까워지는 문제가 발생해요.


🏗️ 2. 역전파에서 기울기가 점점 사라져요!

딥러닝에서는 역전파(Backpropagation)로 가중치를 업데이트하는데요,
여러 층을 거칠수록 미분값이 계속 곱해집니다.

 

Sigmoid를 쓰면 모든 층에서 최대 0.25가 곱해지니까,
층이 많아질수록 기울기가 거의 0에 수렴하는 문제가 발생해요! 😨

이걸 기울기 소실(Gradient Vanishing) 문제라고 해요! 🚨

❌ 기울기가 0에 가까워지면?

  • 초기 층(입력층 쪽)은 학습이 거의 안 됨
  • 가중치 업데이트가 느려지고, 모델이 제대로 학습되지 않음

💡 그럼 어떻게 해결할까요?

Sigmoid 함수의 단점을 극복하기 위해 여러 가지 대안이 등장했어요!

ReLU (Rectified Linear Unit) 함수

  • 음수는 0, 양수는 그대로 출력!
  • 미분값이 0 또는 1이어서 기울기 소실 문제를 줄일 수 있음

Leaky ReLU

  • ReLU의 단점(음수에서 0이 되는 문제)을 해결한 버전

Batch Normalization

  • 입력값을 정규화해서 기울기 소실을 방지

🎯 정리!

Sigmoid의 문제점

  • 미분값이 최대 0.25로 작음
  • 입력값이 너무 크거나 작으면 미분값이 거의 0
  • 깊은 신경망에서는 기울기가 사라짐 → 학습이 제대로 안 됨

해결책

  • ReLU, Leaky ReLU 같은 더 좋은 활성화 함수 사용
  • Batch Normalization 적용

💡 앞으로 딥러닝을 구현할 때는 Sigmoid 대신 ReLU 같은 함수를 사용하는 게 더 좋겠죠? 😉

반응형