-
2. 활성함수(Activation Function)잡다한 것들 2020. 11. 7. 17:14반응형
1. 퍼셉트론에서 임계치(theta)를 넘기면 1, 아니면 0을 내보냈다.
이 부분을 활성(화) 함수라고 하는데, 활성함수는 여러 가지 있다.
0. 선형함수가 활성함수로 부적절한 이유
선형은 반복해도 최종값은 입력의 상수배이며, 이는 단층으로도 같은 효과를 낼 수 있다.
그래서 비선형 활성 함수를 쓴다.
1. 계단함수
import matplotlib.pyplot as plt import numpy as np def h(x): return np.array(x > 0) x = np.arange(-5, +5, 0.1) y = h(x) plt.plot(x, y) plt.show()
0 또는 1. 계단 모양. 그래서 계단 함수(step function)이라 한다.
2. 시그모이드 함수
f(x) = 1 / (1 + e**(-x))
import matplotlib.pyplot as plt import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) print(sigmoid(0)) x = np.arange(-5, +5, 0.1) y = sigmoid(x) plt.plot(x, y) plt.show()
- sigmoid(0) = 0.5를 기준으로 대칭이다. 계산이 힘들다.
- 비선형이다.
- 미분 가능하다.
- 1과 -1의 제한. 여러 층의 활성함수를 거치면 기울기 값이 소멸된다.
3. 하이퍼볼릭 탄젠트(tanh)
f(x) = (e**x - e**(-x)) / (e**x + e**(-x))
import matplotlib.pyplot as plt import numpy as np def tan_h(x): return np.tanh(x) x = np.arange(-5, +5, 0.1) y = tan_h(x) plt.plot(x, y) plt.show()
- 0을 기준으로 대칭이다. 계산이 쉽다.
- 비선형이다.
- 미분 가능하다.
- 1과 -1의 제한. 여러 층의 활성함수를 거치면 기울기 값이 소멸된다.
4. RelU 함수
f(x) = (abs(x) + x) / 2
= maximum(0, x)import matplotlib.pyplot as plt import numpy as np def relu(x): return np.maximum(0, x) x = np.arange(-5, +5, 0.1) y = relu(x) plt.plot(x, y) plt.show()
- 계산이 아주 단순하다.
- 여러 층의 계산을 거쳐도 값이 소멸되지 않는다.
- 음의 값을 가지면 죽어버린다.
5. Leaky ReLU
f(x) = max(ax, x)
import matplotlib.pyplot as plt import numpy as np def leaky_relu(x): return np.maximum(a*x, x) a = 0.1 x = np.arange(-5, +5, 0.1) y = leaky_relu(x) plt.plot(x, y) plt.show()
- 일반적으론 a는 0.01 정도
- 음의 값을 가져도 살아있도록...
6. 소프트맥스 함수(Softmax function)
import matplotlib.pyplot as plt import numpy as np def softmax(x): return np.exp(x) / np.sum(np.exp(x)) x = np.arange(-5, +5, 0.1) y = softmax(x) plt.plot(x, y) plt.show()
- 주로 출력층에서 분류에 사용
- 출력의 합이 1 = 유사 평균으로 사용.
- 작은 것을 더 작게, 큰 것을 더 크게 만듬
- 실제 사용시엔 분모, 분자에 상수값(데이터 중에 가장 큰 값)을 곱한다.
반응형