일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 과적합
- 딥러닝
- 회귀
- 지도 학습
- AI
- 데이터 전처리
- 자연어 처리
- python
- 인공지능
- q-러닝
- 최적화
- 정규화
- 손실 함수
- 차원 축소
- Q-Learning
- 인공 신경망
- 머신 러닝
- Machine Learning
- 신경망
- GRU
- rnn
- reinforcement learning
- 활성화 함수
- 교차 검증
- CNN
- 강화 학습
- 강화학습
- LSTM
- Deep learning
- 머신러닝
- Today
- Total
move84
머신러닝 활성화 함수 종류와 특징 본문
활성화 함수(Activation Function)는 인공 신경망(Artificial Neural Network)에서 뉴런의 출력값을 결정하는 중요한 요소다. 입력 신호의 가중치 합을 받아 최종 출력값을 생성하며, 비선형성을 추가하여 신경망이 복잡한 패턴을 학습할 수 있게 한다. 다양한 활성화 함수가 존재하며, 각각의 특징과 장단점을 이해하는 것이 중요하다.
💡 시그모이드 함수 (Sigmoid Function)
시그모이드 함수는 입력값을 0과 1 사이의 값으로 변환한다. 수식은 다음과 같다.
f(x) = 1 / (1 + e^(-x))
이는 로지스틱 회귀(Logistic Regression)에서 주로 사용되며, 확률 값으로 해석하기 용이하다.
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1 / (1 + np.exp(-x))
x = np.linspace(-10, 10, 100)
y = sigmoid(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('Sigmoid(x)')
plt.title('Sigmoid Function')
plt.grid(True)
plt.show()
장점:
- 출력값이 0과 1 사이로 제한되어 확률 값으로 해석하기 용이하다.
- 함수가 미분 가능하므로 경사 하강법(Gradient Descent)에 적용 가능하다.
단점:
- 기울기 소실 (Vanishing Gradient): 입력값이 매우 크거나 작은 경우 기울기가 0에 가까워져 학습이 느려지거나 멈출 수 있다.
- 출력값이 0을 중심으로 하지 않아 (Not Zero-Centered) 학습 효율이 떨어진다.
- 지수 함수 계산에 비용이 많이 든다.
🌈 하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent Function, tanh)
tanh 함수는 입력값을 -1과 1 사이의 값으로 변환한다. 시그모이드 함수와 유사하지만, 출력값이 0을 중심으로 한다는 장점이 있다. 수식은 다음과 같다.
f(x) = (e^x - e^(-x)) / (e^x + e^(-x))
import numpy as np
import matplotlib.pyplot as plt
def tanh(x):
return np.tanh(x)
x = np.linspace(-10, 10, 100)
y = tanh(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('tanh(x)')
plt.title('Hyperbolic Tangent Function')
plt.grid(True)
plt.show()
장점:
- 출력값이 0을 중심으로 하므로 시그모이드 함수보다 학습 효율이 높다.
단점:
- 시그모이드 함수와 마찬가지로 기울기 소실 문제가 발생할 수 있다.
- 지수 함수 계산에 비용이 많이 든다.
✨ ReLU (Rectified Linear Unit) 함수
ReLU 함수는 입력값이 0보다 작으면 0을 출력하고, 0보다 크면 입력값을 그대로 출력한다. 수식은 다음과 같다.
f(x) = max(0, x)
import numpy as np
import matplotlib.pyplot as plt
def relu(x):
return np.maximum(0, x)
x = np.linspace(-10, 10, 100)
y = relu(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('ReLU(x)')
plt.title('ReLU Function')
plt.grid(True)
plt.show()
장점:
- 계산이 매우 빠르다.
- 기울기 소실 문제가 크게 완화된다.
- 신경망 학습 속도가 빠르다.
단점:
- Dead ReLU: 입력값이 음수인 경우 기울기가 0이 되어 뉴런이 더 이상 활성화되지 않을 수 있다.
🌟 Leaky ReLU 함수
Leaky ReLU 함수는 ReLU 함수의 Dead ReLU 문제를 해결하기 위해 고안되었다. 입력값이 음수인 경우에도 아주 작은 기울기를 갖도록 한다. 수식은 다음과 같다.
f(x) = x (x > 0)
f(x) = ax (x <= 0) (a는 작은 상수, 예: 0.01)
import numpy as np
import matplotlib.pyplot as plt
def leaky_relu(x, a=0.01):
return np.where(x > 0, x, a * x)
x = np.linspace(-10, 10, 100)
y = leaky_relu(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('Leaky ReLU(x)')
plt.title('Leaky ReLU Function')
plt.grid(True)
plt.show()
장점:
- Dead ReLU 문제를 완화한다.
- ReLU 함수와 유사한 장점을 갖는다.
단점:
- a 값을 어떻게 설정하느냐에 따라 성능이 달라질 수 있다.
💫 ELU (Exponential Linear Unit) 함수
ELU 함수는 Leaky ReLU와 유사하게 Dead ReLU 문제를 해결하기 위해 고안되었다. 음수 영역에서 지수 함수를 사용하여 부드러운 곡선을 만든다. 수식은 다음과 같다.
f(x) = x (x > 0)
f(x) = a(e^x - 1) (x <= 0) (a는 상수, 예: 1)
import numpy as np
import matplotlib.pyplot as plt
def elu(x, a=1):
return np.where(x > 0, x, a * (np.exp(x) - 1))
x = np.linspace(-10, 10, 100)
y = elu(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('ELU(x)')
plt.title('ELU Function')
plt.grid(True)
plt.show()
장점:
- Dead ReLU 문제를 완화한다.
- 출력값이 0을 중심으로 하므로 학습 효율이 높을 수 있다.
단점:
- 지수 함수 계산에 비용이 많이 든다.
🔑 활성화 함수 선택 요약
- Sigmoid (시그모이드): 이진 분류 문제에서 확률 값으로 해석할 때 유용하지만, 기울기 소실 문제가 있다.
- tanh (하이퍼볼릭 탄젠트): Sigmoid와 유사하지만, 출력값이 0을 중심으로 하여 학습 효율이 높을 수 있다. 그러나 기울기 소실 문제는 여전히 존재한다.
- ReLU: 계산이 빠르고 기울기 소실 문제가 완화되지만, Dead ReLU 문제가 발생할 수 있다.
- Leaky ReLU: Dead ReLU 문제를 완화하기 위해 ReLU를 개선한 함수다.
- ELU: Leaky ReLU와 유사하게 Dead ReLU 문제를 완화하며, 출력값이 0을 중심으로 하여 학습 효율이 높을 수 있지만, 지수 함수 계산 비용이 든다.
각 활성화 함수는 특정 상황에 더 적합할 수 있다. 따라서 문제의 특성과 신경망 구조를 고려하여 적절한 활성화 함수를 선택하는 것이 중요하다. 실험을 통해 최적의 활성화 함수를 찾는 것이 일반적이다.
'머신러닝' 카테고리의 다른 글
머신러닝에서 텐서(Tensor)의 개념과 중요성 (0) | 2025.04.10 |
---|---|
머신러닝: 역전파 알고리즘(Backpropagation) 이해하기 (0) | 2025.04.10 |
머신러닝 교차 검증(Cross Validation)의 개념 (0) | 2025.04.10 |
머신러닝 데이터 전처리(Data Preprocessing)의 필요성과 기법 (0) | 2025.04.10 |
머신러닝: K-최근접 이웃 (K-Nearest Neighbors, KNN) 알고리즘 (0) | 2025.04.10 |