1. Sigmoid 함수란 무엇인가
1.1 정의
Sigmoid 함수는 입력값을 0과 1 사이의 값으로 변환하는 비선형 함수이다.
주로 어떤 값이 “참일 확률”, “양성일 확률”, “특정 클래스일 가능성”처럼 하나의 확률값으로 해석되어야 할 때 사용된다.
수식은 다음과 같다.
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}여기서 xx는 모델이 출력한 실수값(logit)이다.
1.2 왜 사용하는가
신경망의 마지막 층은 보통 아무 제한 없는 실수값을 출력한다.
예를 들어 출력이 7.3일 수도 있고, -4.1일 수도 있다. 그런데 이것을 그대로 “확률”이라고 볼 수는 없다. 확률은 0 이상 1 이하여야 하기 때문이다.
Sigmoid는 이 실수값을 확률처럼 해석 가능한 0과 1 사이 값으로 바꿔준다.
즉,
- 매우 큰 양수 → 1에 가까운 값
- 매우 큰 음수 → 0에 가까운 값
- 0 → 0.5
가 된다.
1.3 출력값의 의미
Sigmoid의 출력은 다음과 같이 해석할 수 있다.
- 출력이 0.9이면, 해당 클래스가 맞을 가능성이 높다
- 출력이 0.1이면, 해당 클래스가 아닐 가능성이 높다
- 출력이 0.5이면, 확신이 낮다
예를 들어 이진 분류에서
- 암이다 / 아니다
- 스팸이다 / 아니다
- 고양이다 / 아니다
같은 문제에서 매우 자주 사용된다.
1.4 그래프적 특징
Sigmoid 함수는 S자 형태 곡선을 가진다.
특징은 다음과 같다.
첫째, 입력이 매우 크면 출력은 1에 가까워진다.
둘째, 입력이 매우 작으면 출력은 0에 가까워진다.
셋째, 입력이 0일 때 출력은 정확히 0.5이다.
즉, 중앙에서는 민감하게 변하지만 양 끝에서는 변화가 둔해진다.
1.5 장점
Sigmoid의 주요 장점은 다음과 같다.
- 출력이 확률처럼 해석 가능하다
- 이진 분류 문제에 적합하다
- 구조가 단순하고 직관적이다
1.6 한계
Sigmoid에도 한계가 있다.
첫째, 출력이 0이나 1 근처로 가면 기울기가 매우 작아진다.
즉, gradient vanishing 문제가 생길 수 있다.
둘째, 여러 클래스 중 하나를 고르는 문제에는 적합하지 않다.
왜냐하면 각 출력이 서로 독립적으로 계산되기 때문이다.
이 점이 softmax와의 핵심 차이로 이어진다.
2. Softmax 함수란 무엇인가
2.1 정의
Softmax 함수는 여러 개의 출력값을 받아서 전체 합이 1이 되는 확률 분포로 변환하는 함수이다.
수식은 다음과 같다.
softmax(zi)=ezi∑j=1Cezj\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{C} e^{z_j}}여기서
- ziz_i: i번째 클래스의 logit
- CC: 클래스 수
- 출력값: 각 클래스에 대한 확률
즉, 여러 클래스에 대한 점수를 받아서
“이 중 어느 클래스일 가능성이 얼마나 되는가”를 확률 분포로 바꿔준다.
2.2 왜 사용하는가
예를 들어 클래스가 3개라고 하자.
- 고양이
- 개
- 새
모델이 다음 점수를 출력했다고 하자.
[2.0,1.0,0.1][2.0, 1.0, 0.1]이 값들은 그냥 점수일 뿐 확률이 아니다.
Softmax를 적용하면 예를 들어 다음과 같은 값으로 바뀐다.
이제 각 값은 확률처럼 해석할 수 있고, 전체 합은 1이다.
즉, softmax는 “여러 후보 중 하나를 선택하는 문제”에 적합하다.
2.3 출력값의 의미
Softmax 출력은 각 클래스가 정답일 확률처럼 해석된다.
예를 들어
- 고양이: 0.70
- 개: 0.20
- 새: 0.10
이라면 모델은 고양이라고 가장 강하게 판단한 것이다.
중요한 점은 softmax의 각 출력이 서로 연결되어 있다는 점이다.
어떤 클래스의 확률이 올라가면 다른 클래스들의 확률은 내려가야 한다.
왜냐하면 전체 합이 항상 1이어야 하기 때문이다.
2.4 Softmax의 핵심 원리
Softmax는 각 점수에 지수 함수 exe^x를 적용한 뒤 전체 합으로 나눈다.
이 과정의 효과는 다음과 같다.
첫째, 큰 점수는 더 크게 강조된다.
둘째, 작은 점수는 상대적으로 더 작아진다.
셋째, 전체를 정규화하여 확률 분포가 된다.
즉, 클래스들 사이의 상대적 경쟁 구조를 만든다.
2.5 활용 분야
Softmax는 주로 다음 경우에 사용된다.
- 다중 클래스 분류
- 한 이미지가 여러 클래스 중 정확히 하나에 속하는 문제
- 다음 토큰 하나를 선택해야 하는 언어 모델 출력
- 기계 번역에서 vocabulary 중 다음 단어 선택
즉, “여러 선택지 중 하나를 선택”하는 문제에서 사용된다.
3. Sigmoid의 동작 방식 자세한 설명
Sigmoid는 입력 하나를 받아 출력 하나를 만든다.
예를 들어 모델이 어떤 샘플에 대해 logit 2를 출력하면,
σ(2)=11+e−2≈0.88\sigma(2) = \frac{1}{1+e^{-2}} \approx 0.88즉, 88% 정도의 확률처럼 해석할 수 있다.
반대로 logit이 -2이면,
σ(−2)≈0.12\sigma(-2) \approx 0.12즉, 해당 클래스일 가능성이 낮다고 본다.
이처럼 sigmoid는 하나의 값에 대한 독립적인 확률 계산에 적합하다.
4. Softmax의 동작 방식 자세한 설명
Softmax는 입력 벡터 전체를 보고 각 원소를 확률로 바꾼다.
예를 들어 logits가
[2.0,1.0,0.1][2.0, 1.0, 0.1]이면 각각에 지수 함수를 적용한다.
[e2,e1,e0.1]≈[7.39,2.72,1.11][e^2, e^1, e^{0.1}] \approx [7.39, 2.72, 1.11]이 합은 약 11.22이다.
따라서 softmax 결과는
[7.39/11.22, 2.72/11.22, 1.11/11.22]≈[0.659, 0.242, 0.099][7.39/11.22,\; 2.72/11.22,\; 1.11/11.22] \approx [0.659,\; 0.242,\; 0.099]이 된다.
즉, softmax는 개별 출력 하나만 보는 것이 아니라
전체 출력들을 동시에 고려하여 확률을 만든다.
5. Sigmoid와 Softmax의 가장 본질적인 차이
이제 핵심 차이로 들어가면 다음과 같다.
Sigmoid는 각 출력이 서로 독립적이다.
Softmax는 각 출력이 서로 경쟁적이다.
이 차이를 정확히 이해하는 것이 중요하다.
예를 들어 3개의 클래스가 있을 때 sigmoid를 각각 적용하면
- 클래스 A: 0.8
- 클래스 B: 0.7
- 클래스 C: 0.9
처럼 모두 높게 나올 수도 있다.
왜냐하면 각각이 독립적으로 계산되기 때문이다.
반면 softmax는
- 클래스 A: 0.8
- 클래스 B: 0.1
- 클래스 C: 0.1
처럼 합이 1이 되도록 조정된다.
즉, 하나가 커지면 다른 것들은 작아진다.
6. 언제 sigmoid를 쓰고 언제 softmax를 쓰는가
6.1 Sigmoid를 쓰는 경우
Sigmoid는 주로 이진 분류 또는 다중 라벨 분류에 사용된다.
이진 분류 예
- 이 이메일이 스팸인가?
- 이 환자가 질병이 있는가?
- 이 사진에 고양이가 있는가?
이 경우 정답은 하나의 yes/no 판단이다.
다중 라벨 분류 예
한 이미지에 대해
- 사람 있음
- 자동차 있음
- 나무 있음
이 세 개가 동시에 모두 참일 수 있다.
즉, 각 클래스가 서로 배타적이지 않다.
이때는 각 클래스별로 sigmoid를 적용한다.
6.2 Softmax를 쓰는 경우
Softmax는 다중 클래스 분류에 사용된다.
예:
- 숫자 0~9 중 하나 분류
- 동물 종류 하나 분류
- 문장의 감정이 긍정/중립/부정 중 하나
이 경우 정답은 여러 클래스 중 정확히 하나이다.
즉, 클래스들이 상호배타적(mutually exclusive)일 때 softmax가 적합하다.
7. 차이를 표준 개념으로 정리
7.1 입력과 출력 관점
Sigmoid는 하나의 logit을 하나의 확률로 바꾼다.
Softmax는 여러 logits를 전체 확률 분포로 바꾼다.
7.2 확률 합 관점
Sigmoid의 출력들은 서로 독립이므로 합이 1일 필요가 없다.
Softmax의 출력들은 전체 합이 반드시 1이다.
7.3 클래스 관계 관점
Sigmoid는 클래스 간 경쟁이 없다.
Softmax는 클래스 간 경쟁이 있다.
7.4 문제 유형 관점
Sigmoid는 이진 분류, 다중 라벨 분류에 적합하다.
Softmax는 다중 클래스 분류에 적합하다.
8. Loss 함수와의 연결
이 두 함수는 loss와 함께 이해해야 더 정확하다.
8.1 Sigmoid와 BCE
Sigmoid는 보통 Binary Cross Entropy와 함께 사용된다.
L=−(ylog(p)+(1−y)log(1−p))L = - \left( y\log(p) + (1-y)\log(1-p) \right)여기서 pp는 sigmoid 출력이다.
8.2 Softmax와 Cross Entropy
Softmax는 보통 다중 클래스 Cross Entropy와 함께 사용된다.
L=−∑i=1Cyilog(y^i)L = - \sum_{i=1}^{C} y_i \log(\hat{y}_i)여기서 y^i\hat{y}_i는 softmax 출력이다.
9. 직관적 예시
9.1 Sigmoid 예시
문제: “이 사진에 고양이가 있는가?”
출력 logit이 3이라면 sigmoid 결과는 약 0.95이다.
즉, 고양이가 있을 가능성이 매우 높다고 본다.
여기서는 다른 클래스와 경쟁할 필요가 없다.
그냥 고양이 여부 하나만 판단하면 된다.
9.2 Softmax 예시
문제: “이 사진은 고양이, 개, 새 중 무엇인가?”
출력 logits가 [3,1,0.2][3, 1, 0.2]라면 softmax 결과는 예를 들어
- 고양이: 0.84
- 개: 0.11
- 새: 0.05
처럼 나온다.
여기서는 셋 중 하나를 골라야 하므로 경쟁 구조가 필요하다.
10. 실무에서 자주 하는 실수
첫째, 다중 라벨 문제에 softmax를 쓰는 실수이다.
예를 들어 한 이미지에 사람과 자동차가 동시에 있을 수 있는데 softmax를 쓰면 둘 중 하나만 선택하게 되어 잘못된다.
둘째, 다중 클래스 문제에 sigmoid를 쓰는 실수이다.
이 경우 여러 클래스가 동시에 높게 나와 불안정한 예측이 될 수 있다.
셋째, loss 함수와 activation을 잘못 짝짓는 실수이다.
sigmoid는 BCE 계열, softmax는 CE 계열과 연결된다는 점을 기억해야 한다.
11. 한눈에 보는 핵심 차이
가장 핵심만 압축하면 다음과 같다.
Sigmoid는
“이 클래스가 맞는가?”를 각 클래스별로 독립적으로 판단한다.
Softmax는
“여러 클래스 중 어느 하나가 가장 맞는가?”를 전체적으로 경쟁시켜 판단한다.
12. 최종 정리
Sigmoid 함수는 하나의 입력값을 0과 1 사이의 값으로 바꾸는 함수이며, 주로 이진 분류나 다중 라벨 분류에서 사용된다. 각 출력은 서로 독립적이므로 여러 클래스가 동시에 높은 확률을 가질 수 있다.
Softmax 함수는 여러 입력값을 전체 합이 1이 되는 확률 분포로 변환하는 함수이며, 주로 다중 클래스 분류에서 사용된다. 각 클래스는 서로 경쟁 관계에 있으므로 하나의 클래스 확률이 높아지면 다른 클래스 확률은 낮아진다.
따라서 두 함수의 가장 본질적인 차이는 다음과 같다.
Sigmoid는 독립적 확률 계산, Softmax는 상대적 경쟁 기반 확률 분포 계산이다.
원하면 다음 단계로 이어서, sigmoid와 softmax를 그래프와 숫자 예제로 비교하거나, BCE와 Cross Entropy까지 연결해서 설명하겠다.
'AL,ML 학부연구생 > 공부 기록' 카테고리의 다른 글
| AI나 인공지능을 '학습한다'라는 것은 어떤것을 의미할까? (0) | 2026.03.23 |
|---|---|
| LoRa (Low-Rank Adaptation)란 무엇인가? (0) | 2026.03.23 |
| Cross Entropy 란 무엇인가? (0) | 2026.03.23 |
| BERT 와 GPT 는 무엇이고, 어떻게 활용될까? (0) | 2026.03.23 |
| RNN(Recurrent Neural Network)는 무엇이고, FNN과 어떻게 다른가? (0) | 2026.03.23 |