Yolo 비전 선전
선전
지금 참여하기
용어집

시그모이드

시그모이드 함수가 머신러닝에서 수행하는 역할을 살펴보세요. 이 활성화 함수가 Ultralytics 같은 모델에서 이진 분류를 가능하게 하는 방식을 알아보세요.

시그모이드 함수는 기계 학습(ML)딥 러닝(DL) 분야에서 광범위하게 사용되는 핵심 수학적 구성 요소입니다. 흔히 "압축 함수"라고도 불리는 이 함수는 실수 값을 입력으로 받아 0과 1 사이의 값으로 매핑합니다. 이 특징적인 "S"자형 곡선은 모델의 원시 출력을 해석 가능한 확률로 변환하는 데 매우 유용합니다. 신경망(NN)의 맥락에서 시그모이드 함수는 활성화 함수 역할을 하며, 단순한 선형 관계를 넘어 복잡한 패턴을 학습할 수 있도록 비선형성을 도입합니다. 비록 심층 숨겨진 계층에서는 다른 함수들로 대체되었지만, 이진 분류 작업의 출력 계층에서는 여전히 표준적인 선택으로 남아 있습니다.

인공지능에서의 시그모이드 함수 메커니즘

시그모이드 함수의 핵심은 입력 데이터(일반적으로 로짓 값이라 함)를 정규화된 범위로 변환하는 것입니다. 이 변환은 사건 발생 가능성을 예측하는 작업에 필수적입니다. 출력을 0과 1 사이로 제한함으로써, 이 함수는 명확한 확률 점수를 제공합니다.

  • 로지스틱 회귀: 전통적인 통계 모델링에서 시그모이드 함수는 로지스틱 회귀의 핵심 엔진 역할을 합니다. 이를 통해 데이터 과학자는 고객 이탈 여부나 유지 여부와 같은 이분법적 결과의 발생 확률을 추정할 수 있습니다.
  • 이진 분류: 두 클래스(예: "고양이" 대 "개")를 구별하도록 설계된 신경망의 경우, 최종 레이어는 종종 시그모이드 활성화 함수를 사용합니다. 출력이 임계값(일반적으로 0.5)보다 클 경우, 모델은 양성 클래스를 예측합니다.
  • 다중 레이블 분류: 클래스가 상호 배타적인 다중 클래스 문제와 달리, 다중 레이블 작업에서는 이미지나 텍스트가 동시에 여러 범주에 속할 수 있습니다. 여기서 시그모이드 함수는 각 출력 노드에 독립적으로 적용되어, 모델이 동일한 장면에서 " detect "과 "사람"을 상충 없이 동시에 detect 수 있게 합니다.

다른 활성화 함수와의 주요 차이점

시그모이드 함수는 한때 모든 레이어의 기본 선택이었으나, 연구자들은 사라지는 기울기 문제와 같은 한계를 발견했습니다. 이 문제는 깊은 신경망에서 기울기가 너무 작아져 가중치를 효과적으로 업데이트할 수 없게 만듭니다. 이로 인해 숨겨진 레이어에 대한 대안들이 채택되었습니다.

  • 시그모이드 대 ReLU (정류 선형 단위): ReLU는 계산 속도가 더 빠르며, 양수일 경우 입력을 직접 출력하고 그렇지 않으면 0을 출력함으로써 소멸하는 기울기를 피합니다. YOLO26과 같은 현대적 아키텍처에서 숨겨진 레이어에 선호되는 선택이며, 반면 시그모이드는 특정 작업에서 최종 출력 레이어에 사용됩니다.
  • 시그모이드 대 소프트맥스: 둘 다 출력을 0-1 범위로 매핑하지만, 서로 다른 목적을 수행합니다. 시그모이드는 각 출력을 독립적으로 처리하므로 이진 또는 다중 레이블 작업에 이상적입니다. 소프트맥스는 모든 출력의 합이 1이 되도록 강제하여, 단 하나의 클래스만이 정답인 다중 클래스 분류에사용되는 확률 분포를 생성합니다.

실제 애플리케이션

시그모이드 함수의 유용성은 확률 추정이 필요한 다양한 산업 분야에 걸쳐 확장됩니다.

  1. 의료 진단: 의료 영상 분석에 사용되는 AI 모델은 종종 시그모이드 출력을 활용하여 X선 또는 MRI 스캔에서 질병이 존재할 확률을 예측합니다. 예를 들어, 모델이 0.85를 출력하면 종양 발생 가능성이 85%임을 나타내며, 이는 의사의 조기 발견을 돕습니다.
  2. 스팸 탐지: 이메일 필터링 시스템은 신호이드 분류기를 활용한 자연어 처리(NLP) 모델을 사용하여 수신 메시지가 "스팸"인지 "스팸이 아닌지"를 판단합니다. 해당 모델은 키워드와 메타데이터를 분석하여 이메일이 수신함으로 배달될지 스팸함으로 이동될지를 결정하는 점수를 산출합니다.

실제 구현

PyTorch 사용해 시그모이드 함수가 데이터를 어떻게 변환하는지 관찰할 수 있습니다. PyTorch는 딥러닝 모델 구축에 널리 쓰이는 라이브러리입니다. 이 간단한 예시는 다양한 입력값 범위에서 나타나는 "압축" 효과를 보여줍니다.

import torch
import torch.nn as nn

# Create a Sigmoid layer
sigmoid = nn.Sigmoid()

# Define input data (logits) ranging from negative to positive
input_data = torch.tensor([-5.0, -1.0, 0.0, 1.0, 5.0])

# Apply Sigmoid to squash values between 0 and 1
output = sigmoid(input_data)

print(f"Input: {input_data}")
print(f"Output: {output}")
# Output values near 0 for negative inputs, 0.5 for 0, and near 1 for positive inputs

이러한 개념을 활용하는 모델을 저수준 코드 작성 없이 훈련하고자 하는 사용자를 위해 Ultralytics 직관적인 인터페이스를 제공하여 데이터셋을 관리하고 YOLO26과 같은 최첨단 모델을 훈련할 수 있게 합니다. 아키텍처의 복잡성을 자동으로 처리함으로써 사용자는 특정 컴퓨터 비전 애플리케이션을 위한 고품질 훈련 데이터 수집에 집중할 수 있습니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기