-
2. 신경망(2)AI 모델(딥러닝 기초)/2. 신경망 2022. 12. 27. 13:29728x90
이번 시간에는 지난 신경망(1)에서 알아본 계단 함수(Step function)에서 발전된 형태인 Sigmoid function과 ReLU function에 대해서 알아보자.
※ Sigmoid Function
# Sigmoid 함수 구현 import numpy as np import matplotlib.pylab as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) x = np.arange(-5.0, 5.0, 0.1) y = sigmoid(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) #y축 범위 지정 plt.show()
이렇게 Sigmoid 함수를 구현해 볼 수 있다.
그렇다면 Sigmoid 함수를 계단 함수와 비교해가며 특성을 살펴보자.
■ Sigmoid 함수 vs Step 함수
Sigmoid 함수 Step 함수 부드러운 곡선(매끈함)이며 입력에 따라 출력이 변한다. 0을 경계로 출력이 급격히 변한다. 연속적인 실수를 반환한다. 0과 1 중 하나의 값만 반환한다. <공통점>
1.큰 관점에서 보면 0과 1 사이의 같은 모양을 그린다.
2. 둘 다 입력이 작을 때의 출력은 0에 가깝고, 입력이 커지면 1에 가까운 수를 출력한다.
3. 입력이 중요하면 큰 값, 입력이 중요하지 않으면 작은 값을 출력한다.
4. 입력이 아무리 작거나 커도 출력은 0과 1 사이의 값이다.
※ ReLU Function
# ReLU 함수 구현 import numpy as np import matplotlib.pylab as plt def relu(x): return np.maximum(0, x) x = np.arange(-6.0, 6.0, 0.1) y = relu(x) plt.plot(x, y) plt.ylim(-1.0, 5.0) #y축 범위 지정 plt.show()
Sigmoid 함수를 신경망 분야에서 오랫동안 사용하였으나, 최근에는 ReLU 함수를 주로 이용한다.
ReLU 함수 - 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수
※ 왜 신경망은 비선형 함수를 사용하는가??
비선형 함수 : 1개의 직선으로 표현될 수 없는 함수
선형함수를 사용하게 되면 신경망의 층을 깊게 하는 의미가 없어진다. 은닉층이 없는 네트워크로도 같은 기능을 할 수 있기 때문!!!
h(x) = cx 인 선형함수를 사용해서 3층의 네트워크를 구현하더라도 h(x) = c * c * c * x 의 형태로 나타나고 a = c^3으로 표현해버리면 h(x) = ax와 동일한 함수로 표현되어 버리기 때문이다.
은닉층이 생명인 신경망에서는 층을 깊게 만드는 의미를 위해 비선형 함수를 사용한다!!!!
728x90