
- 6가지 activation function notebook
- Activation 함수 numpy 구현
- 목적
그 동안 아무 생각 없이 활성함수를 사용한 것 같다
특히 relu만 default로 사용하고 그 의미를 깊이 고민해본 적 없었다
이번 기회에 다른 기본이 되는 sigmoid, tanh과 다른 relu 가족들을 공부해보자
(sigmoid, tanh, relu, leaky_relu, elu, gelu)
| 함수 | x<0 | x≈0 | x>0 | sparsity | gradient 특징 |
|---|---|---|---|---|---|
| ReLU | 0 (완전 차단) | 0 | 1:선형 | 높음 | Dead ReLU 가능, gradient = 1 |
| Leaky ReLU | (작게 통과) | 1:선형 | 낮음 | Dead ReLU 거의 없음, gradient = ~1 | |
| ELU | 부드럽게 0 근처 | x | 중간 | 음수 구간에서도 gradient 존재 | |
| GELU | , 부드럽게 통과 | 0~0.5x | 거의 x | 거의 없음 | Dead ReLU 없음, 부드러운 S자 곡선 |




| 구간 | Sigmoid | tanh | ReLU |
|---|---|---|---|
| x < -3 | 거의 0 | 거의 0 | 0 |
| x ≈ 0 | 약 0.25 | 1 | 0~1 |
| x > 3 | 거의 0 | 거의 0 | 1 |
ReLU의 출력이 0인 상태가 계속 유지되어,
해당 neuron gradient가 가중치가 업데이트되지 않는 문제
즉, 입력이 계속 음수면 neuron이 "죽어서" 항상 0만 출력




