인공지능(AI)에서 소프트맥스 함수를 탐구해 보세요. Ultralytics 신경망을 활용하여 다중 클래스 분류를 위해 로짓 값을 확률로 변환하는 방법을 알아보세요.
소프트맥스는 인공 지능 분야에서 핵심적인 수학적 함수로, 특히 많은 분류 알고리즘의 최종 단계로 사용됩니다. 이 함수는 원시 숫자 벡터(로짓이라고도 함)를 확률 벡터로 변환합니다. 이 변환은 출력값이 모두 양수이며 합이 정확히 1이 되도록 보장하여 유효한 확률 분포를 효과적으로 생성합니다. 이러한 특성 덕분에 소프트맥스는 다중 분류를 위해 설계된 신경망의 출력층에서 표준 활성화 함수로 사용됩니다. 여기서 시스템은 두 개 이상의 상호 배타적 옵션 중에서 단일 범주를 선택해야 합니다.
전형적인 딥 러닝(DL) 워크플로우에서 네트워크의 레이어들은 복잡한 행렬 곱셈과 덧셈을 수행합니다. 활성화 전 최종 레이어의 출력은 로짓(logits)으로 알려진 원시 점수로 구성됩니다. 이 값들은 음의 무한대에서 양의 무한대까지 범위를 가지므로, 신뢰도 수준으로 직접 해석하기 어렵습니다.
소프트맥스는 두 가지 주요 연산을 수행함으로써 이 문제를 해결합니다:
명확한 확률을 산출하는 능력 덕분에 소프트맥스는 다양한 산업 분야와 기계 학습(ML) 작업에서 필수적인 역할을 수행합니다.
다음 예제는 사전 훈련된 YOLO26 분류 모델을 로드하고 소프트맥스를 통해 생성된 확률 점수에 접근하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on a sample image
results = model("https://ultralytics.com/images/bus.jpg")
# The model applies Softmax internally. Access the top prediction:
# The 'probs' attribute contains the probability distribution.
top_prob = results[0].probs.top1conf.item()
top_class = results[0].names[results[0].probs.top1]
print(f"Predicted Class: {top_class}")
print(f"Confidence (Softmax Output): {top_prob:.4f}")
소프트맥스는 다중 클래스 시나리오에서 지배적이지만, 모델 훈련 및 아키텍처 설계에 사용되는 다른 수학적 함수와 구별하는 것이 중요합니다:
현대 머신러닝 파이프라인에서는 손실 함수 내에서 소프트맥스가 암시적으로 계산되는 경우가 많습니다. 예를 들어, 크로스 엔트로피 손실 은소프트맥스와 음의 로그 가능도를 단일 수학적 단계로 결합하여 훈련 중 수치적 안정성을 향상시킵니다. Ultralytics 같은 플랫폼은 이러한 복잡성을 자동으로 처리하므로, 사용자는 이러한 수학적 연산을 수동으로 구현하지 않고도 견고한 모델을 훈련할 수 있습니다.