ReLU(Rectified Linear Unit) 함수는 입력값이 양수면 그대로 출력하고, 음수면 0으로 출력하는 활성화 함수입니다. 계산이 간단하고, 딥러닝 모델에서 비선형성을 추가하여 학습을 돕습니다.
1. ReLU 함수의 정의
입력 값 x가 양수이면 그대로 출력되고, 음수이거나 0이면 0으로 출력됩니다.
수학적으로 정의하면 다음과 같습니다.
여기서,
- 입력이 양수일 때: f(x)
- 입력이 음수일 때: f(x)
2. 주요 특징
1) 비선형성
입력이 양수일 때는 선형 동작하지만, 입력이 음수일 때는 0으로 출력되므로 전체적으로는 비선형적 동작을 합니다. 따라서, 신경망이 복잡한 패턴을 학습할 수 있습니다.
2) 간단한 계산
수학적으로 단순해서 계산 비용이 매우 적습니다. 따라서, 큰 규모의 네트워크에서 효율적으로 사용됩니다.
3) 경사 소실 문제 완화
ReLU 함수는 음수 구간에서 0이지만, 양수 구간에서는 기울기가 항상 1이므로 경사 소실 문제가 상대적으로 덜 발생합니다.
4) 드롭아웃 효과
ReLU 함수는 입력이 음수일 때 출력을 0으로 만드므로, 일부 뉴런을 비활성화하는 효과를 내기도 합니다.
5) 죽은 ReLU 문제(Dead ReLU)
입력이 음수인 경우 항상 0을 출력하기 때문에, 학습 중에 뉴런의 가중치가 잘못 설정되면 특정 뉴런이 영구적으로 0을 출력하게 될 수 있습니다. 이러한 뉴런은 더 이상 학습에 기여하지 못하게 됩니다.
6) 폭발하는 경사 문제
ReLU 함수는 양수 입력에 대해 선형적으로 값을 증가시키므로, 입력 값이 커질수록 출력도 커집니다. 이는 폭발하는 경사 문제(exploding gradient problem)를 일으킬 수 있습니다.
3. ReLU 함수 코드 사용 예시
import torch
import torch.nn as nn
# ReLU 활성화 함수 정의
relu = nn.ReLU()
# 입력 텐서 정의
input_tensor = torch.tensor([-1.0, 0.0, 1.0, 2.0])
# ReLU 함수 적용
output_tensor = relu(input_tensor)
# 결과 출력
print("입력:", input_tensor)
print("출력:", output_tensor)
'IT > ML_용어' 카테고리의 다른 글
[ML][용어] One-Hot Encoding (원-핫 인코딩) (0) | 2024.10.25 |
---|---|
[ML][용어] Gradient Boosting Machine (GBM) (1) | 2024.10.22 |
[ML][용어] Sigmoid 함수 (0) | 2024.10.11 |
[ML][용어] GELU 함수 (0) | 2024.10.07 |
[ML][용어] softmax 함수 (1) | 2024.09.30 |
댓글