반응형
활성화 함수
활성화 함수라 함은 특정 입력 값이 수식에 들어왔을 때 발현이 되는지 안되는지 판단해주는 함수이다.
이전 퍼셉트론에서 아래와 같은 수식을 이용했었다.
이를 그래프로 나타내면 다음과 같이 나타나게 된다.
[그림 넣기]
즉, 이런 함수를 계단 함수라고 하고, 퍼셉트론에서는 활성화 함수로 계단 함수를 이용했는 것을 알 수 있다.
계단 함수는 아래와 같이 나타낼 수 있다.
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) x = np.arange(-10.0,10.0,0.1) y = stepFunction(x) print(y) plt.plot(x,y) # 그래프로 표현 plt.ylim(-0.1, 1.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 1 / (1 + np.exp(-x)) x = np.arange(-10.0, 10.0, 0.1) y = sigmoid(x) plt.plot(x, y) plt.ylim(-0.1, 1.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) x = np.arange(-5.0, 5.0, 1) y = ReLU(x) plt.plot(x, y) plt.ylim(-0.1, 5.1) plt.show() | cs |
반응형
'Applied > Artificial Intelligence' 카테고리의 다른 글
항등 함수와 소프트맥스 함수 (0) | 2019.06.11 |
---|---|
numpy를 이용한 행렬 계산 (0) | 2019.06.06 |
심층 신경망 구현 예제 (0) | 2019.06.05 |
퍼셉트론 (Perception) 알고리즘 (0) | 2019.06.02 |