시그모이드 함수(sigmoid function)는 활성화 함수 중 하나로, 이진 분류 문제에 주로 사용됩니다. 이 함수는 입력 값을 0과 1 사이의 값으로 변환하며, 신경망에 비선형성을 제공해 복잡한 패턴을 학습할 수 있게 합니다.
1. sigmoid 함수의 정의
입력값에 음의 지수 함수를 적용하여 변환한 뒤, 그 값을 0과 1 사이의 값으로 압축합니다. 입력값이 양수일수록 1에 가까워지고, 음수일수록 0에 가까워지며, 출력값은 항상 0과 1 사이를 유지합니다.
수학적으로 정의하면 다음과 같습니다.
여기서,
- : 시그모이드 함수의 출력값.
- x: 입력값.
- e: 자연상수, 약 2.718로 알려진 오일러 수입니다.
2. 주요 특징
1) 확률 계산에 유용
출력 값이 항상 0과 1 사이에 있습니다. 이 특성 덕분에 시그모이드 함수는 확률 값을 예측할 때 유용하게 사용됩니다.
2) 어디서든 미분 가능
어디서든 미분 가능합니다. 이는 역전파(backpropagation) 과정에서 가중치 업데이트에 매우 유용합니다.
3) 비선형성
시그모이드 함수는 비선형 함수이기 때문에 신경망의 비선형 변환을 가능하게 해 줍니다. 이는 신경망이 더 복잡한 문제를 학습할 수 있게 합니다.
4) 기울기 소실 문제
입력 값이 매우 크거나 작을 때, 즉 x가 매우 큰 양수이거나 음수일 때 기울기(gradient)가 거의 0에 가까워지는 문제를 가지고 있습니다. 이는 깊은 신경망 학습에서 역전파 과정 중에 가중치가 업데이트되지 않는 상황을 초래할 수 있습니다.
5) S자 곡선
그래프의 모양은 S자 형태를 띄며, 중간값인 x=0을 기준으로 대칭적입니다. 입력이 0에 가까울 때 출력은 0.5에 가까워지고, 양의 무한대로 갈수록 출력이 1, 음의 무한대로 갈수록 출력이 0에 수렴합니다.
3. sigmoid 함수 코드 사용 예시
import numpy as np
# 시그모이드 함수 정의
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 입력값 생성
x_values = np.array([-2, -1, 0, 1, 2])
# 시그모이드 함수 적용
y_values = sigmoid(x_values)
print("Input values:", x_values)
print("Sigmoid output:", y_values)
'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][용어] GELU 함수 (0) | 2024.10.07 |
[ML][용어] softmax 함수 (1) | 2024.09.30 |
댓글