Deep Learning/혼공 머신 러닝 - 딥러닝
[DL] DL에서 사용 하는 활성화 함수의 역할
KimTory
2022. 1. 2. 15:14
▶ 활성화 함수
# 활성화 함수 → 딥러닝 네트워크층의 노드에 입력된 값들을 비선형 함수에 통과 시킨 후, 다음 레이어로 전달하는데 이때 사용하는 함수를 활성화 함수 즉, Activation Function이라고 한다.
→ 선형 or 비선형 활성화 함수가 존재
① 선형 함수(Linear Function)
→ 선형 함수는 직선적인 함수 y=x 이며, 선형 함수를 딥러닝에서 활성화 함수에 적용하게 되면 Deep한 네트워크 즉,
심층 신경망의 이점이 없어 진다.
EX)
2개 층을 쌓았지만 X 즉, 입력층에 곱해지는 항들은 W로 치환 가능하고 입력과 무관한 상수들을 B (편향)으로 치환 가능 하기 때문에 WX + B라는 Single Layer preceptron과 동일한 결과를 낸다. 다시 말 해, 딥러닝의 심층 신경망을 적용하는 의미가 없어진다.
# 비선형 함수를 쓰는 이유
→ 결론적으론 선형 활성화 함수를 사용하면 노드의 개수를 아무리 많이 붙여도 결국 하나의 노드를 사용하는 효과를 내며, 실제 딥러닝 모델에 적용을 하게 되면 모델의 다양성이 떨어지게 된다.
② 비선형 활성화 함수
⒜ Sigmoid 함수 - Logistic 함수라고도 불리며, X 값에 따라 0 ~ 1의 값을 출력함
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5,5,0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1,1.0)
plt.show()
- 함수의 값은 0,1 만 가질 수 있는 비선형 함수
- Logistic Classification과 같은 분류 문제의 가설과 비용 함수에 많이 사용 됨
- 함수의 중심값이 0이 아니여서 학습이 느려질 수 있는 단점이 있어 최근엔 적용 빈도가 줄었음
⒝ ReLU 함수 -Rectified Linear Unit, 경사 함수라고 많이 불리며 현재 가장 많이 사용 되고 있음
import numpy as np
import matplotlib.pyplot as plt
def ReLU(x):
return np.maximum(0,x)
x = np.arange(-5, 5, 0.1)
y = ReLU(x)
plt.plot(x,ReLU(x))
plt.show()
- X > 0 일 때, 기울기는 1 X < 0 일 때, 함수 값이 0이 됨
- Sigmoid 함수보다 학습 속도가 빠르며, loss가 적고 구현이 매우 간단하다는 특징이 있음
- Gradient Vanishing 문제가 해결되기 떄문에, 가장 기본적인 활성화 함수로 사용된다.
(Layer가 늘어 날 때, 값이 사라지는 형상)