본문으로 바로가기

활성화 함수(Activation function)

category AI/딥러닝 기초 2019. 10. 11. 19:33
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 > 010)
 
= np.linspace(-55)
= 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))
 
= np.linspace(-55)
= 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)
 
= np.linspace(-55)
= 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)
 
= np.linspace(-55)
= 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)
 
= np.linspace(-55)
= 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
 
= np.linspace(-55)
= 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))
 
= np.array([1,2,3])
= softmax_function(x)
 
print(y)
cs