ReLU는 여러 딥러닝 모델에서 activation function으로써 쓰이고 있다.
(ReLU에서 생기는 문제를 해결하기 위한 다양한 variation들이 있긴 하지만)
$$ ReLU(x) = max(0, x) $$
더보기
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)
y = np.maximum(0, x)
plt.plot(x, y)
plt.grid(True)
plt.xlabel("x")
plt.ylabel("ReLU(x)")
딥러닝에서는 모델 훈련 시 Gradient descent를 통해 Loss를 최소화하는 파라미터를 계산하는데,
Gradient descent를 위해서는 미분값을 필요로 한다.
하지만 activation function으로 사용되는 ReLU는 $x=0$에서 미분이 가능하지 않다.
그런데 어떻게 ReLU를 activation function으로 사용할 수 있고 Gradient descent를 적용할 때 기울기 계산에 문제가 없는 것일까?
수학적으로는 $x=0$일 때 미분이 가능하지 않지만 실제로는 노드에 정확히 0의 값으로 입력이 들어오는게 매우 드물기 때문에
단순하게 미분값을 0으로 처리한다고 한다.
이렇듯 딥러닝에서는 수학적인 개념이 공학적으로 사용될 때 조금의 차이가 있다.
참고
- https://www.quora.com/Why-does-ReLU-work-with-backprops-if-its-non-differentiable
'Machine Learning > Deep Learning' 카테고리의 다른 글
CNN에서 layer가 깊어질 수록 channel size를 키우는 이유 (0) | 2024.05.31 |
---|---|
Dropout vs Inverted Dropout (0) | 2024.05.21 |
Manifold와 뉴럴 네트워크 학습 (0) | 2024.05.20 |
Non zero-centered activation function과 학습 비효율 (1) | 2024.05.01 |
Perceptron (0) | 2024.03.03 |
댓글