소프트맥스(Softmax) 함수는 머신러닝과 딥러닝에서 많이 사용되는 활성화 함수 중 하나입니다. 보통 여러 클래스에 대한 확률 분포를 계산하는 데 사용됩니다. 주로 분류 문제에서 마지막 출력층에서 사용되며, 주어진 입력 벡터의 각 요소를 0에서 1 사이의 확률 값으로 변환하고, 이 값들의 합이 1이 되도록 만듭니다.
소프트맥스(Softmax) 함수는 활성화 함수 중 하나로, 여러 클래스에 대한 확률 분포를 계산하는 데 사용됩니다. 주로 분류 문제에서 마지막 출력층에서 사용되며, 주어진 입력 벡터의 각 요소를 0에서 1 사이의 확률 값으로 변환하고, 이 값들의 합이 1이 되도록 만듭니다.
1. softmax 함수의 정의
이 함수는 모든 입력값에 대해 지수 함수를 적용한 후, 그 값들이 전체에서 차지하는 비율을 계산합니다. 각 요소들은 0에서 1사이의 확률 값으로 변환하고 이 확률 값의 합은 1로 됩니다.
수학적으로 정의하면 다음과 같습니다.
여기서,
- z_i는 입력 벡터 zz의 i번째 원소를 의미합니다.
- e^{z_i}는 지수 함수로, z_i에 대해 자연 상수 e의 지수를 취한 값입니다.
- 분모는 모든 입력값에 대해 지수 함수를 적용한 값들의 합입니다.
2. 주요 특징
1) 확률 분포 생성
소프트맥스 함수는 입력값들을 확률값으로 변환하여, 모든 클래스에 대한 확률의 합이 1이 되도록 만듭니다. 각 출력값은 해당 클래스에 속할 확률로 해석됩니다.
2) 입력 값 차이에 민감
지수 함수를 사용하기 때문에 입력값 간의 차이가 클수록 확률의 차이도 커지며, 특정 클래스의 확률이 크게 증가합니다. 이는 입니다.
3) 다중 클래스 분류 문제에 자주 사용
신경망 모델의 마지막 층에서 사용되어 각 클래스에 대한 확률을 계산하고, 가장 높은 확률을 갖는 클래스를 예측값으로 선택하게 됩니다.
4) 확률의 합은 항상 1
소프트맥스 함수의 결과로 얻어지는 확률값들은 언제나 0과 1 사이의 값을 가지며, 모든 출력 확률의 합은 항상 1이 됩니다. 이를 통해 결과값을 확률 분포로 해석할 수 있습니다.
5) 가장 큰 입력값이 가장 높은 확률을 갖음
소프트맥스 함수의 출력에서 가장 큰 입력값은 그에 대응하는 가장 큰 확률값을 생성합니다.
3. softmax 코드 사용 예시
#PyTorch 라이브러리 가지고 오기
import torch
import torch.nn.functional as F
# 예시 입력 텐서 (logits)
logits = torch.tensor([2.0, 1.0, 0.1])
# Softmax 함수 적용
probabilities = F.softmax(logits, dim=0)
print("입력값:", logits)
print("소프트맥스 확률값:", probabilities)
'IT > ML_용어' 카테고리의 다른 글
[ML][용어] One-Hot Encoding (원-핫 인코딩) (0) | 2024.10.25 |
---|---|
[ML][용어] Gradient Boosting Machine (GBM) (1) | 2024.10.22 |
[ML][용어] ReLU 함수 (1) | 2024.10.15 |
[ML][용어] Sigmoid 함수 (0) | 2024.10.11 |
[ML][용어] GELU 함수 (0) | 2024.10.07 |
댓글