Processing math: 100%
본문 바로가기
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

댓글