본문 바로가기

컴퓨터 과학/인공지능

시그모이드함수(Sigmoid Function)을 파헤쳐 보자

반응형

💡 Sigmoid 함수란?

Sigmoid 함수는 이런 모양의 함수야:

Sigmoid(x)=11+e−x\text{Sigmoid}(x) = \frac{1}{1 + e^{-x}}

이걸 그래프로 그리면:

  • 입력값 xx작을수록 0에 가까운 값
  • 입력값 xx클수록 1에 가까운 값
  • 가운데는 부드럽게 0.5를 지나감

🤔 왜 이런 함수를 쓰지?

1. 확률처럼 보이게 만들고 싶어서!

신경망이 어떤 결과를 내놓을 때,
“이게 맞을 확률이 몇 퍼센트일까?” 라고 생각하고 싶을 때가 있어.

예를 들어,

“이 사진이 고양이일 확률이 몇 %일까?”

이럴 때 Sigmoid 함수는 숫자를 0에서 1 사이로 바꿔줘서
확률처럼 사용할 수 있어!


2. 이진 분류 문제에서 딱 좋아!

Sigmoid는 주로 참(True)/거짓(False) 처럼 두 개 중 하나를 고르는 문제에서 써.

예시:

  • 메일이 스팸인지 아닌지
  • 병이 있는지 없는지
  • 사진이 강아지인지 고양이인지

이럴 때 마지막 출력층에 Sigmoid를 써서
“이게 맞다고 생각해? 어느 정도로?”를 표현할 수 있는 거야.


🎯 비유해서 쉽게 말하면…

Sigmoid 함수는 의심 많은 친구 같아.
어떤 걸 보더라도 “확신은 없지만… 아마 80% 정도는 맞는 것 같아”
이런 식으로 부드럽게 말해주는 거지!


📌 요약

이유설명
확률처럼 쓰고 싶어서 결과를 0~1로 바꿔줌 (확률처럼 해석 가능)
이진 분류 문제에 딱 맞다/틀리다 문제에서 확률 기반 판단 가능
부드럽게 처리 갑자기 0→1로 튀지 않고 천천히 바뀌는 게 학습에 도움

 

그럼 추가로 Sigmoid 함수가 실제로 어디에 쓰이고, 어떤 경우에 쓰이는지 아주 쉽게 정리해줄게!


Sigmoid가 사용되는 대표적인 모델들

사용 모델사용 위치설명
로지스틱 회귀 (Logistic Regression) 출력층 대표적인 이진 분류 모델에서 결과를 확률로 표현
신경망 (Neural Network) 출력층 (이진 분류) 마지막 출력값을 0~1 사이로 바꿔 참/거짓 확률로 만듦
GAN (생성적 적대 신경망) 판별자(Discriminator)의 출력 진짜 이미지인지 가짜 이미지인지 확률로 예측
RNN (순환 신경망) 셀 내부 (게이트) 셀 내부의 정보 흐름을 조절(gate) 하기 위해 부드러운 0~1 값 사용

🎯 Sigmoid가 사용되는 상황

1. ✅ 이진 분류 문제일 때

  • 정답이 두 가지 중 하나일 때
  • 예시:
    • 이메일이 스팸인지 아닌지
    • 암 진단 결과가 양성인지 아닌지
    • 고양이 사진인지 아닌지

→ 마지막에 Sigmoid를 써서 "맞을 확률"로 출력!


2. ✅ 확률을 출력해야 할 때

  • 어떤 예측 결과가 얼마나 확신 있는지 알고 싶을 때
  • 출력값이 0~1 사이가 되니까 확률처럼 해석 가능

3. ✅ 정보를 부드럽게 통제하고 싶을 때

  • RNN이나 LSTM 같은 구조에서는 내부적으로 정보를 “얼마나 전달할지” 조절해야 함
  • 여기서 0이면 안 보냄, 1이면 다 보냄 → 그 중간도 조절하려면 부드러운 함수가 필요 → sigmoid!

🧠 Sigmoid가 잘 안 쓰이는 경우도 있어?

응! 은닉층(hidden layer) 에서는 ReLU 함수를 더 많이 써.
왜냐하면 Sigmoid는 학습 속도가 느려지는 단점이 있어서!


🔚 정리하자면

상황Sigmoid를 쓰는 이유
이진 분류 결과를 확률처럼 0~1로 표현하기 위해
출력층에서 확률 예측 "참일 확률이 몇 %?" 를 보여주기 위해
게이트(정보 흐름 제어) 정보를 얼마나 전달할지 부드럽게 조절하기 위해

 

그럼 이를 대체할수 있는 함수들은 뭐가있을까? 

 

 

Sigmoid 함수의 대체 함수들도 상황에 따라 더 잘 작동하기 때문에 종종 사용돼.
아래에 대표적인 예시들과 각각이 어떤 특징을 가지는지 쉽게 정리해줄게!


🧩 Sigmoid를 대체할 수 있는 함수들

함수 이름그래프 형태특징사용되는 상황
ReLU (Rectified Linear Unit) ↗ (0 이하는 0, 0 초과는 그대로) 계산 간단하고 빠름, 기울기 사라지지 않음 은닉층에서 가장 많이 사용됨
Tanh (Hyperbolic Tangent) S자 곡선 (−1 ~ +1) Sigmoid보다 중심이 0이라 학습에 유리 출력이 -1~1일 때 적합
Softmax 여러 개 확률로 변환 다중 클래스 분류(3개 이상 정답 중 선택) 마지막 출력층 (다중 분류 문제)
Swish x × sigmoid(x) ReLU보다 부드럽고 성능 좋다고 알려짐 일부 최신 모델에서 사용
Mish x × tanh(softplus(x)) 부드럽고 성능 좋지만 느림 고성능 추구할 때 실험적으로

📊 간단 비교 예시

함수출력 범위중심장점단점
Sigmoid (0, 1) 0 아님 확률처럼 해석 기울기 사라짐 (Vanishing Gradient)
Tanh (−1, 1) 0 중심이 0 → 학습에 도움 여전히 기울기 사라질 수 있음
ReLU [0, ∞) 0 이상 빠르고 단순 음수는 무시됨 (죽은 뉴런 문제)
Softmax (0, 1), 합은 1 없음 여러 클래스 중 확률 예측 가능 다중 분류만 가능
Swish/Mish 실수 전체 0 근처 부드럽고 성능 좋음 계산 복잡함

🎯 언제 어떤 걸 쓰면 될까?

상황추천 함수
이진 분류 (yes/no) Sigmoid
다중 분류 (3개 이상 클래스) Softmax
은닉층 (중간층) ReLU, Swish, Mish
출력이 -1 ~ 1이 더 자연스러운 경우 Tanh

 

그럼 

해당 함수들이 logistic회귀에서 대체가 가능해?

 

 

결론부터 말하면:

**로지스틱 회귀(Logistic Regression)**에서 Sigmoid는 다른 함수로 대체할 수 없어요 (거의 대부분의 경우에서).
Sigmoid는 핵심 그 자체!


🎯 왜 로지스틱 회귀에선 Sigmoid가 꼭 필요할까?

✅ 로지스틱 회귀의 목표

  • 단순 선형 조합을 통해 "이게 정답일 확률이 몇 %인지" 예측하는 거야.
  • 예를 들어:
  • python
    복사편집
    y = w·x + b # 선형 결합 p = sigmoid(y) # 확률로 바꿔줌
  • 이 확률 p가 0과 1 사이의 값이 되어야 하니까 → Sigmoid 필수.

💡 왜 다른 함수는 안 맞을까?

함수이유
ReLU 음수 값은 0, 양수는 무한대 → 확률처럼 쓸 수 없음 ❌
Tanh 출력이 -1~1 → 확률 해석 불가능 ❌
Softmax 다중 클래스에서는 가능하지만, 이진 분류에서는 오히려 복잡 ❌
Swish, Mish 부드러운 활성화지만 확률로 해석 어려움 ❌

✅ 정리하면!

모델출력 함수이유
로지스틱 회귀 (이진 분류) Sigmoid만 가능 결과를 0~1로 바꿔야 확률처럼 쓸 수 있기 때문
로지스틱 회귀 (다중 클래스) Softmax 각 클래스에 대한 확률을 동시에 출력해야 하기 때문

📌 예외적으로 비슷한 구조에 쓰이는 경우는?

  • 딥러닝에서는 Sigmoid 대신 TanhReLU를 은닉층에 사용하긴 해.
  • 하지만 출력층에서 확률이 필요하다면 무조건 Sigmoid (또는 Softmax)!

 

 

그럼 활성화 함수일때는 대체가 가능하지만 로지스틱 회귀처럼 특정 모델에 사용되는 경우에는 대체가 불가능하다는거야?

 

 

정확해! 👏
아주 잘 이해했어. 아래에 핵심을 표와 함께 깔끔하게 정리해줄게.


🔍 활성화 함수 vs 모델 출력 함수: 차이점과 대체 가능 여부

구분역할대표 예대체 가능성비고
은닉층의 활성화 함수 중간 계산 결과를 비선형으로 바꿔줌 → 학습 가능하게 함 ReLU, Tanh, Sigmoid, Swish 등 ✅ 가능 (상황에 따라 성능 비교하며 선택) ReLU가 기본, Swish 등은 성능 높일 때 사용
모델의 출력 함수 최종 결과를 해석 가능한 값으로 변환 (확률 등) Sigmoid, Softmax ❌ 특정 문제에서는 고정됨 문제 종류(이진/다중 분류)에 따라 필수적으로 정해짐

🎯 구체적인 예시로 보면?

모델 종류출력 함수왜 이게 필요할까?대체 가능성
이진 분류 (로지스틱 회귀) Sigmoid 결과를 확률 (0~1)로 해석해야 하니까
다중 분류 (Softmax 회귀, 딥러닝 분류기) Softmax 여러 클래스 중 어떤 것일 확률인지 계산해야 하니까
딥러닝 은닉층 ReLU, Tanh, Swish 등 계산의 비선형성 확보 (학습 가능하게 하기 위해)

💡 핵심 요약

🔹 "은닉층에서의 활성화 함수"교체 가능
🔹 "출력층에서의 함수"문제에 따라 정해짐, 교체 불가

반응형