matplolib/신호및시스템

sigmoid(시그모이드)함수에 대해 알아보자!

JackSmith 2023. 3. 24.

이전 시간에 단위계단함수를 정리해보았는데요!

한번 더 복습을 하자면, 이 함수는 입력신호 0을 기준으로 출력신호 0또는1로 분류하는 함수로서,

입력값이 특정값 이상인 경우 1을 출력하고, 그렇지 않은 경우, 0을 출력합니다.

 

하지만 이 계단함수는 신호해석에만 조금 사용되지 머신러닝 분야에서는 거의 쓰이지 않는데요,

머신러닝에서 미분이 중요하게 다뤄지는데, 이 계단함수를 연속적인 함수가 아니기 때문에,

태생적으로 미분이 불가능하기 때문이죠.

 

그러나!

계단함수와 유사한 함수들이 존재하는데요, 대표적으로 sigmoid함수와 ReLU함수입니다.

이 함수들은 계단함수와같이 입력을 기준으로 출력을 분류하는 특성을 가지고 있으면서도,

미분이 가능한 함수들이기 때문에, 머신러닝에서 널리 쓰이는 함수들입니다.

 

그래서 이번 포스팅에서는 다음 포스팅에서 단위계단함수를 대체하는 이 두가지 함수에 대해

알아보도록 하겠습니다.

 

sigmoid함수에 대해 구구절절이 설명하는것보다, 그래프상으로 어떻게 그려지는지 한번 보는게,

더 와닿을 것 같아, 설명은 생략하겠습니다.

아래와 같이 코드를 구현할 수 있겠습니다.

 

소스코드>

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1/(1+np.exp(-x))

x = np.linspace(-10, 10, 1000) #-10부터 10까지 그 사이에 1000개의 점을 생성
y = sigmoid(x) #생성된 점에 대해 sigmoid함수를 적용합니다

plt.plot(x,y) #x축을 입력값으로, y축을 sigmoid함수의 출력값으로 설정하여 그래프를 그립니다
plt.title('Sigmoid function')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

위 코드를 실행하면, -10부터 +10까지의 범위에서 1000개의 점으 생성하고, 이 점에 대해 sigmoid함수를 적용한 결과를 그래프로 구현할 수 있습니다. 아래 그래프에서 x=0이때 y값이 0.5가 되며, x값이 작아질수록 y값이 0에 수렴하고,

x값이 커질수록 y값이 1에 수렴함을 보여줍니다.

따라서, P(0,0.5) 라는 점P를 기준으로, 점대칭을 이루는 것을 확인할 수 있습니다.

 

실행결과>

다음시간에는 ReLU함수에 대해 알아보도록 하겠습니다. 감사합니다!

댓글