신경망에서 사용되는 활성화 함수는 신경망의 출력값을 비선형적으로 변환하여 학습과정을 도와준다. 주요 활성화 함수에는 다음과 같은 것들이 있다.
1. 계단 함수 (Step Function)
역치값 이상이면 1, 아니면 0
인공지능 초기에 사용하였으나 지금은 잘 사용하지 않는다.
2. 시그모이드 함수 (Sigmoid Function)
출력값이 0과 1 사이로 압축된다. 그러나, 시그모이드 함수는 큰 값에서 그래디언트가 매우 작아져서 학습이 느려질 수 있다 (즉, 기울기 소실 문제가 발생할 수 있음).
public static double sigmoid(double x) {
return 1 / (1 + Math.exp(-x));
}
3. 하이퍼볼릭 탄젠트 함수 (Tanh Function)
는 쌍곡 탄젠트 함수, 또는 하이퍼볼릭 탄젠트 함수. 이는 쌍곡 함수(hyperbolic functions)의 하나로, 정의는 다음과 같다.
출력값이 -1과 1 사이로 변환된다. 시그모이드 함수보다 더 넓은 출력 범위를 가지며, 시그모이드 함수보다 중간 값 주변에서의 기울기 소실 문제가 덜하다.
public static double tanh(double x) {
return Math.tanh(x);
}
4. 렐루 함수 (ReLU: Rectified Linear Unit)
ReLU(x)=max(0,x)
음수 입력값에 대해 0을 출력하고, 양수 입력값에 대해서는 그대로 값을 반환한다. 단순하고 계산이 빠르며, 기울기 소실 문제가 덜 발생한다. 그러나 음수 입력에 대해 기울기가 0이 되어 뉴런이 죽을 수 있다 ("dying ReLU" 문제).
public static double relu(double x) {
return Math.max(0, x);
}
5. 리키 렐루 (Leaky ReLU)
Leaky ReLU(x)=max(αx,x) 여기서 α는 작은 양수 값 (일반적으로 0.01).
ReLU와 유사하지만 음수 영역에서도 작은 기울기를 가집니다. 따라서 "dying ReLU" 문제를 완화할 수 있다.
public static double leakyReLU(double x, double alpha) {
return x > 0 ? x : alpha * x;
}
6. ELU (Exponential Linear Unit)
ReLU와 유사하지만, 음수 입력에서도 미세한 출력을 반환하여 학습이 지속되도록 한다.
public static double elu(double x, double alpha) {
return x > 0 ? x : alpha * (Math.exp(x) - 1);
}
7. Swish 함수
최근에 제안된 함수로, ReLU나 Sigmoid보다 더 나은 성능을 보일 수 있다.
public static double sigmoid(double x) {
return 1 / (1 + Math.exp(-x));
}
8. Softmax 함수
주로 신경망의 마지막 층에서 사용되며, 다중 클래스 분류 문제에서 각 클래스에 대한 확률을 출력하도록 한다.
public static double[] softmax(double[] input) {
double[] output = new double[input.length];
double sum = 0.0;
// 입력값에 대해 지수 함수 적용
for (int i = 0; i < input.length; i++) {
output[i] = Math.exp(input[i]);
sum += output[i];
}
// 지수 함수 결과를 합계로 나누어 정규화
for (int i = 0; i < output.length; i++) {
output[i] /= sum;
}
return output;
}
이 외에도 여러 변형된 활성화 함수들이 연구되고 사용되지만, 위에 나열한 함수들이 가장 널리 사용되고 있다.
'컴퓨터공학 > NN' 카테고리의 다른 글
손실함수(loss function) (0) | 2024.08.28 |
---|---|
경사하강법(Gradient Descent) (0) | 2024.08.28 |
Word2Vec (0) | 2024.08.21 |
해석 가능한 인공지능(Explainable AI, XAI) (0) | 2024.08.20 |
Forward-Forward Algorithm (0) | 2024.08.16 |