Softmax
기본 개념
임의의 실수 벡터를 확률 분포 벡터로 변환해 주는 함수이다.
수학적 정의
Softmax 함수는 $n$개의 임의의 실수를 입력받아, 각각의 값을 0과 1 사이의 값으로 변환하며 그 총합이 1이 되도록 만든다.
\[p_i = \frac{e^{z_i}}{\sum_{j} e^{z_j}}\]- $z$: 신경망의 마지막 층을 통과한 출력값 벡터 (Logit)
- $p_i$: $i$번째 클래스에 속할 확률
- $e$: 자연상수 (약 2.718)
사용 예시
모델의 출력값 $z = [2.0, 1.0, -1.5]$ (순서대로 고양이, 강아지, 새)라고 가정할 때, 다음 두 단계를 거친다.
1. 지수화
입력된 모든 값을 양수로 변환을 하여 확률의 기본 조건을 만족시키기 위해 자연상수 e를 밑으로 하는 지수를 취한다.
- $e^{2.0} \approx 7.39$
- $e^{1.0} \approx 2.72$
- $e^{-1.5} \approx 0.22$
2. 정규화
구한 지수값을 정규화 한다.(모든 값을 더했을 경우 1이 나오도록 한다.)
- 총합 = $7.39 + 2.72 + 0.22 = 10.33$
- 고양이: $7.39 / 10.33 \approx 0.71$ (71%)
- 강아지: $2.72 / 10.33 \approx 0.26$ (26%)
- 새: $0.22 / 10.33 \approx 0.02$ (2%)
Softmax에서 자연상수 $e$를 쓰는 이유
- 지수 함수는 입력값이 조금만 커져도 결괏값이 기하급수적으로 커진다. 정답일 확률이 높은(가장 큰) 값의 비중을 높여 확실한 예측을 돕는다.
- 단순히 가장 높은 값만 1(100%)로 만들고 나머지를 0으로 버리는 Argmax와 달리, 에게도 0은 아닌 작고 ‘부드러운(Soft)’ 확률을 남겨준다. 이는 딥러닝 학습 시 필수적인 역전파(Backpropagation) 과정에서 미분이 가능하게 만들어 준다.
은닉층에서 소프트맥스를 사용하지 않는 이유
1. 노드 간의 간섭
은닉층의 역할은 각 노드가 데이터로부터 다양한 특징을 독립적으로 추출하는 것이다. 소프트맥스를 은닉층에서 활성화함수로 사용하는 경우는 정규화과정을 거치기 때문에 한 노드의 값이 거지면 다른 노드의 값은 강제로 작아져야 한다. 이는 노드들이 각자의 특징을 학습하는데 방해가 된다.
2. 기울기 소실
소프트맥스를 통과한 값은 무조건 0과 1 사이로 압축된다. 여러 은닉층을 거치며 이 함수를 반복해서 통과하면 역전파(Backpropagation) 시 미분값이 계속 곱해지면서 기울기가 0으로 사라져 버린다. 결국 가중치 업데이트가 멈춰 모델이 학습되지 않는 문제가 발생한다.
| 위치 | 주로 사용하는 활성화 함수 | 핵심 역할 |
|---|---|---|
| 은닉층 (중간) | ReLU, GELU 등 | 연산이 빠르고 독립적인 비선형 특징 추출 |
| 출력층 (최종) | Softmax | 다중 클래스 분류를 위한 최종 확률 분포 산출 |
Leave a comment