336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
활성화 함수 : 뉴런을 흥분시키기 위한 함수.
1. Step function (계단 함수)
: 구현이 간단하지만 0과 1의 중간 상태를 나타낼 수 없음. (미분불가)
[그래프]
[코드]
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt def step_function(x): return np.where(x > 0, 1, 0) x = np.linspace(-5, 5) y = step_function(x) plt.plot(x, y) plt.show() | cs |
2. Sigmoid function (시그모이드)
: x가 작을수록 y는 0에 가깝게 변함.
계단함수에 비해 매끄러운 곡선 형태이며 0과 1의 중간상태를 나타낼 수 있음. (미분 가능)
[시그모이드 도함수]
[그래프]
[코드]
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt def sigmoid_function(x): return 1 / (1 + np.exp(-x)) x = np.linspace(-5, 5) y = sigmoid_function(x) plt.plot(x, y) plt.show() | cs |
3. tanh (하이퍼볼릭 탄젠트)
:그래프 자체는 sigmoid와 굉장히 비슷하지만 tanh 함수는 -1과 1 사이에서 변화함.
0을 중심으로 대칭이기 때문에 밸런스가 좋은 함수.
[그래프]
[코드]
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt def tanh_function(x): return np.tanh(x) x = np.linspace(-5, 5) y = tanh_function(x) plt.plot(x, y) plt.show() | cs |
4. ReLU (Rectified Linear Unit)
:음수인 경우 y는 0이고 양수인 경우 y는 x 그대로 유지가 됨.
미분값이 x에 상관없이 안정적인 값을 얻는 것이 최대 장점.
그러나 음수인 경우 weight가 0이 되면서 학습이 되지 않는 dying relu 발생이 단점.
[ReLU 도함수]
[그래프]
[코드]
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt def relu_function(x): return np.where(x > 0, x, 0) x = np.linspace(-5, 5) y = relu_function(x) plt.plot(x, y) plt.show() | cs |
5. Leaky ReLU
:앞서 말한 dying ReLU를 피하기 위해 x가 음수인 영역에 아주 작은 기울기를 만들어줌.
[그래프]
[코드]
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt def leaky_relu_function(x): return np.where(x > 0, x, 0.01*x) x = np.linspace(-5, 5) y = leaky_relu_function(x) plt.plot(x, y) plt.show() | cs |
6. Identity function (항등함수)
:출력 범위에 제한이 없고 연속적이기 때문에, 연속적인 수치를 예측하는 회귀문제를 다룰때 적합.
[그래프]
[코드]
1 2 3 4 5 6 7 8 | import numpy as np import matplotlib.pyplot as plt x = np.linspace(-5, 5) y = x plt.plot(x, y) plt.show() | cs |
7. Softmax function (소프트맥스)
:분류 문제를 다룰 때 적합.
출력값을 양수값으로 바꾸고 모든 출력값들의 합이 1이 되도록 normalize.
소프트맥스 함수 값은 분류문제에서 각 뉴런이 특정한 범주로 분류될 확률을 나타낼 때 쓰임.
[코드]
1 2 3 4 5 6 7 8 9 | import numpy as np def softmax_function(x): return np.exp(x) / np.sum(np.exp(x)) x = np.array([1,2,3]) y = softmax_function(x) print(y) | cs |
'AI > 딥러닝 기초' 카테고리의 다른 글
훈련 데이터와 테스트 데이터(Training data & Test data) (0) | 2019.10.11 |
---|---|
학습규칙 & 역전파(Backpropagation) (0) | 2019.10.11 |
회귀와 분류(Regression and Classification) (0) | 2019.10.11 |
뉴런모델(Neuron, Node) (0) | 2019.10.11 |
파이썬 정리 : NumPy (2) (0) | 2019.10.11 |