본문 바로가기
Machine Learning/Deep Learning

ReLU의 활성 함수으로써의 사용과 미분 가능성

by devson 2024. 4. 23.

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

- https://medium.com/@kashifrazagill006/unraveling-the-mystery-of-relu-why-its-continuous-but-not-differentiable-f2de995fb2df

'Machine Learning > Deep Learning' 카테고리의 다른 글

Non zero-centered activation function과 학습 비효율  (1) 2024.05.01
Perceptron  (0) 2024.03.03

댓글