반응형

활성화 함수

 

활성화 함수라 함은 특정 입력 값이 수식에 들어왔을 때 발현이 되는지 안되는지 판단해주는 함수이다.

 

이전 퍼셉트론에서 아래와 같은 수식을 이용했었다.

이를 그래프로 나타내면 다음과 같이 나타나게 된다.

 

[그림 넣기]

 

즉, 이런 함수를 계단 함수라고 하고, 퍼셉트론에서는 활성화 함수로 계단 함수를 이용했는 것을 알 수 있다.

 

계단 함수는 아래와 같이 나타낼 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
import matplotlib.pylab as plt
 
def stepFunction(x):
    return np.array(x > 0, dtype=np.int)
 
= np.arange(-10.0,10.0,0.1)
= stepFunction(x)
 
print(y)
 
plt.plot(x,y) # 그래프로 표현
plt.ylim(-0.11.1# y축 limit 지정
plt.show()
cs


이를 그림으로 나타내면 다음과 같다.

 

 

이번에는 계단 함수 이외의 함수를 사용하는 방법에 대해 알아보고자 한다.

 

 

 

시그모이드 함수

 

신경망에서 자주 사용되는 활성화 함수인 시그모이드 함수(sigmoid function)이다.

 

이를 수식으로 나타내면 다음과 같다.

 

`



1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np 
import matplotlib.pylab as plt 
 
def sigmoid(x): 
    return / (+ np.exp(-x)) 
 
= np.arange(-10.010.00.1
= sigmoid(x) 
 
plt.plot(x, y) 
plt.ylim(-0.11.1
plt.show()
cs


 

 

시그모이드 함수와 계단 함수의 차이점은 계단 함수는 x좌표가 0인 곳에서 급변하는 반면,

 

시그모이드 함수는 부드럽게 변한다는 차이가 있다. 이렇게 시그모이드 함수처럼 부드러운 곡선을 가지게 되면 신경망 학습에서 더 좋은 결과를 낼 수 잇게 된다.

(활성화 함수의 결과값 분포가 더 다양해져서 다양한 결과를 얻을 수 있다.)

 

 

ReLU 함수

 

ReLU 함수는 활성화 함수로 가장 많이 쓰이는 함수이다.

 

이 ReLU 함수는 입력이 0을 넘으면 입력을 그대로 출력하고 0 이하면 0을 출력하게 된다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np 
import matplotlib.pylab as plt 
 
def ReLU(x): 
    return np.maximum(0, x) 
 
= np.arange(-5.05.01
= ReLU(x) 
 
plt.plot(x, y) 
plt.ylim(-0.15.1
plt.show()
cs


반응형