Softmax
AI의 소프트맥스(Softmax) 함수를 살펴보십시오. Ultralytics YOLO26과 신경망을 사용하여 로짓을 다중 클래스 분류 확률로 변환하는 방법을 알아보십시오.
Softmax는 인공지능 분야에서 핵심적인 수학적 함수로, 특히 많은 분류 알고리즘에서 마지막 단계 역할을 합니다. 이 함수는 종종 로짓(logits)이라고 불리는 원시 숫자 벡터를 확률 벡터로 변환합니다. 이 변환은 출력 값이 모두 양수가 되고 그 합이 정확히 1이 되도록 보장하여, 유효한 확률 분포를 효과적으로 생성합니다. 이러한 특성 때문에 Softmax는 다중 클래스 분류를 위해 설계된 신경망의 출력 레이어에서 사용되는 표준 활성화 함수이며, 시스템이 두 개를 초과하는 상호 배타적인 옵션 중에서 단일 범주를 선택해야 할 때 사용됩니다.
Softmax의 메커니즘#
전형적인 딥러닝 (DL) 워크플로우에서 네트워크의 레이어는 복잡한 행렬 곱셈과 덧셈을 수행합니다. 활성화 전, 최종 레이어의 출력은 로짓으로 알려진 원시 점수로 구성됩니다. 이러한 값은 마이너스 무한대부터 플러스 무한대까지의 범위를 가질 수 있으므로, 신뢰도 수준으로 직접 해석하기 어렵습니다.
Softmax는 두 가지 주요 연산을 수행하여 이 문제를 해결합니다:
-
지수화(Exponentiation): 각 입력 숫자의 지수를 계산합니다. 이 단계는 모든 값을 비음수로 만들고($e^x$는 항상 양수이므로), 최대값보다 현저히 낮은 값들을 억제하는 동시에 가장 높은 점수들을 강조합니다.
-
정규화 (Normalization): 이 함수는 지수화된 값들을 모두 더하고 각각의 지수 값을 이 전체 합으로 나눕니다. 이 정규화 과정은 숫자의 크기를 조절하여 전체 중의 일부분을 나타내도록 만들며, 개발자들이 이를 백분율 신뢰도 점수로 해석할 수 있게 해줍니다.
실제 애플리케이션 사례#
명확한 확률을 출력하는 능력 덕분에 Softmax는 다양한 산업과 머신러닝 (ML) 작업에서 필수 불가결한 요소가 되었습니다.
- 이미지 분류: 컴퓨터 비전에서 모델은 이미지를 분류하기 위해 Softmax를 사용합니다. 예를 들어, Ultralytics YOLO26 분류 모델이 사진을 분석할 때, "골든 리트리버", "저먼 셰퍼드", "푸들"과 같은 클래스에 대한 점수를 생성할 수 있습니다. Softmax는 이러한 점수를 확률(예: 0.85, 0.10, 0.05)로 변환하여 이미지에 골든 리트리버가 포함되어 있을 높은 신뢰도를 나타냅니다. 이는 자동 사진 정리부터 의료 AI의 진단에 이르는 응용 프로그램에 매우 중요합니다.
- 자연어 처리 (NLP): Softmax는 대규모 언어 모델 (LLM)에서 텍스트 생성을 구동하는 엔진입니다. Transformer와 같은 모델이 문장을 생성할 때, 어휘에 있는 모든 단어의 점수를 계산하여 다음 단어(토큰)를 예측합니다. Softmax는 이러한 점수를 확률로 변환하여 모델이 가장 가능성이 높은 다음 단어를 선택할 수 있게 하며, 유창한 기계 번역과 대화형 AI를 가능하게 합니다.
- 강화학습: 강화학습의 에이전트는 행동을 선택하기 위해 종종 Softmax를 사용합니다. 에이전트는 항상 가장 높은 값을 가진 행동을 선택하는 대신, 확률을 사용하여 다양한 전략을 탐색하며 로봇 제어 또는 게임 플레이와 같은 환경에서 탐색(exploration)과 활용(exploitation)의 균형을 맞출 수 있습니다.
Python 코드 예제#
다음 예제는 사전 학습된 YOLO26 분류 모델을 로드하고 Softmax를 통해 생성된 확률 점수에 접근하는 방법을 보여줍니다.
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}")Softmax와 관련 개념의 차이#
Softmax는 다중 클래스 시나리오에서 지배적이지만, 모델 학습 및 아키텍처 설계에 사용되는 다른 수학적 함수들과 구별하는 것이 중요합니다.
- 시그모이드 (Sigmoid): 시그모이드 함수 역시 값을 0과 1 사이로 조정하지만, 각 출력을 독립적으로 처리합니다. 이로 인해 시그모ید는 이진 분류(예/아니오) 또는 클래스가 상호 배타적이지 않은 다중 레이블 분류(예: 이미지가 "사람"과 "백팩"을 모두 포함할 수 있는 경우)에 이상적입니다. Softmax는 확률의 합이 1이 되도록 강제하므로 클래스들이 서로 경쟁하게 만듭니다.
- ReLU (Rectified Linear Unit): ReLU는 주로 비선형성을 도입하기 위해 네트워크의 은닉층에서 사용됩니다. Softmax와 달리 ReLU는 출력을 특정 범위로 제한하지 않으며(음수 입력에는 단순히 0을 출력하고 양수 입력에는 입력값 자체를 출력함), 확률 분포를 생성하지도 않습니다.
- 아그맥스 (Argmax): Softmax가 모든 클래스에 대한 확률을 제공하는 반면, Argmax 함수는 가장 높은 확률을 가진 단일 인덱스를 선택하기 위해 함께 사용되는 경우가 많습니다. Softmax가 "소프트" 신뢰도를 제공한다면, Argmax는 "하드" 최종 결정을 제공합니다.
고급 통합#
현대 ML 파이프라인에서 Softmax는 종종 손실 함수 내에서 암묵적으로 계산됩니다. 예를 들어, 교차 엔트로피 손실 (Cross-Entropy Loss)은 학습 중 수치적 안정성을 향상시키기 위해 Softmax와 음의 로그 우도를 단일 수학적 단계로 결합합니다. Ultralytics Platform과 같은 플랫폼은 이러한 복잡성을 자동으로 처리하여 사용자가 이러한 수학적 연산을 수동으로 구현하지 않고도 강력한 모델을 학습할 수 있도록 지원합니다.






